FDEInterviews logo
RAG & Agent System Design / 08
mediumOpenAIScaleAnthropic

A customer's RAG pilot answers only 60% of questions correctly. Diagnose it.

The modal FDE design question of the last two years. There's a scoring trap in the first 60 seconds, and most candidates jump to fixes and fail. Here's the diagnostic tree that wins it.

Updated Sep 2026 · Grounded in real Forward Deployed Engineer interview loops and written to a senior-engineer editorial bar.

TL;DR: Resist the urge to propose fixes. Build an eval set from failing traffic and split each failure down a tree (not in corpus, not retrieved, retrieved-but-ignored, wrongly answered, mislabeled), then quantify the buckets so prioritization becomes arithmetic.

How to approach it

The trap is proposing fixes ("try a reranker! better chunking!") before measuring anything. The first sentence interviewers want to hear: "Before changing anything, I'd build an eval set from the failing traffic so we can see where the 60% breaks." Tuning without diagnosis is how pilots die. You fix retrieval when the problem was ingestion, burn two weeks, and lose the customer's confidence.

A strong answer

Step 1: Get the failures. Pull the pilot's logs: queries, retrieved chunks, answers. Label 50–100 cases with what the right answer was and where it lives. If logs weren't kept, that's finding #1; instrument first.

Step 2: Split every failure down a tree, because each branch has a different fix:

rendering diagram…
  • Answer not in the corpus at all: ingestion/coverage problem: missing connector, failed PDF parse, stale sync. Fix: ingestion audit. (Embarrassingly common, often 10–20% of "model is dumb" complaints.)
  • In corpus, not retrieved (not in top-k): retrieval miss: vocabulary mismatch, bad chunk boundaries, wrong k, missing hybrid/BM25 leg. Fix: hybrid search, reranker, chunking, or query rewriting, chosen by why it missed.
  • Retrieved, but model ignored or contradicted it: generation/faithfulness: prompt doesn't enforce grounding, context too long (lost-in-the-middle), conflicting chunks. Fix: prompt, context assembly, chunk ordering.
  • Answered when it shouldn't have (no good source): missing refusal behavior. Fix: grounding instructions, an "I don't know" path, and a threshold on retrieval scores.
  • "Wrong" but actually right: expectation mismatch where the label or the user's premise is wrong. Fix: conversation with the customer about ground truth.

Step 3: Quantify the split, e.g. "of 80 failures: 15% coverage, 50% retrieval, 25% generation, 10% mislabeled." Now prioritization is arithmetic: retrieval is the biggest bucket, so hybrid + reranker first, and the predicted ceiling if retrieval were perfect is visible from the data.

The quantified split also hands you the sentence that wins the customer meeting, because each bucket converts to accuracy points with one multiplication. Failures are 40% of traffic, so a bucket that is 50% of failures is worth at most 0.5 x 40 = 20 points of accuracy; the 15% ingestion bucket is worth 6 points; the 25% generation bucket, 10; mislabels, 4. Now you can say "a perfect retrieval fix takes us from 60% to at most 80%, and the demo-week plan is the retrieval bucket plus the ingestion audit, ceiling 86%", which is a fundamentally different conversation from "we will try a reranker and see." The word ceiling is doing real work: it sets expectations honestly (a reranker will not capture the full 20 points), and it tells everyone in advance what success looks like, so week two is measured against a number both sides agreed to rather than a feeling.

Step 4: Fix, re-run the eval, repeat. Each change is re-scored against the same set, so improvement is a number the customer can see (60% to 74% to 85%), and the eval becomes the regression gate for everything after.

Also say the meta-thing: 60% with no eval infrastructure is a process problem. The deliverable isn't a smarter pipeline; it's a measurement loop the customer can keep running.

What interviewers probe next

"Suppose 70% of failures are retrieval, then what?" (Subdivide: vocabulary vs chunking vs ranking, and pick the technique that matches.) "Who labels ground truth?" (Customer SMEs, and disagreements between SMEs are themselves a finding.) "The customer wants it fixed this week." (Ship the top-bucket fix behind the eval; promise the number, not perfection.)

Common mistakes

Listing fixes as a buffet with no diagnostic order, the single most-cited rejection reason on this question. No failure taxonomy. Not asking what "correct" means or who judged the 60%. And forgetting refusals: some of the missing 40% should become honest "I don't know"s, not forced answers.

Key takeaways

  • Measure before you fix; the first move is an eval set built from failing traffic, not a reranker.
  • The retrieved-or-not split routes you to a retrieval bug versus a generation bug and saves you tuning the wrong half.
  • Quantifying the failure buckets turns prioritization into arithmetic and gives the customer a visible number each iteration.
That one was free — and so are 10 answers per topic without an account. Signing in doubles that to 20, opens the Plus lessons in the courses, and remembers which topics you keep getting wrong.no card · Google sign-in · nothing to cancel
HOW DID IT GO?
0
READING SIGNED OUT

Signing in doubles your free answers, from 10 to 20 per topic, and the site starts remembering you: mastery per topic, bookmarks, and a next-focus recommendation. Free, no card.

Sign in free
UP NEXT ON YOUR JOURNEY
FEDITOR'S NOTE

The scoring trap is that the interviewer wants to watch you measure before you fix; proposing a reranker in the first minute fails the question even if a reranker is the eventual answer. The single most useful triage move is to check whether the correct chunk was even in the retrieved set, because that one split routes you to a retrieval bug or a generation bug and saves you from tuning the wrong half for an hour.

DISCUSSION · 0

No comments yet — be the first to share your approach.