logistics.book_cold_chain_delivery — Full Intent Specification
INTENT NAMESPACE: logistics
INTENT NAME: book_cold_chain_delivery
FULL ID: logistics.book_cold_chain_delivery
VERSION: v1.0.0
STATUS: live
TTBS WEIGHTS: time 0.30 · taste 0.05 · budget 0.25 · safety 0.40
LAST UPDATED: 2026-05-14
Temperature-controlled delivery of pharmacy items (insulin, vaccines, biologics), perishable food (high-end groceries, frozen seafood), or other temp-sensitive cargo. Distinct from logistics.send_intracity_parcel because: (a) cargo lives in a defined temperature band (2–8°C for vaccines, −18°C for frozen, 15–25°C for some drugs); (b) the entire chain — packout, vehicle, last-mile bag — must be temperature-logged; (c) a temperature excursion = the cargo may be unusable, claim window starts immediately; (d) CDSCO + state drugs control + FSSAI may apply depending on cargo; (e) some pharmacy cargo requires Rx + pharmacist sign-off at intake.
1. NATURAL LANGUAGE COVERAGE
Classifies IN
- "deliver insulin from pharmacy to home, keep cold"
- "ship vaccine vials, 2 to 8 degrees"
- "frozen seafood Mumbai to Bangalore"
- "cold chain biologics, doctor prescribed"
- "pharmacy delivery with ice pack"
- "temperature-controlled medicine pickup"
- "diagnostic sample to lab, cold"
- "fresh sushi delivery, frozen"
- "carry biologic injection home, refrigerated"
- "ship Kerala fish, frozen overnight"
Classifies OUT — borderline NO
- "groceries to home" (room-temp) →
food.order_deliveryorlifestyle.book_at_home_service - "courier vitamin tablets" (room-temp) →
logistics.send_intracity_parcel - "ambulance for patient" →
safety.book_private_ambulance - "controlled substance" → BLOCKED (only via licensed channels)
MULTI-INTENT TRIGGERS
- "pharmacy + cold-chain home delivery" → pharmacy lookup +
logistics.book_cold_chain_delivery - "diagnostic sample + ambulance" →
logistics.book_cold_chain_delivery+safety.book_private_ambulance(rare)
2. INPUT — TOMO → PROVIDER
{
"intent": "logistics.book_cold_chain_delivery",
"intent_version": "v1.0.0",
"request_id": "req_cc_4r2p_2026-05-14T15:00:00Z",
"user_session_id": "anon_user_token_or_uid",
"pickup": {
"type": "pharmacy",
"type_allowed": ["pharmacy", "lab", "restaurant_cold", "supplier_warehouse", "home"],
"address_id": "addr_pharmacy_v1",
"pin": "500032",
"contact_phone_e164": "+91XXXXXXXXXX",
"ready_at_iso": "2026-05-14T16:00:00+05:30"
},
"drop": {
"address_id": "addr_home_v1",
"pin": "500032",
"contact_phone_e164": "+91XXXXXXXXXX",
"recipient_name": "Keerthi Krishna"
},
"cargo": {
"category": "pharmacy_biologic",
"category_allowed": ["pharmacy_otc_cold", "pharmacy_biologic", "vaccine", "diagnostic_sample", "frozen_food", "perishable_food_chilled"],
"temp_band_c": "2_to_8",
"temp_band_allowed": ["2_to_8", "minus_18_to_minus_25", "15_to_25"],
"weight_kg": 0.4,
"needs_rx": true,
"rx_doc_uploaded": true,
"declared_value_inr": 12000,
"fragile_glass_vial": true
},
"duration": {
"max_in_transit_min": 60,
"deliver_by_iso": "2026-05-14T17:30:00+05:30"
},
"user_constants": {
"preferred_partners": ["Tata 1mg Cold", "Apollo Cold Chain", "Snowman Logistics", "Cipla CryoServe"]
}
}
Field rules
temp_band_cSTRICT ENUM.needs_rx: true+rx_doc_uploaded: false→ERR_RX_REQUIRED_NOT_UPLOADED.max_in_transit_min≤ 120 for2_to_8cold-chain (insulin/vaccine).declared_value_inrdrives insurance band.
3. PROVIDER TOOLS
cold.quote
Returns price + ETA + thermal-bag tier + temperature-log device included y/n.
cold.rx_validate
Validates Rx upload against pharmacy-side prescriptions register where partner integration permits.
cold.create_order
Books pickup; assigns rider with thermal bag + IoT temp logger.
cold.temp_log_subscribe
Returns websocket / poll endpoint streaming temperature per minute.
cold.handover_capture
Pickup snapshot: thermal bag sealed, IoT logger active, initial temperature recorded.
cold.deliver_capture
Drop snapshot: bag opened in recipient's presence, final temperature recorded, photo of cargo intact.
cold.excursion_flag
Auto-triggered if temperature breaches band ≥ N minutes; cargo flagged as "may be compromised".
cold.dispute
Claim within 24h on excursion or damaged-on-arrival.
cold.cancel
Pre-pickup only.
4. RESPONSE SHAPE
{
"intent": "logistics.book_cold_chain_delivery",
"request_id": "req_cc_4r2p_2026-05-14T15:00:00Z",
"rx_check": {"passed": true, "validated_at": "2026-05-14T15:01:00+05:30"},
"options": [
{
"tier": "OK",
"provider": "Tata 1mg Cold",
"thermal_bag_class": "vip_2_to_8_passive",
"temp_logger_included": false,
"rider_trained_cold_chain": true,
"price_inr": 149,
"eta_min": 55,
"insurance_included_inr": 5000,
"ttbs_score": 0.65,
"tier_reason": "cheapest, passive bag only, no logger"
},
{
"tier": "GOOD",
"provider": "Apollo Cold Chain",
"thermal_bag_class": "vip_2_to_8_passive_phase_change_material",
"temp_logger_included": true,
"rider_trained_cold_chain": true,
"background_check_band": "verified",
"price_inr": 229,
"eta_min": 45,
"insurance_included_inr": 12000,
"insurance_cover_meets_declared_value": true,
"ttbs_score": 0.85,
"tier_reason": "balanced — phase-change bag + IoT logger + full cover"
},
{
"tier": "GREAT",
"provider": "Snowman Logistics",
"thermal_bag_class": "active_refrigerated_box",
"temp_logger_included": true,
"logger_realtime_alert_sec": 60,
"rider_trained_cold_chain": true,
"background_check_band": "verified_plus_aadhaar",
"redundant_thermal_pack": true,
"price_inr": 399,
"eta_min": 35,
"insurance_included_inr": 25000,
"ttbs_score": 0.93,
"tier_reason": "active-refrigerated + real-time alerts + redundant packs"
}
],
"temp_band_target_c": "2_to_8",
"max_excursion_minutes_allowed": 15
}
5. CONTROLLED VOCABULARIES
cargo.category
pharmacy_otc_cold · pharmacy_biologic · vaccine · diagnostic_sample · frozen_food · perishable_food_chilled
temp_band_c
2_to_8 · minus_18_to_minus_25 · 15_to_25
thermal_bag_class
vip_2_to_8_passive · vip_2_to_8_passive_phase_change_material · active_refrigerated_box · dry_ice_box
pickup.type
pharmacy · lab · restaurant_cold · supplier_warehouse · home
BANNED
controlled_substance_schedule_x · narcotics · radioactive · human_remains (separate cold-chain channel governed by hospital protocol, out of v1)
All STRICT ENUM.
6. TTBS DIMENSIONS
TIME (weight 0.30)
eta_min(smaller = better; insulin/vaccine have 60-min preference)- Pickup latency
- Buffer against
deliver_by_iso - TIME = 1 − eta_min / max_in_transit_min
TASTE (weight 0.05)
- Partner brand familiarity
- App tracking and temp-log UX
- TASTE = brand × ux
BUDGET (weight 0.25)
price_inrvs best- Logger fee bundled vs add-on
- BUDGET = 1 − (price − best) / best
SAFETY (weight 0.40 — dominant)
insurance_cover_meets_declared_valuetemp_logger_included(must-have for biologic/vaccine)- Thermal bag class fit for temp_band
- Rider trained in cold-chain handling
- Redundant thermal pack
- Real-time alert latency
- Excursion-window tolerance ≤ 15 min
- Rx validated at pharmacy (for needs_rx)
- SAFETY = insurance_fit × logger × bag_fit × rider_trained × redundant × alert_band × excursion × rx_validated
HARD FILTERS
temp_band_cband serviceable by partner.- Thermal bag class fits temperature band.
- Rx validated if
needs_rx: true. - ETA ≤
max_in_transit_min. - Insurance ≥ declared value (or user override with explicit warning).
7. COMPLETION CONTRACT
Success criteria
- Order created; Rx validated where applicable.
- Rider with thermal bag + active IoT logger at pickup.
- Cargo sealed at correct temperature; initial reading captured.
- Live temperature stream observable to TOMO + user.
- Drop snapshot: final temperature within band; photo of cargo intact.
- Recipient OTP/sign-off.
- CPC webhook fires.
CPC webhook
{
"event": "logistics.book_cold_chain_delivery.completed",
"intent_id": "logistics.book_cold_chain_delivery",
"request_id": "req_cc_4r2p_2026-05-14T15:00:00Z",
"order_id": "CC9KP72",
"provider": "Apollo Cold Chain",
"thermal_bag_class": "vip_2_to_8_passive_phase_change_material",
"temp_logger_id": "TL-AP-12345",
"temp_min_observed_c": 3.2,
"temp_max_observed_c": 7.8,
"excursion_minutes": 0,
"price_inr": 229,
"tomo_commission_base_inr": 34,
"tomo_commission_inr": 3.4,
"pass_through_inr": 195,
"delivered_at_iso": "2026-05-14T16:50:00+05:30",
"signature_hmac_sha256": "…"
}
Failure cases
excursion_detected→ cargo flagged; pharmacy / partner replaces or refunds.rx_invalid→ block at intake.recipient_unreachable→ return to pickup, with cold-chain reset cycle.logger_failure→ fall back to manual temperature check + partial credit per partner.
8. WIDGET
{
"widget": "ColdChainDeliveryWidget",
"header": {
"cargo_strip": "Biologic · 2–8 °C · 0.4 kg",
"route_strip": "Pharmacy → Home · ~12 km",
"deliver_by_strip": "Deliver by 5:30 PM · max in-transit 60 min"
},
"regions": {
"region_1_intelligence": ["Rx validated", "IoT logger streaming", "trained rider", "thermal bag sealed"],
"region_2_summary": "Pickup ~4 PM, deliver ~4:45 PM",
"region_3_visual": null,
"region_4_now_pin": "Book — 2 cold riders within 5 km",
"region_5_tomo_choices": [
{"tier": "OK", "label": "1mg Cold · ₹149 · passive bag · no logger", "reason": "cheapest"},
{"tier": "GOOD", "label": "Apollo · ₹229 · PCM bag + IoT logger + ₹12k cover", "reason": "balanced"},
{"tier": "GREAT", "label": "Snowman · ₹399 · active box + real-time alerts + redundant packs", "reason": "highest safety"}
]
},
"footer_disclosures": [
"Cargo flagged unusable if temperature breaches band for more than 15 min — refund / replacement is automatic.",
"Prescription items require Rx upload — controlled substances are blocked on this surface.",
"Live temperature log is visible to you and us — open it from the order screen if anything looks off."
]
}
9. CACHING POLICY
- Quote: 5 min TTL.
- Rx validation: cached 1 hour at partner; not at TOMO.
- Temperature stream: live; not cached.
- Logger logs: retained at partner ≥ 90 days for dispute/audit.
- Past cold-chain orders: 2 years on-device, encrypted.
10. ERROR CODES
| Code | Meaning | UI surface |
|---|---|---|
ERR_RX_REQUIRED_NOT_UPLOADED |
needs_rx true and no upload | Inline upload prompt |
ERR_RX_INVALID |
partner rejected Rx | Plain explainer |
ERR_TEMP_BAND_UNSUPPORTED |
partner can't serve band | Try next partner |
ERR_BAG_CLASS_MISMATCH |
bag insufficient for band | Upgrade tier |
ERR_ETA_EXCEEDS_MAX |
quote ETA > max_in_transit_min | Try next or change cargo |
ERR_LOGGER_FAILURE |
IoT logger offline | Replace logger pre-pickup or fall back |
ERR_EXCURSION_DETECTED |
temp out of band > tolerance | Cargo flagged + auto-refund/replace |
ERR_INSURANCE_GAP |
cover < declared | Top-up |
ERR_PICKUP_NO_RIDER_AVAILABLE |
no trained rider | Try next partner |
ERR_RECIPIENT_UNREACHABLE |
drop unreachable | Cold-chain reset cycle |
11. SANDBOX → PRODUCTION CHECKLIST
- Sandbox temperature stream every 60s.
- Sandbox excursion auto-flag at 16 min out-of-band.
- Sandbox Rx validation flow with valid + invalid Rx.
- Sandbox controlled-substance auto-block.
- Sandbox bag-class mismatch auto-upgrade.
- Sandbox logger-failure fallback path.
- Production rider cold-chain training certificate verified.
- Production IoT logger calibration < 90 days.
- Production insurance contract attested by legal.
- Production CDSCO / state drugs control framing for biologic / vaccine in partner agreement.
- Production CPC HMAC-SHA256 5-min replay verified.
12. ANTI-FABRICATION RULES
- NO
paid_placementon partners. - NO synthetic temperature readings — IoT logger only.
- NO "guaranteed cold" without
temp_logger_included. - NO bundling promo into cold-chain price.
- NO claim of Rx validation without partner integration.
- NO controlled-substance acceptance — block at intake.
- NO TOMO-issued thermal-bag id — partner's only.
- NO holding Rx data — partner is custodian; TOMO pointer only.
- NO synthetic excursion-window claim — partner-published SLA.
- NO marketing language ("smart cold delivery").
13. REGULATORY FRAMING
- Drugs and Cosmetics Act 1940 + Rules 1945 + Drugs and Cosmetics (Amendment) Act 2008 — pharmacy biologics, vaccines.
- CDSCO + state drugs controllers govern temperature-band storage.
- FSSAI — perishable food cold chain.
- WHO PQS Cold Chain Equipment Catalogue — bag / box class references where partner attests.
- Carriage by Road Act 2007 — vehicle / rider regulation.
- IRDAI — insurance product.
- DPDPA 2023 — Rx + recipient = personal data; partner is processor; TOMO holds pointer.
- TOMO is router only — does NOT operate cold chain, does NOT prescribe, does NOT hold cargo.