Develop · Build
How it came together.
- 01
A self-hosted fine-tune, not a wrapped frontier model
A Qwen3 fine-tune drives the tool-calling agent loop: county search, comps, buyer-matching, lead creation, alerts. It's self-hosted rather than proxied through a frontier API. Per-tool result pinning and a repeat-call loop break keep the agent from re-querying the same tool or drifting off a resolved answer.
AI & Machine Learning - 02
Real data, not staged demos
A serverless tool loop on Vercel, with Neon Postgres handling persisted leads and hourly alert polling. It's integrated directly to Miami-Dade GIS and the Property Appraiser. The RESO Web API path for MLS listings is built too, bearer-auth included; it needs a brokerage's own credentials to switch on.
Backend Engineering - 03
Repositioning around orchestration, not another feed
The pitch shifted away from 'another data source' (already commoditised by the MLS bundle) toward the orchestration layer itself: one conversation across MLS, CRM, and inbox that no single source provides on its own.
Product Strategy - 04
A white-label demo built to be believed
Team-switching chat over real records, a CRM pipeline dashboard, per-listing pages with an honest 'no photography on file' fallback instead of stock imagery, and a full-screen mobile chat takeover. A demo that hedges with placeholder content undercuts its own pitch; this one doesn't.
Frontend Engineering
Develop · Forks
Decisions on the record.
The few calls worth defending. Each one is a fork; the other branch would have been a different project.
Decision · 01
Deterministic guardrails on top of the prompt
Every reliability problem this POC hit shared one root cause: it depended on the model choosing to behave. A fabricated square-foot figure, a follow-up chip that re-asks what the reply just answered, the model reciting its own system prompt, all came back the moment behaviour wasn't enforced. The fix that held is a code-level pass that diffs the model's stated numbers against the real tool result and rewrites the reply from real data on a mismatch. Prompting sets the intent; deterministic overrides enforce it.
Decision · 02
Why a self-hosted fine-tune for the POC, Bedrock for production
The self-hosted Qwen3 fine-tune kept the POC free to iterate on and fully private, the right call for figuring out what the product even is. But tool-call reliability, not answer quality, turned out to be its limit, and it degraded under load. That's the case for routing production reasoning through Claude on Bedrock instead, with the fine-tune demoted to narrower phase-2 tasks like copy and lead scoring.
Decision · 03
An honest 'no photography on file' fallback
County parcel records carry no listing photos, so the per-listing page shows an honest aerial-and-monogram fallback instead of a stock photo that would imply data the record doesn't have. The same discipline runs through the product: a saved sample is labelled a sample, a disconnected capability is declined plainly. When the user is a broker, trust is the product.
