Cruxly

Cruxly › System design › Running the Design Interview

Scoping the Problem

narrow the prompt before you build anything

Open the interactive lesson

You have been given a three-word prompt: "design a chat app", "design a ride service". It is deliberately under-specified. Your first job is to turn it into a problem with edges.

Work through the sections, then use them as your live script for the first eight minutes of a real interview.

Why the prompt is vague on purpose

CANDIDATE A — no questions asked depth that earns credit msgs realtime group receipts media offline sync 40 minutes of shallow boxes CANDIDATE B — scoped in 90 seconds explicitly out of scope — and said out loud three things, designed properly
Same prompt, same forty minutes. The only difference is that one candidate decided where the effort would go.

Two candidates get "design a chat app."

:::key What just happened in ninety seconds

:::

Functional requirements: pick three

Write down the three things the system must do, phrased as a user action and its observable effect:

:::key Why exactly three

:::

"We need a message queue."
→ a component. A decision you haven't earned yet.
"A user who was offline receives everything they missed, in order,
 on reconnect."
→ observable behaviour. The queue is now something you can argue for.

Non-functional requirements: pick two to optimise for

These are the ones that actually shape the architecture, and candidates skip them.

FIVE LEVERS — YOU CANNOT MAXIMISE ALL OF THEM Latency ms that matter? Availability down 5 min? Consistency two answers ok? Durability lose a record? Scale 2-year growth? OPTIMISE OPTIMISE sacrificed sacrificed sacrificed "I'm optimising latency and durability." "A delivery receipt may be a few seconds stale — I accept that."
Naming which two you optimise for, out loud, is the requirement — the other three don't vanish, they become named, accepted costs.
PropertyThe question to askWhat it forces
LatencyWhat is unacceptably slow, in ms?Caching, edge placement, denormalisation
AvailabilityWhat happens if it is down for 5 minutes?Replication, failover, graceful degradation
ConsistencyCan two users legitimately see different answers?Quorums, single-writer, conflict resolution
DurabilityIs losing one record a bug or a disaster?Replication factor, write acknowledgement
ScaleHow much does this grow in two years?Partitioning strategy

:::key Pick two, and name the sacrifice

:::

Write down the non-goals

Say them out loud and leave them visible on the board:

Out of scope: group chat, media attachments, full-text search, end-to-end encryption, web clients.
NON-GOALS NEVER STATED min 0 min 40 min 38 "what about end-to-end encryption?" — no time left to answer it NON-GOALS WRITTEN DOWN AT MINUTE 2 min 0 min 40 min 8 same question — but now with 30 minutes left to actually answer it
Writing down non-goals doesn't avoid the hard question — it moves it from a moment you have no time left, to a moment you do.

This does three things:

The questions worth asking

Ask thisBecause it changes…
"Roughly how many users, and is traffic global or one region?"Partitioning, and whether you need multi-region at all
"If a user is offline a week, do they get everything or a cap?"Whether per-user storage is bounded
"Is it acceptable for a message to be delivered twice?"Whether you need idempotency keys — a whole component
Don't ask thisWhy
"What's the tech stack?"Almost never matters at this level
"Do we have a budget?"Unanswerable in an interview
"Should it be scalable?"Yes. Always yes.

:::warn When they deflect — and they often will "You decide."

:::

How to say it in the interview

"Before I design anything, I want to pin down scope — I'd rather build a small system well than a large one vaguely. Let me propose three user-facing features and check with you whether that's the right cut."

Checklist

Practice this interactively
Share this lessonWhatsAppLinkedInX

Related lessons