← Amazon Interview Insights

Amazon·Software Engineer·Onsite - System Design / Architecture·Senior

Senior
Jun 2026

Summary

System design round at Amazon for a software engineer role. The question was a meaty one covering a full risk management ticketing platform, and they really did want you to go deep on basically every layer of the stack.

Questions Asked (1)

Q1

Design a risk management ticketing system that supports both human users and an automated bot submitting tickets, with requirements covering ticket lifecycle and states, role-based access control, idempotent ticket creation, concurrency control on updates, search and filtering, notifications, monthly reporting, storage schema, APIs, background jobs, audit trails, and scalability for high volume.

System DesignData ModelingAPI & Integrations
Author's notes

This one sprawled in every direction and I kept second-guessing which part to anchor on first.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements and scale, then design the data model and APIs with idempotency and concurrency in mind. Walk through the ticket lifecycle, RBAC, notifications, and reporting, and finish with scalability and trade-offs.

Pro tip: Emphasize idempotency and concurrency control early, as they are critical for a system serving both humans and bots. Use concrete examples like idempotency keys and optimistic locking to show depth.

1. Clarify Requirements and Scale

Ask about expected ticket volume, user roles, bot behavior, and reporting needs. Define functional and non-functional requirements.

2. Design Data Model and Storage

Propose a schema for tickets, users, roles, audit logs, and notifications. Choose a database (e.g., relational for consistency) and discuss indexing for search.

3. Define APIs and Idempotency

Design RESTful APIs for ticket CRUD, with idempotency keys for creation. Include endpoints for search, filtering, and reporting.

4. Handle Concurrency and Lifecycle

Use optimistic locking (versioning) for updates. Define state transitions and enforce RBAC for each action.

5. Address Notifications, Reporting, and Scalability

Design background jobs for notifications and monthly reports. Discuss scaling with sharding, caching, and async processing.

Key Points to Mention

  • Idempotency keys for ticket creation to prevent duplicates from bots or retries
  • Optimistic locking (version field) for concurrent updates
  • Role-based access control (RBAC) with roles like admin, agent, user, bot
  • Ticket lifecycle states (e.g., open, in-progress, resolved, closed) and allowed transitions
  • Search and filtering using indexed fields and possibly a search engine like Elasticsearch
  • Audit trails logging all changes with timestamp, user, and action
  • Scalability via sharding, read replicas, and asynchronous processing for notifications and reports

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.