The single biggest lever
If you remember one thing from this entire quest, remember this: data quality dominates everything else. Hyperparameters move the needle by single-digit percent. Data quality moves it by tens.
What "quality" actually means
- Correctness — every assistant response is factually accurate and well reasoned. Wrong examples teach wrong behavior with terrifying fidelity.
- Consistency — similar inputs get similar-shaped outputs. Inconsistent format teaches the model that any format is fine.
- Diversity — cover the real range of inputs. 500 happy-path examples means your fine-tuned model collapses on the 501st edge case.
- Completeness — each example fully demonstrates the desired behavior, including any "thinking out loud."
- Natural language — examples sound like real interactions, not synthetic templates.
The curation workflow that survives
- Write a one-page spec: what behavior, in what tone, in what format?
- Hand-write 20–50 "gold standard" examples from the spec. Slow, deliberate, edited.
- Optionally generate more examples with a strong teacher model using gold examples as few-shot anchors.
- Review every generated example. Reject or rewrite the bad ones. No exceptions.
- Test a tiny training run (10–50 examples) end-to-end before scaling up.
- Iterate: if the model keeps failing on certain patterns, add more examples of those — don't just throw more random data.
The shortcut to refuse
Scraping forums, dumping unfiltered LLM outputs, recycling production logs without review — every shortcut here gets faithfully learned. The cost of low-quality data is paid in inference time, when the model behaves exactly as you trained it.