Build Log

System Overview: Everything VT Can Do Right Now

The full picture — product, pipeline, departments, infrastructure, and what's next.

MurphApril 8, 202615 min read

This is the full inventory. Everything VT has built, what it does, how it connects, and what still needs work.

No marketing spin. Just the system as it exists on April 8, 2026.


1. The Product

VT builds AI-powered websites and content engines for local service businesses. Plumbers, HVAC, landscapers, home care, cleaning companies — the $500K-$5M range. Businesses that run on trucks and word of mouth.

We do two things: build their site once, then run their online presence forever.

What We Sell

Starter Website — $475 deposit (50% of $950 total). Full Next.js site, SEO configured, blog posts, service pages, location pages. Built by Claude, deployed on Vercel, live in minutes.

Authority Package — $1,250 deposit (50% of $2,500 total). Everything in Starter plus expanded content, competitive analysis, and more aggressive SEO.

Local SEO Maintenance — $149/mo standard, $39/mo early adopter. Monthly schema updates, content freshness, GBP post drafts, AI visibility checks, monthly report. Stripe subscription via prod_UIYuYZQwkA9FBe.

AI Strategy Call — Pre-built Stripe payment link. One-on-one with Jason.

How Auto-Build Works

This is the thing that separates VT from every other agency. Payment triggers a fully autonomous build pipeline.

  1. Customer fills out the onboard form (business name, services, location, tone, differentiator, target customer)
  2. Stripe payment clears
  3. /api/onboard/activate fires — creates a GitHub repo (client-{slug}), writes a CLAUDE.md with all their brand context, opens a build issue
  4. Site builder kicks in: Claude Sonnet 4 generates all content (homepage, service pages, location pages, about, FAQ, blog posts)
  5. Template engine assembles the full Next.js site from generated content
  6. All files push to GitHub via API
  7. Vercel project auto-creates, links to the repo, adds {slug}.vibetokens.io subdomain
  8. First deployment triggers automatically
  9. Client gets an email: "your site is live"
  10. Jason gets a notification with the site URL, repo link, and content summary

Total time from payment to live site: 2-5 minutes. Not days. Minutes.

The Tech Stack

  • Next.js 16 (App Router) + React 19 + TypeScript — because WordPress is slow, bloated, and a security nightmare for local businesses
  • Tailwind CSS v4 — dark theme (#080A0F bg, #00FFB2 accent), Space Grotesk headings, Inter body
  • Vercel — serverless, auto-deploy on every push to main, edge functions, zero-downtime deploys
  • Resend — transactional email (hello@vibetokens.io inbound + outbound), webhook-verified inbound processing
  • Stripe — one-time payments + subscriptions, webhook-driven activation
  • Claude Sonnet 4 (Anthropic SDK) — content generation, email classification, audit analysis, social posts. API key is standard tier, not Max — only claude-sonnet-4-20250514
  • Google Maps/Places API — GBP audit module, competitor analysis
  • Notion — VT Audits database, VT Clients database, VT Inbox, lead/audit data storage in production
  • Playwright — PDF generation for audit reports (local only — doesn't run on Vercel)
  • GitHub API — automated repo creation, file pushes, issue management for client requests

The stack matters because every piece is API-driven. Claude can operate all of it without human intervention. That's the whole point.


2. The Pipeline

Full customer journey from cold visitor to paying client, every touchpoint documented.

The Brand Audit Funnel

This is the primary lead gen engine. Everything drives to /start.

Step 1: Intake (/start) Three fields: business name, website URL, city/state, email. That's it. Low friction.

Step 2: Audit Runs (/api/audit/start) Five modules execute in two phases, takes about two minutes:

  1. GBP Analysis — Google Places API finds their listing, compares to top competitor
  2. Site Health — PageSpeed Insights API scores performance, mobile, SEO
  3. Keyword Gap Analysis — Claude identifies 8-12 high-value keywords they're missing
  4. Missing Pages — Claude maps service pages and city pages they should have
  5. AI Visibility — checks llms.txt, robots.txt AI crawlers, schema, FAQ, voice search readiness, LLM knowledge check

Step 3: Real-Time Status (/audit/{slug}/status) Polling page that updates live as each module completes. Customer watches their audit build in real-time.

Step 4: Report Delivery (/audit/{slug}) Full branded web report with findings, scores, and recommendations. Single CTA: open the chatbot.

Step 5: Email Delivery (lib/audit/deliver.ts) Report email sent to the lead via Resend. Jason gets notified on both audit start and delivery. PDF generation is attempted but gracefully skipped on Vercel (Playwright needs Chrome).

Step 6: Chatbot (/chat/{slug}) Open-ended conversational AI pre-loaded with all their audit data. This is where they ask questions, get recommendations, and naturally move toward becoming a customer.

Step 7: Follow-Up Sequence Automated email sequence for leads who don't convert immediately:

The 7 Customer-Facing Emails

Here's every automated email a person receives in the VT system:

Lead Sequence (pre-purchase):

  1. Audit Report (Day 0) — "Here's your brand audit" — branded HTML with findings and link to full report. Sent immediately on audit completion.
  2. Your Worst Finding (Day 3) — "The #1 thing holding back {business}" — highlights the single biggest issue from their audit. Plain text. Soft CTA.
  3. Cost of Inaction (Day 7) — "Your competitors are fixing this" — what happens if they don't act. Links to chatbot. Plain text.
  4. Last Check-In (Day 14) — "Last note — {business} audit" — final soft touch, report stays live forever, reply anytime. No hard sell.

Client Sequence (post-purchase):

  1. Welcome + Structure Built (Day 3) — "Build update: structure is built" — site framework in place, homepage taking shape, service pages mapped.
  2. Site Taking Shape (Day 7) — "Site is taking shape" — homepage done, service pages written, location pages built.
  3. Almost There (Day 10) — "Almost there" — all pages built, blog posts written, SEO configured, mobile optimized.
  4. Preview Ready (Day 14) — "{business} website is ready for review" — link to preview, reply with changes, domain connection next.

Every email is plain text (except the initial audit report). Every email signs off "-- Murph, VibeTokens." Every email BCCs Jason. Every email has a "reply stop" option on the lead sequence.

All triggered daily via GitHub Actions at 10 AM ET. Follow-up logic lives in /api/cron/follow-up and /api/cron/client-milestones.


3. The Org Chart

VT runs as five departments, each with its own spec file in lib/org/. The orchestrator triggers them all.

Sales

Mission: Fill the pipeline. Convert leads to customers.

  • Lead Gen: Drive traffic to /start via content, social, SEO
  • Nurture: 3-email follow-up sequence for non-converting audit leads (Day 3, 7, 14)
  • Inbound: Auto-classify and reply to every email to hello@vibetokens.io — Claude reads, categorizes (intake_reply, workshop_inquiry, existing_client, general_question, spam), and responds

Real-time triggers: Audit form submit, inbound email webhook Cron task: Run follow-up email sequence daily

Production

Mission: Build and deploy client websites. Handle change requests.

This is the autonomous execution engine. It scans all client-* repos on GitHub for open issues. For each one:

  1. Reads the client's CLAUDE.md for brand context
  2. Reads HISTORY.md to learn from past work (what they liked, what was changed back)
  3. Claude generates the code changes
  4. Pushes files directly to GitHub
  5. Comments on the issue with what was done
  6. Labels it "completed" and closes it
  7. Emails the client: "Done: {request title}"
  8. Emails Jason with a summary

If Claude can't handle it (needs design work, credentials, external access), it flags the issue with "needs-jason" and notifies Jason instead.

Processes up to 3 issues per run to stay within timeout.

Content

Mission: Create and publish content for VT and all clients. Daily.

  • Social: Generates a daily post using Claude from a rotation of 10 topics (client wins, SEO tips, AI vs WordPress, GBP mistakes, etc.). Published to Facebook via Graph API. X and LinkedIn via CDP.
  • Blog: 86 MDX posts live in data/posts/. All have Article + Breadcrumb + FAQ schema. 3 CTAs per post pointing to /start. Weekly cadence (new post every Monday).
  • Voice: First-person, builder-documenting-in-public. Confident chill. Two sentences, breathe.

Client Services

Mission: Keep clients happy. Proactive, not reactive.

  • Onboarding: Intake, build, delivery, first check-in — all automated
  • Milestone Emails: Day 3, 7, 10, 14 progress updates after payment
  • Maintenance: Monthly site audits, proactive fixes, content freshness (planned)
  • Communication: Every email goes through VT voice, every reply comes back to Claude for classification

Ops

Mission: Keep the system running. Log everything.

  • Daily Briefing: Compiles all department results into a summary email to Jason every morning
  • System Health: Monitor deploys, uptime, error rates (planned)
  • Revenue Tracking: Stripe payments, pipeline state (planned)

The Orchestrator

/api/cron/orchestrate — VT's daily heartbeat.

Runs via GitHub Actions on a cron schedule. Currently fires 4x daily:

  • 6:00 AM ET (10:00 UTC)
  • 12:00 PM ET (16:00 UTC)
  • 6:00 PM ET (22:00 UTC)
  • 12:00 AM ET (04:00 UTC)

Each run triggers all five departments in sequence: Sales, Content, Client Services, Production, Ops. Results compile into a daily briefing email to Jason.

Real-time triggers (always on, not cron-dependent):

  • Inbound email to hello@vibetokens.io -- Sales/Inbound auto-reply
  • Audit form submit at /start -- Sales/Lead Gen pipeline
  • Stripe payment webhook -- Production/Site Builder
  • Client chat message -- Client Services/Communication

4. Active Clients

Confirmed Active

Ilya's Tree Service (Ilya Shpilman)

  • Email: Ilyashpilman85@gmail.com
  • Status: $39/mo Local SEO Maintenance subscription sent 2026-04-08
  • GBP has issues (not findable via Places API)
  • 100+ location/service pages built
  • Most recent VT subscriber

Beyond Care HC (Sarah Atkin)

  • Site: beyondcarehc.com
  • Active Next.js site, separate repo at C:/Users/jason/beyondcare-web
  • Jason's sister's home care business

Mavon Beauty (Erica Meyer)

  • Content publishing client
  • MAVON has a rentable studio space for content creators

Notion Databases

VT Audits — Production database tracking all audit runs. Fields: Name, Slug, Email, Website, City, State, Status (pending/running/complete/failed), CreatedAt, CompletedAt, ModulesJSON, Subscribed.

VT Clients — Production database tracking paying customers. Fields: Name, Slug, Email, Owner, Industry, Location, Status (pending_payment/active/cancelled), ActivatedAt, CreatedAt, StripeSessionId, DataJSON, HasUploads, Subscribed.

VT Inbox — Logs every inbound email to hello@vibetokens.io.

VT Leads — Earlier lead tracking database (predates the audit pipeline).


5. Infrastructure

DNS + Domain

  • vibetokens.io — primary domain, managed via Vercel DNS
  • www.vibetokens.io — the canonical URL (bare domain 307 redirects to www)
  • {slug}.vibetokens.io — client subdomains, auto-created by site builder
  • MX record — points to inbound.resend.com (priority 10) for email receiving
  • ops.vibetokens.io — Cloudflare tunnel to localhost:3333 (sales dashboard)

Email

  • Outbound: Resend API — sends from hello@vibetokens.io and intake@vibetokens.io
  • Inbound: Resend webhook at https://www.vibetokens.io/api/email/inbound — Svix signature verification (base64 HMAC-SHA256, not hex)
  • Jason notifications: Always BCC jasonmatthewmurphy@gmail.com
  • Webhook gotcha: Must use www URL — bare domain returns 307 and Resend doesn't follow redirects

Vercel

  • Auto-deploy on push to main
  • Serverless functions with 300s timeout (increased from 60s for full audit pipeline)
  • Environment variables configured for all API keys
  • Client sites deploy as separate Vercel projects linked to client-* repos

GitHub

  • Org: vibetokens
  • Main repo: vibetokenswebsite
  • Client repos: client-{slug} (auto-created by site builder)
  • GitHub Actions: follow-up-cron.yml triggers orchestrator 4x daily
  • GitHub token used for automated file pushes and issue management

Notion

  • VT Audits database — production storage for all audit data (replaces filesystem on Vercel)
  • VT Clients database — paying customer records
  • VT Inbox — inbound email log
  • Connected via NOTION_TOKEN (vt-outreach integration)

Stripe

  • Product: Local SEO Maintenance (prod_UIYuYZQwkA9FBe)
    • $149/mo standard price
    • $39/mo early adopter price
    • Payment link for early adopter: https://buy.stripe.com/00weV6eyZ10R23N93saIM02
  • Checkout products: starter-website ($475), authority-package ($1,250), all 6 workshops, 80-to-claude-guide ($79), OPERATOR kit ($147)
  • Subscription route: POST /api/checkout/subscription with { priceId, slug, email }

Social Publishing

  • Facebook: Working via Graph API (page token in env)
  • X (@vibetokens): Working via CDP (Chrome DevTools Protocol on localhost:9222, raw WebSocket)
  • LinkedIn: Working via CDP (same Chrome session)
  • Instagram: Not configured
  • GBP Posting: Not configured
  • Image generation: Required for all posts. POST /api/images/generate with templates: quote_card, stat_card, workshop_promo, insight_card. Formats: landscape (1200x675) for X/LinkedIn/Facebook, square (1080x1080) for Instagram.

What Needs Attention

  • LinkedIn app credentials — no developer app created yet, needs setup at linkedin.com/developers for OAuth posting
  • PDF generation on Vercel — Playwright needs Chrome, which isn't available on serverless. Works locally. Web report works fine as a substitute.
  • Claude API tier — standard key, only claude-sonnet-4-20250514 access. No 4-6.
  • X OAuth tokens — re-authorized as @vibetokens but CDP is the reliable posting method now

6. Workshops

Six live workshops scheduled for April 2026, plus a weekly recurring intro session. All sold via Stripe checkout.

Introduction to Claude — $29

  • Duration: 60 minutes
  • Schedule: Weekly recurring — pick your day and time
  • Audience: Never used Claude before
  • What you get: Account setup, interface walkthrough, live demo
  • Route: /workshops/intro-to-claude

AI for Local SEO — $97

  • Duration: 90 minutes
  • Date: Wednesday, April 15, 10 AM ET
  • Audience: Service business owners
  • What you get: Google presence setup, AI content strategy, review automation
  • Seats: 12
  • Route: /workshops/local-ai-workshop

Automate 80% of Your Work — $147

  • Duration: 2 hours
  • Date: Monday, April 20, 10 AM ET
  • Audience: Anyone with repetitive tasks
  • What you get: Live companion to the 80 to Claude Guide. Bring your actual tasks.
  • Seats: 10
  • Route: /workshops/80-percent-workshop

Build Your AI Employee — $197

  • Duration: 3 hours
  • Date: Thursday, April 23, 10 AM ET
  • Audience: Business owners who want an AI agent
  • What you get: Design and deploy one AI agent role. Custom system prompt, tools, live test run.
  • Seats: 10
  • Route: /workshops/build-your-ai-employee

Claude OS in a Day — $247

  • Duration: 4 hours
  • Date: Monday, April 27, 10 AM ET
  • Audience: Power users
  • What you get: Full Claude operating system. CLAUDE.md, MCP servers, 3 automated workflows.
  • Seats: 8
  • Route: /workshops/claude-os-in-a-day

Claude for Agencies — $297

  • Duration: 4 hours
  • Date: Wednesday, April 29, 10 AM ET
  • Audience: Agency owners
  • What you get: Build the AI workflow layer that removes you as the delivery bottleneck.
  • Seats: 8
  • Route: /workshops/claude-for-agencies

Private Team Workshop — Custom pricing

Custom session for teams/companies. Contact via hello@vibetokens.io.

Workshop flow: Register (Stripe checkout) then prep (brief sent day before, 15 min setup) then build (live Zoom, small group, leave with a working system). All recorded, replays available.

Also selling:

  • 80% to Claude Guide — $79 digital product
  • OPERATOR — Claude Code Power Kit — $147 digital product

7. What's Next

Preview-First Flow (v2)

The current flow is: pay, then we build. The v2 flow flips it.

  1. Customer fills out intake form
  2. We generate a preview site immediately (no payment required)
  3. Customer sees their actual site — their content, their brand, their pages
  4. "Like what you see? Pay to keep it live."

This removes the biggest friction point: paying $475+ for something you haven't seen. The preview is the sales pitch. The tech for this exists — site builder already works. Just need to decouple it from the payment trigger.

Priority: High. This is the next major conversion unlock.

Client Portal

request.vibetokens.io — a place for clients to submit change requests, view their site status, and see monthly reports without emailing. Currently planned, not built.

Social Engagement Engine

Right now we publish. We don't engage. The next layer is:

  • Monitor replies and mentions on X, LinkedIn, Facebook
  • Auto-respond to comments with Claude
  • Track which posts drive traffic to /start
  • A/B test post formats and topics

Cold Email Sequence

Outbound prospecting for local businesses that need help. Not built yet, but the ICP is clear (home services, $500K-$5M). The audit is the hook — "We ran a free audit on your business, here's what we found."

Calendar Integration

Cal.com embed is already in the dependencies (@calcom/embed-react). Need to wire it into the site for strategy calls and workshop booking.

AI Agent Personas

Right now, one voice handles everything: Murph. The plan is specialized personas:

  • Sales Murph — handles lead nurture and follow-ups
  • Build Murph — handles production and site builds
  • Content Murph — handles blog and social
  • Support Murph — handles client requests

Same underlying system, different system prompts optimized for each job. The lib/org/values.ts file already injects operating values into every prompt — personas would extend this.

Social Media Connection Per Client

Each client gets their own social presence managed through VT. The social publisher already supports per-client credentials via clients/{slug}/brand.json. Need the UI flow for clients to connect their accounts.

Hosted PDF Service

Audit report PDFs only generate locally (Playwright needs Chrome). Options: hosted PDF API, or just accept that the web report is good enough. It is.


The Numbers

  • 86 blog posts live with SEO schema
  • 5 audit modules running in production
  • 7 automated emails in the customer journey
  • 5 departments with defined specs
  • 4 daily orchestrator runs via GitHub Actions
  • 3 social platforms publishing (Facebook, X, LinkedIn)
  • 3 active clients (Ilya's Tree Service, Beyond Care, Mavon)
  • 6 workshops scheduled for April
  • 2-5 minutes from payment to live website
  • 0 humans required for the build pipeline

How It All Connects

A stranger visits vibetokens.io. They read a blog post. Three CTAs per post push them to /start. They enter their business info. Five audit modules run in two minutes. They get a branded report and an email. The chatbot pre-loaded with their data answers their questions.

If they don't convert, three follow-up emails over 14 days keep the conversation warm. If they do convert, Stripe processes payment, the site builder fires, and their website is live before they close the confirmation email.

After that, the Production department watches their GitHub repo for change requests. Client Services sends milestone updates. Content publishes monthly posts. Sales keeps filling the pipeline.

Jason sleeps. Claude runs the agency.

That's the system.

— Murph

Want to see how your business stacks up?

Get a free brand audit — we'll show you what's working, what's not, and what to fix first.

Free Brand Audit →
Jason Murphy

Written by

Murph

Jason Matthew Murphy. Twenty years building digital systems for businesses. Former CardinalCommerce (acquired by Visa). Now running VibeTokens — a brand agency for small businesses that builds websites, content, and growth systems with AI.

Your brand is your first impression.

Find out if it's costing you customers.

Free brand audit. We analyze your online presence, competitors, and messaging — then tell you exactly what to fix.

Get Your Free Brand Audit →