A Love, Ando build · in the open
Mint is a training platform, a lead marketplace, and the book of record for the setter/closer sales model, live in production at mintleads.bid. This dossier walks the app screen by screen, maps the flow a lead takes from set to close, documents the backend, and hands you the repo.
Built in the open. You are welcome to take this blueprint and rebuild it yourself. It is shared in the spirit of pushing real things into the world, the same ethos behind loveando.org.
The app
Four of the screens that carry the product. Reps and customers below are fictional; the layouts, states, and flows are the real app.
Setters generate leads; the AI scores and posts them as they "cook." A batting order puts the next closer on deck, and claims are atomic, one closer per lead, live for the whole floor.
A persistent right-side dock: cooking leads, a LiveKit voice board where closers go live on a warm transfer (rep audio recorded for coaching), and team chat with an AI teammate. It stays connected as reps move around the app.
Every rep's day, contacts, field intakes, completed warm transfers, closes, rolled into leaderboards, a daily check-in board, and commissions. A warm transfer counts on completion, not on a closer merely reserving the lead.
Agencies, agent levels, carrier appointments and products, comp schedules, override rules, lead-pool buy-ins, and the token wallet that bills per field intake. Every table is tenant-scoped for white-label.
User flow
One lead's journey. Setters work the top of the funnel, closers take the warm transfer, and the billing rail meters the one event that matters, the completed field intake.
Sandbox leads run the same flow in full isolation, so new hires train without ever touching the real marketplace, numbers, or money.
Screen inventory
37 application screens across the setter, closer, manager, and admin roles, plus the public and auth surfaces.
| Screen | Route | What it does |
|---|---|---|
| Setter (rep + manager) | ||
| New lead intake | /rep/opportunities/new | Create a lead; AI scan kicks off the market post |
| My leads & opportunity | /rep/opportunities/[id] | Work a lead, disposition, downstream visibility |
| Champions club | /rep/champions-club | Recognition and gamified milestones |
| Manager home | /manager | Downline oversight for team managers |
| Closer (AE) | ||
| Closer dashboard | /closer | The claim-and-close workspace |
| Closer market | /closer/market | Claimable cooking leads + batting order |
| Close-out | /closer/opportunities/[id] | Field intake, warm-transfer completion, policy write |
| AE numbers | /closer/numbers | Closer production and leaderboards |
| Shared workspace | ||
| Marketplace | /market | The live lead floor |
| Numbers | /numbers | Daily tracker + check-in board |
| Calendar | /calendar | Appointments and follow-ups |
| Sandbox | /sandbox | Isolated practice leads for new hires |
| Profile | /profile | Agent profile, photo, purchase history |
| Admin (22 screens) | ||
| Agents & levels | /admin/agents · /admin/agent-levels | Roster, roles, downline, agent tiers |
| Lead pool & availability | /admin/lead-pool | Buy-in cycles, pool settings, availability |
| Commissions & comp | /admin/agency-commission · /admin/comp-schedules | Commission ceilings, comp schedules, override rules |
| Carriers & products | /admin/carriers · /admin/carrier-appointments | Carrier catalog, products, appointments |
| Batting order & FI tracking | /admin/batting-order · /admin/fi-tracking | Rotation control, field-intake compliance |
| CRM mapping | /admin/ghl-mapping | Map GoHighLevel locations to reps |
| Public & auth | ||
| Marketing site | /welcome · /docs · /terms · /privacy | Public front door + agent-readable .md counterparts |
| Auth | /login · /accept-invite · /forgot-password | Email/password, invite acceptance |
Backend & architecture
A Next.js App Router front end over Supabase Postgres, with real money and real-time audio wired through managed services. Everything is tenant-scoped for white-label.
SECURITY DEFINER helpers, current_agent_id(), current_agency_id(), is_admin(), and RESTRICTIVE per-tenant policies.agents table; a service-role client is scoped in app code.advance-offers, snapshot-market, rep-tracker-reminder) + Web Push notifications.AGENTS.md flags both in plain language; read it before the first deploy.
Rebuild it yourself
The full source, migrations, and operating docs. Access is granted on request; from a clone, you are a few steps from a running instance.
Next.js 16 / React 19 / TypeScript. Node + your package manager of choice.
A Supabase project (Postgres, Auth, Storage), Stripe keys, and optional LiveKit + GoHighLevel credentials. Copy them into your environment.
Run the 105 migrations against your Supabase database, in order. They are applied to the database directly, not on deploy.
Local dev first, then Vercel for hosting and per-PR previews. The operating rules live in AGENTS.md and the live board in STATUS.md.
# from a clone git clone git@github.com:andomccall/mint-app.git cd mint-app && npm install cp .env.example .env.local # fill Supabase / Stripe / LiveKit node scripts/db-exec.mjs # apply migrations to your Supabase npm run dev # http://localhost:3000
Built in the open
This is one build from Love, Ando: real products pushed into the world, with the method shown openly. Rebuild it yourself with the build kit, and come build alongside me.
Rebuilding it? Copy the build kit straight into Claude Code. The newsletter and the monthly fireside are where the building continues.