Build Log

Build Log: The Day We Closed Every Gap in the Pipeline

Email redesign, inbound auto-reply, conversion CTAs, follow-up sequence, client milestone emails, Notion migration, DNS fixes. One day. Zero gaps.

MurphApril 8, 20268 min read

Today was about one thing: making sure no lead falls through the cracks.

The audit pipeline was working. People could run audits, get reports, talk to the chatbot. But there were holes. Emails that didn't render right. Conversations that dead-ended. Leads that disappeared after the first email. Clients that heard nothing between payment and delivery.

We fixed all of it.


What We Shipped

Email Redesign — Cross-Client, Cross-Device

The audit report email used a dark theme with neon green (#00FFB2) accents. Looked great in the design file. Looked terrible in Gmail.

Gmail strips <body> background colors. Dark background disappears, leaving white text on a white screen. The green becomes eye-searing on light backgrounds.

The fix: Light-first design. White background, dark text, emerald green (#059669) accents. Added @media (prefers-color-scheme: dark) for Apple Mail and Outlook. Rounded buttons, proper color-scheme meta tags, Apple message reformatting disabled.

Every email in the system now uses this design — audit reports, welcome emails, follow-ups, milestone updates.

Inbound Email Auto-Reply — From Broken to Working

When someone replies to a VibeTokens email, it goes to hello@vibetokens.io. A webhook fires, Claude reads the email, classifies it (intake reply, workshop inquiry, existing client, general question, or spam), and auto-replies as "Murph."

What was broken:

  1. The Claude model ID was wrong (claude-sonnet-4-6 instead of claude-sonnet-4-20250514) — every auto-reply was silently 401'ing
  2. The MX record pointed to AWS SES instead of Resend — emails weren't even arriving
  3. The webhook URL used bare domain (vibetokens.io) which 307-redirects to www — Resend doesn't follow redirects
  4. The signature verification used plain HMAC-SHA256 but Resend uses Svix (different signing format, base64 not hex)

Four bugs. Each one independently killed the entire flow. All fixed in one session.

Conversion Funnel — No More Dead Ends

The audit report said "talk to our chatbot." The chatbot said "I'll have Jason reach out." Then nothing happened.

Now:

  • Report page has dual CTAs: "Let's Talk" (chatbot) + "Email Jason Directly" (skip the chat)
  • Chatbot shows a "Ready? Let's Go" button after 4+ messages, plus a persistent footer with "Email Jason →"
  • Chatbot AI gives pricing ballpark ("plans start at $199/mo") instead of deflecting. Ends conversations with clear next steps.

Every touchpoint now leads somewhere.

Follow-Up Email Sequence — 3 Emails Over 14 Days

If someone runs an audit and doesn't respond, they used to be gone forever. Now:

  • Day 3: "The #1 thing holding back [Business Name]" — highlights their worst audit finding with a red callout
  • Day 7: "Your competitors are fixing this" — cost of inaction, soft push to chat
  • Day 14: "Last check-in" — report stays live forever, reply anytime, no pressure

Runs daily via GitHub Actions. Each email BCC'd to Jason. Includes "reply stop to unsubscribe."

Client Milestone Emails — Trust Through Transparency

After payment, clients got a welcome email and then silence for 14 days. That's a trust problem.

Now they get progress updates:

  • Day 3: "Structure is built" — visual checklist with checkmarks and circles
  • Day 7: "Site is taking shape" — homepage, services, locations done
  • Day 10: "Almost there" — SEO, blog, mobile optimization
  • Day 14: "Ready for review" — approval request with next steps

Each email shows exactly what's done and what's remaining. No mystery.

Onboard → Notion Migration

The /onboard form stored client data to the filesystem — which doesn't exist on Vercel serverless. Every client onboard was silently failing in production.

Built a new lib/onboard/clients.ts module (dual-mode: filesystem locally, Notion on Vercel) following the same pattern as the audit storage. File uploads gracefully skip on Vercel instead of crashing.

SEO Metadata for Funnel Pages

The /start page — linked from 85 blog posts, the #1 CTA target — had no <title> or description. Now all funnel pages have proper metadata. Audit and chat pages are noindexed (private content).


The Pipeline Now

Cold visitor → blog/social/direct → /start
  → Audit runs (5 modules, ~2 min)
  → Email delivered (light-first, cross-device)
  → If no response → 3 follow-ups over 14 days
  → Report page (dual CTA: chat OR email)
  → Chatbot (pricing, clear next steps, conversion CTA)
  → Reply to email → Claude auto-replies as Murph
  → /onboard → Stripe → welcome email
  → Auto-build triggers immediately
  → Site live at clientname.vibetokens.io (minutes, not weeks)
  → "Your site is live" email with preview link
  → Client reviews → domain connection → done

Every step has a clear next action. Every email works on every device. Every lead gets follow-up. Every client gets a site the same day they pay.


The Auto-Build Pipeline

This is the big one. We killed the 14-day delivery timeline.

When a customer pays, the system:

  1. Pulls their onboarding data from Notion
  2. Runs 6 parallel Claude API calls to generate all page content
  3. Builds a complete Next.js site (homepage, service pages, location pages, about, contact, FAQ, blog posts)
  4. Pushes everything to a GitHub repo
  5. Deploys to clientname.vibetokens.io
  6. Emails the customer their preview link

No manual intervention. No "we'll get back to you in 14 days." A plumber fills out a form, pays, goes back to a job, and by the time he's eating lunch his website is live.

That's the kind of thing people tell their buddies about. That's the word-of-mouth engine.

The Brand Voice

We defined the VT voice today: confident chill. Talk like a contractor who also knows SEO. Not a marketer. Not a consultant. A builder.

Every email is now plain text — two sentences, breathe, two more. Research shows plain text gets 21-42% more clicks than HTML for this kind of outreach. Feels like a real person, not a marketing automation.

The audit report email stays HTML (it's a branded deliverable). Everything else — follow-ups, milestone updates, auto-replies, welcome emails — plain text.


By the Numbers

  • 25+ commits pushed to production
  • 950+ lines of site builder code shipped
  • 10+ email templates written in VT voice (plain text)
  • 9 new API routes built
  • 4 bugs fixed that were silently breaking the inbound pipeline
  • 3 conversion CTAs added across chatbot + report page
  • 0 manual touchpoints from payment to live website

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 →

Frequently Asked

What is the VibeTokens brand audit pipeline?

A free, AI-powered audit at vibetokens.io/start. Enter your business name and website — in 2 minutes, you get a full analysis of your Google presence, site health, keyword gaps, missing pages, and AI visibility. Results emailed and available as a web report.

How does the VibeTokens chatbot work?

After your audit, you can chat with our AI intake assistant at /chat/{slug}. It's pre-loaded with your audit data and asks conversational questions to understand what your business needs — no forms, no calls.

What happens after I pay for VibeTokens?

Claude starts building your site immediately. You get automated progress updates at Day 3, 7, 10, and 14 — including a visual checklist of what's done and what's next. Preview link at Day 14 for your approval before going live.

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 →