Bulk listing work fails when a template makes different properties sound identical or copies one property’s facts into another. The safe pattern is structured inventory first, generated drafts second, and record-level approval before any manual platform submission or authorized import.
After this lesson, you can create a 10-property listing workbook with validation, duplicate checks, draft status, and an approval trail. This lesson does not teach scraping, browser automation, or bypassing Zameen’s current posting rules.
Design One Row Per Property
Create immutable property_id values and these column groups:
IDENTITY: property_id, owner_ref, purpose, city, locality, block
FACTS: property_type, source_area, area_unit, price_pkr, beds, baths, floor
EVIDENCE: source_file, observed_at, owner_confirmed_at, authority_check
COPY: title_draft, body_draft, claims_to_verify
MEDIA: image_folder, floorplan_rights, staging_disclosure
WORKFLOW: assignee, draft_status, reviewer, approved_at, portal_status
Use dropdowns for purpose, city, property type, evidence state, and workflow status. Use formulas to flag missing IDs, invalid phone-free public data, duplicate combinations, zero or negative prices, and unsupported claims. Never let an AI choose the row’s property ID.
The misconception is that bulk means publish everything at once. Bulk means applying the same controls consistently while preserving separate facts and approvals.
Generate From a Locked Schema
Export only the fields needed for copy. Do not include owner names, phone numbers, CNICs, private addresses, commission notes, title documents, or tenant data.
Prompt one row at a time or require strict row IDs:
For each input row, return JSON with exactly:
property_id, title_draft, body_draft, claims_to_verify.
Use only supplied facts. Never copy facts between rows. Do not infer approval,
ownership, safety, distance, demand, return, condition, urgency, or amenities.
If a required fact is absent, add it to claims_to_verify. Preserve source units.
INPUT ROWS:
[paste 3–5 redacted rows]
Reject output with a missing/duplicate ID or extra field. Paste drafts back by property_id, not row position, because sorting can change positions.
Add Three Review Gates
- Data gate: required structured fields and evidence states are valid.
- Claim gate: every title/body statement exists in that property’s row or source record.
- Platform gate: a human checks the current Zameen form, policy, media, availability, and final preview.
Set statuses such as INTAKE, NEEDS_EVIDENCE, DRAFTED, REVIEWED, OWNER_APPROVED, POSTED, UPDATED, and WITHDRAWN. Only OWNER_APPROVED records can move to posting.
Track portal listing ID and expiry/status after submission. When a property is sold, rented, withdrawn, or changed, update the public record and the workbook together.
Worked Example
Sample only: an agency imports ten properties. Rows P-006 and P-009 both say “5 marla house” but are in different Lahore blocks and use different owner-supplied covered areas. The first AI batch accidentally gives P-009 P-006’s “corner” feature.
The claim gate compares normalized draft statements with each source row and flags corner because P-009 has no such fact. The draft returns to NEEDS_EVIDENCE; the team does not ask AI to make the wording vague.
Another row has a duplicated owner reference but a different property ID. The duplicate rule asks whether it is a genuine second unit or a duplicate submission. The reviewer confirms it is the same flat entered twice and archives one row. The audit record preserves the decision.
Failure Cases to Diagnose
- Rows are joined by position after sorting: join by immutable
property_id. - AI sees private owner files: export a redacted copy with only listing facts.
- One template inserts the same feature everywhere: require row-level claims and validation.
- Duplicate listings are treated as more inventory: flag identity/location/type/size overlaps for review.
- No status blocks unapproved posting: use controlled workflow values and reviewer fields.
- A listing changes but the workbook does not: make update/withdrawal part of the same record lifecycle.
- Automation violates portal terms: use only current authorized workflows and manual review.
🇵🇰 Pakistan Angle
Pakistani agency inventories often arrive through mixed WhatsApp messages, voice notes, and spreadsheets using lakh/crore wording, marla/kanal, square yards, and square feet. Normalize values for calculation but preserve the original wording and conversion basis. Do not let 2.5 crore become 2.5 million; store integer PKR and render a checked human-readable form.
Keep owner phone numbers and exact access instructions in a restricted contact table, not in the copy-generation export. During load-shedding, use local spreadsheet validation and queue uploads for later. Recheck availability before posting: a copied old listing wastes buyer time and damages trust.
Hands-On Exercise
- Build the workbook columns and controlled status lists.
- Enter ten labelled sample properties with unique IDs and evidence states.
- Add validation for required fields, price, duplicates, and approval state.
- Export a redacted three-row batch and generate strict JSON drafts.
- Join output by property ID and run the three review gates.
- Simulate one correction, one withdrawal, and one duplicate resolution.
Done means: no record can be drafted or posted without its own traceable facts, approval status, and lifecycle history, and another reviewer can reproduce every bulk decision.
Completion Rubric
- Every property has an immutable ID and separate evidence record.
- Private contact/document data is absent from the AI export.
- Generated copy returns strict IDs and never borrows facts across records.
- Data, claim, and platform gates have named reviewers/statuses.
- Duplicate, changed, expired, and withdrawn records are handled explicitly.
- Posting uses a current authorized Zameen workflow rather than scraping or bypass automation.
Sources
- Zameen Help — Search listing inventory
- Zameen Help — Submit a listing
- Google Sheets — Data validation
- Google Sheets — Remove duplicates
Key takeaway: safe bulk listing work scales validation and approval around property IDs; it never scales copy-paste assumptions.