marketplace.list_classified_ad
Post a P2P classified ad (anything not covered by a dedicated TOMO marketplace intent) through partners (OLX / Quikr / Facebook Marketplace / Karaageel). TOMO is the listing-form + image + price-guidance surface; partner hosts the listing and routes buyer messages. P2P = TOMO charges zero commission on the sale itself (only a listing-tier rev-share if partner offers paid promotion-free placement).
1. Identity
- Intent ID:
marketplace.list_classified_ad - Vertical: marketplace
- Verb: list
- Noun: classified_ad
- Primary agent:
MarketplaceAgent - Sub-agents (DATA only):
SafetyAgent(banned-items detection, scam-pattern flag),LogisticsAgent(inter-buyer pickup hints) - Single-intent → completed action: title + photos + price + category → live listing on partner
- Handoff layer: L2
2. NL Coverage
- "post an ad on olx"
- "list my old guitar for sale"
- "classified ad sell my plants"
- "quikr listing for my piano"
- "facebook marketplace post"
- "list household items"
- "post free ad to sell"
- "olx ad for my bicycle"
- "list my collectibles"
- "classified ad sell my dog accessories"
Must NOT match: anything that already has a dedicated intent (car/bike/electronics/furniture). TOMO routes those to their typed flow instead, NEVER to classified.
3. Input (slots)
| Slot | Type | Required | Source |
|---|---|---|---|
title |
string ≤80 chars | HARD | seller drafted (LLM-suggest from photo OK) |
category |
enum (partner taxonomy) | HARD | NL → partner taxonomy mapper |
description |
string ≤2000 chars | HARD | seller drafted |
photos |
url[] 1-10 | HARD | seller upload |
asking_price_inr |
int OR negotiable |
HARD | seller |
pickup_address |
geo (city-level only by default) | HARD | saved or NL |
condition |
enum [new, like_new, used_good, used_fair, for_parts] | HARD | quiz |
contact_visibility |
enum [in_app_only, phone_visible, both] | HARD | default in_app_only |
4. Provider Tools
validate_category(text, photos)→{suggested_category, taxonomy_path}scan_banned_items(photos, title, description)→{banned, reason}create_listing(payload)→{listing_id, partner_url, status}update_listing(listing_id, patch)→{updated_at}pause_listing(listing_id)→{paused_at}delete_listing(listing_id, reason)→{deleted_at}get_message_inbox(listing_id)→{threads[]}submit_buyer_report(thread_id, reason)→{report_id, action_eta}
5. Response Shape
- Region 1 — INTELLIGENCE:
category_validated,banned_check_passed,local_demand_index,suggested_price_band_inr,scam_risk_flags[] - Region 2 — summary: "Listing draft ready. Suggested price band: ₹{low}-₹{high}. Live on {partner} in {ttl} min."
- Region 3 — visual: seller's uploaded photos (preview grid)
- Region 4 — NOW pin: live publish CTA + visibility toggle (in-app vs phone)
- Region 5 — CHOICES: OK (single partner, free), GOOD (multi-partner cross-post), GREAT (multi-partner + featured slot if partner offers organic-only feature, never paid_placement)
6. Controlled Vocabularies
condition: new | like_new | used_good | used_fair | for_partscontact_visibility: in_app_only | phone_visible | bothpartner: olx | quikr | facebook_marketplace | karaageel | sulekhabanned_category: weapons | live_animals | tobacco | alcohol | counterfeit | adult_content | prescription_drugs | hazardous | currency_notes | crypto | stolen_goods_flag | govt_documentsscam_risk_flag: price_far_below_band | urgency_language | offshore_buyer_pattern | advance_payment_request | shipping_to_unverified | id_proof_request
7. TTBS Dimensions
| Dim | Weight | Signal |
|---|---|---|
| Time | 0.20 | publish ETA, message-inbox responsiveness |
| Taste | 0.20 | category fit, photo quality, title clarity |
| Budget | 0.20 | listing free, no hidden featured-fee surprises |
| Safety | 0.40 | banned-items pass, scam-pattern guard, contact visibility default safe, partner-side dispute support |
Locked: safety = 0.40 — classified is the highest-fraud-risk surface; safety dominates.
8. Completion Contract
Complete when:
- Banned-items scan returns
banned=false - Partner emits
listing_idANDstatus=live - Partner URL retrievable
- CPC:
event=listing_published,amount_inr= 0 (free) OR partner's organic-tier rev-share if applicable;pass_through_inr= 0 (TOMO never collects payment for the item)
9. Widget
- DRAFT bubble: title/desc/photos/price/condition → live preview card
- BANNED-ITEMS warning if triggered (hard block + reason)
- PRICE-GUIDE chip: "Listings in this category in {city} typically sell for ₹{low}-₹{high}"
- SCAM-SAFETY tips chip: "Meet in public · verify cash · TOMO never asks for OTPs · report suspicious DMs"
- INBOX preview: threads + report-buyer button
- EDIT / PAUSE / DELETE controls
NEVER show: AI-rendered listing photos, fake "5⭐ ad" badge, paid-promotion bumps.
10. Caching Policy
| Key | TTL | Invalidate on |
|---|---|---|
taxonomy:{partner} |
24 h | partner taxonomy update |
banned_items_list:{partner} |
24 h | partner policy update |
price_band:{category}:{city} |
24 h | seasonal index refresh |
listing:{partner}:{listing_id} |
5 min | edit, paused, deleted |
11. Error Codes
| Code | Meaning | UX |
|---|---|---|
MKT_BANNED_ITEM |
hard block | reason chip, suggest legitimate channel |
MKT_CATEGORY_UNMAPPED |
partner taxonomy can't resolve | manual picker |
MKT_PHOTO_REJECTED |
quality/copyright/explicit | reason chip |
MKT_LISTING_FLOOD |
too many listings in short window | partner rate-limit, surface cooldown |
MKT_SCAM_PATTERN_DETECTED |
inbox flag | safety warning, partner support link |
MKT_PARTNER_DOWN |
API unreachable | queue + retry |
12. Sandbox → Production Checklist
- 50 sample listings across 3 partners
- Taxonomy mapper covers top 100 categories
- Banned-items scanner tested with 20 known violators
- Price-guide ML calibrated on 10k sold listings
- Scam-pattern detector tested on labelled corpus
- CPC HMAC 50 events
- Default contact visibility = in_app_only verified
- Anti-fab audit
13. Anti-Fabrication Rules
- NEVER paid placement / bump-ups
- NEVER AI-render listing photos
- NEVER auto-write fake reviews
- NEVER hide banned-items reason
- NEVER suggest the seller post a banned item via workaround
- NEVER expose phone number unless seller explicitly enables
phone_visible - NEVER claim TOMO mediates disputes (partner does)
- NEVER cache price-guide >24h (market moves)
14. Regulatory Framing
- IT Act 2000 §79 — intermediary safe-harbour; partner is the publisher of record, TOMO is form-and-route surface
- DPDPA 2023 — seller PII (phone/address) released only with explicit consent
- Consumer Protection (E-commerce) Rules 2020 — partner is platform of record for grievance
- IT Intermediary Guidelines 2021 — banned-content takedown SLA 36h, partner responsibility
- Drugs and Cosmetics Act / Arms Act / Wildlife Protection Act — strict banned-items list enforced at scan time
- Customs Act — international shipping disabled by default for P2P
- Cybercrime advisory — never share OTPs, never accept advance payment from unverified buyer, never share ID proof in chat