logistics.book_storage_warehouse — Full Intent Specification
INTENT NAMESPACE: logistics
INTENT NAME: book_storage_warehouse
FULL ID: logistics.book_storage_warehouse
VERSION: v1.0.0
STATUS: live
TTBS WEIGHTS: time 0.15 · taste 0.10 · budget 0.35 · safety 0.40
LAST UPDATED: 2026-05-14
Short- or long-term storage of household goods, documents, electronics, or other lawful items in a partner-operated warehouse. Distinct from logistics.book_full_house_move because: (a) storage is a separate billable service charged per cft × month; (b) facility class matters (climate-controlled / dehumidified / standard); (c) access frequency varies (sealed-and-stored vs visit-anytime); (d) inventory check-in and check-out are formal events with photos and an itemized register; (e) fire/theft/flood insurance is a separate product layered on top of storage rent.
1. NATURAL LANGUAGE COVERAGE
Classifies IN
- "store my stuff for 3 months"
- "household storage Bangalore, 2BHK contents"
- "warehouse for furniture while I'm abroad"
- "rent a self-storage unit"
- "store electronics, climate-controlled"
- "document storage 1 year"
- "secure storage for paintings"
- "winter storage for AC and heater"
- "monthly storage 200 cft"
- "store mattress and boxes 6 months"
Classifies OUT — borderline NO
- "shift my house" →
logistics.book_full_house_move - "store goods at port" → freight forwarding, out of v1
- "store crypto/digital assets" → out of scope
- "store medicine/vaccine" →
logistics.book_cold_chain_delivery(or specialist) - "store car" → vehicle storage, out of v1 (backlog)
MULTI-INTENT TRIGGERS
- "move + store for 2 months" →
logistics.book_full_house_move+logistics.book_storage_warehouse - "travel abroad — store + visa" →
logistics.book_storage_warehouse+travel.book_visa_assistance
2. INPUT — TOMO → PROVIDER
{
"intent": "logistics.book_storage_warehouse",
"intent_version": "v1.0.0",
"request_id": "req_sw_8q4r_2026-05-14T14:00:00Z",
"user_session_id": "anon_user_token_or_uid",
"scope": {
"city": "Bengaluru",
"approx_volume_cft": 250,
"duration_months": 3,
"duration_months_renewable": true
},
"facility_preference": {
"class": "climate_controlled",
"classes_allowed": ["standard", "dehumidified", "climate_controlled", "vault_high_security"],
"access_frequency": "sealed_until_end",
"access_allowed": ["sealed_until_end", "scheduled_visits", "open_access"],
"ground_floor_only": false
},
"inventory_summary": {
"categories": ["furniture", "appliances", "electronics", "apparel"],
"fragile_count": 20,
"valuables_declared_inr": 25000,
"itemized_register_uploaded": true,
"total_declared_value_inr": 480000
},
"logistics": {
"pickup_required": true,
"pickup_address_id": "addr_old_apt_v1",
"drop_required": true,
"drop_address_id_at_end": "addr_new_apt_v1"
},
"insurance": {
"type": "fire_theft_flood",
"type_allowed": ["fire_theft_flood", "all_risk_extended", "none"],
"sum_insured_inr": 480000
},
"user_constants": {
"preferred_partners": ["StoreMore", "Zippsafe", "BoxxBox", "SafeStorage India"]
}
}
Field rules
approx_volume_cftinteger; partner may re-measure on intake and adjust monthly rent — surface this honestly.classSTRICT ENUM.duration_monthsinteger ≥ 1; long-term discounts possible per partner.itemized_register_uploaded: truemandatory for any claim window.
3. PROVIDER TOOLS
storage.quote
Returns monthly rent + intake fee + outtake fee + pickup/drop carriage.
storage.facility_class_check
Confirms class availability at user's city.
storage.book
Locks unit. Returns unit_id, seal_id to be applied at intake.
storage.intake_capture
At intake: itemized register signed, photo of each row in unit, seal applied.
storage.visit_request
For scheduled_visits access mode — schedules a viewing/pickup window.
storage.extend
Renews monthly storage.
storage.outtake_capture
At end: seal verified, items reloaded, comparison-photos vs intake.
storage.dispute
File theft/fire/damage claim within 7 days of outtake (or anytime during stay if facility detects).
storage.cancel
Pre-intake cancel allowed; post-intake = subject to lock-in if any.
4. RESPONSE SHAPE
{
"intent": "logistics.book_storage_warehouse",
"request_id": "req_sw_8q4r_2026-05-14T14:00:00Z",
"options": [
{
"tier": "OK",
"provider": "BoxxBox",
"facility_class": "standard",
"access_frequency": "sealed_until_end",
"monthly_rent_inr": 4500,
"intake_fee_inr": 1500,
"outtake_fee_inr": 1500,
"pickup_carriage_inr": 2200,
"drop_carriage_inr": 2200,
"total_3_months_inr": 20900,
"insurance_included_inr": 50000,
"fire_sprinklers": true,
"cctv_24x7": true,
"ttbs_score": 0.66,
"tier_reason": "cheapest, standard class"
},
{
"tier": "GOOD",
"provider": "StoreMore",
"facility_class": "dehumidified",
"access_frequency": "scheduled_visits",
"monthly_rent_inr": 6500,
"intake_fee_inr": 1500,
"outtake_fee_inr": 1500,
"pickup_carriage_inr": 2200,
"drop_carriage_inr": 2200,
"total_3_months_inr": 26900,
"insurance_included_inr": 200000,
"fire_sprinklers": true,
"cctv_24x7": true,
"pest_control_quarterly": true,
"humidity_target_pct": "55_to_60",
"ttbs_score": 0.84,
"tier_reason": "balanced — humidity-controlled + visit access"
},
{
"tier": "GREAT",
"provider": "SafeStorage India",
"facility_class": "climate_controlled",
"access_frequency": "scheduled_visits",
"monthly_rent_inr": 9200,
"intake_fee_inr": 0,
"outtake_fee_inr": 0,
"pickup_carriage_inr": 2200,
"drop_carriage_inr": 2200,
"total_3_months_inr": 32000,
"insurance_included_inr": 480000,
"insurance_cover_meets_declared_value": true,
"fire_sprinklers": true,
"cctv_24x7": true,
"pest_control_quarterly": true,
"humidity_target_pct": "45_to_55",
"temperature_target_c": "20_to_24",
"vault_within_facility_available": false,
"ttbs_score": 0.93,
"tier_reason": "climate-controlled + full cover + no intake/outtake fee"
}
]
}
5. CONTROLLED VOCABULARIES
facility_class
standard · dehumidified · climate_controlled · vault_high_security
access_frequency
sealed_until_end · scheduled_visits · open_access
insurance.type
fire_theft_flood · all_risk_extended · none
inventory_summary.categories
furniture · appliances · electronics · apparel · documents · art_collectibles · kitchenware · other_lawful
BANNED — items not allowed in storage
cash · gold_jewellery · narcotics · weapons · flammable_liquid · compressed_gas · radioactive · livestock · perishable_food · lithium_loose_over_100Wh · human_remains · pharmacy_prescription_controlled
All STRICT ENUM.
6. TTBS DIMENSIONS
TIME (weight 0.15)
- Intake slot availability
- Pickup latency
- Outtake notice period (some partners need 48h)
- TIME = slot_band × pickup_latency_band × notice_band
TASTE (weight 0.10)
- Facility cleanliness rating
- Staff politeness
- Tracking/visit-scheduling UX
- TASTE = clean × staff_band × ux
BUDGET (weight 0.35)
total_<duration>_months_inrvs best- Intake/outtake fee transparency
- Volume re-measure on intake fairness
- Long-term discount honesty
- BUDGET = 1 − (total − best) / best
SAFETY (weight 0.40 — dominant)
insurance_cover_meets_declared_value- Fire sprinklers
- CCTV 24×7
- Pest control schedule
- Climate/humidity targets met for sensitive items
- Seal-applied-and-verified protocol
- Facility access logs
- SAFETY = insurance_fit × fire × cctv × pest × climate × seal × access_log
HARD FILTERS
- Facility class available in user's city.
- Insurance ≥ declared value OR user-acknowledged gap.
- No banned items in declared inventory.
- CCTV + fire sprinklers + locked-unit protocol present.
- Itemized register uploaded (for claim eligibility).
7. COMPLETION CONTRACT
Success criteria (for a complete storage cycle)
- Quote accepted; unit + seal_id assigned.
- Pickup carriage delivers items to facility.
- Intake photos captured; register signed; seal applied.
- Monthly rent auto-charged via UPI Autopay or invoice.
- (Optional) scheduled visits handled.
- Outtake notice received; items reloaded; comparison-photos taken.
- Drop carriage to user's address.
- CPC webhook fires on outtake completion.
CPC webhook
{
"event": "logistics.book_storage_warehouse.completed",
"intent_id": "logistics.book_storage_warehouse",
"request_id": "req_sw_8q4r_2026-05-14T14:00:00Z",
"unit_id": "SAFE-BLR-U2-A11",
"provider": "SafeStorage India",
"facility_class": "climate_controlled",
"duration_months_actual": 3,
"intake_at_iso": "2026-05-20T11:00:00+05:30",
"outtake_at_iso": "2026-08-22T15:00:00+05:30",
"monthly_rent_inr": 9200,
"total_billed_inr": 32000,
"tomo_commission_base_inr": 4800,
"tomo_commission_inr": 480,
"pass_through_inr": 27200,
"intake_photo_set_hash": "sha256-…",
"outtake_photo_set_hash": "sha256-…",
"seal_intact": true,
"signature_hmac_sha256": "…"
}
Failure cases
seal_broken_during_stay→ mandatory partner investigation + insurance pre-claim.pest_infestation→ partner remediation + pro-rated credit per partner.payment_default_user→ partner lock-out + auction policy disclosed (long-term debt rule, partner-specific).outtake_recipient_unavailable→ reschedule with notice fee.
8. WIDGET
{
"widget": "StorageBookingWidget",
"header": {
"scope_strip": "Bengaluru · ~250 cft · 3 months",
"facility_strip": "Climate-controlled options available",
"banned_check_strip": "Inventory passes banned-list check"
},
"regions": {
"region_1_intelligence": ["20 fragile items declared", "₹4.8L sum insured", "humidity target 45–55%", "CCTV + sprinklers all tiers"],
"region_2_summary": "Pickup May 20, return Aug 22 (90 days)",
"region_3_visual": "facility_photo_url (partner-supplied, signed)",
"region_4_now_pin": "Lock unit — 3 climate-controlled spaces left",
"region_5_tomo_choices": [
{"tier": "OK", "label": "BoxxBox Standard · ₹20,900 / 3 mo · ₹50k cover", "reason": "cheapest"},
{"tier": "GOOD", "label": "StoreMore Dehumidified · ₹26,900 / 3 mo · ₹2L cover + visit access", "reason": "balanced"},
{"tier": "GREAT", "label": "SafeStorage Climate · ₹32,000 / 3 mo · full ₹4.8L cover", "reason": "highest safety"}
]
},
"footer_disclosures": [
"Volume is re-measured on intake — partner may revise monthly rent ±10%; cap is shown above.",
"Banned items (cash, gold, narcotics, weapons, perishables) are not allowed — facility will refuse them at intake.",
"Claim window is 7 days from outtake — itemized register + photos must match."
]
}
9. CACHING POLICY
- Quote: 24 hours TTL.
- Facility class availability: weekly per city.
- Itemized register: encrypted at partner; pointer at TOMO; deleted 90 days post-outtake unless claim open.
- Photos: hash only at TOMO; full at partner; retained ≥ 12 months at partner per claim policy.
- Past storage bookings: 5 years on-device, encrypted.
10. ERROR CODES
| Code | Meaning | UI surface |
|---|---|---|
ERR_FACILITY_CLASS_UNAVAILABLE |
requested class not in city | Suggest alt class |
ERR_BANNED_ITEM_DECLARED |
banned in inventory | Plain blocker + remove items |
ERR_INSURANCE_GAP |
cover < declared | Top-up offer |
ERR_ITEMIZED_REGISTER_MISSING |
register not uploaded | Inline capture |
ERR_VOLUME_REMEASURE_GAP |
re-measure ±>10% of declared | Show new rate; user accept/decline |
ERR_SEAL_BROKEN |
seal compromised | Partner investigation + pre-claim |
ERR_PAYMENT_DEFAULT |
monthly rent failed | Auto-retry + grace + escalation |
ERR_OUTTAKE_NOTICE_TOO_SHORT |
notice < 48h | Reschedule |
ERR_PEST_INFESTATION |
facility-side issue | Pro-rated credit + remediation |
ERR_PARTNER_OFFLINE |
partner API down | Try next |
11. SANDBOX → PRODUCTION CHECKLIST
- Sandbox banned-item check rejects all banned ENUMs.
- Sandbox volume re-measure ±10% adjusts rent automatically.
- Sandbox intake/outtake photo capture mandatory.
- Sandbox seal-broken flow triggers investigation.
- Sandbox UPI Autopay monthly-rent test.
- Sandbox claim window 7-day post-outtake enforced.
- Production facility certifications (fire / civil) verified.
- Production insurance contracts attested by legal.
- Production rate-limit: not relevant (storage is per-user contract).
- Production CCTV retention ≥ 30 days at partner.
- Production CPC HMAC-SHA256 5-min replay verified.
12. ANTI-FABRICATION RULES
- NO
paid_placementon partners. - NO synthetic facility photos.
- NO "fully insured" without exact
insurance_cover_inr. - NO concealing volume re-measure clause.
- NO bundling promo into total.
- NO claim of climate control without target humidity/temperature.
- NO TOMO-issued seal_id — partner's only.
- NO holding inventory data — partner is custodian.
- NO synthetic "0 pest in 2 years" claim — only partner-attested.
- NO marketing language ("smart storage").
13. REGULATORY FRAMING
- Warehousing (Development and Regulation) Act 2007 + WDRA registration for partner facilities.
- Indian Contracts Act 1872 — bailment rules apply: partner is bailee, user is bailor.
- Fire Services / Civil Defence state regulations — sprinklers, fire alarm certification.
- IRDAI — fire-theft-flood / all-risk-extended insurance products.
- Consumer Protection Act 2019 — partner is service provider.
- DPDPA 2023 — inventory + photos = personal data; partner is processor.
- CrPC 102 / police seizure — partner is required to surface seizure to user; TOMO not in the loop.
- TOMO is router only — does NOT operate facilities, does NOT hold custody, does NOT issue insurance.