•CASE STUDY

911 Emergency Call Routing Platform

5 min read·960 words·Advanced

Asked at

1 candidate report in Oct 2025

How to use this case study

SDE-2 / Mid

  • Explain how a call is received
  • How the caller's location is found
  • How it is routed to the right emergency center (PSAP)

SDE-3 / Senior

  • Go deeper on location sources (network, device GPS, registered address for VoIP)
  • Routing rules by geography
  • Queueing and overflow
  • Callback on disconnect

Staff / Principal

  • Discuss extreme availability (no single point of failure, geo-redundancy)
  • Surge handling during disasters
  • Testing
  • Regulatory requirements

Problem RestatementProblem

Design a platform that lets people place emergency calls from mobile phones, landlines and internet (VoIP) phones and routes each call to the correct emergency response center, called a PSAP (Public Safety Answering Point). The key is getting the caller's location, both to route the call and to send help, and the system must essentially never be down. Salesforce asked this.

RequirementsRequirements

  • Accept emergency calls (voice; optionally text-to-911).
  • Determine the caller's location as accurately and quickly as possible.
  • Route to the right PSAP based on location (county or city boundaries).
  • Show the dispatcher the caller's number, location, and history (e.g., previous calls).
  • Queue calls when all dispatchers are busy, and overflow to backup centers.
  • Callback if the call drops.

1.1 Non-Functional

  • Availability: effectively 99.999%+, with no single point of failure.
  • Low latency: connect within seconds.
  • Surge tolerance: disasters cause huge spikes (many callers about one event).
  • Accuracy and audit: every call recorded and logged.

ArchitectureArchitecture

Architecture diagram
%%{init: {"look":"handDrawn","handDrawnSeed":7,"theme":"base","fontFamily":"Virgil, \"Segoe Print\", \"Comic Sans MS\", cursive","themeVariables":{"fontFamily":"Virgil, \"Segoe Print\", \"Comic Sans MS\", cursive","fontSize":"16px","primaryColor":"#fff4e6","primaryBorderColor":"#1e1e1e","primaryTextColor":"#1e1e1e","secondaryColor":"#e7f5ff","tertiaryColor":"#ebfbee","lineColor":"#1e1e1e","textColor":"#1e1e1e","mainBkg":"#fff4e6","nodeBorder":"#1e1e1e","clusterBkg":"#f8f9fa","edgeLabelBackground":"#ffffff","classText":"#1e1e1e"}}}%%
flowchart LR
    CALLER["Mobile / landline / VoIP"] --> CARR["Carrier network"]
    CARR --> ESI["Emergency call gateway - geo-redundant"]
    ESI --> LOC["Location service"]
    LOC --> DB1[("Carrier cell / GPS location")]
    LOC --> DB2[("Registered addresses - VoIP")]
    ESI --> RT["Routing engine - geo boundaries"]
    RT --> P1["PSAP A - call queue"]
    RT --> P2["PSAP B - backup / overflow"]
    P1 --> D["Dispatcher console - map, caller info"]
    ESI --> REC[("Call records + audio")]

(In the US this is the "Next Generation 911" architecture: an emergency services IP network, location databases, and policy-based routing.)

Deep Dive — Knowing where the caller isDeep dive

The whole system exists to get responders to a location. The caller may be unable to say where they are, so the location has to come from the network, and different call types give it with wildly different precision.

Weak

Use the registered address

Look up the account's billing or service address and route on that.

Architecture diagram
%%{init: {"look":"handDrawn","handDrawnSeed":7,"theme":"base","fontFamily":"Virgil, \"Segoe Print\", \"Comic Sans MS\", cursive","themeVariables":{"fontFamily":"Virgil, \"Segoe Print\", \"Comic Sans MS\", cursive","fontSize":"16px","primaryColor":"#fff4e6","primaryBorderColor":"#1e1e1e","primaryTextColor":"#1e1e1e","secondaryColor":"#e7f5ff","tertiaryColor":"#ebfbee","lineColor":"#1e1e1e","textColor":"#1e1e1e","mainBkg":"#fff4e6","nodeBorder":"#1e1e1e","clusterBkg":"#f8f9fa","edgeLabelBackground":"#ffffff","classText":"#1e1e1e"}}}%%
flowchart LR
  CALL["Emergency call"] --> ACC["Account address on file"]
  ACC --> LAND["Landline - correct"]
  ACC --> MOB["Mobile - the caller is 400 km away"]
  ACC --> VOIP["VoIP - address never updated after moving"]
  MOB --> WRONG["Call routed to the wrong emergency centre"]
  WRONG --> DELAY["Transfer, re-questioning, minutes lost"]

It is right for the one call type that cannot move and wrong for the two that can. A misrouted emergency call is not just slow — it arrives at a centre with no authority to dispatch in that area, so the whole interaction restarts.

Good

Use the carrier's network location

Take the cell tower and sector, which the network knows as soon as the call connects.

This routes correctly, and it is available immediately — which is the property that matters, because routing must happen before anyone speaks. Its precision is the problem: a sector can cover hundreds of metres in a city and kilometres in the countryside. It is enough to pick the right centre and not enough to find the caller.

Best

Route on what is available now, refine continuously

Separate the two questions, because they have different deadlines:

Architecture diagram
%%{init: {"look":"handDrawn","handDrawnSeed":7,"theme":"base","fontFamily":"Virgil, \"Segoe Print\", \"Comic Sans MS\", cursive","themeVariables":{"fontFamily":"Virgil, \"Segoe Print\", \"Comic Sans MS\", cursive","fontSize":"16px","primaryColor":"#fff4e6","primaryBorderColor":"#1e1e1e","primaryTextColor":"#1e1e1e","secondaryColor":"#e7f5ff","tertiaryColor":"#ebfbee","lineColor":"#1e1e1e","textColor":"#1e1e1e","mainBkg":"#fff4e6","nodeBorder":"#1e1e1e","clusterBkg":"#f8f9fa","edgeLabelBackground":"#ffffff","classText":"#1e1e1e"}}}%%
flowchart LR
  T0["Call connects"] --> COARSE["Cell sector / registered address - available instantly"]
  COARSE --> ROUTE["Route to the correct centre - decision made now"]
  T1["Seconds later"] --> DEV["Device location - GPS / Wi-Fi, tens of metres"]
  DEV --> PUSH["Pushed to the dispatcher mid-call"]
  PUSH --> MAP["Dispatcher's map updates while they are still talking"]
  DEV --> BETTER["Later, better fixes keep arriving"]
  BETTER --> PUSH
  • Route on the first good-enough location. Waiting for a precise fix delays the routing decision, and routing only needs to be accurate to a jurisdiction. Precision can arrive afterwards.
  • Device-based location is the accurate source — modern handsets send a GPS/Wi-Fi hybrid fix automatically during an emergency call, accurate to tens of metres — but it takes seconds and may never arrive indoors.
  • Keep updating the dispatcher. The location is a stream, not a field. Each better fix is pushed mid-call, so the map sharpens while the call is still in progress.

VoIP is the awkward case worth raising: there is no network location at all, so it depends on a registered address the user must keep current, supplemented by device location when the app can provide it. That is a known structural weakness of VoIP emergency calling rather than something this design fixes.

Routing

  • PSAP boundaries are stored as geographic polygons. Routing = find which polygon contains the caller's location (a point-in-polygon query with a spatial index).
  • Policy rules on top: time of day, PSAP status (closed, overloaded, evacuated), special numbers, language needs.
  • Overflow: if the primary PSAP's queue is too long or it's unreachable, route to the designated backup PSAP.
  • Transfers: a dispatcher can transfer the call (with all data) to another agency (fire, police, a neighboring county).

Availability and Surges

  • Geo-redundancy: at least two data centers in different regions, active-active. Each call can be handled by either, and carrier trunks connect to both.
  • No shared single points: redundant databases (location, boundaries) replicated to both sites. Routing works from local copies, so it still works if the network to the central DB fails.
  • Degraded mode: if location services fail, route by the carrier's default route for that cell tower and let dispatchers get the location verbally.
  • Surges: queue calls with a recorded message, overflow to partner PSAPs, and give dispatchers a way to see that many calls are about the same incident (clustered by location) so they can prioritize.
  • Callback: the caller's number is always captured first, so a dropped call can be called back.
  • Testing: regular failover drills, and monitoring with synthetic test calls.

Trade-offs & AlternativesTrade-offs

DecisionChoiceWhyAlternative
Routing locationFast coarse location first, refine laterConnect quicklyWait for GPS: delays
TopologyActive-active geo-redundant sitesSurvives site lossActive-passive: failover delay
Data accessLocal replicas of boundaries and addressesWorks during network failuresCentral lookup: single point of failure
OverloadQueues + backup PSAP overflowNo unanswered callsBusy signal: unacceptable

Wrap-UpWrap-up

Receive emergency calls through geo-redundant, active-active gateways. Locate the caller using the fastest available source (cell sector, landline address, VoIP registration) and refine it with device GPS as it arrives. Route by point-in-polygon lookup against PSAP boundaries plus policy rules, with queues, overflow to backup centers, transfers and callbacks. Replicate all routing data locally, have a degraded mode for every dependency, and test failover regularly, because this system must never be down.

More Case Studies

Frequently Asked Questions

What is the 911 Emergency Call Routing Platform system design question?

911 Emergency Call Routing Platform is a system design interview question asked at FAANG companies. It covers real-time, distributed systems, geospatial and tests your ability to design scalable, production-ready systems. InterviewSkool's breakdown walks you through requirements, API design, architecture, and trade-offs.

Which companies ask the 911 Emergency Call Routing Platform question?

Salesforce have reportedly asked variations of this question in system design interviews. The exact wording may differ, but the core design challenges remain the same.

How should I prepare for the 911 Emergency Call Routing Platform interview question?

Start with the problem statement and scale estimates, then design the high-level architecture. Focus on the core components, data model, and API design. InterviewSkool's breakdown covers the full solution with mermaid diagrams and trade-off analysis to help you prep efficiently.

What level is the 911 Emergency Call Routing Platform question?

This question is suitable for SDE-2, SDE-3, and Staff engineer interviews. The level guidance on this page provides specific tips for each level — SDE-2 candidates should focus on core architecture, while Staff engineers should discuss trade-offs, monitoring, and incremental rollouts.

Practice with a Mock Interview

Apply what you learned in a live system design mock interview with InterviewSkool's AI interviewer.

Start System Design Interview →