safety.book_roadside_assistance — Full Intent Specification
INTENT NAMESPACE: safety
INTENT NAME: book_roadside_assistance
FULL ID: safety.book_roadside_assistance
VERSION: v1.0.0
STATUS: live
TTBS WEIGHTS: time 0.45 · taste 0.05 · budget 0.25 · safety 0.25
LAST UPDATED: 2026-05-14
On-demand vehicle breakdown response: flat tyre, jumpstart, lockout, fuel delivery, towing, minor repair on-spot. Distinct from auto.book_breakdown_assist (same domain but service-tier oriented) because: (a) this is the SAFETY-domain emergency framing — user is potentially stranded on a highway or in unsafe terrain at night; (b) ETA targets are tighter (≤ 45 min metro, ≤ 90 min outstation); (c) responder vetting + lone-traveller protocol (especially female / night) matters more than service quality; (d) escalation tree includes 112 emergency dispatch where injury or imminent threat is implied; (e) towing destination must be a verified network garage or user-chosen address. This intent lives in safety.* because the user said "I'm stranded" — not "I want to service my car".
1. NATURAL LANGUAGE COVERAGE
Classifies IN
- "car broken down, need help"
- "flat tyre, NH-44, near Kurnool"
- "battery dead, need jumpstart"
- "locked out of my car"
- "ran out of fuel, send some"
- "tow truck Hyderabad outer ring road"
- "stranded with my kids, breakdown"
- "engine overheating, can't move"
- "lone driver, midnight breakdown"
- "Allianz / Allstate RSA, claim"
Classifies OUT — borderline NO
- "regular car service" →
auto.book_general_service - "AC repair" →
auto.book_ac_service - "insurance renewal" →
finance.buy_motor_insurance - "bike transport" →
logistics.book_bike_transport - "ambulance" →
safety.book_private_ambulance(if injury / medical)
MULTI-INTENT TRIGGERS
- "breakdown + tow to my preferred garage + service quote" →
safety.book_roadside_assistance+auto.book_general_service - "breakdown + ambulance for injured passenger" →
safety.book_roadside_assistance+safety.book_private_ambulance - "breakdown + cab to hotel for the night" →
safety.book_roadside_assistance+mobility.book_intracity_ride
2. INPUT — TOMO → PROVIDER
{
"intent": "safety.book_roadside_assistance",
"intent_version": "v1.0.0",
"request_id": "req_rsa_8q3p_2026-05-14T22:45:00Z",
"user_session_id": "anon_user_token_or_uid",
"incident": {
"type": "flat_tyre",
"types_allowed": ["flat_tyre", "jumpstart_battery", "lockout", "fuel_delivery", "minor_repair_onspot", "tow_to_garage", "tow_to_address"],
"severity": "non_emergency",
"severity_allowed": ["non_emergency", "stranded_in_unsafe_location", "imminent_threat"]
},
"location": {
"lat": 16.5417,
"lng": 78.3553,
"geocoded_label": "NH-44, ~5 km north of Kurnool",
"is_highway": true,
"is_outstation": true,
"nearest_city": "Kurnool",
"nearest_city_distance_km": 5
},
"vehicle": {
"make": "Maruti Suzuki",
"model": "Swift",
"rc_number": "TS09EZXXXX",
"fuel_type": "petrol",
"wheels": 4
},
"passenger_context": {
"count": 3,
"minors_present": true,
"lone_driver_female_flag": false,
"is_night": true
},
"destination_if_tow": {
"preferred": "network_garage",
"preferred_allowed": ["network_garage", "user_chosen_address"],
"user_chosen_address_id": null
},
"user_constants": {
"preferred_providers": ["AllianzAssistance", "Europ Assistance", "Bajaj RSA", "Allstate RSA India"],
"active_rsa_subscription_id_optional": "RSA-ALZ-77321"
}
}
Field rules
severity: imminent_threattriggers ESCALATION to 112 alongside provider dispatch.is_night: true+lone_driver_female_flag: trueHARD requires female-friendly responder protocol (recorded ETA + check-in calls).incident.typeSTRICT ENUM.tow_to_addressonly ifuser_chosen_address_idnon-null.
3. PROVIDER TOOLS
rsa.quote
Returns price (free if active subscription) + ETA + responder profile.
rsa.subscription_check
Returns whether the user's RSA subscription covers this incident, distance from base, and number of free events left in year.
rsa.dispatch
Dispatches nearest responder; returns responder_id, responder_phone, vehicle_plate, ETA.
rsa.escalate_112
For imminent_threat — co-dispatches 112 with metadata.
rsa.live_track
Live GPS of responder.
rsa.responder_arrival_capture
Photo of responder + arrival timestamp.
rsa.completion_capture
Photo post-service + signed acknowledgement.
rsa.tow_handoff
At destination garage — handover photos.
rsa.cancel
Allowed before responder dispatch only.
4. RESPONSE SHAPE
{
"intent": "safety.book_roadside_assistance",
"request_id": "req_rsa_8q3p_2026-05-14T22:45:00Z",
"subscription_check": {
"covered": true,
"subscription_id": "RSA-ALZ-77321",
"free_events_remaining_this_year": 3,
"covered_incident_types": ["flat_tyre", "jumpstart_battery", "lockout", "fuel_delivery", "minor_repair_onspot", "tow_to_garage"]
},
"options": [
{
"tier": "OK",
"provider": "Bajaj RSA",
"responder_eta_min": 60,
"price_inr_after_cover": 0,
"price_inr_without_cover": 1500,
"responder_bg_band": "verified",
"responder_uniform_marked_vehicle": true,
"night_protocol_active": true,
"ttbs_score": 0.66,
"tier_reason": "covered fully, 60-min ETA"
},
{
"tier": "GOOD",
"provider": "AllianzAssistance",
"responder_eta_min": 35,
"price_inr_after_cover": 0,
"price_inr_without_cover": 1800,
"responder_bg_band": "verified_plus_aadhaar",
"responder_uniform_marked_vehicle": true,
"night_protocol_active": true,
"female_friendly_protocol": true,
"check_in_call_at_arrival": true,
"ttbs_score": 0.85,
"tier_reason": "balanced — 35-min ETA + female-friendly protocol"
},
{
"tier": "GREAT",
"provider": "Europ Assistance",
"responder_eta_min": 25,
"price_inr_after_cover": 0,
"price_inr_without_cover": 2400,
"responder_bg_band": "verified_plus_aadhaar_plus_court",
"responder_uniform_marked_vehicle": true,
"night_protocol_active": true,
"female_friendly_protocol": true,
"check_in_call_at_arrival": true,
"encrypted_voice_with_cms": true,
"redundant_responder_dispatched": true,
"ttbs_score": 0.93,
"tier_reason": "fastest + court-cleared + redundant responder"
}
],
"escalation_state": {
"112_called": false,
"112_recommended": false,
"user_safe_to_wait": true
}
}
5. CONTROLLED VOCABULARIES
incident.type
flat_tyre · jumpstart_battery · lockout · fuel_delivery · minor_repair_onspot · tow_to_garage · tow_to_address
incident.severity
non_emergency · stranded_in_unsafe_location · imminent_threat
destination_if_tow.preferred
network_garage · user_chosen_address
responder_bg_band
unverified · verified · verified_plus_aadhaar · verified_plus_aadhaar_plus_court
All STRICT ENUM.
6. TTBS DIMENSIONS
TIME (weight 0.45 — dominant)
responder_eta_min— smaller = better- 45 min cap on metro, 90 min on highway
- Same-tier ETA comparison weighted exponentially
- TIME = max(0, 1 − eta_min / 90)
TASTE (weight 0.05)
- Responder communication band
- App tracking UX
- TASTE = comms × ux
BUDGET (weight 0.25)
price_inr_after_cover(0 if subscription covers)- Without-cover fallback transparency
- Tow distance overage band
- BUDGET = 1 if covered, else 1 − (price − best) / best
SAFETY (weight 0.25)
- Responder bg band
- Marked vehicle + uniform
- Night protocol active
- Female-friendly protocol when flagged
- Check-in call at arrival
- Encrypted CMS voice
- 112 escalation co-dispatch when severity = imminent_threat
- SAFETY = bg × marked × night × female_fit × checkin × encrypted × escalation_fit
HARD FILTERS
- Responder bg band ≥
verified. - Female-friendly protocol active if
lone_driver_female_flag: true. - Night protocol active if
is_night: true. - 112 escalation co-dispatched if
severity: imminent_threat. - ETA ≤ 90 min (highway) / 45 min (metro).
7. COMPLETION CONTRACT
Success criteria
- Quote returned; subscription cover applied if any.
- Responder dispatched with photo + phone + plate.
- Live track shared with user.
- Check-in call at responder arrival (if female-friendly flag).
- Incident resolved; service done or tow completed.
- Photo + signed acknowledgement.
- CPC webhook fires.
CPC webhook
{
"event": "safety.book_roadside_assistance.completed",
"intent_id": "safety.book_roadside_assistance",
"request_id": "req_rsa_8q3p_2026-05-14T22:45:00Z",
"order_id": "RSA9KP72",
"provider": "AllianzAssistance",
"incident_type": "flat_tyre",
"responder_eta_actual_min": 32,
"subscription_used": "RSA-ALZ-77321",
"price_inr_after_cover": 0,
"price_inr_without_cover": 1800,
"tomo_commission_base_inr": 270,
"tomo_commission_inr": 27,
"pass_through_inr": 1530,
"responder_id_anonymized": "RES-AZ-7321",
"completed_at_iso": "2026-05-14T23:32:00+05:30",
"signature_hmac_sha256": "…"
}
(tomo_commission_base_inr = partner's contracted referral on NET; price_inr_without_cover shown for honesty even when zero billed.)
Failure cases
responder_no_show→ emergency replacement; partner SLA penalty.incident_severity_upgraded_to_imminent→ 112 dispatched.tow_garage_unavailable→ re-route to alt network garage.subscription_invalid→ user pays per without-cover price with explicit consent.
8. WIDGET
{
"widget": "RoadsideAssistanceWidget",
"header": {
"incident_strip": "Flat tyre · NH-44 · Kurnool ~5 km",
"context_strip": "Night · 3 passengers (1 minor)",
"subscription_strip": "Allianz RSA covered · 3 events left this year"
},
"regions": {
"region_1_intelligence": ["responder Aadhaar verified", "uniformed marked vehicle", "check-in call at arrival", "live GPS active"],
"region_2_summary": "Dispatching responder, ETA ~35 min",
"region_3_visual": "responder_photo_url (post-assignment, partner-supplied)",
"region_4_now_pin": "Stay in your vehicle with doors locked · share location with kin",
"region_5_tomo_choices": [
{"tier": "OK", "label": "Bajaj RSA · ₹0 (covered) · 60 min", "reason": "covered, slower"},
{"tier": "GOOD", "label": "AllianzAssistance · ₹0 (covered) · 35 min · female-friendly", "reason": "balanced"},
{"tier": "GREAT", "label": "Europ Assistance · ₹0 (covered) · 25 min · redundant responder", "reason": "fastest + safest"}
]
},
"footer_disclosures": [
"If you feel unsafe right now, tap the red SOS button to co-dispatch 112 alongside the responder.",
"Stay inside the vehicle with hazard lights on; the responder will call you at arrival.",
"If someone is injured, switch to the ambulance flow — it's faster for medical."
]
}
9. CACHING POLICY
- Quote: 60s TTL.
- Subscription cover status: cache 24h; refresh on first request of the day.
- Responder GPS: live.
- Incident records: 5 years at partner per insurance audit; 1 year on-device for user.
- Photo: hash at TOMO; full at partner.
10. ERROR CODES
| Code | Meaning | UI surface |
|---|---|---|
ERR_NO_RESPONDER_IN_RANGE |
no responder in radius | Try next provider |
ERR_RESPONDER_NO_SHOW |
dispatched but no arrival | Replacement + SLA penalty |
ERR_TOW_GARAGE_UNAVAILABLE |
network garage down | Alt garage or user-chosen address |
ERR_SUBSCRIPTION_INVALID |
cover not applicable | Without-cover quote with consent |
ERR_BG_BAND_TOO_LOW |
bg below verified |
Drop option |
ERR_NIGHT_PROTOCOL_OFF |
partner doesn't operate night protocol | Drop option |
ERR_FEMALE_FRIENDLY_PROTOCOL_OFF |
flag set, partner can't honor | Drop option |
ERR_ESCALATION_112_FAILED |
112 dial failed | Retry; partner-side fallback |
ERR_VEHICLE_UNSUPPORTED |
wheels/fuel partner can't service | Try alt provider |
ERR_PARTNER_OFFLINE |
partner API down | Try next |
11. SANDBOX → PRODUCTION CHECKLIST
- Sandbox 112 co-dispatch on
imminent_threat. - Sandbox night + female-friendly protocol gating.
- Sandbox responder no-show triggers replacement.
- Sandbox subscription cover applied for valid subs; without-cover quote otherwise.
- Sandbox tow handoff photo capture mandatory.
- Production responder bg band sourced from partner.
- Production responder rotation tested at peak hours and highway corridors.
- Production rate limit: 30 incidents/user/year (anti-abuse).
- Production CPC HMAC-SHA256 5-min replay verified.
- Production 112 escalation tested with partner CMS.
12. ANTI-FABRICATION RULES
- NO
paid_placementon providers — TTBS only. - NO synthetic responder photos.
- NO "fastest in city" claim without partner ETA SLA.
- NO concealing without-cover price when subscription covers.
- NO claim of police partnership — 112 is the escalation channel.
- NO TOMO-issued responder badge.
- NO holding incident video at TOMO.
- NO synthetic female-friendly protocol claim.
- NO bundling promo into RSA price.
- NO marketing language ("smart roadside").
13. REGULATORY FRAMING
- Motor Vehicles Act 1988 + Rules 1989 — towing, fitness, fuel delivery norms.
- PSARA 2005 where partner deploys uniformed responders.
- Insurance Act 1938 / IRDAI — RSA add-on or standalone insurance product.
- CrPC + IPC — 112 is the legal emergency dispatch.
- Petroleum Rules 2002 — fuel delivery on-spot must use approved jerry-cans (partner ensures).
- DPDPA 2023 — location, RC, responder profile = personal data; partner is processor.
- Consumer Protection Act 2019 — partner is service provider.
- TOMO is router only — does NOT employ responders, does NOT operate tow trucks, does NOT carry medical/dispatch liability.