New York City at night, a grid of lit windows

The build record

Operating problems, made runnable.

These are production systems I designed and built inside companies I’m part of: RVK AI, where I’m a partner and we build the voice and chat agents healthcare providers use to answer patients; Behavioral Rates; and my years at Unlock Health. They’re in-house products and internal platforms, not client engagements. My advisory work runs the other way: client teams build and own their systems.

Every one started the same way: a business problem that looked like a marketing or process issue but was actually a systems problem. The fix was to make the system observable, then build the software to run it.

An antique telephone handset clamped in a brass test rig wired to dial gauges on a dark lab bench

Applied AI · agent testing

Voice Agent Crash Testing

An AI caller that phones every one of our healthcare voice agents, runs them through every path a real call can take, and grades the result before a patient ever hears it.

The problem

A voice agent for a treatment center that loops, skips a question, or fumbles a crisis call fails a real person on a bad day. Clicking through test calls by hand does not scale across a fleet of 100+ agents, and an AI grader that makes things up is worse than no grader at all.

What I built

  • Writes a test spec for each agent from its real configuration, the client profile, and its knowledge base. A strict validator throws out any rubric line that cannot point back to a real source, which kills most false failures before a call is placed.
  • Places the calls with an AI caller over text, voice, or a real phone line, with crisis scenarios scripted word for word so every run is repeatable.
  • Scores in layers: plain rule checks first, then two AI judges grade independently and must cite the exact turn, with a third breaking ties. Failing a safety check caps the score no matter how good the rest of the call was.
  • Calibrated against transcripts I labeled by hand, so the judges are measured against a person, not against each other.
  1. 600+Scored test runs
  2. 753Hand-labeled rubric checksAcross 60 transcripts
  3. 3Ways to callText, voice, real phone
A vintage telephone switchboard with brass jacks and copper patch cords, one connection glowing

Conversational AI · patient intake

Chat Intake Agents

Web chat agents that talk with families on a provider’s website at any hour, answer their questions, and hand admissions a clean, consented lead.

The problem

Most people looking for addiction treatment, autism therapy, or senior living start late at night, on a website, alone. If nobody answers, they leave. Admissions teams needed something that could hold a real conversation, stay safe, and capture the lead without making promises it can’t keep.

What I built

  • Built agents for three verticals, addiction treatment, ABA, and senior living, each with its own persona and intake flow, speaking as the provider in first person.
  • Runs on two separate runtimes, one on OpenAI and one on Anthropic with Pinecone retrieval, so no single model vendor is a point of failure.
  • Split the work into crisis, prescreen, and follow-up agents with guardrails between them. Crisis handling routes to 988 and 911 and never gets watered down. Consent comes before any contact details are collected.
  • Everything client-specific lives in configuration, not code. Onboarding scrapes the client’s site and videos into a knowledge base and generates a tag manager import so the widget installs without a developer.
  1. 3Care verticals
  2. 2Independent AI runtimes
  3. 160Clinical knowledge base articles
Tall steel shelving lined with identical vintage radio transceivers, each with a small copper lamp

Voice AI · fleet operations

Voice Agent Fleet

The tooling that runs our voice agents as code: every change versioned, checked, and safe, and a parallel move of the whole fleet onto a second voice platform.

The problem

Every voice agent is a provider’s phone line. Editing them by hand in a vendor dashboard is how a crisis path quietly breaks or an AI disclosure goes missing, and being locked to a single voice vendor was its own risk.

What I built

  • Treats every agent as code: snapshot it, change it, diff it, lint it, and only then push it live.
  • Every agent inherits one locked crisis kit, and a compliance check makes sure every agent tells callers it is a virtual assistant, in line with state disclosure laws.
  • Moving the whole fleet onto a second voice platform as a parallel run, with updates merged against changes on the old one so nothing drifts, and an append-only ledger for every client.
  • Wrapped it all in tools the team can use from Claude Code, plus a fleet dashboard.
  1. 94Clients in the migration ledger
  2. 1Locked crisis kitInherited by every agent
  3. 2Voice platforms in parallel
An antique drum recorder tracing a long waveform on paper around a brass drum

Quality analytics · calls and chats

Call Health

A dashboard that scores every call and chat our agents handle, tracks quality by client month over month, and points to the exact setting to fix.

The problem

With thousands of conversations a month, the only way to find a bad one was to listen to it. And transcripts from healthcare calls are exactly the data you do not want sitting around in plain text.

What I built

  • Mirrors every voice call and web chat into Postgres, and redacts personal details before anything is written, so raw transcripts never land in the database.
  • Scores every conversation with an AI model and rolls the results up by fleet, client, and agent, with trends and drill-downs.
  • Every issue links to the exact step or setting in the agent that caused it, so the fix is obvious.
  • Read-only everywhere: a read-only database role, and a lint rule that blocks any code from writing back to the voice platform.
  1. 0Raw transcripts storedRedacted before write
  2. 100%Of conversations scored
  3. 226Test files
A cast-iron letterpress with stacks of bound proposals and a copper wax seal on the bench

Revenue operations · sales platform

RVK Sales

Our internal sales platform: from the first CRM record to a custom proposal, an approved quote, and onboarding, in one place.

The problem

Every proposal was rebuilt by hand from decks, spreadsheets, and the CRM. Pricing drifted, approvals lived in chat threads, and it took days to get a prospect something they could sign.

What I built

  • One pipeline: import from HubSpot, run discovery, generate the pitch deck, build an ROI-based proposal, get manager approval, send it, and push the quote back to HubSpot.
  • Generates PDF and PowerPoint proposals with recorded demo calls built in.
  • An AI assistant that searches every prospect, proposal, and knowledge base doc, kept fresh on a schedule, plus scraping of prospect websites.
  • Email tracking, scheduled CRM sync with run history, and multi-factor sign-in.
  1. 1,500+Commits since March
  2. 186API routes
  3. 104Pages
An antique brass balance scale weighing copper coins against a stack of punched cards

Finance · AI cost

AI Margin Analytics

Puts AI spend next to revenue so we can see what every client actually earns after the minutes and tokens are paid for.

The problem

AI vendors bill by the minute and by the token. Revenue lives in the CRM. Nobody could answer a simple question: after AI costs, which clients make us money?

What I built

  • Pulls usage and cost from the voice platform, OpenAI, and Anthropic on a schedule.
  • Joins it to client revenue from HubSpot and shows gross margin per client, every month.
  • Dashboards by provider, by client, and for operations, with role-based access and an audit trail.
  1. 3AI vendors metered
  2. 1Margin number per client
  3. 21Dashboard pages
Paper and wood architectural models of a clinic campus and a residential community under a lamp

Web · marketing and live demos

rvkai.com and Demo Sites

Our company site, plus two complete fictional provider websites where prospects can watch our agents work the way they would on their own site.

The problem

A treatment center or senior living community needs to see the agent working on a site like theirs before they believe it. A slide deck does not do that.

What I built

  • Built rvkai.com on Next.js with a headless WordPress CMS, the live chat widget on every page, an ROI calculator, and machine-readable content for AI search.
  • Built a full fictional addiction treatment center and a fictional senior living community, with the real production agents embedded and clearly marked as demos.
  • Compliance is baked into the content: no prices, no outcome claims, and crisis language kept word for word.
  1. 55Pages on rvkai.com
  2. 108Routes on the senior living demo
  3. 2Fictional provider sites
A single cast-iron display stand holding a glowing glass panel in a dark exhibition hall

Events · interactive sales

Trade Show Kiosk

The booth experience for conferences: vertical decks, live agents, and recorded demo calls on tablets and a big screen, shipped as a web app and an Android app.

The problem

You get about thirty seconds of attention walking past a booth, and the people walking by run very different kinds of care. A generic pitch loses all of them.

What I built

  • Six decks, one per vertical, that auto-advance and swipe, built to read from four to eight feet away.
  • Recorded demo calls and the live chat widget embedded right in the presentation, with QR codes that let people call an agent from their own phone.
  • A giveaway that drops entries straight into HubSpot.
  • The same code ships as a website and as an Android app for the booth tablets.
  1. 6Vertical decks
  2. 5Recorded demo calls
  3. 2Builds from one codebaseWeb + Android
An engraved map of the United States under a brass magnifier on a dark archive table, ledger sheets fanned beside it

Healthcare data · payer rates

Behavioral Rates

A national benchmark of what insurers actually pay for detox, residential, PHP, and IOP care, built from the rate files they are required to publish.

The problem

Treatment centers negotiate payer contracts mostly blind. Federal price transparency rules force insurers to publish every rate they pay, but the files are massive, inconsistent, and full of placeholder junk. The data was public. Nobody could actually use it.

What I built

  • Built a pipeline that pulls the Transparency in Coverage files from each payer every month and works through roughly 100 million raw rate rows.
  • Wrote the classification layer that makes the data worth paying for: a behavioral-health code ontology, a facility dimension built from NPI-classified treatment facilities, filters for ghost and placeholder rates, and strict separation between rate types so nothing gets blended.
  • Every figure shows the sample behind it, so a member always knows how many payers and facilities stand behind a number.
  • Shipped it as a membership site on Cloudflare: a Next.js front end with member dashboards and an operator admin, a Hono API Worker, D1, and Stripe billing.
  1. ~27.6KFacility-service benchmarks
  2. ~9.9KTreatment facilities covered
  3. MonthlyRefresh from payer files
A secure archive strongroom of steel filing drawers beside a heavy vault door with a copper lock wheel

Secure file infrastructure

Client Share

A client file portal that survived a company-wide move off Egnyte to Google Drive, without breaking file sharing for our Microsoft-based partners.

The problem

When Unlock consolidated onto Google Workspace and retired Egnyte, the org still exchanged files every day with clients and partners who lived entirely in Microsoft 365. Google Drive’s native sharing was clumsy for external Microsoft users, and nobody wanted to hand clients Google accounts just to open a folder.

What I built

  • Built a multi-tenant portal where each client maps to a Google Shared Drive, and access is derived automatically from Drive’s own permissions, so there is no separate user list to babysit. Change sharing in Drive, and the portal follows.
  • Let people sign in with Google or Microsoft Entra ID (Azure AD) single sign-on, plus passwordless magic links, so Microsoft-based clients get a first-class experience with no Google account required.
  • Wrapped the Google Drive API behind a familiar Drive-style interface: drag-and-drop upload, move, copy, rename, trash and restore, starring, previews, and real-time search across every file.
  • Shipped it on Cloudflare Workers via OpenNext with D1, R2, and Durable Objects, hardened with content-security-policy headers, rate limiting, and role sync straight from Drive.
  1. 2SSO identity providersGoogle + Microsoft
  2. 0Manual user lists to maintain
  3. 1:1Client-to-Shared-Drive mapping
A machined plotting board engraved with copper contour lines, a brass caliper and protractor laid across it

Applied AI · workforce analytics

AI Usage Analytics

An internal platform that measures how 350+ employees actually use AI, and coaches each of them to get better at it.

The problem

The company was rolling out OpenAI, Claude, and Cursor across the org but had no honest picture of whether people were getting real value, or just asking AI to write an email. Leadership needed to see where AI was landing, and employees needed to know how to actually improve.

What I built

  • Pulls conversation data through the OpenAI Compliance API and joins it to the HR directory in Airtable, then scores every user on a custom FVSE model (Frequency, Value, Sophistication, and Efficiency), each rated 1 to 10 and weighted.
  • Makes the scores role-relative: what counts as strong AI usage for a developer is different from a copywriter, so people are benchmarked fairly against their own job function.
  • Classifies usage into Strategy/Research, Creative, Technical, Coding, and Admin, then generates personalized coaching: sharper prompting techniques, where to push further, what they are leaving on the table.
  • Rolls everything up into Individual, Division, and Company views with predictive analytics, anomaly and churn-risk detection, semantic search, an AI chat assistant, and auto-generated PDF reports, kept fresh by seven scheduled jobs on Cloudflare.
  1. 350+Employees analyzed
  2. 4Scoring dimensions (FVSE)
  3. 7Automated pipeline jobs
A brass-and-steel manifold where many copper pipes converge into a single central valve and gauge

Marketing intelligence

MIOS: Marketing Intelligence Operating System

One dashboard that pulls every marketing channel into a single picture, wired to an AI assistant that tells you what to fix.

The problem

Marketing performance, and the infrastructure under it (tracking tags, conversion pixels, call tracking, forms, SEO), was scattered across seventeen-plus platforms. Things broke silently, and no one had a single trustworthy view of what was actually happening across clients.

What I built

  • Connected 17+ platforms (Google, Meta, Bing, and LinkedIn Ads, CallRail, CTM, GA4, GTM, Search Console, Jotform, Unbounce, Snowflake, Adobe Workfront, and Airtable) into one operating system.
  • Automated the audits: it scrapes client landing pages, inspects the DOM and network requests, runs 75+ checks across tracking, ads, call routing, forms, SEO, and PageSpeed, and scores each against configurable rules so infrastructure never breaks silently.
  • Built a full performance-analytics layer on Snowflake with thirteen D3 chart types, saved views, and per-tab AI summaries, then wired an AI assistant across all of it with function-calling tools and Pinecone retrieval, so anyone can ask “what’s wrong with this client?” and get a grounded answer with recommendations.
  • Pushes fixes straight into Adobe Workfront as assigned tasks, runs a drag-and-drop dashboard of 22 widgets, and enforces Okta SSO with role-based access over 16 hardened sync pipelines and an event bus driving notifications and automation.
  1. 17+Marketing platforms unified
  2. 75+Automated checks per audit
  3. 22Configurable dashboard widgets
A single precision copper gauge set flush into a riveted blackened-steel control panel

Embedded analytics

Performance Insights for HubSpot

Campaign performance, competitive intel, and AI summaries, living inside the HubSpot record your team already works in.

The problem

Account managers lived in HubSpot, but campaign data lived in Snowflake. Getting performance in front of the people actually talking to clients meant exporting spreadsheets nobody fully trusted.

What I built

  • Built a HubSpot UI-extension card that embeds a full analytics dashboard directly inside contacts, companies, and deals, plus a standalone web app for anyone outside the CRM.
  • Delivered eight analytics tabs (Overview, Campaigns, Daily, Budget, Competitive, Geographic, Keywords, Help) over a read-only Snowflake warehouse, with D3 scatter plots, geographic heat maps, treemaps, and funnels.
  • Generated narrative AI summaries and a conversational chat with Snowflake Cortex (Llama 3.1 70B), running the model right next to the data instead of shipping it somewhere else.
  • Deployed on Cloudflare Workers via OpenNext with KV caching and cron-driven cache warming every four hours, Okta SSO, PDF and Excel export, and a Cmd-K command palette.
  1. 8Analytics tabs in-CRM
  2. 3Ad channelsGoogle, Meta, Display
  3. 4hAI cache-warm cadence
A researcher’s archive desk with copper card-catalog index tabs, a brass magnifier and a ruled ledger

AI-assisted SEO

AI-Augmented SEO Research

Turning Ahrefs, Semrush, and Airtable into an AI-assisted research engine for healthcare SEO campaigns.

The problem

SEO research at scale, across dozens of healthcare clients and thousands of keywords, was manual, slow, and inconsistent from one analyst to the next. The insight was there; the system to work it repeatably was not.

What I built

  • Pulled keyword, backlink, and competitive data from Ahrefs and Semrush and centralized it in Airtable as the working source of truth for every client’s SEO program.
  • Layered AI on top to cluster keywords by search intent, surface content gaps against competitors, draft briefs, and rank opportunities by effort versus upside.
  • Turned raw exports into repeatable research workflows, so a strategist could move from “here’s the client” to a defensible content and technical roadmap in a fraction of the time, with the same rigor every time.
  1. 2Research enginesAhrefs + Semrush
  2. 1Airtable source of truth
  3. AIIntent clustering & opportunity scoring

Seeing a systems problem?

Your numbers are hiding something.

A marketing number that hides an operating problem, an integration that keeps breaking, a tool your team works around instead of with. I can help your team find the cause and plan the fix. Tell me what’s going on.

Start a conversation