A Thousand Ways Home is a Slack agent panel that leverages real spatial data to help nonprofit housing counselors find every way a low- to moderate-income immigrant family can afford a home in high-cost cities like Los Angeles. It matters because affording a home there is an information problem before it's a money problem — the families who need help most are the ones who can least afford to buy that information and organize information into actionable steps, whether that means missing a subsidy or getting overcharged by a contractor. The agent guides a family case through progressive questions and matches the family against real assistance programs, locates an actual listing house within budget, visualizes housing on the fly, debates ADU feasibility to maximize the land value, and hands the family a report in their mother tongue.
Inspiration
Start with an uncomfortable number: in Los Angeles — used here as an example of a high-cost market — even a household earning $200k a year, comfortably middle-class almost anywhere else, struggles to buy a first home. Below that line, families aren't just short on money; they're short on information. Down-payment assistance, below-market lotteries, equity-builder loans, accessibility grants — the help exists, but it's scattered across a dozen agency websites, written in bureaucratic language, and usually unlocked only by a paid consultant or a counselor with a three-week waitlist. The families who need that expertise most — first-time immigrant buyers, disabled or elderly homeowners, single parents with no savings — are exactly the ones who can't afford to buy it.
Regarding affordability, to skip a general contractor's 15–25% markup, some owners become their own GC, then discover challenges: lining up subs, learning codes that change city to city, reading engineering drawings, catching bad work before it's buried inside a closed wall. The savings are real, but the deciding factor is access to expertise, not effort.
We started by building a multi-agent "war room" to answer one hard question for a homeowner: where and how could I afford a home here? Partway through, we realized the bigger opportunity was putting a housing counselor's whole toolkit — programs, pricing, permits, design visuals, and a self-GC coach — in front of the people who need it, inside the tool nonprofit case agents already live in: Slack. There isn't one way to afford a home in a city like LA; there are a thousand small ones, and this tool's job is to find the few that fit this family.
What it does
A Thousand Ways Home turns a Slack channel into a living case file for a family working with a nonprofit housing counselor.
- Start a case — a counselor runs
/housing new-casewith the family's income, savings, household size, language, and any accessibility or aging-in-place needs. - Front-door triage — the agent screens the family against real LA/California housing resources: down-payment assistance, below-market or deed-restricted homes, accessibility grants, and safety-net referrals.
- Property boardroom — when a counselor pastes a listing or address, five personas debate it live: permits, design/ADU fit, cost and self-GC execution, value/ROI, and rendered site plan or first perspective view, chaired by a moderator who renders a final GO / CONDITIONAL / NO-GO verdict backed by real zoning, hazard, and pricing data.
- One case, two versions — the counselor gets a technical report; the family gets the same answer in plain language, in their own tongue.
- Case tracking — each case is saved to a Slack Canvas, and an App Home dashboard lets a counselor track multiple families at once.
How we built it
The core is a Model Context Protocol (MCP) server (mcp_server/server.py) — a self-contained JSON-RPC-over-stdio server exposing 13 deterministic tools: parcel/zoning/hazard lookups against live public GIS (ZIMAS, LADBS, LA County DRP, CAL FIRE, FEMA), ADU footprint and build-cost estimators, rental-income and affordability calculators, housing-program matching, safety-net referrals, and a value-snapshot tool.
An orchestrator (war_room/orchestrator.py) is a real MCP client: it calls these tools to gather facts, then runs a moderated multi-persona debate — each persona sees only the facts in its own lane, not one shared prompt — streamed live into the Slack channel as the LLM generates each persona's dialogue. A deterministic verdict function computes the final GO/CONDITIONAL/NO-GO from the facts.
The Slack surface is Slack Bolt for Python over Socket Mode, using Block Kit cards, a living Canvas per case, an App Home dashboard, and reaction-triggered actions (approve/save/flag/translate). matplotlib renders financing and pricing charts; Gemini's image model renders concept ADU visualizations onto a real street-view photo.
Challenges we ran into
Making a multi-agent debate feel real, not five monologues. We added round-2 rebuttals that only fire on a real chair-detected conflict, and enforced role isolation so each persona reasons only over its own facts — cross-domain context comes through what colleagues actually said, not a shared context dump.
Keeping "screening-grade" honest under pressure to look impressive. It would have been easy to let the LLM estimate a fair price or guess at eligibility. Instead every number traces back to a deterministic MCP tool reading real public data, and a deed-restricted home's resale is never shown with an appreciation scenario — that would misrepresent a capped-resale covenant as a market flip.
LA County parcel/zoning data reliability. Live County GIS endpoints go down or time out unpredictably, so we layered City-of-LA (LADBS) and County (DRP) sources with graceful degradation, narrowing the answer instead of breaking the case. Right now we only use LA geodata as an example; the tools are built to point at another region's data.
Not letting "Agent for Good" become a slogan. Partway through, we audited our own program coverage and found we were only answering "how do you borrow more to buy" — leaving out the family who can't buy at all and the disabled or elderly homeowner who needs to modify the home they already have. Closing those two gaps, not adding more buyer programs, is what earns the "for good" label.
What we learned
Real Spatial Data Matters More Than General LLM Answer. We learned the most valuable "AI" feature here often wasn't generative at all: turning scattered spatial data — Redfin's pricing data, LA County's zoning/hazard GIS layers, and government housing-assistance and welfare program rules — into one honest, real-time-feeling answer.
What's next
Scale to other high-demand housing markets in California, then to other states. Tap into a professional geodatabase to further improve the accuracy of calculations and responses.
Built With
- cal-fire
- fema
- google-maps-static-api
- image-generation-api
- json-rpc
- la-county-gis
- ladbs
- llm-api
- matplotlib
- mcp
- model-context-protocol
- python
- railway
- redfin-data-center
- slack-block-kit
- slack-bolt
- slack-canvas
- slack-socket-mode
- zimas
Log in or sign up for Devpost to join the conversation.