# Open-source emergency ambulance network — Kolkata v0 (one-pager)

**Intent:** A caller-facing, open dispatch layer that finds the fastest suitable unit across private, government (102/108), and hospital fleets. Start in Kolkata. **108 integration is a later bolt-on, not day one.**

---

## 1. End-to-end call flow

1. **Ingress** — Single number / app / web form (the front door). Capture location (GPS + confirmed address), patient status, and optional requested class.
2. **Triage** — Map symptoms → minimum required class (PTV / BLS / ALS / ICU). Honour an explicit class upgrade if the caller requests one above the triage floor.
3. **Discover** — Query connected fleets for units that are: in-service, correct class or higher, with fresh GPS (or declared station if GPS missing), and ETA ≤ target band.
4. **Assign** — Offer the fastest ETA that meets class; if none ≤ 8 min, assign best available and escalate (second offer, supervisor ping, public ETA honesty).
5. **Navigate** — Push destination + patient notes to the crew app; stream live ETA to caller.
6. **Hand-off** — On arrival: timestamp, destination hospital preference if known, incident close. Store anonymized timing for the performance bar.

No payment step on the critical path for emergency class; billing (if any) is post-trip and capped/auditable.

---

## 2. Ambulance classes (requestable)

| Class | Role | Caller can request? |
|-------|------|---------------------|
| **PTV** | Patient transport (non-critical) | Yes |
| **BLS** | Basic life support | Yes |
| **ALS** | Advanced life support | Yes |
| **ICU / ventilator** | Critical care | Yes |

Rule: triage sets a **floor**; caller request may only **raise** class, never lower below floor.

---

## 3. Performance bar

**Primary SLA:** first suitable unit **arrival ≤ 8 minutes** from confirmed location (urban Kolkata).

Secondary: time-to-assign ≤ 60s; live ETA accuracy; % of calls with GPS-tracked unit.

Dashboard: p50 / p90 arrival by ward (e.g. Tangra), by class, by fleet type.

---

## 4. Single source of contact (day one)

- One brand: number + app + web.
- Day-one partners: private operators + hospital fleets that opt in with live status.
- **Dial 108 / statewide trauma bolt-on later** — after core routing proves out; do not block v0 on government CAD integration.
- Dial **102** (Nishchay Yan / referral) can be a parallel partner when APIs or manual bridge exist; not required for first cut.

---

## 5. Multi-fleet routing

Objective: **min ETA** among eligible units across:

- Private networked fleets (GPS + status API or driver app)
- Government 102/108 (when connected)
- Hospital-owned fleets (e.g. ACLS/ICU dedicated)

Fairness: no exclusive lock-in; open protocol for status + assign + cancel. Prefer open schemas (GeoJSON location, class enum, ETA).

Fallback when GPS absent: station-based ETA with larger uncertainty band; deprioritize vs live GPS peers for the same class.

---

## 6. Open questions (blockers / research)

1. **ICU census gap** — No reliable citywide count of ICU/ventilator units vs total fleet; need a partner survey before promising ICU coverage maps.
2. **GPS on private fleets** — Many private vans are phone-dispatched without continuous tracking; v0 either requires GPS for “eligible” or marks them as low-confidence.
3. **Overcharging** — Private night fleecing remains a known complaint; network should publish capped rates (align with WBCERC-style ceilings) and receipt the trip.

---

## v0 build slice (suggested)

- Caller app + ops console  
- Class enum + triage floor  
- Partner ingest (status + GPS) for ≥1 private + ≥1 hospital fleet  
- Assigner: min ETA with 8-minute bar telemetry  
- No 108 CAD yet  

**Out of scope for v0:** full government CAD, citywide ICU guarantee, payments wallet.
