Where requirements come from
business outcome at the top, running system at the bottom
- Business requirementthe outcome someone is paying for
- Success criteriameasurable targets: quality, latency, cost
- Functional requirementswhat the system must do, input to output
- Infrastructure requirementsvolume, residency, retention, spend
- Solution architecturethe components you then choose
Make the business requirement measurable first
A business requirement is a statement of outcome: fewer escalations, faster claims, less manual review. It is not yet testable. Anthropic's own guidance on success criteria is the bridge: criteria should be specific, measurable, achievable and relevant. “Safe outputs” is none of those; “fewer than 0.1% of 10,000 sampled outputs flagged by the content filter” is all four.
The documentation also lists the dimensions worth measuring, and they are rarely one number: task fidelity, consistency, relevance and coherence, tone and style, privacy preservation, context utilisation, and latency and price. Most real applications need several at once, which matters for requirements work because a target on quality alone will quietly be met by an architecture nobody can afford.
| What the business said | Requirement it actually contains | What you must go and check |
|---|---|---|
| “Summarise every claim that came in overnight” | Bulk, asynchronous, tolerant of hours of delay | Whether the Message Batches API's 24-hour window fits |
| “Agents shouldn't wait while it thinks” | Perceived latency target on an interactive path | Streaming, and a realistic time to first token |
| “It must handle Black Friday” | Peak throughput in requests and tokens per minute | Your organisation's rate limits and usage tier |
| “Nothing leaves our cloud account” | Data residency and processing-location constraint | Third-party platform access and regional endpoints |
| “Finance needs to know what this costs” | Cost per unit of work, and a cap | Token accounting, caching, and spend limits |
Functional requirements for a Claude application
Functional requirements describe behaviour you could write a test for. For an application built on Claude they cluster into five questions. What goes in — plain text, images, PDFs, rows from a database? What must come out, and in what shape: prose for a person, or a record another system will parse? What must the system be able to do on its own behalf, meaning which tools it needs? Where does a human have to be in the loop? And what has to be recorded afterwards for audit or dispute?
Each of those has a concrete consequence. Documents and images as input pull in file handling: the Files API lets you upload once and reference a file_id in later requests instead of re-encoding the same attachment on every turn. A machine-readable output pulls in schema design, which task statement 2.5 covers. A human approval step is a control you implement, not a sentence you add to a prompt.
A requirements brief, checked
- Passes: Business outcome statedtriage under ten minutes
- Passes: Quality target with a baselineagreement on a 500-claim sample
- Check: Peak volume in requests and tokensclaims per hour given; token size never estimated
- Missing: Latency budget per pathinteractive and overnight not separated
- Missing: Data residency and retentionpersonal data, no processing location agreed
- Passes: Cost ceiling per unit of workmust beat the manual cost
- Fails: Who is accountable for a wrong answerno human step defined for declines
Infrastructure requirements: the four that bite
Infrastructure requirements are the ones that make a working prototype fail in production. Four recur.
Throughput. Claude API limits are enforced per organisation and per model on three axes at once: requests per minute, input tokens per minute and output tokens per minute. Exceeding any of them returns HTTP 429 with a retry-after header. Crucially, on most models only uncached input counts toward the input-token limit, so a design that caches a large shared prefix has more headroom than one that does not. “4,000 claims an hour” is not yet a requirement — “4,000 claims an hour, each about 3,000 input tokens plus two photographs” is.
Latency shape. Ask whether a human is waiting. If yes, the requirement is about perceived responsiveness, and streaming matters more than total time. If no — an overnight run, a nightly re-scoring — the Message Batches API processes asynchronously at a 50% discount, with results guaranteed within 24 hours and most batches finishing in under an hour. That trade is the subject of 2.3; the requirements job is only to establish which path each workload is on.
Placement of data. If the business says data must stay inside its own cloud account or a named region, that is an infrastructure requirement with an architectural answer: Claude is available through Amazon Bedrock, Google Cloud and Microsoft Foundry, where authentication uses the cloud provider's credentials rather than an Anthropic API key, and Bedrock offers regional endpoints for guaranteed residency at a pricing premium. Some features are not available on every platform, so “we must run in our own account” can remove options you were assuming.
Spend. Organisations sit in usage tiers with monthly spend caps, and reaching a cap returns 429 with no retry-after — it clears at the start of the next month or when the limits are raised. A cost requirement is therefore two numbers: the expected cost per unit of work, and the ceiling at which you would rather fail than keep spending.
Which requirement decides the path
- A person is waitingInteractive, streamedoptimise time to first token
- Runs overnightBatch50% cheaper, up to 24 hours
- Must stay in our cloudThird-party platformcloud credentials, regional endpoints
- Spiky peak loadQueue and backoffsize against per-minute limits
Traps the wrong answers are built from
| Tempting but wrong | Do this instead |
|---|---|
| Choosing a model, SDK or framework in the first meeting | Write the measurable success criteria first; the architecture follows from them. |
| Recording volume in items per day only | Convert to requests and tokens per minute at peak, since that is what the limits are expressed in. |
| Treating “accurate” or “secure” as a requirement | State a target with a unit and a sample you can measure it against. |
| Discovering residency and retention rules during security review | Capture where data may be processed and how long it may be kept as an infrastructure requirement up front. |
| Assuming every workload is interactive | Ask whether a human is waiting; if not, an asynchronous path is usually cheaper and simpler. |
You should now be able to
- Turn a business outcome into specific, measurable success criteria across more than one dimension.
- Separate functional requirements from infrastructure requirements for a Claude application.
- Express expected load in the units that rate limits use, and identify what headroom caching buys.
- Identify residency, retention and approval constraints before they become architecture rework.
- Explain which requirement decides between an interactive and an asynchronous integration.