← Navan Interview Insights

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

Senior
Apr 2026

Summary

System design round at Navan for a software engineer role. The prompt was about modeling auxiliary comments on reservations, which sounds contained until you get to the batch update extension and start realizing how many edge cases you glossed over.

Questions Asked (3)

Q1

Design an object-oriented model and high-level system architecture for storing auxiliary comments on a reservation, where regular users can add or edit comments on their own bookings and admins can update comments on any booking.

System DesignData ModelingTechnical Trade-offs
Author's notes

I started with the data model, which felt natural.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements and constraints, then design an object-oriented model with clear entities and relationships, followed by a high-level system architecture that separates concerns and ensures scalability and security. Emphasize authorization rules and data consistency, and discuss trade-offs between different design choices.

Pro tip: Demonstrate maturity by explicitly addressing authorization at the data access layer and considering audit trails for compliance, which is critical in travel and expense systems like Navan.

1. Clarify Requirements and Constraints

Ask questions to understand the scope: expected volume, read/write patterns, latency requirements, and any compliance needs. Confirm that comments are auxiliary and not core to the booking process.

2. Design Object-Oriented Model

Define entities like User, Booking, Comment, and Admin, with relationships and methods for adding/editing comments. Include authorization logic in the model or service layer.

3. Outline High-Level Architecture

Propose a layered architecture: API gateway, authentication/authorization service, comment service, and data storage. Consider using a relational database for strong consistency and a cache for performance.

4. Address Authorization and Security

Detail how regular users can only modify their own comments, while admins can modify any. Discuss role-based access control (RBAC) and enforcement at the API and data layers.

5. Discuss Trade-offs and Scalability

Compare SQL vs NoSQL, synchronous vs asynchronous writes, and caching strategies. Mention how the design can scale with increasing bookings and comments.

Key Points to Mention

  • Entity relationships: User, Booking, Comment, Admin, with proper foreign keys and indexes.
  • Authorization rules: regular users restricted to own bookings; admins have global access.
  • Data consistency: ACID transactions for comment updates to avoid race conditions.
  • Audit logging: track who changed what and when for compliance and debugging.
  • Scalability: partitioning by booking ID, read replicas, and caching frequently accessed comments.
  • API design: RESTful endpoints with proper HTTP methods and status codes, and validation.

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

Q2

How would you design a batch update mechanism that lets admins apply a comment change to thousands of reservations at once?

System DesignTechnical Trade-offsAPI & Integrations
Author's notes

This is where I fumbled.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements: scale (thousands of reservations), consistency needs, and whether the update is synchronous or asynchronous. Then propose an asynchronous batch processing architecture with a job queue, chunked processing, and idempotency, while discussing trade-offs like eventual consistency and failure recovery.

Pro tip: Emphasize idempotency and observability: design each batch job to be safely retryable and provide admins with progress tracking and audit logs. This shows you understand production concerns beyond just the happy path.

1. Clarify Requirements and Constraints

Ask about the expected scale, latency tolerance, consistency requirements, and whether the update must be atomic. Confirm if admins need immediate feedback or can wait for asynchronous completion.

2. Design the API and Job Submission

Propose an endpoint that accepts a filter or list of reservation IDs and the new comment, validates the request, and enqueues a batch job. Return a job ID for status tracking.

3. Implement Asynchronous Batch Processing

Use a message queue and worker pool to process reservations in chunks (e.g., 100-1000 per batch). Ensure idempotency by tracking processed IDs and using database transactions per chunk.

4. Handle Failures and Ensure Consistency

Implement retries with exponential backoff, dead-letter queues for persistent failures, and compensating actions if needed. Consider eventual consistency and how to handle partial failures.

5. Provide Observability and Admin Controls

Expose job status, progress, and error details via API. Allow admins to cancel or retry failed batches. Log all changes for auditing.

Key Points to Mention

  • Asynchronous processing with job queues to avoid blocking the admin UI and to handle scale.
  • Chunking reservations into smaller batches to manage memory and database load.
  • Idempotency to ensure safe retries without duplicating updates.
  • Eventual consistency and how to communicate it to admins (e.g., progress indicators).
  • Failure handling: retries, dead-letter queues, and partial failure recovery.
  • Observability: logging, metrics, and audit trails for compliance and debugging.

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

Q3

What assumptions would you state upfront about comment history, auditability, and expected scale before diving into the design?

System DesignAdaptability & Ambiguity
Author's notes

They explicitly asked me to state my assumptions before designing.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by explicitly stating your assumptions about comment history, auditability, and scale, then explain how each assumption shapes your design decisions. Tie these assumptions to Navan's business context (travel and expense management) to show you understand the domain. Invite the interviewer to correct or refine your assumptions to demonstrate collaboration.

Pro tip: Frame assumptions as testable hypotheses and mention how you'd validate them with stakeholders or data, showing you balance speed with rigor. Also, note that auditability often requires immutable logs and retention policies, which can impact storage costs and query performance.

1. Clarify comment history requirements

State assumptions about what comment history includes (e.g., edits, deletions, threading) and how it's accessed (e.g., chronological, searchable). Explain how this affects data modeling and storage.

2. Define auditability needs

Assume audit logs must be immutable, tamper-proof, and retained for a certain period (e.g., 7 years for compliance). Discuss how this influences database choices (e.g., append-only stores) and access controls.

3. Estimate expected scale

Assume scale in terms of users, comments per day, read/write ratio, and growth rate. Explain how these numbers drive decisions on sharding, caching, and indexing.

4. Connect assumptions to design implications

For each assumption, briefly state the architectural consequence (e.g., 'If audit logs are immutable, we'll use a write-once store like Amazon QLDB'). This shows you can translate assumptions into design.

5. Invite validation and iteration

Acknowledge that assumptions may be wrong and propose how you'd validate them (e.g., with product managers, by analyzing existing data). This demonstrates adaptability and collaboration.

Key Points to Mention

  • Comment history: soft vs. hard deletes, edit tracking, versioning, and retrieval patterns.
  • Auditability: compliance requirements (e.g., SOX, GDPR), immutability, retention policies, and access logging.
  • Scale: daily active users, comments per user, peak loads, read/write ratio, and data growth projections.
  • Design implications: database choices (SQL vs. NoSQL, append-only), caching strategies, and partitioning.
  • Trade-offs: consistency vs. availability, cost vs. performance, and simplicity vs. flexibility.
  • Validation: how to confirm assumptions with stakeholders, metrics, or prototypes.

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