| name | lead-extractor |
| description | Extract structured real-estate lead records from parsed message objects. Use when users ask to find leads in WhatsApp exports, extract name-phone-budget, or classify listing vs requirement posts. Recommended chain: run after message-parser and before india-location-normalizer. Do not use for storage, summaries, outbound messaging, or action execution. |
Lead Extractor
Identify lead signals in parsed messages and emit strict lead objects.
Quick Triggers
- Find all buyer leads from this WhatsApp chat.
- Extract contact details and budget from these messages.
- Identify serious property inquiries from parsed messages.
Recommended Chain
message-parser -> lead-extractor -> india-location-normalizer
Execute Workflow
- Accept parsed messages from Supervisor.
- Validate input with
references/parsed-message-input.schema.json.
- Apply chat-specific extraction rules from
references/extraction-rules-re-india-v1.md.
- Determine
dataset_mode from Supervisor context:
- default:
broker_group
- allowed:
broker_group, buyer_inquiry, mixed
- Detect lead-candidate messages using inquiry intent, contact details, and property-related preferences.
- Classify
record_type:
inventory_listing for broker inventory/availability posts (default in broker groups)
buyer_requirement for explicit "required/chahiye looking for" demand posts
- drop non-lead/system noise instead of emitting
noise_or_system
- Handle multiline listings as one candidate record when body lines contain price, area, or location details.
- Build lead records with:
- required:
lead_id, name, phone, record_type
- optional:
dataset_mode, property_type, budget, deal_type, asset_class, price_basis, area_sqft, area_basis, location_hint, raw_text, source, created_at
- Normalize phone extraction from spaced variants such as
+91 98205 82462 and 98200 78845.
- Distinguish price intent from rate intent:
- examples:
3.5 Lakh rent (monthly), 60K psf (per-sqft), 4.25 Cr (total)
- Deduplicate leads by stable keys when records clearly refer to the same person.
- Validate output with
references/output-leads.schema.json.
- Return only validated lead objects.
Enforce Boundaries
- Never write or update persistent storage.
- Never modify source messages.
- Never generate summaries.
- Never suggest or execute follow-up actions.
- Never send communication or invoke external side effects.
Handle Errors
- Reject invalid parsed-message input.
- Emit an empty array when no lead evidence exists.
- Return field-level validation errors when extracted records violate schema.