Inspiration
- Buying a first home is opaque—people get a mix of Zillow daydreams, lender jargon, and “rules of thumb” that rarely line up with their cash flow. We wanted something that felt like a serious advisor: bank-grounded numbers, clear affordability gates, and plain-English tradeoffs instead of a single opaque score.
What it does
- Clay AI helps someone understand rent vs. buy readiness for a specific scenario (income, rent, target price, debt, savings, zip). Users can link Plaid so income, savings, debt service, and savings pace are inferred from real transactions, then run analysis for a readiness score, 28/36-style affordability, milestones, and a multi-agent “council” narrative with an audit trail—plus scenario sliders to stress-test the plan before committing.
How we built it
- Frontend: Next.js (App Router) + TypeScript, intake flow with Plaid Link, dashboard for snapshot, debate transcript, and live deterministic previews.
- Bank layer: Plaid Link token + server-side snapshot that derives modeled income, merged debt, cash-flow proxies, and category signals from transactions.
- Engine: Python service with deterministic affordability/readiness math (housing + DTI, cash-to-close, cushions, roadmap blockers) and structured prompts for multi-agent deliberation (e.g., financial vs. life-coach vs. fairness angles) feeding a synthesized narrative.
- Market context: FRED-backed mortgage and macro series with sensible fallbacks; optional Census-style local anchors where configured.
- Transparency: Data source labels, validation-style checks, and explicit separation between headline score and strict “mortgage gate” verdict so the UI does not pretend DTI does not matter.
Challenges we ran into
- Plaid Sandbox ≠ payroll: sparse or mis-tagged “income” transactions made modeled income look tiny while balances looked healthy—so we had to import Plaid into the form explicitly, nudge users to override with gross W-2, and soften misleading “distressed” paths when signals conflicted.
- One number, two stories: a strong savings buffer could still collide with high DTI from merged debt categories, producing a high readiness score but RENT path until we capped penalties, added liquidity buffer credit, and aligned score breakdown with the headline so the product did not contradict itself.
- UX truthfulness: defaults that looked like a universal user profile undermined trust, so we zeroed bank-driven defaults and made scenario fields (rent, price, credit, zip) clearly “yours,” not from the bank.
Accomplishments that we're proud of
- A credible split between holistic readiness and a strict buy gate (28/36 + cushion + timeline), so demos can show “you’re not ‘broke’—you’re blocked on qualification math.”
- End-to-end transparency: council debate artifact, adjustment reason, and engine JSON for judges who want to verify the story against the math.
- Plaid-first intake that treats the link as the source of truth for cash-flow headline fields while keeping non-bank assumptions explicit.
What we learned
- Underwriting-shaped products need two layers: a human-friendly score and hard gates that mirror how lenders actually say no. If those drift, users trust neither. Transaction inference is powerful but fragile—the win is to label uncertainty, merge with user overrides, and never silently treat Sandbox quirks as moral facts about the user.
What's next for Clay AI: Shape Your Way Home
- Richer income truth: employer-linked or document-assisted income for users who want “lender-grade” mode alongside tx-based mode.
- Geo-specific costs: deeper closing-cost and insurance models by state/zip, not only rate and tax proxies.
- Actionable plans: exportable payoff / DTI reduction timelines tied to the same deterministic engine the UI previews.
- Outcome loop: saved scenarios, re-Link reminders, and “you moved the needle” diffs when balances and debt actually change.
Log in or sign up for Devpost to join the conversation.