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.

marketplace.buy_used_bike

Buy a used two-wheeler (motorcycle / scooter) through a TOMO partner (CredR / BikeWale Used / Droom / OLX). Parivahan-verified RC, partner inspection report, RC transfer assist. TOMO is the discovery + conversational surface; the partner holds the money and the legal transfer.


1. Identity

  • Intent ID: marketplace.buy_used_bike
  • Vertical: marketplace
  • Verb: buy
  • Noun: used_bike
  • Primary agent: MarketplaceAgent
  • Sub-agents enriching (DATA only): FinanceAgent (two-wheeler loan pre-approval), SafetyAgent (RC blacklist/theft flags), LogisticsAgent (cross-city delivery if buyer remote)
  • Single-intent → completed action: shortlist → test-ride booking → escrow payment → RC transfer initiation
  • Handoff layer: L2 (embedded micro-frontend for paperwork)

2. NL Coverage (must-classify utterances)

  • "buy used bike"
  • "second hand activa hyderabad"
  • "used royal enfield classic 350 below 1.5 lakh"
  • "used pulsar 150 in nakkalgutta"
  • "credR bikes near me"
  • "buy used scooter under 50k"
  • "used kawasaki ninja 300"
  • "good condition used bike below 80000"
  • "test ride used bike at home"
  • "used jawa 42 with finance"

Must NOT match: "sell my bike" (→ marketplace.sell_used_bike), "service my bike" (→ auto_service.book_service), "bike rental" (→ ride.book_self_drive_bike).


3. Input (slots)

Slot Type Required Source
make enum SOFT NL or partner catalog browse
model string SOFT NL
body_type enum [commuter, sport, cruiser, adv, scooter, ev] SOFT derived or NL
budget_max_inr int HARD NL or default ₹150k
year_min int SOFT NL or default current-7
kms_max int SOFT NL or default 50000
owners_max int SOFT NL or default 2
fuel enum [petrol, electric] SOFT NL
city geo HARD NL or saved location
delivery_required bool SOFT derived if buyer not in listing city
finance_required bool SOFT NL

4. Provider Tools (partner MCP capabilities)

  • search_inventory(filters){listings[], total, partner_id}
  • get_listing_detail(listing_id){vin, rc_number, inspection_report_url, photos[], owners, kms, year, asking_price_inr, final_price_after_inspection_inr, blemishes[]}
  • verify_rc(rc_number){owner_name, fitness_valid_to, insurance_valid_to, puc_valid_to, hypothecation, blacklist}
  • book_test_ride(listing_id, slot, address){ride_id, executive_name, eta_min}
  • lock_listing(listing_id, hold_minutes){lock_id, expires_at}
  • initiate_purchase(lock_id, payment_method){transaction_id, escrow_state}
  • initiate_rc_transfer(transaction_id){form_29_pdf_url, form_30_pdf_url, parivahan_ack_id}
  • arrange_delivery(transaction_id, delivery_address){logistics_id, eta_days}

5. Response Shape (Conv Intel 5-region grammar)

  • Region 1 — INTELLIGENCE strip: parivahan_verified=true, inspection_score, accident_history=false, insurance_active, puc_active, hypothecation_cleared, test_ride_available, return_window_days
  • Region 2 — one-line summary: "{count} bikes match in {city}, {N}-point inspected, RC transfer included."
  • Region 3 — visual anchor: partner-uploaded photos (NOT AI-generated, NOT stock)
  • Region 4 — NOW pin: nearest test-ride slot + lock-listing timer
  • Region 5 — TOMO CHOICES (OK/GOOD/GREAT):
    • OK: lowest price meeting all HARD filters
    • GOOD: balanced (price + inspection score + low owners + low kms)
    • GREAT: top condition, low owners, recent year, full insurance+PUC valid

6. Controlled Vocabularies (STRICT ENUM)

  • body_type: commuter | sport | cruiser | adv | scooter | ev
  • fuel: petrol | electric
  • partner: credr | bikewale_used | droom | olx | spinny_assured_bikes
  • inspection_score_band: A (90-100) | B (75-89) | C (60-74) | reject (<60, must not list)
  • blemish_severity: cosmetic | functional | structural
  • hard_filter_reject: accident_chassis | flood_damage | odometer_tamper | rc_blacklist | theft_alert | engine_seized

Any listing flagged hard_filter_reject MUST be suppressed regardless of partner ranking.


7. TTBS Dimensions (weights)

Dim Weight Signal
Time 0.15 test-ride slot ETA, delivery ETA, RC transfer SLA
Taste 0.25 body_type fit, model preference, colour preference
Budget 0.30 price within budget, finance EMI fit, no hidden charges
Safety 0.30 Parivahan-verified, inspection A-band, insurance active, return window, hypothecation cleared

8. Completion Contract

Mission completes when ALL of:

  1. Buyer accepts final post-inspection price
  2. Partner emits escrow_state=escrow_held AND parivahan_ack_id present
  3. Test-ride waived OR completed
  4. CPC webhook: event=purchase_completed, amount_inr = partner referral fee (NOT bike price)

9. Widget (in-chat surface)

  • CHOICES card: 3 listings OK/GOOD/GREAT with hero photo + price + inspection-score badge + owners/kms/year chips
  • DETAIL bubble: full photo carousel, inspection report PDF, RC verification chip, blemish list (plain English), test-ride button, lock-listing CTA
  • TEST-RIDE card: slot picker, address, executive verification badge
  • RC TRANSFER card: Form 29/30 + Parivahan ack + ETA

NEVER show: AI-rendered bike photos, synthetic ratings, "guaranteed lowest price" copy.


10. Caching Policy

Key TTL Invalidate on
listing:{partner}:{listing_id} 5 min listing edit, sold event
rc:parivahan:{rc} 30 days blacklist, transfer-in-progress
inspection_report:{listing_id} listing lifetime re-inspection
partner:reputation:{partner}:{city} 7 days complaint spike

11. Error Codes

Code Meaning UX
MKT_LISTING_SOLD listing already sold suppress + refresh
MKT_RC_BLACKLIST hard block reason chip
MKT_INSPECTION_REJECT C-band or worse suppress
MKT_LOCK_EXPIRED hold timed out re-lock button
MKT_FINANCE_REJECT loan declined offer alt lenders via FinanceAgent
MKT_TEST_RIDE_NO_SHOW partner SLA breach reschedule + credit
MKT_DELIVERY_REJECT_STATE inter-state taxation hurdle surface state-tax estimate

12. Sandbox → Production Checklist

  • 100 sample listings across all partners
  • Parivahan verify 50 sample RCs
  • Inspection report PDF render in 3 cities
  • Escrow rail 10 × ₹1 test
  • Form 29/30 byte-equal to RTO
  • CPC HMAC 50 events
  • Female-friendly test-ride exec toggle
  • Anti-fabrication audit

13. Anti-Fabrication Rules

  • NEVER show paid placement
  • NEVER render AI photos
  • NEVER synthesise inspection scores
  • NEVER hide blemishes
  • NEVER claim "lowest price" without partner-cited comparison
  • NEVER cache final post-inspection price
  • NEVER claim TOMO holds money

14. Regulatory Framing

  • Motor Vehicles Act 1988 §50 — Form 29 (intimation, seller) + Form 30 (transfer, buyer) at RTO of registration
  • CMVR 1989 Rule 55 — 14-day filing window
  • Insurance Act 1938 — policy transfer to buyer within 14 days; partner facilitates
  • GST — partner margin scheme applies; buyer pays no additional GST on used purchase from individual
  • DPDPA 2023 — buyer's Aadhaar/PAN collected by partner, not TOMO
  • State RTO fee — paid by buyer; surface in T&C
  • Cybercrime advisory — TOMO never asks for OTPs or financial credentials