marketplace.sell_used_furniture
Sell pre-owned furniture through TOMO partners (Furlenco / Rentomojo / OLX / Quikr / Pepperfry second-life). Photo-based instant estimate → at-home inspection → pickup + payout. TOMO is the listing/quote surface; partner handles money, pickup truck, and resale.
1. Identity
- Intent ID:
marketplace.sell_used_furniture - Vertical: marketplace
- Verb: sell
- Noun: used_furniture
- Primary agent:
MarketplaceAgent - Sub-agents (DATA only):
LogisticsAgent(pickup truck + dismantle crew),SafetyAgent(visit-safety flags) - Single-intent → completed action: photo estimate → at-home inspection → pickup → payout
- Handoff layer: L2
2. NL Coverage
- "sell my sofa"
- "olx sofa pickup nakkalgutta"
- "sell my dining table"
- "furlenco buyback for my bed"
- "sell my wardrobe at home pickup"
- "instant quote for my sofa"
- "sell old furniture"
- "pepperfry buyback"
- "sell my office chair"
- "what is my king bed worth"
Must NOT match: "buy used furniture", "donate furniture" (→ separate donation intent if exists), "scrap furniture".
3. Input (slots)
| Slot | Type | Required | Source |
|---|---|---|---|
category |
enum | HARD | NL |
material |
enum | SOFT | NL |
purchase_year |
int | SOFT | NL |
condition_self_declared |
enum [like_new, superb, good, fair] | HARD | quiz |
dimensions_cm |
obj {l,w,h} |
HARD | quiz |
weight_kg_approx |
int | SOFT | partner-side estimate |
photos |
url[] | HARD | seller upload (3-6 photos) |
pickup_address |
geo | HARD | saved or NL |
floor |
int | HARD | quiz (lift check) |
lift_available |
bool | HARD | quiz |
pickup_slot |
datetime | HARD | partner calendar |
payout_method |
enum [upi, bank_transfer, store_credit] | HARD | NL |
4. Provider Tools
get_photo_estimate(category, material, purchase_year, condition_self_declared, dimensions, photos)→{estimate_inr, estimate_ttl_min, estimate_id}schedule_inspection(estimate_id, pickup_address, slot, floor, lift_available)→{visit_id, inspector_name, eta_min, lift_surcharge_inr}submit_inspection_report(visit_id)→{final_offer_inr, delta_inr, downgrade_reasons[]}accept_offer(visit_id)→{transaction_id, escrow_state}arrange_pickup(transaction_id, truck_slot)→{pickup_id, crew_size}release_payout(transaction_id)→{utr, settled_at_iso}cancel_visit(visit_id, reason)→{cancellation_fee_inr}
5. Response Shape
- Region 1 — INTELLIGENCE:
estimate_ttl_min,lift_surcharge_inr,payout_eta_min,dismantle_required,safety_flags - Region 2 — summary: "₹{estimate_inr} photo estimate, valid {ttl} min. Final after at-home inspection."
- Region 3 — visual: seller's uploaded photos
- Region 4 — NOW pin: nearest inspector slot + crew size for pickup
- Region 5 — CHOICES: OK (highest estimate), GOOD (balanced), GREAT (best match-rate, fastest payout, dismantle included)
6. Controlled Vocabularies
category: sofa | bed | mattress | dining | wardrobe | study | office | storage | decor | kidsmaterial: wood | engineered_wood | metal | fabric | leather | rattan | plasticcondition_self_declared: like_new | superb | good | fairpartner: furlenco | rentomojo | olx | quikr | pepperfry_second_lifepayout_method: upi | bank_transfer | store_creditdowngrade_reason: pest_infestation | mould | structural_break | fabric_torn_severe | dimensions_mismatch | photos_misleading | hazardous_finish | weight_mismatchcrew_size: 1 | 2 | 3+
7. TTBS Dimensions
| Dim | Weight | Signal |
|---|---|---|
| Time | 0.20 | estimate TTL, inspection ETA, pickup ETA, payout SLA |
| Taste | 0.10 | partner preference |
| Budget | 0.40 | estimate, downgrade history, no hidden lift/dismantle deductions |
| Safety | 0.30 | inspector ID badge, escrow protection, female-friendly toggle |
8. Completion Contract
Complete when:
- Seller accepts final offer
escrow_state=escrow_held- Pickup truck + crew dispatched
- Payout
utrsettled - CPC:
event=sale_completed,amount_inr= referral fee
9. Widget
- CHOICES card (3 partners)
- HONESTY strip: "Final offer may differ — typical downgrade for {category} = ₹{X}; lift surcharge if no working lift"
- SLOT picker + female-inspector toggle
- POST-INSPECTION reveal: final + delta + reasons + Accept/Reject
- PICKUP card: truck slot + crew size + dismantle flag
- PAYOUT pill
NEVER show AI photos, fake ratings, "guaranteed best price".
10. Caching Policy
| Key | TTL | Invalidate on |
|---|---|---|
photo_estimate:{category}:{material}:{condition}:{dims_band} |
estimate_ttl_min (max 720) | partner price refresh |
inspector:availability:{partner}:{pincode} |
15 min | bookings |
partner:reputation |
7 days | complaint spike |
No caching of final offer.
11. Error Codes
| Code | Meaning | UX |
|---|---|---|
MKT_ESTIMATE_EXPIRED |
TTL elapsed | regenerate |
MKT_PHOTOS_INSUFFICIENT |
partner needs more | photo upload prompt |
MKT_INSPECTOR_NO_SHOW |
SLA breach | reschedule + credit |
MKT_DOWNGRADE_EXCESSIVE |
final < 70% estimate | honesty + cooling-off |
MKT_LIFT_FIT_FAIL |
won't fit through stairs | larger crew or dismantle prompt |
MKT_PAYOUT_BANK_FAIL |
rail fail | freeze + support |
12. Sandbox → Production Checklist
- 50 sample sellers across 4 partners
- Photo estimate ML calibrated
- Inspector dispatch 3 cities
- Truck + crew dispatch validated
- Payout 10 × ₹1
- CPC HMAC 50 events
- Downgrade ENUM audit
- Female-inspector toggle
- Anti-fab audit
13. Anti-Fabrication Rules
- NEVER paid placement
- NEVER AI-enhance seller photos (raw upload only)
- NEVER synthesise market-comparison ₹
- NEVER fake ratings
- NEVER claim TOMO performs pickup (partner does)
- NEVER hide downgrade reasons or lift surcharge
- NEVER cache final offer
14. Regulatory Framing
- Consumer Protection Act 2019 — grade + downgrade disclosure mandatory
- MoEFCC — partner responsible for non-resaleable items routed to authorised disposal
- GST — partner margin scheme on resale; individual seller pays no GST
- DPDPA 2023 — seller PII to partner only
- Income Tax — payout above ₹50k must be banked/UPI; below = cash allowed
- Cybercrime advisory — TOMO never asks for OTPs or bank password