[SECTION: HERO] — VSL Video + Primary CTA — Phase 4
[SECTION: OUTCOMES-NAV] — 4 Outcome Cards — Phase 4
[SECTION: SOCIAL-PROOF] — Stats & Credibility — Phase 4
[SECTION: HOW-IT-WORKS] — 3 Step Process — Phase 4
[SECTION: VAPI-WIDGET] — Natalie Voice Agent Embed — Phase 2
[SECTION: TAVUS-WIDGET] — Sarah Video Agent Embed — Phase 2
S
Sarah is ready and waiting

Your session with Sarah is ready

Natalie has set up a private walkthrough just for you.
Sarah is standing by — this won't take long.

4–6 minutes
Private session
Specialist session
Session window
3:00

Encrypted · Private · No recording without consent

Session window closed

Sarah's availability window has passed — but we can get you back in front of her. She works with practices across the country and her calendar moves fast.

We'll find the next available slot for you

One second please...

Checking Sarah's availability

Good timing!

Sarah is still available

She has a window open right now. This doesn't happen often — do you want to meet with her now?

This offer expires in
1:00

Book your session with Sarah

Choose a time that works for you. Your meeting link will be sent via SMS and email.

You'll receive a meeting link via SMS + email once confirmed

You're booked in

Your session with Sarah is confirmed. Your meeting link is on its way via SMS and email — she'll be ready and waiting for you.

Meeting link sent to your phone

Check your SMS and email

[SECTION: BUNDLE-TEASER] — Growth Engine CTA — Phase 4
# PROFIT STACKERS — PHASE 2 CLAUDE CODE PROMPT # AI Infrastructure Build — Vapi + Tavus + Make.com + Webflow Embed # Version: 1.0 | Phase: 2 of 5 # Instructions: Paste this entire document into Claude Code and execute sequentially. --- ## CONTEXT & OBJECTIVE Phase 1 built the Webflow skeleton. Phase 2 wires in the AI agents. **Goal:** Configure Natalie (Vapi voice agent) and Sarah (Tavus video agent), connect them via Make.com, and embed both into the Webflow site. **By end of Phase 2:** - Natalie answers when a visitor clicks "Talk to Natalie" - Natalie asks 3 qualification questions and collects: pain point, practice context, revenue tier - Natalie hands off to Make.com which triggers Sarah - Sarah appears inline on the page as a video agent - Sarah educates, builds trust, then either attempts to close or books a call - All conversation data flows to GHL **Personas:** - Natalie = Vapi voice agent. Female voice. "Natalie from Profit Stackers." Practice Growth Coordinator. Warm, consultative, efficient. - Sarah = Tavus video agent. Female stock avatar. "Sarah, Profit Stackers Growth Advisor." Polished, professional, premium. **Two flows:** - Home page flow: Natalie qualifies first (3 questions) → Sarah educates and closes/books - Product page flow: Natalie asks 2 questions (shorter) → Sarah educates and closes/books **Routing logic:** - Under $650K annual revenue → Sarah attempts automated close → payment link - Over $650K annual revenue → Sarah books a strategy call → GHL calendar --- ## API KEYS REQUIRED Before starting, confirm you have these keys ready: - VAPI_PUBLIC_KEY — for Webflow front-end embed - VAPI_PRIVATE_KEY — for Make.com and API calls - TAVUS_API_KEY — for Tavus API calls - WEBFLOW_API_KEY — from Phase 1 (profit-stackers-site-token) - GHL_SUB_ACCOUNT — Profit Stackers GHL sub-account Prompt the user to provide these keys before proceeding. Store them as variables for use throughout this prompt. Never expose private keys in front-end code. --- ## STEP 1 — CREATE VAPI ASSISTANT (NATALIE) Use the Vapi API to create the Natalie voice assistant. ### 1A — Home Page Assistant (Full Qualification Flow) Make a POST request to: `https://api.vapi.ai/assistant` Headers: `Authorization: Bearer VAPI_PRIVATE_KEY` Assistant configuration: ```json { "name": "Natalie - Home Page Flow", "firstMessage": "Hi, I'm Natalie from Profit Stackers. I help MedSpa owners figure out exactly where their biggest growth opportunity is — and what to do about it. I'm going to ask you three quick questions, and based on your answers I'll connect you with a personalized walkthrough built around your practice. Sound good?", "model": { "provider": "openai", "model": "gpt-4o-mini", "systemPrompt": "You are Natalie, a Practice Growth Coordinator at Profit Stackers — a done-for-you growth agency for MedSpas. Your role is to warmly qualify prospects by asking exactly 3 questions in sequence. Be consultative, direct, and efficient. Never pitch services — your only job is to collect the 3 data points and hand off to Sarah. Do not go off script. If the user asks about pricing or services, tell them Sarah will walk them through everything personally in just a moment.\n\nAfter collecting all 3 answers, say exactly: 'Perfect — I'm connecting you with Sarah, our Growth Advisor, who's going to walk you through exactly what this looks like for your practice. Give me just a moment.' Then end the call and trigger the handoff.\n\nThe 3 questions in order:\n1. Pain point: 'What's the biggest challenge your practice is dealing with right now — is it getting more new patients, converting the leads you already have, managing your online reputation, or keeping more of the revenue you're generating?'\n2. Practice context: 'How long has your practice been open, and are you a single location or do you have multiple?'\n3. Revenue signal: 'Just so I can point you to the right solution — is your practice generating more or less than $650,000 in annual revenue?'\n\nCollect and store: pain_point, practice_age, location_count, revenue_tier (under_650k or over_650k)." }, "voice": { "provider": "11labs", "voiceId": "rachel", "stability": 0.5, "similarityBoost": 0.75 }, "endCallFunctionEnabled": true, "endCallMessage": "Perfect — connecting you with Sarah now. She'll have everything she needs to walk you through this personally.", "transcriber": { "provider": "deepgram", "model": "nova-2", "language": "en" }, "metadata": { "flow": "home_page", "version": "1.0" } } ``` Save the returned assistant ID as: `NATALIE_HOME_ASSISTANT_ID` ### 1B — Product Page Assistant (Shorter Flow) Make another POST request to: `https://api.vapi.ai/assistant` ```json { "name": "Natalie - Product Page Flow", "firstMessage": "Hi, I'm Natalie from Profit Stackers. You're looking at exactly the right solution. I have two quick questions so I can make sure the walkthrough you're about to see is specific to your practice. Ready?", "model": { "provider": "openai", "model": "gpt-4o-mini", "systemPrompt": "You are Natalie, a Practice Growth Coordinator at Profit Stackers. The prospect has already landed on a specific product page — they know what they want. Your job is to ask exactly 2 questions, collect the data, and hand off to Sarah. Be warm, brief, and efficient.\n\nAfter collecting both answers, say exactly: 'Perfect — I'm pulling up a personalized walkthrough for you right now. Sarah will show you exactly how this works for a practice at your stage.' Then end the call and trigger the handoff.\n\nThe 2 questions in order:\n1. Practice context: 'Tell me a little about your practice — how long have you been open and are you single or multi-location?'\n2. Revenue signal: 'And is your practice currently generating more or less than $650,000 a year in revenue?'\n\nCollect and store: practice_age, location_count, revenue_tier (under_650k or over_650k), product_page (pass through from metadata)." }, "voice": { "provider": "11labs", "voiceId": "rachel", "stability": 0.5, "similarityBoost": 0.75 }, "endCallFunctionEnabled": true, "endCallMessage": "Perfect — connecting you with Sarah now.", "transcriber": { "provider": "deepgram", "model": "nova-2", "language": "en" }, "metadata": { "flow": "product_page", "version": "1.0" } } ``` Save the returned assistant ID as: `NATALIE_PRODUCT_ASSISTANT_ID` Report both assistant IDs before proceeding. --- ## STEP 2 — CREATE TAVUS CONVERSATION (SARAH) Use the Tavus API to create Sarah's conversation configuration. ### 2A — Select Stock Replica Make a GET request to: `https://tavusapi.com/v2/replicas` Headers: `x-api-key: TAVUS_API_KEY` From the returned list of stock replicas, select a female replica that appears professional and credible for B2B sales. Look for descriptors like "professional", "business", "presenter" in the replica name or description. Report the selected replica details (name, replica_id) and ask the user to confirm before proceeding. ### 2B — Create Conversation Configuration After replica is confirmed, create the conversation: POST to: `https://tavusapi.com/v2/conversations` Headers: `x-api-key: TAVUS_API_KEY` ```json { "replica_id": "SELECTED_REPLICA_ID", "conversation_name": "Sarah - Profit Stackers Growth Advisor", "conversational_context": "You are Sarah, a Growth Advisor at Profit Stackers — a premium done-for-you growth agency for MedSpas and aesthetics practices. You are polished, professional, and authoritative. You speak like a senior consultant, not a salesperson. You build trust through specificity, data, and genuine expertise.\n\nYour mission: educate the prospect about the specific outcome they need, build trust through evidence-based insights, then either close the sale or book a strategy call based on their revenue tier.\n\nYou will receive context from Natalie including: pain_point, practice_age, location_count, revenue_tier, and optionally product_page.\n\nOPENING (always start here):\nReference the context Natalie passed: 'Hi, I'm Sarah — Profit Stackers Growth Advisor. Natalie just filled me in on your practice. [Reference practice context]. You're at exactly the stage where what I'm about to show you makes the most impact. Let me walk you through this personally.'\n\nEDUCATION PHASE:\nBased on the pain_point or product_page, educate on the relevant outcome:\n- Get More Leads: AI video content that puts their MedSpa in front of local patients consistently without them filming anything\n- Close More Sales: AI voice agent that answers every inbound call 24/7, qualifies leads, books appointments, no voicemail\n- Become Top Rated: Done-for-you review monitoring and ranking management across Google, Yelp, RealSelf\n- Stack Profits: AI bookkeeping with dedicated bookkeeper included — tax-ready books every month\n\nALWAYS mention: 'And unlike most agencies — every retainer includes your dedicated bookkeeper and monthly financials at no extra cost. That alone is worth over $4,200 a year.'\n\nREVENUE CHECK (if not already known):\nIf revenue_tier is unknown: 'Before I show you the investment, I want to make sure I'm pointing you to the right solution. Is your practice currently generating more or less than $650,000 in annual revenue?'\n\nCLOSING — UNDER $650K:\n'Based on where your practice is right now, I'd recommend starting with [product] at $[price]/month. With bookkeeping included you're getting over $5,000 in combined monthly value. I can get you set up today — ready to move forward?' Then present payment link.\n\nCLOSING — OVER $650K:\n'At your revenue level, I'd recommend we connect you directly with our team — there are a few things we'd want to customize for a practice your size. I can get a strategy call on the calendar right now. What day works best for you this week?' Then present calendar link.\n\nBUNDLE OFFER (after primary close attempt):\n'Before you decide — most of our clients start with one outcome and stack from there. We do offer a Growth Engine bundle — all four outcomes together at a 28% discount for $998/month. Worth 30 seconds of your time. Want to see it?'\n\nTONE RULES:\n- Never say 'amazing', 'awesome', 'absolutely'\n- Never use filler phrases\n- Speak in short, confident sentences\n- Use specific numbers and data points\n- Never pressure — create urgency through competitive context only", "custom_greeting": "Hi, I'm Sarah — Profit Stackers Growth Advisor. Natalie just filled me in on your practice. Let me walk you through this personally.", "properties": { "max_call_duration": 600, "participant_left_timeout": 30, "enable_recording": false, "enable_transcription": true, "language": "english" } } ``` Save the returned conversation_id as: `SARAH_CONVERSATION_ID` Save the returned conversation_url as: `SARAH_CONVERSATION_URL` Report both values before proceeding. --- ## STEP 3 — CONFIGURE MAKE.COM WEBHOOK SCENARIO Claude Code cannot directly configure Make.com via API in the free tier. Instead, produce a complete Make.com scenario specification that the user can build manually. Format it as a clear step-by-step guide. ### Make.com Scenario: "Profit Stackers — Vapi to Tavus Router" Produce instructions for building this scenario in Make.com: **Trigger:** Webhook (HTTP) - Create a new webhook in Make.com - Name it: `vapi-call-complete` - Copy the webhook URL — this will be added to Vapi **Module 2:** Router (conditional branching) - Condition A: `revenue_tier` = `under_650k` → route to Close Path - Condition B: `revenue_tier` = `over_650k` → route to Book Path **Module 3A — Close Path:** HTTP Request - Method: POST - URL: Tavus conversation URL - Pass context: pain_point, practice_age, location_count, revenue_tier, product_page **Module 3B — Book Path:** HTTP Request - Method: POST - URL: Tavus conversation URL - Pass context: same as above + flag: booking_flow = true **Module 4:** GHL — Create/Update Contact - Map fields: name, phone, email (from Vapi transcript) - Add tag: `vapi-qualified` - Add to pipeline: "New Prospects" - Add custom fields: pain_point, revenue_tier, practice_age **Module 5:** GHL — Send SMS - To: prospect phone number - Message: "Hi [name], Sarah from Profit Stackers here. Great speaking with you — here's your personalized walkthrough: [tavus_url]. Looking forward to helping your practice grow." Produce this as a formatted step-by-step guide the user can follow in Make.com. --- ## STEP 4 — ADD VAPI WEBHOOK TO NATALIE After Make.com webhook URL is created, update both Natalie assistants to send data to Make.com when calls end. Make PATCH requests to update each assistant: PATCH `https://api.vapi.ai/assistant/NATALIE_HOME_ASSISTANT_ID` PATCH `https://api.vapi.ai/assistant/NATALIE_PRODUCT_ASSISTANT_ID` Add to each: ```json { "serverUrl": "MAKE_COM_WEBHOOK_URL", "serverUrlSecret": "profit-stackers-2026" } ``` Confirm both assistants are updated. --- ## STEP 5 — GENERATE WEBFLOW EMBED CODE Generate the JavaScript embed code for both Vapi and Tavus widgets. ### 5A — Vapi Widget Embed (Home Page) Generate this code to be added to Webflow's custom code section (before ): ```html ``` ### 5B — Tavus Widget Embed ```html ``` ### 5C — Produce placeholder versions Replace all placeholder values with actual IDs and URLs collected in Steps 1 and 2: - VAPI_PUBLIC_KEY_PLACEHOLDER → actual public key (prompt user to provide) - NATALIE_HOME_ASSISTANT_ID_PLACEHOLDER → NATALIE_HOME_ASSISTANT_ID - NATALIE_PRODUCT_ASSISTANT_ID_PLACEHOLDER → NATALIE_PRODUCT_ASSISTANT_ID - SARAH_CONVERSATION_URL_PLACEHOLDER → SARAH_CONVERSATION_URL Produce the final combined embed code as a single HTML block ready to paste into Webflow. --- ## STEP 6 — ADD EMBED CODE TO WEBFLOW Using the Webflow API, add the embed code to the site's custom code settings. POST to Webflow API to add custom code to site: `https://api.webflow.com/v2/sites/SITE_ID/custom_code` Add the combined Vapi + Tavus script to the `footer` location (before ). Use the Webflow API token from Phase 1. Confirm the custom code was added successfully. --- ## STEP 7 — PUBLISH WEBFLOW SITE Publish the updated site to staging to activate the embed code. POST to: `https://api.webflow.com/v2/sites/SITE_ID/publish` Confirm publish was successful and report the staging URL. --- ## STEP 8 — PRODUCE MAKE.COM BUILD GUIDE Produce a clean, formatted step-by-step guide for building the Make.com scenario. Format it as a numbered checklist the user can follow in Make.com. Include: - Exact module names to use - Exact field mappings - The webhook URL placeholder - GHL connection instructions - SMS template text - Testing instructions --- ## PHASE 2 COMPLETION CHECKLIST Before reporting Phase 2 complete, confirm ALL of the following: - [ ] Natalie Home Page assistant created in Vapi — ID saved - [ ] Natalie Product Page assistant created in Vapi — ID saved - [ ] Sarah stock replica selected and confirmed by user - [ ] Sarah Tavus conversation created — ID and URL saved - [ ] Make.com scenario spec produced - [ ] Both Natalie assistants updated with Make.com webhook URL - [ ] Vapi embed code generated with real IDs - [ ] Tavus embed code generated with real URL - [ ] Combined embed code added to Webflow custom code - [ ] Webflow site published to staging - [ ] Make.com build guide produced for user Report staging URL and all IDs/URLs created when complete. --- ## IMPORTANT NOTES FOR CLAUDE CODE - Always ask for API keys before making any API calls — never assume they are available - Store all generated IDs and URLs as variables for use in later steps - If any API call fails, report the exact error response before continuing - The Make.com scenario cannot be built via API — produce a manual guide instead - Never expose the Vapi private key or Tavus API key in front-end code - Only the Vapi PUBLIC key goes in the Webflow embed code - Test each API connection before proceeding to the next step --- END OF PHASE 2 PROMPT