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 | evfuel: petrol | electricpartner: credr | bikewale_used | droom | olx | spinny_assured_bikesinspection_score_band: A (90-100) | B (75-89) | C (60-74) | reject (<60, must not list)blemish_severity: cosmetic | functional | structuralhard_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:
- Buyer accepts final post-inspection price
- Partner emits
escrow_state=escrow_heldANDparivahan_ack_idpresent - Test-ride waived OR completed
- 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