The platform behind my real estate business
Built and working Real system, private code
One React and Supabase app runs my website, lead capture, client portal and an AI transaction coordinator that reads contracts, tracks deadlines and drafts client emails a person approves.
- Status
- Live at jungmarker.com
- Relevant to
- Full-stack and product, AI and automation, CRM and RevOps
- Live
- jungmarker.com
Results · Real system, private code
- Built and workingWhat the tool does and how it was tested, not a business outcome.in 26 test filesBuilt and working
- Built and workingWhat the tool does and how it was tested, not a business outcome.from 15 database migrationsBuilt and working
- Built and workingWhat the tool does and how it was tested, not a business outcome.since February 2026Built and working
The problem
A real estate deal has dozens of dated steps across buyers, sellers, lenders and title companies, and leads arrive from forms at all hours. I wanted one system that captures leads, tracks every deal and keeps clients informed, without letting software send anything wrong.
My role
I designed and built it, and I run my business on it every day.
How it works
1.Lead
Website forms find or create the contact in the brokerage CRM, route it by tags into the right nurture campaign, and save it to Supabase.
2.Contract
Claude reads the ratified contract PDF and returns structured fields with a supporting quote for each date.
3.Verify
Every date the AI read stays “Not verified” until I confirm it.
4.Milestones
Buyer or seller templates build the timeline, including Closing Disclosure timing, and move derived steps when settlement moves.
5.Drafts
Reminders and client emails, in English or Spanish, wait in an outbox for approval.
6.Share
Clients see their own deal in a portal; the lender, title company and other agent get one read-only status link.
What I built
- Transaction coordinator: deals, people, milestones, messages and an audit log of every change and who made it, with row-level security and server-only access.
- Contract extraction with Claude using structured output, for Maryland and DC contracts.
- Date verification: each date is Unknown, Not verified, Confirmed, Waived, N/A or Completed, and AI-read dates always need confirmation.
- Closing Disclosure timing: settlement minus 3 business days, excluding Sundays and federal holidays.
- An approval-gated outbox: the first client message, contract deadlines and unverified dates always need approval, and anything that looks like payment instructions can’t auto-send.
- A daily reminder job whose reruns are idempotent, a deal inbox that files emails into the right deal, an admin deals board and a client portal.
- Sign-in with email links and Google, per-agent data scoping, and a test that fails on any unscoped query.
- Security and content passes: the admin password taken out of the public bundle, legacy endpoints replaced with one authenticated handler, unverified review claims removed and a test guarding license claims.
Decisions and tradeoffs
- Unverified until a person confirms
- A wrong contract date can cost a client money, so the AI’s reading is a draft. The state model makes “not checked yet” visible instead of silently trusting it.
- Approval by default, auto-send by exception
- Routine reminders can be allowed to send. First contact, deadlines and anything about money always wait for a person.
- One shared read-only link instead of partner accounts
- Lenders and title companies won’t create accounts for one deal. An unguessable read-only link gives them status without access to anything else.
- Stay on Vercel for now
- I built an adapter to run the same API handlers on Cloudflare, but production stays on Vercel until there is a reason to move.
Validation
- The deadline and reminder logic has its own tests, including that reruns don’t create duplicate reminders.
- A static test scans the API code and fails on any query of an owned table that isn’t scoped to the signed-in agent.
Limitations
- Private code, and no screenshots: the live system holds client data.
- The transaction coordinator is deployed, but I haven’t published usage on real deals.
- Milestone templates are per buyer or seller side, not separate Maryland and DC workflows.
- The Cloudflare adapter is built but not in production.
Why it matters for the job
Full-stack product work from schema to UI, with AI used where it helps and a person kept on every step that matters: the same pattern companies need when they put AI into business workflows.
Stack
React, Vite, TypeScript, Supabase (Postgres), Vercel, Anthropic SDK, Tailwind CSS
Related work
- Making a React site readable to search engines and AI
Live at jungmarker.com
- Ask Claude about my clients (MCP server)
In use in my business · private code
- Interactive home value report (CMA)
In use in my business · private code