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.0logistics.book_bike_transport

logistics.book_bike_transport — Full Intent Specification

INTENT NAMESPACE: logistics
INTENT NAME:      book_bike_transport
FULL ID:          logistics.book_bike_transport
VERSION:          v1.0.0
STATUS:           live
TTBS WEIGHTS:     time 0.25 · taste 0.10 · budget 0.30 · safety 0.35
LAST UPDATED:     2026-05-14

Intercity two-wheeler relocation: motorcycle / scooter from city A to city B inside India. Distinct from logistics.send_intercity_parcel because: (a) the cargo is a registered motor vehicle with RC + chassis + engine number; (b) fuel must be drained to <100 ml before loading (transport rule); (c) battery may need disconnect (lithium / lead-acid varies); (d) anti-scratch wrapping is part of base service (vehicle is high-value identity); (e) the vehicle is registered — RC must be on file; (f) tracking is at hub-scan level; (g) damage claim depends on photo-at-load and photo-at-unload; (h) insurance is typically a separate product on top of carriage fee.


1. NATURAL LANGUAGE COVERAGE

Classifies IN

  • "transport my bike from Hyderabad to Pune"
  • "ship motorcycle to Bangalore"
  • "scooter relocation Chennai → Delhi"
  • "send my Royal Enfield to Goa"
  • "bike carrier Mumbai to Hyderabad"
  • "two-wheeler transport, Pulsar 150"
  • "Activa shifting Bengaluru → Coimbatore"
  • "send KTM Duke 390 to relative"
  • "bike packing and transport"
  • "EV scooter transport, battery removable"

Classifies OUT — borderline NO

  • "rent a bike for the week" → mobility.book_two_wheeler_rental
  • "drive my bike to Pune myself" → not a TOMO intent
  • "courier bike spare parts" → logistics.send_intercity_parcel
  • "transport a car" → out of v1 (car relocation = specialty vendor; backlog)
  • "transfer bike RC to my name" → auto.book_rc_transfer

MULTI-INTENT TRIGGERS

  • "ship bike + transfer RC" → logistics.book_bike_transport + auto.book_rc_transfer
  • "move household + bike to Bangalore" → logistics.book_full_house_move + logistics.book_bike_transport

2. INPUT — TOMO → PROVIDER

{
  "intent":          "logistics.book_bike_transport",
  "intent_version":  "v1.0.0",
  "request_id":      "req_bk_7q5p_2026-05-14T13:30:00Z",
  "user_session_id": "anon_user_token_or_uid",

  "pickup": {
    "address_id":   "addr_hyd_home_v1",
    "pin":          "500032",
    "city":         "Hyderabad",
    "contact_phone_e164": "+91XXXXXXXXXX",
    "ready_at_iso": "2026-05-16T10:00:00+05:30"
  },

  "drop": {
    "address_id":   "addr_pune_home_v1",
    "pin":          "411014",
    "city":         "Pune",
    "contact_phone_e164": "+91XXXXXXXXXX",
    "recipient_name": "Rohit Gamasany"
  },

  "vehicle": {
    "make":          "Royal Enfield",
    "model":         "Classic 350",
    "year":          2021,
    "rc_number":     "TS09EZXXXX",
    "chassis_last_5": "12345",
    "engine_last_5":  "67890",
    "fuel_type":     "petrol",
    "tank_capacity_l": 13.5,
    "fuel_current_band": "quarter_tank",
    "battery_type":  "lead_acid_12v",
    "ev_battery_removable": false,
    "modifications":  ["crash_guard", "saddle_bag"],
    "declared_value_inr": 175000
  },

  "service_level": "express_3d",
  "service_levels_allowed": ["surface_5_7d", "express_3d", "premium_2d"],

  "insurance": {
    "type":             "transit_only",
    "type_allowed":     ["transit_only", "comprehensive", "none"],
    "sum_insured_inr":  175000
  },

  "user_constants": {
    "preferred_partners": ["VRL Logistics Bike", "Agarwal Bike", "BVC Logistics", "BlackBuck Bike"]
  }
}

Field rules

  • rc_number mandatory — partner verifies against Parivahan (where partner integration allows).
  • fuel_current_band enforced: at pickup fuel must be drained to near_empty (regulation); partner has drain station.
  • ev_battery_removable: true triggers separate-pack-and-ship for battery (different DGCA-aligned rule even for surface above certain Wh).
  • service_level STRICT ENUM.

3. PROVIDER TOOLS

bike.quote

Returns price + ETA based on vehicle class + service level + insurance choice.

bike.rc_verify

Verifies RC against Parivahan (where integrated). Returns vehicle class + owner-name match.

bike.fuel_drain_station_check

Returns whether partner has a drain station at pickup city — needed before pickup.

bike.book

Locks order; returns AWB-equivalent + pickup slot.

bike.handover_capture

Photo set at pickup: front, back, both sides, fuel tank, odometer reading, scratches map.

bike.live_track

Hub-scan stream.

bike.delivery_capture

Photo set at drop matching pickup angles + recipient sign-off.

bike.dispute_damage

Claim within 24h with comparison-photo pair.

bike.cancel

Pre-pickup only.


4. RESPONSE SHAPE

{
  "intent": "logistics.book_bike_transport",
  "request_id": "req_bk_7q5p_2026-05-14T13:30:00Z",
  "rc_verify": {
    "owner_name_match": true,
    "vehicle_class":     "MC_W_GEAR",
    "registration_active": true
  },
  "options": [
    {
      "tier": "OK",
      "provider": "BVC Logistics",
      "service_level": "surface_5_7d",
      "price_inr": 4200,
      "eta_business_days": 6,
      "pickup_within_hours": 24,
      "fuel_drain_station_at_pickup": true,
      "anti_scratch_wrap_included": true,
      "insurance_top_up_available": true,
      "insurance_included_inr": 25000,
      "ttbs_score": 0.62,
      "tier_reason": "cheapest, low cover"
    },
    {
      "tier": "GOOD",
      "provider": "VRL Logistics Bike",
      "service_level": "express_3d",
      "price_inr": 6800,
      "eta_business_days": 3,
      "pickup_within_hours": 12,
      "fuel_drain_station_at_pickup": true,
      "anti_scratch_wrap_included": true,
      "insurance_top_up_available": true,
      "insurance_included_inr": 75000,
      "tracking_scan_granularity": "hub_plus_linehaul",
      "ttbs_score": 0.83,
      "tier_reason": "balanced — 3 days + decent cover"
    },
    {
      "tier": "GREAT",
      "provider": "Agarwal Bike Premium",
      "service_level": "premium_2d",
      "price_inr": 11500,
      "eta_business_days": 2,
      "pickup_within_hours": 6,
      "fuel_drain_station_at_pickup": true,
      "anti_scratch_wrap_included": true,
      "wooden_crate_packing": true,
      "insurance_top_up_available": true,
      "insurance_included_inr": 175000,
      "insurance_cover_meets_declared_value": true,
      "tracking_scan_granularity": "every_handover",
      "ttbs_score": 0.91,
      "tier_reason": "2 days + crate packing + full cover"
    }
  ],
  "fuel_drain_disclosure": {
    "current_band": "quarter_tank",
    "must_drain_to": "near_empty",
    "drain_handled_by_partner": true,
    "drain_fee_inr": 0
  }
}

5. CONTROLLED VOCABULARIES

service_level

surface_5_7d · express_3d · premium_2d

vehicle.fuel_type

petrol · diesel · ev

vehicle.battery_type

lead_acid_12v · li_ion_removable · li_ion_fixed · none

vehicle.fuel_current_band

empty · near_empty · quarter_tank · half_tank · three_quarter · full

insurance.type

transit_only · comprehensive · none

vehicle_class (from RC verify)

MC_W_GEAR · MC_WO_GEAR · MCV · EV_2W

All STRICT ENUM.


6. TTBS DIMENSIONS

TIME (weight 0.25)

  • eta_business_days
  • pickup_within_hours
  • Hub coverage of dest PIN
  • TIME = 1 − eta_business_days / 7

TASTE (weight 0.10)

  • Brand familiarity
  • Tracking granularity
  • TASTE = brand_band × tracking_band

BUDGET (weight 0.30)

  • price_inr vs best
  • Hidden surcharges (fuel-drain fee, packing fee)
  • Insurance top-up cost
  • BUDGET = 1 − (price − best) / best

SAFETY (weight 0.35)

  • insurance_cover_meets_declared_value
  • Anti-scratch wrapping mandatory
  • Wooden crate for premium
  • Fuel-drain station at pickup confirmed
  • RC verified active
  • Photo-pair protocol enforced (pickup + drop)
  • Tracking granularity
  • SAFETY = insurance_fit × wrap × crate_band × drain × rc_active × photo_pair × tracking_band

HARD FILTERS

  1. RC verified active (where partner integration permits).
  2. Fuel-drain station available at pickup city.
  3. Anti-scratch wrap included (mandatory).
  4. Insurance ≥ declared value OR user-acknowledged gap.
  5. EV battery rule satisfied for service level.

7. COMPLETION CONTRACT

Success criteria

  1. RC verified, owner-name match.
  2. Pickup scheduled; fuel drained at pickup hub.
  3. Photo-set captured at pickup; scratches map signed.
  4. Anti-scratch wrap applied; (premium tier) wooden crate sealed.
  5. Hub scans observed in-transit.
  6. Photo-set captured at drop; recipient compares vs pickup photos.
  7. Recipient signs; damage register completed.
  8. CPC webhook fires.

CPC webhook

{
  "event": "logistics.book_bike_transport.completed",
  "intent_id": "logistics.book_bike_transport",
  "request_id": "req_bk_7q5p_2026-05-14T13:30:00Z",
  "order_id": "BK9KP72",
  "provider": "VRL Logistics Bike",
  "service_level": "express_3d",
  "rc_number": "TS09EZXXXX",
  "price_inr": 6800,
  "tomo_commission_base_inr": 850,
  "tomo_commission_inr": 85,
  "pass_through_inr": 5950,
  "pickup_photo_set_hash": "sha256-…",
  "drop_photo_set_hash": "sha256-…",
  "delivered_at_iso": "2026-05-19T15:42:00+05:30",
  "signature_hmac_sha256": "…"
}

Failure cases

  • rc_verify_failed → block at intake; ask user to recheck RC.
  • fuel_drain_unavailable_at_pickup → reschedule via different hub.
  • damage_at_delivery → photo-pair dispute via bike.dispute_damage.
  • delivery_recipient_unreachable → return-to-sender; partner fee per partner.

8. WIDGET

{
  "widget": "BikeTransportWidget",
  "header": {
    "vehicle_strip": "Royal Enfield Classic 350 · 2021 · TS09EZXXXX",
    "route_strip":   "Hyderabad → Pune · ~560 km",
    "fuel_strip":    "Drain to near-empty handled at partner hub (no charge)"
  },
  "regions": {
    "region_1_intelligence": ["RC active", "owner name match", "anti-scratch wrap included on all tiers", "₹1.75L declared"],
    "region_2_summary": "Pickup tomorrow, deliver in 2–7 days based on tier",
    "region_3_visual": null,
    "region_4_now_pin": "Book — drain slot at hub 10 AM",
    "region_5_tomo_choices": [
      {"tier": "OK", "label": "BVC · ₹4,200 · 5–7 days · ₹25k cover", "reason": "cheapest"},
      {"tier": "GOOD", "label": "VRL Express · ₹6,800 · 3 days · ₹75k cover", "reason": "balanced"},
      {"tier": "GREAT", "label": "Agarwal Premium · ₹11,500 · 2 days · crate + full cover", "reason": "safest + fastest"}
    ]
  },
  "footer_disclosures": [
    "Fuel drains to near-empty before loading — regulation, no exception.",
    "Photo-set is captured at pickup and drop — compare them to file any damage claim within 24 h.",
    "If your bike is worth more than included cover, top up insurance before pickup."
  ]
}

9. CACHING POLICY

  • Quote: 1 hour TTL.
  • RC verification: cached 30 days; fresh check before pickup.
  • Pickup/drop photos: hash only on TOMO; full at partner.
  • Past bike transports: 5 years on-device, encrypted.

10. ERROR CODES

Code Meaning UI surface
ERR_RC_VERIFY_FAILED Parivahan no match Recheck RC inline
ERR_OWNER_NAME_MISMATCH RC owner ≠ sender Confirm or block
ERR_FUEL_DRAIN_UNAVAILABLE No drain station at pickup hub Suggest nearest hub
ERR_EV_BATTERY_RULE Wh > air/surface rule Switch service or split-ship battery
ERR_INSURANCE_GAP cover < declared Top-up
ERR_PICKUP_NO_SHOW no one at pickup Cancel fee
ERR_DELIVERY_RECIPIENT_UNREACHABLE dropoff unreachable RTO trigger
ERR_DAMAGE_CLAIM_LATE beyond 24h Apology + escalation
ERR_HUB_UNSERVICED_DESTINATION dest hub not in network Try alt partner
ERR_PARTNER_OFFLINE partner API down Try next

11. SANDBOX → PRODUCTION CHECKLIST

  • Sandbox RC verify path tested with valid + invalid + expired.
  • Sandbox fuel-drain availability tested per pickup city.
  • Sandbox EV battery split-ship flow tested.
  • Sandbox photo-set capture mandatory before load.
  • Sandbox damage-claim window 24h boundary.
  • Production Parivahan integration cache window ≤ 30 days.
  • Production rate-limit: 5 bike transports/user/year.
  • Production insurance contract attested by legal.
  • Production multi-partner rotation for high-demand routes.
  • Production CPC HMAC-SHA256 verified.

12. ANTI-FABRICATION RULES

  • NO paid_placement on partners.
  • NO synthetic vehicle photos.
  • NO claim of RC verification without Parivahan integration response.
  • NO concealing fuel-drain or packing fees.
  • NO bundling promo into quote price.
  • NO claim of "no scratch guaranteed" — claim window is 24h via dispute.
  • NO TOMO-issued AWB.
  • NO holding RC/chassis/engine numbers at TOMO beyond pointer.
  • NO synthetic crate-packing claim if standard wrap only.
  • NO marketing language ("smart bike shift").

13. REGULATORY FRAMING

  • Motor Vehicles Act 1988 — RC, fitness, permits.
  • Petroleum Rules 2002 — fuel handling in carriage.
  • Carriage by Road Act 2007 — goods carrier regulations.
  • DGCA / IATA-DGR — EV battery transport (mostly surface; air rare for whole bike).
  • GST E-way Bill — typically applies to bike movements above ₹50k.
  • IRDAI — transit and comprehensive insurance.
  • Consumer Protection Act 2019 — partner is service provider.
  • DPDPA 2023 — RC + photos = personal data; partner is processor; TOMO holds pointer.
  • TOMO is router only — does NOT operate trucks/hubs, does NOT verify RC by itself, does NOT issue insurance.