FDEInterviews logo
System Design & Production Engineering / 06
medium★ EssentialOpenAIAnthropicMicrosoft

Estimate the capacity and cost of an app with 50k DAU making 10 LLM calls each. What do you provision for?

A Fermi estimate with a paycheck attached. The interviewers' favorite filter: candidates who jump to a dollar figure miss the two numbers that actually break deployments, peak QPS and tokens-per-minute limits.

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

TL;DR: Compute three numbers, not one: daily token volume (about $200k/month here), peak request rate converted to tokens-per-minute (the limit that actually breaks launches), and the sensitivity to tokens-per-call. Then name prompt caching and model routing as the first cost levers.

How to approach it

Narrate your assumptions out loud and round aggressively, because the score is for structure, not arithmetic precision. The trap is computing only the average. Strong candidates compute three things: daily token volume (cost), peak request rate (rate limits and infra), and the sensitivity of the answer to its biggest assumption (token count per call).

A strong answer

State assumptions: 50k DAU × 10 calls = 500k calls/day. Assume a typical RAG-ish call: ~2,000 input tokens (system prompt + retrieved context + history) and ~500 output tokens. So ~1B input and ~250M output tokens per day.

Cost: pick round numbers, say $3 per million input tokens and $15 per million output for a mid-tier model. That's 1,000 × $3 + 250 × $15 ≈ $6,750/day, roughly $200k/month. Immediately flag the lever. At those volumes you don't accept list behavior: prompt caching (the system prompt and shared context repeat across all 500k calls) can cut input cost dramatically, routing easy calls to a small model can cut total spend 5 to 10x, and committed-use or batch pricing applies for any non-interactive traffic.

Throughput is where deployments actually break. Average rate is 500k / 86,400 ≈ 6 requests/sec, which sounds trivial. But usage concentrates: a business app does most traffic in an 8 to 10 hour window with lunchtime peaks, so plan peak ≈ 3 to 5x average, so 20 to 30 RPS. Convert to tokens-per-minute, because that's how providers limit you: 25 RPS × 2,500 tokens ≈ 3.75M TPM, far beyond default tier limits. So you need a quota increase or enterprise agreement negotiated before launch, client-side rate limiting with backoff, and a queue to absorb bursts rather than surfacing 429s to users.

From daily users to the limit that breaks launch 1 50k daily users 10 LLM calls each 2 500k calls a day the easy number 3 Tokens per call 2,000 in, 500 out 4 Daily token volume 1B in, 250M out 5 Monthly cost about $200k at list 6 Average request rate about 6 per second 7 Peak is 3 to 5x 20 to 30 per second 8 Convert to TPM how providers actually limit 1,000 x $3 + 250 x $15 ~ $6,750/day Then name the levers immediately: prompt caching across 500k calls that share a system prompt, and routing the easy traffic to a small model. Six per second sounds trivial, which is exactly why it misleads. A business app does most of its traffic in an eight to ten hour window. 25 RPS x 2,500 tokens ~ 3.75M TPM Far beyond a default tier. Negotiate the quota before launch, rate-limit on the client with backoff, and queue bursts rather than showing users a 429.

The left column is the bill and the right half is the launch. Step 8 is the number that actually stops deployments, and it is the one nobody computes until a provider returns a 429 in front of users.

rendering diagram…

The worked example traces to these numbers:

QuantityValue (worked example)
Calls per day50k DAU x 10 = 500k
Tokens per call~2,000 input + ~500 output
Daily tokens~1B input + 250M output
Cost~$6,750/day, ~$200k/month at list
Average rate~6 RPS
Peak rate3-5x avg, 20-30 RPS
Peak tokens-per-minute~3.75M TPM, over default tier

Infra around the model is light: at 30 RPS, a couple of stateless app servers handle orchestration; the real provisioning is the vector store or retrieval layer (if RAG), Redis for caching and rate limiting, and an observability pipeline. Logging full prompts and responses at 1B tokens/day is itself ~5 to 10 GB/day, so plan retention and sampling.

Close with sensitivity: "My answer is linear in tokens per call. If context grows to 8k tokens, that $200k becomes $700k+/month. The first engineering investment is measuring and trimming real token usage, not optimizing infra."

What interviewers probe next

  • "Cut the cost 10x without destroying quality." Model routing or cascades (small model first, escalate on low confidence), prompt caching, trimming retrieved context, distillation for the highest-volume call type, batch API for async work. And since the follow-up is near-universal, have the ladder pre-computed on this example (arithmetic verified): baseline $6,750/day. Prompt caching first: if ~1,200 of the 2,000 input tokens are the repeated system prompt and scaffolding, cached at roughly a tenth of list, daily input cost drops from $3,000 to about $1,380, total $5,130. Routing second: send the 70% of calls that are classification, extraction, and short lookups to a small model at about a tenth of the price, and the total lands near $1,900/day, roughly $57k/month, a 3.5x cut with two configuration-level changes and zero infrastructure. The remaining distance to 10x comes from trimming retrieved context (the estimate is linear in it) and batch pricing on the async share; walking the ladder with running numbers is what makes "we can cut this" sound like a plan instead of a hope.
  • "What about latency?" TPM budgets say nothing about UX; estimate time-to-first-token, stream everything user-facing, and parallelize the 10 calls where the workflow allows.
  • "Self-host instead?" At ~$200k/month of API spend, the build-vs-buy math gets real; sketch GPU count from tokens/sec/GPU and compare loaded costs (see the build-vs-buy question).

Common mistakes

Producing one precise-sounding dollar figure with unstated token assumptions: false precision reads junior. Computing average QPS and declaring it "easy" without peak analysis. Forgetting rate limits are in tokens, not requests. Never mentioning prompt caching or model routing, the two levers any provider's own FDEs would reach for first. And skipping the sensitivity check that shows you know which assumption dominates the answer.

Key takeaways

  • Three numbers win this: daily tokens (cost), peak RPS, and tokens-per-minute (the limit that breaks launches).
  • Provider limits are denominated in TPM, not RPS, so a "trivial" 6 RPS average still blows past your tier at peak.
  • First cost levers are prompt caching and model routing, before any infrastructure work.
  • The whole estimate is linear in tokens-per-call, so measuring real token usage is the first engineering investment.
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 almost-universal follow-up is 'now cut that cost 10x,' and the answer that lands names prompt caching and model routing first, because those are the two levers a provider's own FDEs reach for before touching infrastructure. The quiet stumble is forgetting that provider limits are denominated in tokens per minute, not requests per second, so a 'trivial' 6 RPS average can still blow past your tier at peak. End on the sensitivity check: the whole estimate is roughly linear in tokens per call, so the first real engineering investment is measuring actual token usage, not provisioning servers.

DISCUSSION · 0

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