Requirements
Why this matters: the requirements list here is unusual because what it omits is more interesting than what it contains. Reading it critically is the exercise.
The backend design must address the following functional and non-functional requirements.
Functional requirements
| Requirement | What the source says |
|---|---|
| Dialogue management | Interpret user input, maintain context, and generate relevant, human-like responses |
| Natural language understanding (NLU) | Identify intent and extract key entities from user input |
| Personalization | Adapt to user preferences and history to provide tailored interactions |
| Feedback | Improve accuracy and performance over time using user feedback |
Non-functional requirements
| Requirement | What the source says |
|---|---|
| Scalability | Handle increasing user traffic and workloads efficiently |
| Availability | Ensure consistent uptime for users |
| Reliability | Generate stable and predictable responses under varying conditions |
| Low latency | Minimize response times through efficient inference and caching |
| Privacy and security | Protect user data and ensure compliance with privacy standards |
The relationships between them look like this:
Key takeaway
Four functional requirements — dialogue management, NLU, personalization, feedback — of which only feedback is off the critical path, which is why it runs asynchronously. Five non-functional ones, of which reliability's "predictable responses" cannot mean deterministic because generation samples. And two absent requirements matter more than any present one: cost, which uniquely drives model and batching decisions here, and factual accuracy, which has no architectural answer. NLU survives as a component but its justification has changed — embedding, routing, and pre-screening rather than intent classification.
Interview signal by level
| Level | What a strong answer sounds like |
|---|---|
| L4 | Recites the list: "dialogue management, NLU, personalization, feedback — and scalability, availability, reliability, low latency, privacy." |
| L5 | Separates timescales: "three functional requirements are request-time and one — feedback — is an offline improvement loop, which is why it's asynchronous and behind pub-sub rather than inline." |
| Staff+ | Adds what's missing: "I'd add cost as a non-functional requirement — GPU inference is expensive enough that cost per request drives model size, quantization, and batching policy in a way no other requirement does. And I'd flag that factual accuracy isn't listed anywhere, though moderation is in the architecture — so safety is designed for but not specified. I'd also be careful with 'predictable responses': generation samples, so predictable has to mean predictable quality and latency, not identical text. The distinctive lever here is falling back to a smaller model under load rather than shedding it." |
Next: the resource estimation, and the arithmetic mistake that reveals what the system actually costs.