T
TOMO
Developer Docs
BETA These docs are under partner review. Some features described are roadmap items, not yet shipped. Verify against your sandbox before relying on any contract.
● LIVEv1.0.0safety.book_event_security

safety.book_event_security — Full Intent Specification

INTENT NAMESPACE: safety
INTENT NAME:      book_event_security
FULL ID:          safety.book_event_security
VERSION:          v1.0.0
STATUS:           live
TTBS WEIGHTS:     time 0.20 · taste 0.10 · budget 0.25 · safety 0.45
LAST UPDATED:     2026-05-14

Security manpower + access-control + frisking + crowd-management for a one-off event: wedding, corporate function, concert at a private venue, school annual day, political rally (private organizer), startup conference. Distinct from safety.book_personal_security because: (a) scope is venue + crowd, not principal; (b) headcount ranges from 4 to 200+ guards; (c) access-control hardware (gates, magnetometers, x-ray) may be needed; (d) DGP / commissioner permission may be needed for large events (>500 attendees); (e) fire NOC, alcohol permit, ambulance standby, traffic plan all become part of safety. Partners are PSARA-licensed event-security divisions.


1. NATURAL LANGUAGE COVERAGE

Classifies IN

  • "security for wedding 300 guests"
  • "bouncers for corporate event"
  • "frisking + access control for concert"
  • "event security 7 PM Saturday"
  • "crowd management 1000 attendees"
  • "anti-poaching security at startup conference"
  • "VIP arrival management at venue"
  • "security for school annual day"
  • "magnetometer for entry"
  • "event guards 8-hour shift"

Classifies OUT — borderline NO

  • "personal bodyguard for host" → safety.book_personal_security
  • "venue booking" → entertainment.book_event_venue / entertainment.book_party_hall
  • "police bandobast" → public-event police; out of v1 (govt-only)
  • "fire NOC application" → not this intent (partner may assist)
  • "DJ + bouncer combo" → DJ is entertainment; bouncer subset of event security

MULTI-INTENT TRIGGERS

  • "venue + catering + event security" → entertainment.book_event_venue + food.book_catering_event + safety.book_event_security
  • "concert ticket + event security for after-party" → entertainment.book_concert_ticket + safety.book_event_security
  • "wedding photographer + event security + personal bodyguard for bride" → multi-domain

2. INPUT — TOMO → PROVIDER

{
  "intent":          "safety.book_event_security",
  "intent_version":  "v1.0.0",
  "request_id":      "req_esec_4r2p_2026-05-14T17:30:00Z",
  "user_session_id": "anon_user_token_or_uid",

  "event": {
    "type":             "wedding_reception",
    "types_allowed":    ["wedding_reception", "corporate_function", "concert_private_venue", "school_event", "religious_gathering", "political_rally_private", "startup_conference", "exhibition_trade"],
    "expected_attendees": 300,
    "start_iso":        "2026-06-12T18:00:00+05:30",
    "end_iso":          "2026-06-12T23:30:00+05:30",
    "venue_address_id": "addr_venue_v1",
    "venue_type":       "indoor_outdoor_lawn",
    "alcohol_served":   true,
    "celebrity_attendees_flag": false
  },

  "manpower_request": {
    "guards_count":          12,
    "bouncers_count":        6,
    "supervisors_count":     1,
    "female_guards_count":   3,
    "frisking_lane_count":   2,
    "vehicle_parking_marshal_count": 4
  },

  "hardware_request": {
    "metal_detectors_walk_through": 2,
    "metal_detectors_handheld":     4,
    "x_ray_baggage":                0,
    "barricades_count":             20,
    "communication_radios":         "partner_supplied"
  },

  "standby": {
    "ambulance_standby_required": true,
    "ambulance_class":            "bls",
    "fire_extinguisher_check":    true
  },

  "permits": {
    "commissioner_permission":      "not_required",
    "fire_noc":                     "venue_owner_holds",
    "alcohol_permit":               "user_holds"
  },

  "user_constants": {
    "preferred_agencies": ["G4S Events", "Securitas Events", "Topsgrup Events", "SIS Events"]
  }
}

Field rules

  • expected_attendees > 500 → commissioner_permission becomes mandatory; UI surfaces requirement honestly.
  • alcohol_served: true requires alcohol_permit field; partner verifies before deployment.
  • Guards/bouncers/supervisors counts STRICT integers.
  • female_guards_count mandatory if female attendees expected > 30%.

3. PROVIDER TOOLS

esec.quote

Returns total price by guard-hour + hardware + standby.

esec.psara_verify

Returns agency license + state validity.

esec.permit_check

Cross-checks user's permit declarations against partner's compliance matrix.

esec.assign_team

Returns team roster (anonymized ids + bands) + supervisor contact.

esec.recce

Pre-event venue recce 24–72h before.

esec.live_track

Live ops dashboard during event window.

esec.completion_handover

Post-event signoff + incident register.

esec.dispute

Misconduct / SLA breach post-event.

esec.cancel

Cancel with partner-specific notice band.


4. RESPONSE SHAPE

{
  "intent": "safety.book_event_security",
  "request_id": "req_esec_4r2p_2026-05-14T17:30:00Z",
  "permit_check": {
    "commissioner_permission_required": false,
    "fire_noc_status": "venue_owner_holds",
    "alcohol_permit_status": "user_holds",
    "all_pass": true
  },
  "options": [
    {
      "tier": "OK",
      "provider": "SIS Events",
      "hourly_rate_per_guard_inr": 220,
      "guards_total": 19,
      "supervisors": 1,
      "bouncers": 6,
      "female_guards": 3,
      "hardware_included": {"walk_through": 2, "handheld": 4, "barricades": 20},
      "ambulance_standby_included": false,
      "ambulance_standby_addon_inr": 2500,
      "duration_hours": 6,
      "total_inr": 30580,
      "psara_license_no": "PSA-TS-2018-XXXX",
      "psara_valid_until_iso": "2027-08-31",
      "ttbs_score": 0.66,
      "tier_reason": "cheapest licensed event team"
    },
    {
      "tier": "GOOD",
      "provider": "G4S Events",
      "hourly_rate_per_guard_inr": 320,
      "guards_total": 19,
      "supervisors": 1,
      "bouncers": 6,
      "female_guards": 3,
      "hardware_included": {"walk_through": 2, "handheld": 4, "barricades": 20},
      "ambulance_standby_included": true,
      "duration_hours": 6,
      "total_inr": 44640,
      "psara_license_no": "PSA-KA-2017-XXXX",
      "psara_valid_until_iso": "2028-06-30",
      "background_check_band": "verified_plus_aadhaar",
      "encrypted_radio": true,
      "recce_included": true,
      "ttbs_score": 0.87,
      "tier_reason": "balanced — ambulance standby + recce + encrypted radio"
    },
    {
      "tier": "GREAT",
      "provider": "Topsgrup Events Elite",
      "hourly_rate_per_guard_inr": 450,
      "guards_total": 19,
      "supervisors": 2,
      "bouncers": 6,
      "female_guards": 3,
      "hardware_included": {"walk_through": 2, "handheld": 4, "barricades": 20, "x_ray_baggage": 1},
      "ambulance_standby_included": true,
      "ambulance_class_standby": "als",
      "duration_hours": 6,
      "total_inr": 64200,
      "psara_license_no": "PSA-MH-2016-XXXX",
      "psara_valid_until_iso": "2029-12-31",
      "background_check_band": "verified_plus_aadhaar_plus_court",
      "encrypted_radio": true,
      "recce_included": true,
      "vip_arrival_management": true,
      "dedicated_supervisor_per_zone": true,
      "ttbs_score": 0.93,
      "tier_reason": "ALS ambulance + X-ray + court-cleared + 2 supervisors"
    }
  ]
}

5. CONTROLLED VOCABULARIES

event.type

wedding_reception · corporate_function · concert_private_venue · school_event · religious_gathering · political_rally_private · startup_conference · exhibition_trade

event.venue_type

indoor_hall · indoor_outdoor_lawn · outdoor_ground · rooftop

permits.commissioner_permission

not_required · applied · granted · denied

permits.fire_noc

venue_owner_holds · user_to_apply · not_required · expired

background_check_band

verified · verified_plus_aadhaar · verified_plus_aadhaar_plus_court

All STRICT ENUM.


6. TTBS DIMENSIONS

TIME (weight 0.20)

  • Lead time before event
  • Recce slot availability
  • Team arrival punctuality SLA
  • TIME = lead × recce × punctuality

TASTE (weight 0.10)

  • Agency brand
  • Supervisor communication
  • Crowd-management band (prior event reviews)
  • TASTE = brand × comms × crowd_band

BUDGET (weight 0.25)

  • total_inr vs best
  • Hardware add-on transparency
  • Overtime band
  • BUDGET = 1 − (total − best) / best

SAFETY (weight 0.45 — dominant)

  • PSARA license valid + state-aligned
  • Permit check passed (commissioner / fire / alcohol)
  • BG band of guards
  • Encrypted radio
  • Ambulance standby (≥ BLS) for crowd > 200
  • Female guards count fits female attendee share
  • Frisking lane count fits attendee throughput (≤ 200 per lane per hour)
  • Recce done
  • SAFETY = psara × permits × bg × radio × ambulance × female_fit × lane × recce

HARD FILTERS

  1. PSARA license valid + state-aligned.
  2. Permits all pass.
  3. Female guards ≥ 1 if female attendees expected > 0.
  4. Ambulance standby ≥ BLS for crowd > 200.
  5. Frisking-lane throughput sufficient.

7. COMPLETION CONTRACT

Success criteria

  1. Quote accepted; recce scheduled.
  2. Recce findings shared; team roster finalized.
  3. Hardware delivered to venue 2h pre-event.
  4. Team arrives 90 min pre-event; checks gates, lanes, parking.
  5. Live ops during event; incident register updated.
  6. Closeout: team checks venue clear; signoff sheet signed.
  7. CPC webhook fires.

CPC webhook

{
  "event": "safety.book_event_security.completed",
  "intent_id": "safety.book_event_security",
  "request_id": "req_esec_4r2p_2026-05-14T17:30:00Z",
  "order_id": "ESEC9KP72",
  "provider": "G4S Events",
  "guards_total": 19,
  "duration_hours": 6,
  "total_inr": 44640,
  "tomo_commission_base_inr": 6696,
  "tomo_commission_inr": 670,
  "pass_through_inr": 37944,
  "psara_license_no": "PSA-KA-2017-XXXX",
  "incident_count": 0,
  "completed_at_iso": "2026-06-13T00:30:00+05:30",
  "signature_hmac_sha256": "…"
}

Failure cases

  • team_short_arrival → SLA penalty + emergency backfill.
  • permit_invalid_pre_event → event security paused pending compliance.
  • crowd_exceeded_capacity → user advised + emergency 112 escalation if safety threshold breached.
  • misconduct_report → partner investigation.

8. WIDGET

{
  "widget": "EventSecurityWidget",
  "header": {
    "event_strip": "Wedding reception · 300 guests · 6 PM – 11:30 PM",
    "permits_strip": "Commissioner not required · Fire NOC venue · Alcohol permit you",
    "team_strip":  "12 guards + 6 bouncers + 1 supervisor + 3 female guards · 2 frisk lanes"
  },
  "regions": {
    "region_1_intelligence": ["PSARA verified", "Aadhaar-verified guards", "BLS ambulance standby", "encrypted radio"],
    "region_2_summary": "Recce 48 h before, team arrives 90 min pre-event",
    "region_3_visual": null,
    "region_4_now_pin": "Lock team — recce slot tomorrow morning",
    "region_5_tomo_choices": [
      {"tier": "OK", "label": "SIS · ₹30,580 · standby ambulance add-on", "reason": "cheapest"},
      {"tier": "GOOD", "label": "G4S · ₹44,640 · ambulance + recce + encrypted radio", "reason": "balanced"},
      {"tier": "GREAT", "label": "Topsgrup Elite · ₹64,200 · ALS ambulance + X-ray + court-cleared", "reason": "highest safety"}
    ]
  },
  "footer_disclosures": [
    "Above 500 attendees, you'll need commissioner permission — partner can guide but the application is yours.",
    "Alcohol permits are on you; partner will refuse to deploy without a valid permit.",
    "Incident register is shared after the event; keep it for any insurance claim."
  ]
}

9. CACHING POLICY

  • Quote: 24h TTL.
  • PSARA license: 90d cache.
  • Permit verification: per-event; not cached.
  • Recce findings: at partner; encrypted; pointer at TOMO.
  • Past events: 3 years on-device, encrypted.

10. ERROR CODES

Code Meaning UI surface
ERR_PSARA_INVALID license lapsed Drop option
ERR_PERMIT_MISSING_COMMISSIONER crowd > 500 without permission Block book
ERR_FIRE_NOC_INVALID NOC expired Block book
ERR_ALCOHOL_PERMIT_MISSING flag set, permit absent Inline collect
ERR_FEMALE_GUARDS_INSUFFICIENT female attendees + 0 female guards Adjust count
ERR_FRISKING_LANE_THROUGHPUT_LOW lanes < attendees / hour Add lanes
ERR_RECCE_NOT_DONE high-priority event without recce Schedule recce
ERR_BG_BAND_INSUFFICIENT guards bg below tier Upgrade tier
ERR_TEAM_SHORT_ON_ARRIVAL crew short on the day Emergency backfill
ERR_PARTNER_OFFLINE partner API down Try next

11. SANDBOX → PRODUCTION CHECKLIST

  • Sandbox commissioner permission gate at 500.
  • Sandbox fire NOC gate.
  • Sandbox alcohol permit gate.
  • Sandbox female-guards minimum gate.
  • Sandbox frisking-lane throughput gate.
  • Sandbox recce mandatory flow for high-priority events.
  • Production PSARA database synced weekly per state.
  • Production court-record check supplier validated.
  • Production rate limit: 4 events / user / month (anti-abuse).
  • Production CPC HMAC-SHA256 5-min replay verified.

12. ANTI-FABRICATION RULES

  • NO paid_placement on agencies.
  • NO synthetic team photos.
  • NO claim of commissioner permission on user's behalf — that's user's filing.
  • NO bundling promo into total.
  • NO TOMO-issued PSARA badge.
  • NO synthetic recce findings.
  • NO marketing of "celebrity protection" without partner credentials.
  • NO claim of police partnership.
  • NO holding incident register at TOMO beyond pointer.
  • NO marketing language ("smart event security").

13. REGULATORY FRAMING

  • PSARA 2005 + state rules — license per state.
  • CrPC + Police Acts — DGP / commissioner permission for large public gatherings.
  • Fire Services / Civil Defence — venue NOC.
  • State excise — alcohol permits.
  • Arms Act 1959 — no armed guards at public events (typically).
  • Indian Medical Council Act / NMC — ambulance standby compliance.
  • DPDPA 2023 — guards roster + recce + incident register = personal data; partner is processor.
  • Consumer Protection Act 2019 — partner is service provider.
  • TOMO is router only — does NOT employ guards, does NOT operate hardware, does NOT obtain government permissions.