FDEBench Join us live

00
Method

The Seven Moves

A framework for answering AI system design questions. We built it by testing the standard playbook against a thousand points of real rubric, and finding the half it misses.

01
Why

Why not just use the standard framework

Every general guide converges on the same four or five steps. They agree because they are all describing how to structure a conversation about a deterministic system.

SourceSteps
ByteByteGo 1m viewsUnderstand requirements → high-level design → deep dive → wrap up
Exponent 620k viewsDefine problem → high-level → deep dive → scaling & bottlenecks → review
DesignGurusClarify → high-level → components → reliability → wrap
IGotAnOfferProblem framing → architecture → deep dive → trade-offs → conclusion
Yuan MengFraming → statement → high-level → online path → offline path → production → deep dives

That framework is necessary and insufficient. So we tested it against our own rubrics: 63 hand-authored criteria across 10 questions, 1,000 points. For each one we asked which generic step it belongs to.

02
Evidence

Half the points have no home

SlotCriteriaPoints
Failure modes & degradation18310
Evaluation & observability10165
Requirements6100
High-level design690
Deep dive690
Scale & wrap460
Unclassified13185

48% of available points sit in evaluation and failure. The generic framework has no step for either. Run the ByteByteGo playbook perfectly on an AI question and you leave roughly half the rubric on the table.

That is not a criticism of ByteByteGo. Those steps were written for systems whose output is deterministic and whose failures are mechanical. With a model in the loop, the output is non-deterministic, evaluation stops being latency-and-correctness, cost is per-token and continuous, and the failure modes are hallucination, prompt injection, context overflow, and cost blowup.

So: keep the spine, add the missing organs.

01
5 min

MOVE 01

Contract

The skill is turning a wish into a number.

Before designing anything, convert every adjective in the question into something measurable, out loud.

“Never makes an unsourced claim” is not a requirement, it is a wish. Turn it into: what groundedness rate, measured how, and what does the system do when it is not confident enough to answer? “Fast” becomes p50 or p99, to first token or to completion. “10M documents” becomes queries per second, growth rate, and how often the corpus changes.

Earns creditAt least one number the interviewer did not give you, stated as an assumption they can correct.
Loses itDrawing boxes while the success criteria are still adjectives.

Every guide we read puts clarification first, and every one lists “jumping to a solution” as the most common failure. This is the only move where the sources are unanimous.

02
2 min

MOVE 02

Baseline

The skill is cost discipline.

Name the dumbest version that could work, then say why you are not shipping it. Or ship it.

Prompt plus an API call, no retrieval, no fine-tuning. If that is genuinely insufficient, you now have a reason for every layer you add afterwards. If it is sufficient, you just saved the customer six months.

Earns creditExplicitly rejecting a simpler option, with the reason.
Loses itProposing fine-tuning before establishing that prompting fails. Interviewers read this as reaching for the exciting tool.

This move appears in no general framework. It comes from the AI-specific guides, which keep naming the same failure: choosing agents because they’re exciting, not because the problem requires autonomy.

03
12 min

MOVE 03

Flow

The skill is architecture.

One complete path, prompt in to response out, before you go deep on anything.

Chip Huyen’s layer order is the most defensible sequence, because each layer exists only to fix a problem the previous one has: context (give the model what it needs) → guardrails (protect the system and the user) → router and gateway (multiple models, security, quota) → cache (latency and cost) → write actions (let it do things, not just say them).

Name what data rides each arrow. Do not stop to pick a vector database.

Earns creditA complete happy path a colleague could implement.
Loses itDepth-first. Twenty minutes on chunking strategy and no end-to-end story.

04
8 min

MOVE 04

Eval

The skill is measurement. It is the biggest single differentiator.

Explain how you know it works before a user tells you it doesn’t.

Where does the offline eval set come from, and who labels it? If LLM-as-judge, what validates the judge? Which online metric moves when quality drops? It will not be user complaints. Those arrive weeks late. What gate blocks a bad prompt change from shipping?

Earns creditAn eval that would actually catch the specific failure you named in move 01.
Loses itNaming a framework with no ground-truth story. “We’d use RAGAS” is a tool, not a plan.

165 points across our rubrics, and the generic framework has no slot for it. The graded example on the landing page scores 1.0 out of 5 on exactly this dimension.

05
8 min

MOVE 05

Failure

The skill is production judgment.

Enumerate the failure modes specific to models, then give each one a detection method and a degradation path.

Hallucination. Prompt injection arriving inside retrieved content. Provider downtime. Context overflow. Cost blowup from a retry loop. A shared cache leaking one tenant’s answer to another. For each: how do you find out, and what does the user get instead?

Earns creditA degradation path, not an acknowledgement. “It fails” is not an answer; “it falls back to extractive quotes with a lower-confidence banner” is.
Loses itDesigning only the happy path.

The largest point bucket in our rubrics: 310 points, 31% of everything available.

06
5 min

MOVE 06

Numbers

The skill is doing arithmetic in public.

Tokens times calls times price. Latency summed across stages against the budget you set in move 01.

Order of magnitude is fine. Being wrong by 2× and showing the work beats being silent. If you propose a cache, estimate the hit rate. A cache that hits 3% of the time is not an optimization.

Earns creditArithmetic out loud, and noticing which term dominates.
Loses it“We’d cache it,” with no repeat-rate reasoning.

07
3 min

MOVE 07

Iterate

The skill is prioritization.

What ships in week one, what is v2, and what measurement decides between them. Then name the biggest risk in your own design.

Naming your design’s weakest point is not a confession, it is the strongest close available. It shows you would keep thinking about this system after the interview ends.

08
Worked

The moves on a real question

A customer has 10M internal documents and wants question answering that never makes an unsourced claim. Design it.

The question from our landing page, where the sample answer scores 2.4 out of 5. Here is what the moves sound like out loud. Compressed, but the shape is the point.

01 Contract

“Never is the hard word. I’ll assume you mean no claim without a citation that resolves to a retrieved span. Not zero errors, which is unachievable. So: 95% of answers carry a verifiable citation, and the system is allowed to say I don’t know. What’s the abstention budget? If refusing 10% of questions is unacceptable, that changes the design. I’ll also assume p95 under 4 seconds and a corpus that changes daily.”

02 Baseline

“The dumbest version is: stuff the top 10 keyword hits into a prompt and ask for citations. At 10M documents that fails on recall, and ‘ask for citations’ is an instruction rather than a control, so the model can fabricate one. So I need retrieval better than keyword, and a verifier outside the model. That’s the reason for everything I add next.”

03 Flow

“Query → hybrid retrieval, dense plus BM25 → rerank top 100 to top 10 with a cross-encoder → generate with the spans, requiring span IDs in the output → verify each cited span actually supports its sentence → return, or abstain. The verifier is what makes never mean something. Ingestion runs offline: parse, chunk on structure, embed, index, with a delete path for retracted documents.”

04 Eval

“Three hundred questions labelled by their subject-matter experts, including a hundred with no answer in the corpus. Those test abstention, which is what they actually asked for. Offline: citation-support rate via an NLI check, not an LLM judging its own work. Online: abstention rate and citation click-through, both of which move within hours when retrieval degrades. Complaints arrive three weeks later, so they are not a metric. Deploys gate on the labelled set.”

05 Failure

“Retrieval returns nothing relevant. Detect it on low rerank scores and degrade to I don’t know plus the closest documents. A retrieved document contains injected instructions, so treat retrieved text as data, never as instructions. The provider goes down, so fall back to extractive answering and return the passage verbatim with no generation. Worse, but never unsourced, which is the invariant they bought.”

06 Numbers

“10M documents, roughly 500 tokens a chunk, call it 40M chunks. Embedding once is low thousands of dollars, so not a blocker. Per query I’m sending about 8k tokens of context; at a million queries a month that dominates, so tiering matters: cheap model for extraction, expensive one only when the verifier disagrees. Latency: retrieval 200ms, rerank 300ms, generation 2s. The 4-second budget holds with room.”

07 Iterate

“Week one I’d ship retrieval plus citations with no verifier, and measure how often citations are wrong. That number decides how much verifier I need. The weakest part of this design is chunking. If their documents are tables and forms rather than prose, my assumption breaks, and I’d want to see real documents before committing.”

Note what happened. Nothing in there is exotic. No framework names, no tool worship. The candidate spent most of the answer on things the generic playbook has no step for: abstention, citation verification, injection through retrieved content, what happens when it degrades. Every one traces back to the number pinned in move 01.

09
Clock

The clock

MoveMinutesCumulative
01 Contract55
02 Baseline27
03 Flow1219
04 Eval827
05 Failure835
06 Numbers540
07 Iterate343

Forty-three of forty-five, leaving slack for interruptions. The interviewer will derail this. That is fine. The point of a framework is knowing which move you skipped, so you can name it before they do: “I haven’t talked about evaluation, and that’s the part I’d want to get to.”

10
Sources