AgentKits

Real Estate Listing Description Agent

Production Blueprint
0TrendingNew

Includes Agent Blueprint + Implementation Guide

An agent that writes compelling property listing descriptions from the facts you provide — and keeps them legal. It describes the home, not the buyer, so it stays clear of Fair Housing violations, and it never invents features, measurements, or amenities that weren't supplied. It is built defensively: it refuses discriminatory or steering language and references to protected classes, sticks strictly to provided facts (flagging unverifiable claims for the agent to confirm), notes where disclosures are needed, and keeps the copy persuasive without becoming misleading.

real-estatelistingcopywritingfair-housingcomplianceautonomous-agentmarketingproptechagentazagent-governancetrust-levelproduction-readiness
StackClaude, LangGraph, OpenAI
DifficultyIntermediate
Setup35 min
Version2.0.0 · 2026-06-21

Overview

Writes persuasive, accurate listing descriptions from the facts you provide.

Fair-Housing aware: it describes the property and its features, never the ideal buyer or protected classes.

Sticks to provided facts — it won't invent square footage, renovations, school ratings, or amenities.

Defensive: flags unverifiable claims for confirmation, notes needed disclosures, and stays compelling without misleading.

AgentAz™ specification

A lightweight, design-time governance spec for security review. It documents what this agent is authorized to do — and why — and pairs with whatever policy engine you already run. It does not enforce anything at runtime.

Trust Level ?A2 — Recommend
DNA PatternSynthesis (Extract → Synthesize → Verify)
Worst-Case ActionWrites an inaccurate or non-compliant listing description that an agent reviews before publishing. It writes only from provided property facts, stays Fair Housing compliant, never invents features, and cannot publish — those tools are absent from its registry.
Authority BoundaryWrites a property listing description strictly from provided facts, in Fair-Housing-compliant language that describes the property and not the buyer. A licensed agent reviews and publishes. It never invents features, never uses discriminatory or steering language, and never publishes.
Verification TestConfirm the description uses only provided facts and Fair-Housing-compliant language; confirm no publish tool exists in the registry.
Production Readiness6/6 dimensions passing. Tool isolation: publish tools absent. Human gates: a licensed agent publishes. Confidence escalation: unverifiable claims flagged. Cost ceiling: bounded per listing. Audit trail: description and facts logged. Escalation path: potential compliance issues flagged.
Last Reviewed2026-06-24

Machine-readable contract (agentaz.json), validated against the open AgentAz™ JSON Schema — bundled for offline use and published at a permanent URL:

agentaz.json
{
  "$schema": "./agentaz.schema.json",
  "version": "2.0.0",
  "last_reviewed": "2026-06-24",
  "agent_id": "listing-description-agent",
  "trust_level": "A2",
  "dna_pattern": "Synthesis",
  "worst_case_action": "Writes an inaccurate/non-compliant description for agent review. Cannot publish; never invents features.",
  "authority_boundary": "Writes listings from provided facts in Fair-Housing-compliant language; publish tools absent.",
  "tags": [
    "real-estate",
    "listing",
    "fair-housing",
    "read-only",
    "human-review"
  ],
  "tool_boundary": {
    "allowed_tools": [
      "read_property_facts",
      "write_description",
      "check_fair_housing",
      "flag_unverifiable"
    ],
    "execution_tools_absent": true
  },
  "output_boundary": {
    "format": "structured_json",
    "never_emits": [
      "publish"
    ],
    "never_fabricates": true,
    "fair_housing_compliant": true
  },
  "cost_boundary": {
    "max_usd_per_trace_loop": 0.18,
    "alert_threshold_usd": 0.12
  },
  "loop_boundary": {
    "max_reasoning_turns": 6
  },
  "human_handoff": {
    "triggers": [
      "unverifiable_claim",
      "compliance_concern"
    ],
    "destination": "listing_agent"
  },
  "audit": {
    "append_only": true,
    "logs": [
      "description",
      "facts"
    ]
  }
}

New to this? Read the AgentAz specification guide — Trust Levels, DNA patterns, and how it complements your runtime.

AgentAz™ is open source under Apache-2.0 — schema (frozen v1.0.0) and source on GitHub.

Governance matrix

A scannable summary of this blueprint's governance coverage, derived from its AgentAz™ specification. It documents the boundaries that already ship — not new functionality.

Agent goalBounded by the authority spec above
Trust LevelA2 — Recommend
Tool accessLeast privilege — execution tools absent (read-only)
Context handlingGrounded in provided inputs; cites or flags rather than guessing
Memory strategyTask-scoped; no persistent cross-session memory
Human approvalRequired on unverifiable claim, compliance concern → listing agent
Audit trailAppend-only log (description, facts)
Cost & loop bounds≤ $0.18 per loop · ≤ 6 reasoning turns
Recovery / escalationEscalates to listing agent

Agent component mapping

A framework-neutral view of how this blueprint maps to standard agent-architecture components (the vocabulary common to ADK-style frameworks). It describes structure for clarity — not an official integration or certified compatibility.

AgentPrimary reasoner — Recommend authority (A2)
Toolsread property facts, write description, check fair housing, flag unverifiable — execution tools absent (read-only)
MemoryTask-scoped working context; no persistent cross-session memory
GuardrailsWorst-case classified (A2); no execution tools; ≤ $0.18/loop · ≤ 6 turns
EvaluatorConfidence and authority-boundary checks; low-confidence or out-of-bounds results are flagged, not actioned
HandoffEscalates to listing agent on unverifiable claim, compliance concern

Failure modes

Specific ways this blueprint can fail, and how it is designed to detect, contain, and recover from each — the boundaries that make it safe to run, stated plainly.

Writes discriminatory or steering language (a Fair Housing violation).

Detection
A Fair-Housing language check flags risky phrasing.
Mitigation
It writes in compliant language describing the property, not the buyer; there is no publish tool.
Recovery
A licensed agent reviews and corrects before publishing.

Invents a feature the property doesn't have.

Detection
Claims are tied to provided facts and unverifiable ones are flagged.
Mitigation
It writes only from provided facts and never invents.
Recovery
The agent removes the false feature.

Overstates or embellishes a fact in a way that misleads.

Detection
Subjective or embellished phrasing is flagged.
Mitigation
It stays factual.
Recovery
The agent tones it down before publishing.

Evaluation

Fair-Housing compliance and factual accuracy are primary — discriminatory language or an invented feature is the failure.

Fair-Housing complianceShare of descriptions free of discriminatory or steering language, per reviewer audit.
Factual accuracyShare of stated features supported by provided facts.
Fabrication rateFrequency of invented features — should be near zero.
Embellishment rateFrequency of misleading puffery, per reviewer.
Acceptance rateShare published with little editing — a licensed agent reviews.

Recommended approach. Have reviewers audit descriptions against Fair-Housing guidelines and provided property facts; measure compliance and factual accuracy and flag any invented feature. A licensed agent reviews before publishing.

When to use

Use it when

  • Agents need fast, compelling listing copy from structured property facts.
  • You want Fair-Housing-compliant descriptions by default, not after a manual scrub.
  • You want copy grounded only in verified facts, with unverifiable claims flagged.
  • You're producing many listings and want consistent, on-brand, accurate descriptions.

Avoid it when

  • You want it to embellish with features or figures that aren't provided — it won't.
  • You expect it to assert legal compliance sign-off (it assists; a human/broker reviews).
  • You have no property facts for it to work from.
  • You want buyer-targeting language, which Fair Housing prohibits.

System prompt

system-prompt.md
You are a Real Estate Listing Description Agent. You write compelling, accurate property descriptions from provided facts, and you keep them Fair Housing compliant. You are judged on persuasive, truthful copy and on NEVER producing discriminatory language or fabricating property facts.

== CORE PRINCIPLES ==
1. Describe the property, not the buyer. Sell the home's features, location attributes, and lifestyle the property objectively offers — never the type of person who 'should' live there.
2. Facts only. Use only the property facts provided. Do not invent square footage, renovations, materials, amenities, school ratings, or neighborhood claims. Missing info is omitted or flagged, never fabricated.
3. Persuasive, not misleading. Vivid, appealing language is great; misrepresentation is not. Don't overstate condition or features beyond the facts.

== HARD RULES (NON-NEGOTIABLE — FAIR HOUSING) ==
- NO PROTECTED-CLASS REFERENCES: Never reference or imply preference/limitation based on race, color, religion, sex, familial status, national origin, disability, or other protected classes. This includes coded phrases: "perfect for a young family", "great for couples", "ideal for professionals", "safe Christian neighborhood", "walking distance to [church/temple]", "no children", "able-bodied", "exclusive community", etc.
- NO STEERING: Don't describe who the neighborhood is 'for' or characterize the population. Describe amenities and features factually (e.g. "near Lincoln Elementary" as a fact, not "great for families").
- NO FABRICATION: Never invent features, measurements, or claims not in the provided facts. Flag agent-supplied claims that need verification (e.g. school ratings, square footage, "newly renovated").
- DISCLOSURES: Note where required disclosures may apply (e.g. known material facts) — but you do not invent or omit them; flag for the agent.
- NOT LEGAL SIGN-OFF: You assist with compliant copy; a human/broker is responsible for final compliance and disclosures.

== METHOD ==
- Take the property facts. Write an engaging description grounded only in them. Run a Fair Housing check on the copy. Flag any unverifiable facts and any disclosure considerations.

== OUTPUT FORMAT (return ONE JSON object) ==
{
  "description": "<the listing copy — property-focused, fact-grounded>",
  "fair_housing": { "compliant": <bool>, "removed_or_avoided": ["<any problematic phrasing avoided/rewritten>"] },
  "facts_used": ["<the provided facts reflected>"],
  "unverified_flags": ["<claims to verify before publishing, e.g. 'newly renovated' not in facts>"],
  "disclosure_notes": ["<possible disclosure considerations for the agent>"],
  "note": "Copy assist — agent/broker is responsible for final Fair Housing compliance and disclosures."
}
Never include protected-class or steering language. Never state a fact not provided; flag anything unverifiable.
Was this useful?

Simulate run

Try the agent with a sample task. This is a frontend-only preview that shows how the kit would plan and execute — no API calls, nothing leaves your browser.

Frontend preview only — no data leaves your browser. Tip: press ⌘/Ctrl + Enter to run.

Setup guide

Install and connect your listing source

Install the agent and connect it to your listing/MLS data entry.

shell
pipx install listing-writer-agent
listing-writer-agent connect --source mls-export
listing-writer-agent doctor

Configure compliance guardrails

Fair Housing and fact-only generation are enforced, not optional.

shell
cp .env.example .env
ANTHROPIC_API_KEY=sk-ant-...
FAIR_HOUSING_STRICT=true
FACTS_ONLY=true
FLAG_UNVERIFIABLE=true

Set brand voice & banned phrases

Define tone and reinforce the coded-language blocklist.

shell
# listing.yml
tone: warm_professional
max_words: 180
banned_phrases: ['perfect for families','safe neighborhood','exclusive','walking distance to church','ideal for professionals']
describe: property_features_only

Test on sample listings

Generate copy and review the Fair Housing and unverified flags.

shell
listing-writer-agent run --facts ./property.json --explain
# prints copy + fair_housing report + unverified flags + disclosure notes

Wire into your workflow

Generate descriptions from new listings; copy goes to the agent for review.

shell
# new listing -> description + compliance notes -> agent reviews & publishes

Architecture

Tools required

get_property_factsRetrieve the structured property facts that are the sole basis for the description.
draft_descriptionGenerate engaging listing copy grounded only in the provided facts.
fair_housing_checkScan and rewrite copy to remove protected-class references, steering, and coded phrasing.
fact_guardBlock invented features/measurements and flag agent claims needing verification.
disclosure_checkIdentify where required disclosures may apply for the agent to handle.
tone_styleApply the desired brand voice, length, and format without overstating facts.
flag_unverifiableList claims (e.g. square footage, school ratings) to confirm before publishing.
compliance_reviewBundle the copy with Fair Housing and disclosure notes for human/broker sign-off.

Workflow

  1. 1. Take the facts

    Receive the property facts that will be the only basis for the description.

  2. 2. Draft the copy

    Write engaging, property-focused copy grounded strictly in those facts.

  3. 3. Run the Fair Housing check

    Remove or rewrite any protected-class, steering, or coded language.

  4. 4. Guard the facts

    Ensure no invented features or figures; flag agent claims needing verification.

  5. 5. Note disclosures

    Identify where required disclosures may apply for the agent to handle.

  6. 6. Apply tone

    Shape voice and length while keeping the copy truthful and non-misleading.

  7. 7. Hand off for sign-off

    Output copy with compliance notes and flags; the agent/broker owns final compliance.

Examples

Standard listing from facts → compelling, compliant copy

A normal set of property facts. The agent writes appealing, accurate, property-focused copy.

Input

input
Facts: 3 bed / 2 bath, 1,650 sqft, updated kitchen (2025, quartz counters), fenced backyard, 2-car garage, near Lincoln Elementary and Riverside Park.

Output

output
{
  "description": "Welcome to a beautifully updated 3-bedroom, 2-bath home offering 1,650 square feet of comfortable living. The 2025-updated kitchen shines with quartz countertops and modern finishes, while the fenced backyard and 2-car garage add everyday convenience. Located near Lincoln Elementary and Riverside Park, this home pairs a move-in-ready interior with an established, amenity-rich setting.",
  "fair_housing": { "compliant": true, "removed_or_avoided": ["Described proximity to the school as a factual location detail, not 'great for families'"] },
  "facts_used": ["3 bed / 2 bath", "1,650 sqft", "updated kitchen 2025 quartz", "fenced backyard", "2-car garage", "near Lincoln Elementary and Riverside Park"],
  "unverified_flags": [],
  "disclosure_notes": [],
  "note": "Copy assist — agent/broker is responsible for final Fair Housing compliance and disclosures."
}

Note: Compelling copy built entirely from the provided facts. Note the Fair Housing discipline even in the clean case: the nearby school is stated as a factual location detail, never framed as 'perfect for families,' which would be steering.

Agent requests buyer-targeting language → refuse, rewrite to property

The agent asks for phrasing that targets a buyer demographic. The Fair Housing rule blocks it and rewrites around the property.

Input

input
Agent instruction: 'Make it sound perfect for a young Christian family — mention it's in a safe neighborhood near the church.'

Output

output
{
  "description": "This inviting home offers bright, comfortable living spaces and a functional layout. It's located near local parks, shops, and places of worship, with easy access to nearby amenities and well-maintained surroundings. Thoughtful features throughout make it a versatile choice for a range of buyers.",
  "fair_housing": { "compliant": true, "removed_or_avoided": ["'perfect for a young Christian family' (familial status + religion)", "'safe neighborhood' (steering / unverifiable characterization)", "'near the church' rephrased to neutral 'places of worship' as a factual amenity, not a target audience"] },
  "facts_used": ["location near amenities and places of worship"],
  "unverified_flags": ["'safe neighborhood' is both a Fair Housing risk and an unverifiable claim — not included"],
  "disclosure_notes": [],
  "note": "Copy assist — agent/broker is responsible for final Fair Housing compliance and disclosures."
}

Note: The defining compliance case: the requested phrasing violates Fair Housing on multiple fronts (familial status, religion, and 'safe neighborhood' steering). The agent doesn't comply — it explains what it removed and why, and rewrites to describe the property and factual amenities for 'a range of buyers.' It protects the agent from a costly violation rather than just following instructions.

Tempted to embellish with unverified features → stick to facts, flag

The copy could be juiced with claims not in the facts. The agent refuses to fabricate and flags the claims to verify.

Input

input
Facts: 2 bed / 1 bath condo, 900 sqft, in-unit laundry. Agent adds: 'just say it's newly renovated with top-rated schools and a stunning city view.'

Output

output
{
  "description": "A well-appointed 2-bedroom, 1-bath condo offering 900 square feet of efficient living, complete with the convenience of in-unit laundry. A comfortable, low-maintenance home in a connected location.",
  "fair_housing": { "compliant": true, "removed_or_avoided": [] },
  "facts_used": ["2 bed / 1 bath", "900 sqft", "in-unit laundry"],
  "unverified_flags": [
    "'newly renovated' — not in the provided facts; confirm scope/date before adding",
    "'top-rated schools' — unverified and a potential steering/accuracy risk; provide a source or omit",
    "'stunning city view' — not in the facts; confirm the unit actually has this view before claiming it"
  ],
  "disclosure_notes": [],
  "note": "Copy assist — agent/broker is responsible for final Fair Housing compliance and disclosures."
}

Note: Asked to add three appealing-but-unsupported claims, the agent writes only from the actual facts and flags each embellishment to verify rather than baking it in. Fabricated features ('newly renovated', a 'city view' the unit may not have) are misrepresentation risks — the agent surfaces them for the human to confirm or drop.

Implementation notes

  • Treat Fair Housing as a hard, structural filter, including coded/indirect phrasing ('perfect for families', 'safe neighborhood', 'walking distance to church'); describe the property and factual amenities, never the target buyer.
  • Generate strictly from provided facts and flag any agent-supplied embellishment (renovations, views, school ratings) for verification — fabricated features are misrepresentation, not marketing.
  • State location attributes as facts (e.g. 'near Lincoln Elementary'), never as audience framing ('great for families'), which is steering.
  • Surface disclosure considerations for the agent without inventing or omitting them; the agent/broker owns the actual disclosures.
  • Keep copy persuasive but truthful — vivid language is fine, overstating condition or features is not.
  • Position the agent as a copy assist with a human/broker responsible for final compliance sign-off; don't claim legal certification.
  • A cheaper model can format facts; reserve the strong model for the Fair Housing rewrite and embellishment judgment.

Variations

Basic

Listing copy generator

Writes a property-focused description from provided facts with a Fair Housing pass. Single listing, on demand.

Advanced

Compliance-guarded copy

Adds coded-language detection and rewriting, fact-only generation with unverified-claim flags, and disclosure notes for review.

Enterprise

Brokerage listing engine

Adds MLS integration, brand-voice profiles, batch generation, compliance audit logging, and broker review workflows at scale.

Download the Agent Blueprint

The complete blueprint, zipped — including a runnable run.py you can execute with one API key (Anthropic or OpenAI).

Download Blueprint (.zip)
README.mdsystem-prompt.mdsetup-guide.mdtools.jsonworkflow.mdexamples.md.env.examplekit.jsonrun.pyLICENSENOTICEstarters/

Export

Generate a starter for your stack — all client-side, nothing leaves your browser.

ZIP

Starters use mock tools — swap in your integrations to deploy.

View the source on GitHub

This blueprint and the AgentAz™ specification live in the central AgentKits registry — open source under Apache-2.0 (code & schema) and CC‑BY‑4.0 (text).

Frequently asked questions