You Probably Don't Need to Fine-Tune (Until You Do)

Almost every 'we need a custom model' request we get is really a prompt problem, a retrieval problem, or a missing eval harness. Here's how an ML engineer actually decides.

We've lost count of how many kickoff calls open with the same line: "We want to fine-tune a model on our data." It sounds like the serious, grown-up answer. It's a bigger budget, a bigger project, a bigger sense that you're building something proprietary.

And nine times out of ten, it's the wrong first move.

We're not anti-fine-tuning. We ship fine-tuned models and small trained classifiers in production for clients who genuinely need them. But "we need a custom model" is almost never the real diagnosis. It's a guess. Below is the actual decision tree we walk through before anyone touches a training run โ€” the same order of operations one of our ML engineers uses on day one.

Fine-tuning is the last thing you should try, not the first

Here's the uncomfortable truth: fine-tuning is the most expensive, slowest-to-iterate, hardest-to-debug option on the menu, and it fixes the narrowest class of problems. It does not teach a model new facts reliably. It does not fix hallucination. It does not give the model access to your live data. It mostly changes behavior and format โ€” tone, structure, adherence to a schema, a consistent style you couldn't get to stick with a prompt.

People reach for it because it feels like ownership. But you pay for that feeling with a training pipeline, a labeled dataset you have to build and maintain, an eval harness, and a re-training treadmill every time the base model updates or your data drifts. Start there and you've bought a maintenance burden before you've validated the idea.

So we go in the opposite order. Cheapest and fastest to change, first.

Try a better prompt first โ€” most "model problems" die here

The majority of what teams call a model limitation is a prompting limitation. The model can do the task; nobody has clearly told it how.

Before we entertain anything heavier, we exhaust the prompt: a sharp system message, three to five good few-shot examples, an explicit output schema, and a clear statement of what "wrong" looks like. We add structured output when the downstream code needs it. We split one overloaded prompt into two focused steps when a single call is trying to do too much. We measure.

This is unglamorous and it works absurdly often. A support-triage client came to us convinced they needed a fine-tuned classifier for routing tickets. We spent an afternoon rewriting their prompt with real category definitions and a handful of edge-case examples. Accuracy went from "embarrassing" to "ship it." Total cost: one afternoon, zero training infrastructure, zero ongoing maintenance. If we'd fine-tuned, they'd still be relabeling data every quarter.

The rule: if you haven't spent a serious week on prompting and evals, you don't yet know what the model can't do.

Reach for retrieval when the problem is knowledge, not behavior

There's a clean line between the two heavy options, and most people blur it:

- If the model gives badly formatted or wrong-style answers โ†’ that's behavior โ†’ prompt, then maybe fine-tune.

  • If the model gives confident, wrong-fact answers because it doesn't know your data โ†’ that's knowledge โ†’ retrieval.

    Fine-tuning to inject knowledge is the single most common mistake we see. You cannot reliably cram your product docs, your policies, or last Tuesday's pricing into weights. You'll get a model that sounds like your docs and makes things up with total confidence. Knowledge that changes belongs outside the model, fetched at query time and dropped into context.

    We won't relitigate how to build retrieval here โ€” we've written a whole post on doing RAG without the hallucinations. The point for this decision is narrower: when the gap is "the model doesn't have the facts," retrieval is the answer, and it's dramatically cheaper and more maintainable than trying to train facts in. You update a document; the system is current the same second. No re-training, no drift, no dataset to babysit.

    Prompt handles how to answer. Retrieval handles what to answer with. Get those two right and you've solved most of what people came to fine-tuning for.

    Sometimes the right model isn't an LLM at all

    This is the one nobody wants to hear, and it's often the best engineering call.

    If your task is "put this input into one of N buckets" โ€” spam or not, urgent or not, which of eight departments, is this transaction fraud โ€” you may not need a generative model at all. A logistic regression or a small fine-tuned encoder (think a few-hundred-million-parameter classifier) will often beat a 70B LLM on that job: higher accuracy, a hundred times cheaper per call, single-digit-millisecond latency, and a confidence score you can actually threshold and monitor.

    We had a client running every inbound event through a large model to tag it. It worked, and it cost a fortune and took 900ms a call. We replaced it with a trained classifier on their labeled history. Same accuracy, roughly 1/50th the cost, 12ms latency, and a clean probability output their ops team could tune. The LLM was a Ferrari doing a forklift's job.

    Ask the honest question: is this task generative (produce language, reason, synthesize) or is it classification/extraction/ranking? If it's the latter and you have labeled data, a purpose-built ML model usually wins on every axis that matters. LLMs are a spectacular default when you don't have labels or the task is open-ended. They're a lazy default when a cheap model would crush it.

    Reach for fine-tuning only when all of these are true

    We do fine-tune. Here's the actual checklist. If you can't check most of these, you're not ready:

    - Prompting has plateaued. You've genuinely exhausted good prompts and few-shot examples, and you can prove it with numbers, not vibes.

  • The gap is behavior, not knowledge. You need consistent tone, format, or a domain style โ€” not fresh facts (that's retrieval's job).
  • You have a real eval harness. A held-out test set and a metric you trust. Without this, fine-tuning is flying blind โ€” you literally cannot tell if training helped or hurt.
  • You have enough clean, labeled examples. Usually hundreds to low thousands of high-quality pairs. Garbage in, confidently-wrong out.
  • The task is stable. The behavior you're training won't change every month. If it drifts constantly, you're signing up for an endless re-training loop.
  • Volume justifies it. You're calling this enough that a cheaper, faster, smaller fine-tuned model pays back the training and maintenance cost โ€” or a smaller open model fine-tuned to match a frontier model on your one narrow task saves real money at scale.

    That last case is the strongest one for fine-tuning today: take a small, cheap model and train it to match an expensive frontier model on your specific task. Done right, it cuts inference cost hard. But you only know it worked because of the eval harness. Notice the eval harness shows up in every serious version of this โ€” it's the thing teams skip and the thing that determines whether any of this succeeds.

    The honest summary

    Walk the ladder in order, cheapest first:

    1. Better prompt โ€” fixes most "model" problems in an afternoon.

  • 2. Retrieval โ€” when the problem is missing knowledge, not bad behavior. 3. A small trained classifier / non-LLM model โ€” when it's classification or extraction and you have labels. 4. Fine-tuning โ€” only when behavior has plateaued, the task is stable, and you have evals and data to prove it.

    Most teams that ask us to fine-tune leave with a sharper prompt, a retrieval layer, and โ€” for the first time โ€” a real eval harness that tells them what's actually working. That's usually the whole win.

    If you're staring at a "we need a custom model" line in your own roadmap and you're not sure which rung you're actually on, that's a good conversation to have with an ML engineer before you spin up a training pipeline. Hire one of ours onto your team for a couple of weeks โ€” we'll tell you honestly which rung solves your problem, then build it with you. That's cheaper than fine-tuning the wrong thing.

    Need a human in your loop?

    Our senior engineers catch the complexity cliffs AI misses โ€” reviewing architecture, security, and algorithmic fit before problems ship. Part-time or full-time, monthly.

    Talk to a Dev Lead โ†’