en un clic
run-house-hunt
// Run the full house-hunting AI agent pipeline for a buyer brief — intake, ranking, explanation, comparison, affordability, and tour prep. No HTTP server, browser, or external model API key needed.
// Run the full house-hunting AI agent pipeline for a buyer brief — intake, ranking, explanation, comparison, affordability, and tour prep. No HTTP server, browser, or external model API key needed.
Find property listings with WebSearch/WebFetch or Codex-in-chrome tools, normalize them into Listing-shaped dicts, and run the house-hunting harness via the `house-hunt` MCP server. Use when a user wants real candidate properties ranked against a buyer brief.
Find property listings with WebSearch/WebFetch or claude-in-chrome tools, normalize them into Listing-shaped dicts, and run the house-hunting harness via the `house-hunt` MCP server. Use when a user wants real candidate properties ranked against a buyer brief.
Find property listings with browser/search/API tools, normalize them into Listing-shaped dicts, and run this repo's full house-hunting harness pipeline. Use when a user wants real candidate properties ranked against a buyer brief.
Run the full house-hunting AI agent pipeline for a buyer brief — intake, ranking, explanation, comparison, affordability, and tour prep. A configured listing provider is optional when the agent can supply listings it found elsewhere.
Run the full house-hunting AI agent pipeline for a buyer brief — intake, ranking, explanation, comparison, affordability, and tour prep. No HTTP server, browser, or external model API key needed.
| name | run-house-hunt |
| description | Run the full house-hunting AI agent pipeline for a buyer brief — intake, ranking, explanation, comparison, affordability, and tour prep. No HTTP server, browser, or external model API key needed. |
| metadata | {"tags":"house-hunt, harness, ranking, comparison, buyer-agent"} |
Run the full buyer-agent pipeline from a plain-English brief: parse preferences, rank listings, explain matches, compare homes, and prepare next steps.
uvANTHROPIC_API_KEY is exported, the standalone harness may use its optional Anthropic adapter for intake and explanations.When the user invokes this skill:
Extract it from the user's message. If none was given, ask for one. A good brief includes:
Example: "3-bed near Surbiton, budget £650k, max 45 min commute to Waterloo, need a garden"
Call the orchestrator directly via Python (run from the harness root directory):
Note: Use
uv run --extra devso the repo dependencies are available without separately installing the package.
uv run --extra dev python - <<'EOF'
from src.app import build_app
brief = "BRIEF_GOES_HERE"
app = build_app()
profile = app.intake(brief)
ranked = app.triage(limit=5)
explanations = app.explain_top_matches()
comparison = app.compare_top(count=min(3, len(ranked)))
next_steps = app.prep_next_steps()
print("## Profile")
print(f" Location: {profile.location_query}")
print(f" Budget: £{profile.max_budget:,}")
print(f" Bedrooms: {profile.min_bedrooms}+")
if profile.max_commute_minutes:
print(f" Commute: {profile.max_commute_minutes} min max")
print(f" Must-haves: {', '.join(profile.must_haves) or 'none'}")
print("\n## Ranked listings")
for i, item in enumerate(ranked, 1):
listing = item.listing
print(
f" {i}. {listing.title} [{item.score:.0f}/100] "
f"£{listing.price:,} {listing.bedrooms}bed {listing.location}"
)
if item.warnings:
print(f" ! {', '.join(item.warnings)}")
print("\n## Explanations")
for explanation in explanations:
print(f" {explanation}")
print("\n## Comparison")
print(comparison)
affordability = next_steps["affordability"]
print("\n## Affordability estimate")
print(f" Deposit: £{affordability.deposit:,}")
print(f" Loan: £{affordability.loan_amount:,}")
print(f" Monthly: ~£{affordability.monthly_payment:,}/month")
print(f" Note: {affordability.assumptions[-1]}")
print(f"\n{next_steps['boundary']}")
trace = app.tracer.flush("skill-run")
print(f"\nTrace: {trace}")
EOF
Replace BRIEF_GOES_HERE with the actual buyer brief.
Via Python, pass ExportOptions directly to app.export() after ranking results.
Show the user:
| Error | Cause | Fix |
|---|---|---|
ModuleNotFoundError: src | Not running from harness root | cd house-hunting-ai-agent-harness first |
No listings matched | Location query too specific for mock data | Try London/King's Cross, Manchester, Bristol, or Leeds examples |
| Regex-style intake/explanations | No standalone harness LLM adapter configured | Expected for agent-driven use; the calling LLM agent can interpret and summarize results |
| File | Purpose |
|---|---|
src/app.py | build_app() — wires config, LLM, listings, orchestrator |
src/harness/orchestrator.py | Full pipeline: intake → triage → explain → compare → next steps |
src/skills/intake.py | Brief → BuyerProfile (regex or LLM) |
src/skills/ranking.py | Score listings against profile |
evals/datasets/listings_small.jsonl | Mock listing data across London, Manchester, Bristol, and Leeds |
.env.example | All supported environment variables |