How the interviewer opens it
“Design a platform where employees submit expenses and receipts, and companies review and reimburse them. Preserve an audit history and prevent multiple reimbursements for the same expense record.”
The prompt is vague on purpose. The first minutes are for you. Reduce the prompt to the core features and agree on the numbers before you draw.
What to clarify first
- Companies and scale
- Read and write mix
- Expense and approval rules
- Receipts
- Policy checks
- Payments and duplicate claims
- Consistency and availability
- Latency
- Durability and retention
- External services and exclusions
The interviewer has the answers. In a SysRound round, Alex gives these answers, as a real interviewer does.
Scope of a strong answer
Core requirements
- Submit expenses with receipt attachments
- Apply company policies and request approval
- Reimburse each approved expense record at most once
- Preserve an audit history for expense and payment decisions
Usually out of scope
- Corporate card feeds
- Travel reservations
- Tax calculations and currency conversion
- Payroll
- Build an identity service or payment provider
- Recovery after a regional outage
- Payout provider failover
What interviewers ask about
- Expense changes and approvals
- An approval applies to specific expense details and company rules. Later edits must not change what the reviewer approved.
- Payment outcomes
- A provider can accept a payout before the caller receives a result. A local retry can then cause another transfer.
- Repeated expense submissions
- A repeated API request differs from a repeated purchase claim. Receipt matches can reveal duplicates but can also identify valid shared expenses.
- Expense history and receipt evidence
- The company must explain an old payment using the exact receipt, rules, and decisions that supported it. Partial writes can destroy that evidence.
Common mistakes
- Treat a payment timeout as a failed payment and create another payout.
- Use a receipt hash as proof that two expenses represent the same purchase.
- Approve an expense without fixing its amount, receipt, and policy version.
- Write audit events after state changes without a durable recovery path.
- Let a repeated request create another reimbursement.
- Trust a company ID or reviewer role from the client.
The bar by level
- Mid-level (L4/E4)
- Defines a complete submission, approval, and payment flow. Uses database constraints to prevent repeat reimbursement per expense record. Handles provider timeouts without assuming failure. Includes receipt access checks and an audit history.
- Senior (L5/E5)
- Handles revision races, policy versions, and approval permissions. Commits audit and payout intent with state changes. Uses stable provider keys and resolves uncertain results. Separates repeated requests from suspected duplicate claims.
- Staff (L6+/E6+)
- Defines guarantees across the database and provider. Handles key expiry, investigation, concurrent duplicate claims, and evidence retention. Distinguishes receipt URL authorization from bearer access. If the interviewer adds those extensions, defines safe provider failover and regional recovery without concurrent payment attempts.