Skip to content

All projects

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

  • in 26 test filesBuilt and working
  • from 15 database migrationsBuilt and working
  • 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. 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. 2.Contract

    Claude reads the ratified contract PDF and returns structured fields with a supporting quote for each date.

  3. 3.Verify

    Every date the AI read stays “Not verified” until I confirm it.

  4. 4.Milestones

    Buyer or seller templates build the timeline, including Closing Disclosure timing, and move derived steps when settlement moves.

  5. 5.Drafts

    Reminders and client emails, in English or Spanish, wait in an outbox for approval.

  6. 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