← American Express Interview Insights

American Express·AI Engineer·Onsite - System Design / Architecture·Senior

Senior
Jun 2026

Summary

System design round at Amex for an AI Engineer position, focused almost entirely on fault tolerance and reliability for AI systems. Pretty deep dive, more infrastructure-heavy than I expected for an AI role.

Questions Asked (6)

Q1

How would you design a fault-tolerant AI system that can recover from failures, covering both stateless and stateful components?

System DesignTechnical Trade-offs
Author's notes

This was the anchor question and it sprawled into everything else.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the system's requirements and constraints, then break down the architecture into stateless and stateful components. For each, describe specific fault-tolerance mechanisms such as redundancy, replication, checkpointing, and graceful degradation, and explain how they enable recovery. Conclude with trade-offs and monitoring strategies.

Pro tip: Emphasize that fault tolerance in AI systems must also consider model-specific failures like data drift or corrupted model artifacts, not just infrastructure failures. Mention that recovery should include validation of model performance post-recovery.

1. Clarify Requirements and Scope

Ask about expected failure modes, recovery time objectives (RTO), recovery point objectives (RPO), and whether the system is real-time or batch. This shows you tailor solutions to business needs.

2. Architect for Stateless Components

Design stateless services (e.g., inference APIs) to be horizontally scalable and idempotent, using load balancers and health checks to route around failures. Leverage container orchestration for automatic restarts and rolling updates.

3. Architect for Stateful Components

For stateful parts (e.g., model stores, feature stores, training pipelines), use replication, sharding, and consensus protocols. Implement checkpointing for long-running jobs and persistent storage with backups.

4. Implement Recovery and Failover Mechanisms

Define automated failover for stateful components, retry logic with exponential backoff for transient errors, and circuit breakers to prevent cascading failures. Ensure data consistency and model versioning during recovery.

5. Monitor, Test, and Iterate

Set up comprehensive monitoring (logs, metrics, traces) and alerting. Conduct chaos engineering experiments to validate fault tolerance. Continuously refine based on post-mortems.

Key Points to Mention

  • Redundancy and replication for both stateless (multiple instances) and stateful (database replicas) components.
  • Checkpointing and model versioning to recover training state and ensure correct model deployment.
  • Idempotency and exactly-once processing semantics for stateless services to avoid duplicate side effects.
  • Graceful degradation: fallback to simpler models or cached results when primary components fail.
  • Monitoring and observability: track model performance, data drift, and system health to detect and recover from AI-specific failures.
  • Trade-offs: cost vs. availability, consistency vs. latency, and complexity vs. resilience.

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

Q2

How do you handle idempotency and exactly-once semantics when retrying LLM or tool calls?

System DesignTechnical Trade-offs
Author's notes

Blanked for a second on exactly-once semantics in the context of LLM calls specifically.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by distinguishing idempotency (safe retries) from exactly-once semantics (no duplicates or losses), then explain how you'd design the system to achieve both. Focus on practical patterns like idempotency keys, deduplication, and transactional boundaries, and tie them to LLM/tool call retries in a financial context.

Pro tip: Emphasize that exactly-once is often a trade-off between cost and correctness—in practice, you aim for effectively-once by combining idempotent operations with at-least-once delivery and deduplication. Mention that for LLM calls, you can cache responses keyed by a hash of the prompt and parameters to avoid duplicate side effects.

1. Clarify definitions and requirements

Define idempotency and exactly-once semantics in the context of LLM/tool calls, and identify where duplicates or losses are unacceptable (e.g., financial transactions).

2. Design for idempotency

Use idempotency keys for each request, store them with the response, and ensure that retries with the same key return the cached result without re-executing side effects.

3. Implement deduplication and exactly-once processing

Leverage message queues with deduplication, transactional outbox patterns, and unique constraints to prevent duplicate processing across retries.

4. Handle LLM-specific challenges

For LLM calls, cache responses based on a hash of the input and parameters, and consider using deterministic settings or fallback mechanisms to avoid inconsistent outputs on retry.

5. Monitor and reconcile

Set up logging, metrics, and reconciliation jobs to detect and correct any duplicates or losses, ensuring eventual consistency and auditability.

Key Points to Mention

  • Idempotency keys and their storage with TTL
  • At-least-once delivery with deduplication for effectively-once semantics
  • Transactional outbox pattern for atomic state changes and message publishing
  • Caching LLM responses using prompt hashing to avoid duplicate side effects
  • Unique constraints in databases to prevent duplicate records
  • Trade-offs between latency, cost, and correctness in retry strategies

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

Q3

What retry and circuit breaker strategies would you use around LLM and retrieval backend calls?

System DesignAPI & Integrations
Author's notes

Comfortable here.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by distinguishing between transient and non-transient failures, then propose layered resilience patterns: retries with exponential backoff and jitter for LLM/retrieval calls, circuit breakers to prevent cascading failures, and fallbacks like cached responses or degraded models. Emphasize that strategies must be tuned to the specific cost, latency, and idempotency characteristics of each backend.

Pro tip: In regulated environments like American Express, always mention observability and auditability—e.g., logging retry attempts and circuit state changes—and tie your strategy to SLOs and error budgets to show business alignment.

1. Classify failure modes and backend characteristics

Identify which errors are retryable (e.g., timeouts, 5xx, rate limits) vs. non-retryable (e.g., 4xx, malformed prompts), and note differences between LLM calls (expensive, non-idempotent) and retrieval calls (cheaper, often idempotent).

2. Design retry policy with backoff and jitter

Use exponential backoff with jitter, cap max retries (e.g., 3), and set per-attempt timeouts; for LLMs, consider retrying only on transient errors and avoid retrying on content policy violations.

3. Implement circuit breakers with fallbacks

Wrap each backend call in a circuit breaker that opens after a threshold of failures, then route to fallbacks: cached responses, a smaller/local model, or a simpler retrieval method.

4. Add observability and dynamic tuning

Emit metrics for retry counts, circuit state, and fallback usage; use these to tune thresholds and backoff parameters, and integrate with alerting based on SLOs.

5. Validate with chaos testing and load tests

Simulate backend failures and latency spikes to verify that retries and circuit breakers behave as intended without causing retry storms or resource exhaustion.

Key Points to Mention

  • Exponential backoff with jitter to avoid thundering herd
  • Circuit breaker states (closed, open, half-open) and thresholds
  • Fallback strategies: cached responses, degraded models, or static answers
  • Idempotency and cost considerations for LLM calls
  • Observability: metrics, logging, and tracing for retries and circuit events
  • SLOs and error budgets to guide retry and circuit breaker configuration

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

Q4

How would you design graceful degradation when a downstream model or retrieval backend becomes unhealthy?

System DesignTechnical Trade-offs
Author's notes

Talked about fallback chains, serving cached responses, and dropping to a simpler model when the primary is down.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the system's criticality and user expectations, then outline a layered degradation strategy that prioritizes core functionality. Emphasize monitoring, fallbacks, and graceful user experience, and discuss trade-offs between consistency, latency, and cost.

Pro tip: Tie your answer to American Express's need for high reliability and regulatory compliance—mention that degradation must be auditable and never compromise data integrity or customer trust.

1. Define health and failure modes

Identify what 'unhealthy' means for each downstream component (e.g., timeouts, error rates, latency spikes) and classify failures as transient or persistent.

2. Prioritize functionality

Determine which features are critical (e.g., fraud detection) versus non-critical (e.g., personalized recommendations) and design degradation tiers accordingly.

3. Implement fallback mechanisms

For each tier, specify fallbacks such as cached results, simpler models, rule-based systems, or default responses, ensuring they are pre-computed and readily available.

4. Monitor and automate recovery

Set up real-time health checks, circuit breakers, and automated alerts to trigger degradation and restoration, with clear rollback procedures.

5. Validate and iterate

Test degradation scenarios via chaos engineering, measure impact on user experience and business metrics, and refine thresholds and fallbacks based on learnings.

Key Points to Mention

  • Circuit breaker pattern to prevent cascading failures and allow recovery
  • Caching strategies (e.g., Redis) for retrieval backends and model outputs
  • Fallback to simpler models or rule-based systems when primary model is unhealthy
  • Graceful user experience: informative messages, reduced functionality, or queuing requests
  • Monitoring and observability: metrics, logs, and traces to detect and diagnose issues
  • Trade-offs: consistency vs. availability, latency vs. accuracy, and cost implications

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

Q5

How would you approach multi-region replication and failover for an AI system, including both model artifacts and runtime state?

System DesignSystem Design
Author's notes

The model artifacts piece was fine, object storage replication, versioning, nothing exotic.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the system's requirements, such as RTO/RPO, data consistency needs, and compliance constraints. Then, describe a multi-region architecture that separates model artifacts (versioned, immutable) from runtime state (mutable, replicated), using appropriate replication strategies for each. Finally, explain failover mechanisms, including health checks, traffic routing, and data synchronization, ensuring minimal downtime and data loss.

Pro tip: Emphasize the importance of testing failover regularly and automating the process to avoid human error, especially in a regulated environment like American Express where auditability and compliance are critical.

1. Clarify Requirements

Ask about RTO/RPO, consistency requirements, data residency, and compliance constraints to tailor the solution.

2. Design Artifact Replication

Use object storage with cross-region replication for model artifacts, ensuring versioning and immutability for auditability.

3. Design Runtime State Replication

Choose a replication strategy (e.g., active-active or active-passive) for runtime state, considering database replication, caching, and session state.

4. Implement Failover Mechanism

Set up health checks, DNS failover, and load balancing to automatically redirect traffic to the healthy region, with minimal data loss.

5. Test and Monitor

Regularly test failover scenarios, monitor replication lag, and automate recovery processes to ensure reliability and compliance.

Key Points to Mention

  • RTO/RPO definitions and how they influence design choices
  • Model artifact versioning and immutable storage (e.g., S3 with cross-region replication)
  • Runtime state replication strategies (e.g., active-active vs. active-passive, database replication)
  • Failover automation using health checks and DNS routing (e.g., Route 53)
  • Data consistency and conflict resolution in multi-region setups
  • Compliance and auditability requirements in financial services

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

Q6

How do you handle KV-cache invalidation, prompt versioning, and reproducibility when model versions change?

System DesignTechnical Trade-offsRoot Cause Analysis
Author's notes

This is where the AI-specific angle hit hard.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by framing the problem as a versioning and reproducibility challenge across the ML lifecycle, then walk through a concrete system design that ties together cache invalidation, prompt versioning, and model versioning. Emphasize trade-offs between consistency, latency, and cost, and how you'd implement safeguards like canary deployments and automated rollbacks.

Pro tip: In regulated industries like finance, always mention auditability and compliance—e.g., storing immutable prompt and model version metadata for every inference to enable post-hoc analysis and regulatory reporting.

1. Define versioning strategy

Establish a unified versioning scheme for models, prompts, and KV-cache entries, using semantic versioning or content hashes to uniquely identify each artifact.

2. Design cache invalidation

Implement cache keys that incorporate model and prompt versions, and use TTLs or event-driven invalidation to evict stale entries when versions change.

3. Ensure reproducibility

Log all inputs, model versions, prompt versions, and random seeds for each inference, enabling exact replay and debugging.

4. Handle model version changes

Use blue-green or canary deployments to roll out new model versions, with automated monitoring and rollback triggers to mitigate regressions.

5. Address trade-offs and compliance

Balance latency, cost, and consistency; for regulated environments, ensure audit trails and data retention policies are met.

Key Points to Mention

  • Cache key design: include model version, prompt version, and input hash to avoid stale responses.
  • Prompt versioning: treat prompts as code, store in version control, and use immutable identifiers.
  • Reproducibility: log all inference metadata (model, prompt, seed, parameters) for replay and debugging.
  • Model versioning: use semantic versioning, maintain a model registry, and document changes.
  • Deployment strategies: canary releases, A/B testing, and automated rollbacks for safe model updates.
  • Compliance and auditability: retain versioned artifacts and logs for regulatory requirements.

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