safety.book_personal_security — Full Intent Specification
INTENT NAMESPACE: safety
INTENT NAME: book_personal_security
FULL ID: safety.book_personal_security
VERSION: v1.0.0
STATUS: live
TTBS WEIGHTS: time 0.20 · taste 0.05 · budget 0.25 · safety 0.50
LAST UPDATED: 2026-05-14
Bodyguard / Personal Security Officer (PSO) / executive protection for an individual or family. Engagement is hourly, daily, or contract. Distinct from safety.subscribe_alarm_monitoring because: (a) protection is in-person and mobile, not a fixed-site CMS; (b) PSO certification (PSARA + Skill Sector Council training band) is the safety lever; (c) armed vs unarmed is regulated by state Arms Act licensing; (d) recce/advance-team work for events may be needed; (e) discretion + plain-clothes vs uniformed protocol is user-driven; (f) NDA + chain-of-command is contractual. TOMO surfaces only PSARA-licensed agencies — never freelance.
1. NATURAL LANGUAGE COVERAGE
Classifies IN
- "book a bodyguard for tomorrow"
- "PSO for my parents at the airport"
- "executive protection 3 days"
- "armed guard for cash transfer (small)"
- "bouncer for event entry"
- "female PSO for my daughter, school pickup week"
- "discreet security at restaurant meeting"
- "8-hour bodyguard tomorrow"
- "VIP protection for visiting executive"
- "security escort for shopping run, jewellery"
Classifies OUT — borderline NO
- "alarm monitoring" →
safety.subscribe_alarm_monitoring - "install CCTV" →
safety.install_home_cctv - "police complaint" → out of v1 (legal aid, not security)
- "personal trainer / fitness" →
lifestyle.book_personal_trainer - "bouncer for entire event venue with multiple doors" →
safety.book_event_security(different scope)
MULTI-INTENT TRIGGERS
- "PSO + chauffeured cab" →
safety.book_personal_security+mobility.book_chauffeur_hourly - "event security + bodyguard for the host" →
safety.book_event_security+safety.book_personal_security - "wedding — bodyguard for bride + event security" → both intents
2. INPUT — TOMO → PROVIDER
{
"intent": "safety.book_personal_security",
"intent_version": "v1.0.0",
"request_id": "req_psec_2x7q_2026-05-14T16:30:00Z",
"user_session_id": "anon_user_token_or_uid",
"engagement": {
"type": "hourly",
"types_allowed": ["hourly", "daily", "weekly", "monthly_contract", "event_one_off"],
"start_iso": "2026-05-15T09:00:00+05:30",
"end_iso": "2026-05-15T17:00:00+05:30",
"city": "Hyderabad",
"principal_count": 1,
"principal_age_band":"adult",
"principal_gender_preference_optional": "any",
"female_pso_required_if_principal_female": true
},
"threat_profile": {
"self_rated": "low",
"self_rated_allowed":["low", "medium", "high", "vip_high"],
"context_note": "Carrying valuable items between locations",
"armed_required": false,
"discretion_band": "plain_clothes"
},
"psos_requested": 1,
"pso_attributes_required": {
"min_height_cm": 175,
"min_experience_years": 2,
"training_level_min": "psara_grade_b",
"languages": ["English", "Hindi", "Telugu"],
"first_aid_certified": true,
"background_check_band": "verified_plus_aadhaar"
},
"logistics": {
"pickup_address_id": "addr_home_v1",
"vehicle_required": false,
"uniform": "civilian"
},
"user_constants": {
"preferred_agencies": ["G4S Securitas", "SIS Security", "Topsgrup", "ISS India"]
}
}
Field rules
engagement.typeENUM strict.threat_profile.armed_required: truerequires partner's PSO to hold valid state Arms Act licence + assignment letter; partner enforces.pso_attributes_required.background_check_band ≥ verifiedmandatory; HARD.female_pso_required_if_principal_female: trueenforced unless principal explicitly opts out.
3. PROVIDER TOOLS
psec.quote
Returns hourly/daily rate × duration + vehicle if requested.
psec.psara_verify
Returns license + state + validity for agency.
psec.assign_pso
Returns assigned PSO id (or pool of ids), badge band, photo (pre-engagement permission required), languages, certifications.
psec.recce_request
For event/high-threat — advance recce 24–72 h before.
psec.live_track
Live GPS during engagement (PSO opts in).
psec.checkin_checkout_capture
Beginning + end of shift photo + signature with principal.
psec.extend
Extend duration mid-engagement.
psec.dispute
For under-performance / misconduct.
psec.cancel
Cancel with policy band per agency.
4. RESPONSE SHAPE
{
"intent": "safety.book_personal_security",
"request_id": "req_psec_2x7q_2026-05-14T16:30:00Z",
"options": [
{
"tier": "OK",
"provider": "SIS Security",
"hourly_rate_inr": 350,
"duration_hours": 8,
"total_inr": 2800,
"psos_assignable": 1,
"training_level_band": "psara_grade_b",
"background_check_band": "verified",
"armed_available": false,
"discretion_band": "plain_clothes",
"psara_license_no": "PSA-TS-2019-XXXX",
"psara_valid_until_iso": "2027-08-31",
"ttbs_score": 0.66,
"tier_reason": "cheapest licensed PSO"
},
{
"tier": "GOOD",
"provider": "G4S Securitas",
"hourly_rate_inr": 550,
"duration_hours": 8,
"total_inr": 4400,
"psos_assignable": 1,
"training_level_band": "psara_grade_a_plus_first_aid",
"background_check_band": "verified_plus_aadhaar",
"armed_available": true,
"discretion_band": "plain_clothes",
"psara_license_no": "PSA-KA-2017-XXXX",
"psara_valid_until_iso": "2028-06-30",
"languages_covered": ["English", "Hindi", "Telugu"],
"ttbs_score": 0.86,
"tier_reason": "balanced — Grade A + first aid + Aadhaar verified"
},
{
"tier": "GREAT",
"provider": "Topsgrup Elite",
"hourly_rate_inr": 900,
"duration_hours": 8,
"total_inr": 7200,
"psos_assignable": 1,
"training_level_band": "ex_armed_forces_plus_psara_a",
"background_check_band": "verified_plus_aadhaar_plus_court",
"armed_available": true,
"discretion_band": "plain_clothes",
"psara_license_no": "PSA-MH-2015-XXXX",
"psara_valid_until_iso": "2029-12-31",
"languages_covered": ["English", "Hindi", "Telugu", "Tamil"],
"recce_team_available": true,
"encrypted_comms_radio": true,
"ttbs_score": 0.94,
"tier_reason": "ex-armed forces + recce + encrypted radio + court-record cleared"
}
]
}
5. CONTROLLED VOCABULARIES
engagement.type
hourly · daily · weekly · monthly_contract · event_one_off
threat_profile.self_rated
low · medium · high · vip_high
discretion_band
uniformed · plain_clothes · formal_suit
training_level
psara_grade_c · psara_grade_b · psara_grade_a_plus_first_aid · ex_armed_forces_plus_psara_a
background_check_band
unverified · verified · verified_plus_aadhaar · verified_plus_aadhaar_plus_court
All STRICT ENUM.
6. TTBS DIMENSIONS
TIME (weight 0.20)
- Assignment lead time (hourly = ≥ 2h; daily = ≥ 12h; event = ≥ 7d preferred)
- PSO ETA at start point
- TIME = lead_band × eta_band
TASTE (weight 0.05)
- Agency brand
- PSO grooming / communication band
- TASTE = brand × pso_comms
BUDGET (weight 0.25)
total_inrvs best- Vehicle / overtime / weapon-deployment surcharge transparency
- BUDGET = 1 − (total − best) / best
SAFETY (weight 0.50 — dominant)
- PSARA license valid + state-aligned
training_level_bandbackground_check_band- First-aid certified
- Armed availability matches threat profile (true positive / true negative)
- Female PSO when principal female + flagged
- Encrypted comms / recce capability for high tier
- NDA / chain-of-command contract signed
- SAFETY = psara × training × bg × first_aid × armed_fit × gender_fit × comms × nda
HARD FILTERS
- PSARA license valid + state-aligned.
- PSO bg band ≥
verified(≥verified_plus_aadhaarfor medium+). - Armed PSO holds individual Arms Act license + assignment letter if
armed_required. - Female PSO assigned if female principal flag set.
- NDA + chain-of-command signed pre-engagement.
7. COMPLETION CONTRACT
Success criteria
- Quote accepted; agency assigned.
- PSO id + badge band + photo released to user with consent.
- NDA + chain-of-command signed.
- PSO check-in at start time + location.
- Live track active (PSO opts in).
- Check-out at end; principal signs satisfaction note.
- CPC webhook fires.
CPC webhook
{
"event": "safety.book_personal_security.completed",
"intent_id": "safety.book_personal_security",
"request_id": "req_psec_2x7q_2026-05-14T16:30:00Z",
"order_id": "PSEC9KP2",
"provider": "G4S Securitas",
"engagement_type": "hourly",
"duration_hours": 8,
"total_inr": 4400,
"tomo_commission_base_inr": 660,
"tomo_commission_inr": 66,
"pass_through_inr": 3740,
"pso_id_anonymized": "PSO-G4S-3Q9P",
"training_level_band": "psara_grade_a_plus_first_aid",
"background_check_band": "verified_plus_aadhaar",
"checkin_iso": "2026-05-15T09:00:00+05:30",
"checkout_iso": "2026-05-15T17:00:00+05:30",
"signature_hmac_sha256": "…"
}
Failure cases
pso_no_show→ emergency replacement within 30 min; partial refund if SLA breached.misconduct_report→ partner investigation + replacement; possible refund.armed_license_lapsed→ block engagement; refund.recce_findings_high_threat→ user advised to upgrade threat profile.
8. WIDGET
{
"widget": "PersonalSecurityWidget",
"header": {
"engagement_strip": "Hourly · 8 hours · 1 PSO · Hyderabad",
"threat_strip": "Self-rated LOW · plain-clothes",
"license_strip": "PSARA verified · valid until 2028-06-30"
},
"regions": {
"region_1_intelligence": ["Grade A training + first aid", "Aadhaar verified", "languages: EN/HI/TE", "NDA + chain-of-command signed before start"],
"region_2_summary": "Start 9 AM tomorrow at home, return 5 PM",
"region_3_visual": "pso_photo_url (post-consent only)",
"region_4_now_pin": "Lock booking — 3 PSOs available tomorrow",
"region_5_tomo_choices": [
{"tier": "OK", "label": "SIS · ₹2,800 · Grade B PSO", "reason": "cheapest licensed"},
{"tier": "GOOD", "label": "G4S · ₹4,400 · Grade A + first aid + Aadhaar verified", "reason": "balanced"},
{"tier": "GREAT", "label": "Topsgrup Elite · ₹7,200 · ex-forces + court-cleared + encrypted radio", "reason": "highest safety"}
]
},
"footer_disclosures": [
"Armed protection requires a separate state Arms Act licence — partner enforces this; we surface the badge.",
"Photo and live-track are with PSO consent — partner agreement covers it; you'll see the consent screen before pickup.",
"NDA and chain-of-command are signed digitally before the PSO starts the shift."
]
}
9. CACHING POLICY
- Quote: 1h TTL.
- PSARA license: 90d cache.
- PSO badge profile: at partner; pointer at TOMO; refreshed per assignment.
- Past engagements: 3 years on-device, encrypted.
- Recce findings: at partner; encrypted; auto-delete 90 days post-engagement unless dispute open.
10. ERROR CODES
| Code | Meaning | UI surface |
|---|---|---|
ERR_PSARA_INVALID |
license expired/lapsed | Drop option |
ERR_PSO_BG_INSUFFICIENT |
bg band too low for tier | Upgrade tier |
ERR_ARMED_LICENSE_MISSING |
armed requested, individual licence absent | Block engagement |
ERR_FEMALE_PSO_UNAVAILABLE |
flag set, no female PSO | Reschedule |
ERR_NDA_NOT_SIGNED |
pre-engagement NDA missing | Inline sign |
ERR_PSO_NO_SHOW |
PSO didn't arrive | Replacement within 30 min |
ERR_RECCE_REQUIRED_NOT_DONE |
high threat, no recce | Schedule recce |
ERR_GENDER_PREF_UNSUPPORTED |
preference can't be honored | Reschedule or override |
ERR_TRAINING_LEVEL_MISMATCH |
partner can't supply requested level | Drop option |
ERR_AGENCY_OFFLINE |
partner API down | Try next |
11. SANDBOX → PRODUCTION CHECKLIST
- Sandbox PSARA verify gating for state-aligned licenses.
- Sandbox armed-license check for individual PSO file.
- Sandbox female-PSO availability check.
- Sandbox NDA + chain-of-command sign flow.
- Sandbox PSO no-show replacement within 30 min.
- Sandbox recce-request flow for high-threat.
- Production PSARA database synced weekly per state.
- Production court-record check supplier validated (if
verified_plus_aadhaar_plus_court). - Production rate-limit: 30 active engagements / user / month (anti-abuse).
- Production CPC HMAC-SHA256 5-min replay verified.
- Production agency rotation tested at peak demand cities.
12. ANTI-FABRICATION RULES
- NO
paid_placementon agencies. - NO synthetic PSO photos.
- NO claim of "ex-armed forces" without partner-attested service record.
- NO bundling promo into hourly rate.
- NO armed deployment without individual Arms Act licence on file.
- NO TOMO-issued PSARA badge.
- NO holding NDA or recce documents at TOMO beyond pointer.
- NO synthetic court-record claim.
- NO claim of police partnership — police escalation is via 100/112.
- NO marketing language ("VIP-grade security").
13. REGULATORY FRAMING
- PSARA 2005 + state rules — agency license + PSO training.
- Arms Act 1959 + state rules — armed PSO requires individual licence + assignment letter.
- Contract Labour Act 1970 — engagement type compliance.
- Industrial Disputes Act / Shops & Establishments state rules — PSO duty hours.
- Indian Penal Code §97–106 — private defence; PSO may act only in proportionate self-defence of principal.
- CrPC — only police can detain; PSO may only restrain in moment of imminent threat.
- DPDPA 2023 — PSO id + photo + recce + engagement details = personal data; partner is processor.
- TOMO is router only — does NOT employ PSOs, does NOT issue licences, does NOT bear assault liability.