All work

    CloserIntelligence

    AI sales-ops platform with a voice agent layer

    ReactTypeScriptSupabaseVAPIGeminiGoHighLevelReact QueryRadix UITailwind

    Role: Sole engineer — architecture, frontend, Supabase schema and policies, VAPI integration, GoHighLevel sync. · Updated 2026-09-01

    What's actually in it

    472
    Modules in graph
    madge dependency graph of the source repo
    138
    Dependency edges
    internal import relationships
    25
    Routes
    app-level pages incl. superadmin + invite flows
    60
    Frontend deps
    production package.json dependencies

    The problem

    The client was running a call centre on a CRM that recorded activity but never acted on it. Reps logged calls, deals stalled, and nobody found out until the pipeline review. They needed the system to detect the stall and act on it, not report it a week late.

    What I built

    • 01Built the platform as a multi-tenant React + TypeScript app on Supabase, with 25 routes covering agents, campaigns, call logs, conversations, leads, knowledge bases, phone numbers, call quality, and a superadmin portal.
    • 02Wired VAPI voice agents into the call pipeline so outbound calls run unattended, and post-call transcripts land in Supabase with sentiment and classification attached.
    • 03Built Maclovi, the operations assistant layer — it reads the call log and raises tickets against stalled deals rather than waiting for a human to notice.
    • 04Layered a prompt optimizer route so the client can tune agent prompts against real call outcomes without redeploying.
    • 05Two-portal auth with internal and external invite flows, so the client's own team and their sub-accounts land in different surfaces from the same login.

    Building something in this shape? Book a 30-min scope call →

    Walkthroughs

    The developer POV video is the one worth your time — it walks the dependency graph, the route map, and the data layer rather than clicking through screens.

    Developer POV — architecture walkthroughThe dependency graph, route map, and Supabase surface behind the product. This is the build, not the pitch.
    Product tour — inside the running workspaceEight screens from the live client workspace: dashboard, conversations, call logs, leads, agent directory, prompt optimizer, escalation alerts, and team management. Lead names, addresses and phone numbers are blurred — this is real call data, not a staged demo tenant.

    Engineering decisions

    Transcript classification stored, not computed on read

    Sentiment and stage classification are written once at ingest and stored as columns. Recomputing them on every dashboard render would have made the call log unusable past a few thousand rows, and would have burned model spend on data nobody was looking at.

    Badges as leaf components

    The most-imported modules in the graph are ConversationStageBadge, ClassificationBadge, and SentimentBadge. Keeping classification display in tiny leaf components meant changing the taxonomy was a one-file edit rather than a sweep across every table and detail view.

    React Query as the only server-state layer

    No Redux, no context soup. Every Supabase read goes through React Query with a keyed cache, so the war-room views can poll aggressively without stacking duplicate requests.

    The product

    Dashboard — call outcomes across the workspace: 8,157 no-answer, 2,483 busy, 929 hung-up, 240 voicemail.
    Conversations — inbound threads scored hot/warm off the transcript, not a manual tag.
    Call logs — every dial with duration, outcome, recording, and the extracted transcript.
    Leads — 41,494 records with pipeline stage, source, and per-row call history.
    Campaigns — dial volume, connect rate, and agent assignment per campaign.
    Knowledge bases — the training corpora each voice agent reads from (compliance, auction, probate).

    Want something built the way CloserIntelligence was?

    Bring the problem, not a spec. 30-minute call — I'll tell you what it actually takes to build, what I'd cut, and what it costs. No decks, no discovery phase invoice.

    Related builds