Build an AI Chatbot Agency with ChatGPT: The Complete Step-by-Step Guide

Build an AI Chatbot Agency with ChatGPT: The Complete Step-by-Step Guide

Building an AI chatbot agency is not about knowing how to code. It is about knowing how to deliver a working product that solves a real business problem, charge for it properly, and repeat the process until you have more demand than capacity. This guide walks you through every step — from setting up your first chatbot to signing your twentieth client. Follow it in order. Do not skip steps.

Prerequisites

Before you start, you need the following:

  • A laptop with a modern browser (Chrome or Firefox)
  • A Voiceflow account (free tier works for your first 3 bots) — go to voiceflow.com and sign up
  • An OpenAI OpenAI API key ($5 minimum credit) — go to platform.openai.com/api-keys
  • A Stripe Stripe account for collecting payments — go to stripe.com and sign up
  • A Notion Notion account for client documentation — free tier is fine
  • 4-6 hours of uninterrupted time for your first build

Total upfront cost: $5 for the OpenAI API key. Everything else is free until you have paying clients.

Step 1: Set Up Your Voiceflow Workspace

Open your browser and go to app.voiceflow.com. Sign in with the account you created. You should see the Voiceflow dashboard — a clean screen with a “Create Project” button in the center.

Do you see that button? If you see a blank screen or an error message, go back and verify your email address. Voiceflow requires email verification before you can access the dashboard. Check your inbox, click the verification link, and come back.

Click Create Project. A modal will appear asking for a project name. Name it: dental-practice-bot. Select “Chatbot” as the project type. Click Create.

You should now see the Voiceflow canvas — a large white workspace with a single green “Start” node in the top-left corner. If you see this, you are in the right place. If you see something else (a list of templates, a different interface), you may have selected the wrong project type. Go back and make sure you selected “Chatbot.”

Connect Your OpenAI API Key

In the left sidebar, click the Integrations icon (it looks like a puzzle piece). Scroll down until you find OpenAI. Click it. A field will appear asking for your API key. Paste your OpenAI API key (the one that starts with sk-). Click Save.

You should see a green checkmark or “Connected” status next to the OpenAI integration. Do you see it? If you see a red error, your API key is wrong or your OpenAI account has no credit. Go to platform.openai.com/billing, add $5 in credit, and try again.

Set Up the Knowledge Base

In the left sidebar, click Knowledge Base (it looks like a book icon). This is where you upload information that your chatbot will use to answer questions. Click Upload Files. For your dental practice bot, you need to upload at least three documents:

  1. Services list — Create a simple text file listing every service the dental practice offers (cleanings, fillings, root canals, crowns, whitening, etc.) with brief descriptions and price ranges
  2. Office policies — Operating hours, cancellation policy, insurance accepted, payment methods
  3. FAQ document — The 20 most common questions patients ask, with answers

Create these as plain .txt files on your computer. Each file should be 200-500 words. Upload all three.

After uploading, you should see your files listed in the Knowledge Base panel with a green “Processed” status. Do you see “Processed” next to each file? If you see “Processing,” wait 30 seconds and refresh. If you see “Error,” the file format is wrong — make sure it is a .txt file, not a .docx or .pdf.

Step 2: Build the Conversation Flow

Now you are going to build the actual conversation that the chatbot will have with patients. Go back to the canvas (click the Canva Canva Canvas tab in the left sidebar).

Create the Welcome Message

Double-click the green Start node. A panel will open on the right side. In the “Message” field, type:

Welcome to Bright Smile Dental! I’m your virtual assistant. I can help you with:

  • Scheduling appointments
  • Questions about our services
  • Insurance and payment information
  • Office hours and directions

What can I help you with today?

Click Save. You should see the message appear inside the Start node on the canvas.

Add User Intent Paths

From the Start node, hover over the right edge until you see a small circle appear. Click and drag to create a new node. Select Intent from the menu that appears. Name this intent schedule_appointment.

In the intent configuration, add training phrases — these are examples of what a user might type to trigger this path:

  • “I want to book an appointment”
  • “Schedule a cleaning”
  • “I need to see the dentist”
  • “Book me in”
  • “Can I make an appointment?”

Add at least 8-10 variations. The more you add, the smarter the bot becomes at recognizing what the user wants.

Create three more intents using the same process:

  • ask_services — “What services do you offer?” / “Do you do root canals?” / “How much is teeth whitening?”
  • ask_insurance — “Do you take my insurance?” / “What insurance do you accept?” / “How much does a filling cost with insurance?”
  • ask_hours — “What are your hours?” / “Are you open on Saturday?” / “When do you close?”

Each intent should have 8-10 training phrases. Take the time to write diverse variations — include formal phrasing, casual phrasing, and misspelled words that patients commonly type.

You should now have 4 intent nodes branching out from the Start node. Do you see all 4? If any are missing, go back and add them. The canvas should look like a tree with the Start node at the trunk and 4 branches.

Build Each Intent Response

Click on the schedule_appointment intent node. Drag from its right edge to create a Message node. In this message, type:

I’d love to help you schedule an appointment! To get started, I need a few details:

  1. What type of appointment? (Cleaning, consultation, emergency, etc.)
  2. Do you have a preferred date or time?
  3. Are you a new or existing patient?

Add another node after this: a Text Capture node. This waits for the user to type their answer. Set the timeout to 60 seconds — if the user does not respond in 60 seconds, the bot should say: “No worries! You can also call us at (555) 123-4567 to schedule. Is there anything else I can help with?”

For the ask_services intent, add a Knowledge Base node (select “AI Response” from the node menu). Configure it to use the Knowledge Base to answer questions about services. The AI will automatically pull relevant information from the documents you uploaded in Step 1. This is the power move — instead of writing 50 different responses, you let the AI generate contextual answers from your knowledge base.

For the ask_insurance intent, do the same thing — add a Knowledge Base node. The AI will pull from your office policies document.

For the ask_hours intent, add a simple Message node with the hours. Keep this one static because hours do not change often and a direct answer feels more trustworthy than an AI-generated one.

Add the Fallback Path

This is critical and most beginners skip it. If a user types something that does not match any of your 4 intents, the bot needs a fallback response. From the Start node, add a fifth path labeled fallback. Connect it to a Knowledge Base node configured to answer any general question using all your uploaded documents. After the Knowledge Base response, add a Message node:

Did that answer your question? If not, you can reach our office directly at (555) 123-4567 or email us at info@brightsmile.com.

Step 3: Test Your Bot Locally

Before you even think about showing this to a client, test it yourself. Extensively.

In the bottom-right corner of the Voiceflow canvas, click the Prototype button (it looks like a play icon). A chat window will appear on the right side of your screen.

Type: “I need to book a cleaning.” Do you get the scheduling flow? You should see the bot ask for appointment details. If you get a fallback response instead, go back to your schedule_appointment intent and add more training phrases.

Type: “Do you accept Blue Cross?” You should get an answer pulled from your knowledge base about insurance. Read the answer carefully. Does it sound natural? Is the information accurate? If the answer is wrong or sounds robotic, go back to your knowledge base documents and add more specific information.

Type: “What time do you close on Friday?” You should get the static hours response. Does it match what you wrote in the Message node?

Type: “Can you fix my car?” This is a trick question. You should get the fallback response, not a hallucinated answer about car repair. If the bot tries to answer this, your Knowledge Base is too permissive. Go to the Knowledge Base node settings and enable “Strict Mode” — this restricts the AI to only answer questions that can be supported by your uploaded documents.

Run at least 20 test conversations. Mix real questions with edge cases. Write down every response that feels wrong and fix it before moving on.

The 5-Test Checklist

Before you proceed, verify each of these:

  1. Scheduling intent triggers correctly with at least 5 different phrasings
  2. Services questions get accurate Knowledge Base answers
  3. Insurance questions reference your uploaded policy document
  4. Hours questions get the correct static response
  5. Off-topic questions trigger the fallback, not hallucinations

If all 5 pass, move to Step 4. If any fail, stop and fix them now. A broken demo loses clients instantly.

Step 4: Deploy the Bot as a Widget

Click the Deploy tab in the top navigation bar. You will see several deployment options: Web Widget, API, and integrations. Select Web Widget.

A configuration panel will appear. Set the following:

  • Widget position: Bottom-right corner
  • Primary color: Match the dental practice’s brand color (ask the client or check their website)
  • Welcome message: “Hi there! Need help with appointments or have questions? I’m here to help.”
  • Avatar: Upload the dental practice’s logo

Click Save and Generate Code. You will get a JavaScript snippet. It looks something like this:

<script type="text/javascript">
  (function(d, s, id) {
    var js, fjs = d.getElementsByTagName(s)[0];
    if (d.getElementById(id)) return;
    js = d.createElement(s); js.id = id;
    js.src = "https://widget.voiceflow.com/chat/bundle.js";
    fjs.parentNode.insertBefore(js, fjs);
  }(document, 'script', 'vf-widget'));
</script>
<script>
  window.VFConfig = {
    projectID: "your-project-id-here",
    position: "bottom-right",
    primaryColor: "#2563EB"
  };
</script>

Copy this code snippet. This is what you will send to your client to install on their website.

Testing the Deployed Widget

Before sending it to the client, test it yourself. Open any HTML file on your computer, paste the widget code before the closing </body> tag, and open the file in your browser. Do you see a chat bubble in the bottom-right corner? Click it. Does the welcome message appear? Test a full conversation. Does everything work the same as in the Prototype mode?

If the widget does not appear, check that you pasted the code before </body> and that you have an internet connection. If the conversation is broken, go back to Voiceflow and check that you published the latest version (the Deploy page should show “Published” not “Draft”).

Step 5: Price and Sell Your Service

You have a working bot. Now you need to turn it into revenue. Here is the pricing structure that works for chatbot agencies:

The Pricing Model

TierSetup FeeMonthly RetainerWhat’s Included
Starter$1,500$300/mo1 chatbot, 3 intents, basic KB, email support
Growth$3,000$500/mo1 chatbot, 6 intents, full KB, analytics, priority support
Enterprise$5,000$800/moMulti-bot, custom integrations, API connections, dedicated Slack channel

The setup fee funds your build time. The retainer funds maintenance, updates, and hosting. Never sell a chatbot without a retainer — without maintenance, the bot will degrade within 3 months as the client’s services, hours, or policies change.

The Demo-First Sales Method

Do not send cold emails. Do not run ads. Build a demo for a specific business category and use it as your sales tool. Here is exactly how:

  1. Pick a business category (dental practices, real estate agencies, gyms, law firms)
  2. Build a fully functional demo bot for that category using generic information
  3. Find 20 businesses in that category on Google Google Maps
  4. Visit each website. Note whether they have a chatbot (most will not)
  5. Send this message to the business owner:

“Hi [Name], I noticed your website doesn’t have a chat assistant. I built a demo for [business type] practices that handles [appointments / common questions / quote requests] automatically. It’s already configured and ready to install — would you like to see it live? Takes 2 minutes to add to your site.”

Include a link to your demo bot running on a test page. The business owner can click, interact with the bot, and see it working in real time. This converts at 15-25% because the value is immediately obvious and the friction is zero.

Step 6: Deliver and Install

When a client signs, follow this delivery process exactly:

Week 1: Discovery (2 hours)

Schedule a 30-minute call with the client. Ask these questions:

  • What are the top 10 questions your customers ask?
  • What are your operating hours?
  • What services do you offer and what are the price ranges?
  • What insurance do you accept?
  • What is your cancellation policy?
  • Do you have any existing FAQs or knowledge base documents?

Record the call (with permission). After the call, transcribe the recording using Otter.ai (free) and organize the answers into the three document types: services list, office policies, and FAQ.

Week 2: Build (6-8 hours)

Build the bot following Steps 1-4 of this guide, using the client’s actual information instead of the demo data. Upload their specific documents to the Knowledge Base. Customize the widget colors and welcome message to match their brand.

Week 3: Testing and Installation (2-3 hours)

Test the bot with 20+ conversations. Then send the widget code to the client’s web developer (or install it yourself if they give you CMS access). Verify the bot is live and working on their actual website. Send a test message from the live site to confirm.

Week 4: Training and Handoff (1 hour)

Schedule a 15-minute call with the client. Show them how to check the chat logs in Voiceflow (click Analytics in the left sidebar). Show them how to update the Knowledge Base (upload new documents, remove outdated ones). Give them your Notion client portal link where you track their retainer deliverables and monthly reports.

Step 7: Scale Past Solo

Once you have delivered 3-5 bots and have a repeatable process, scaling is about removing yourself from the build:

  1. Document your entire process in a Notion SOP. Every step from this guide, with screenshots and specific configurations. This becomes your training manual.
  2. Hire a junior builder ($15-25/hr on Upwork). Give them the SOP. Have them build bots while you focus on sales. A trained builder can complete a bot in 4-6 hours.
  3. Hire a salesperson ($40-60K base + commission). Give them your demo bot and the demo-first sales script. A good salesperson can close 4-6 clients per month.
  4. At 10+ clients, move to Voiceflow Pro ($50/mo) for advanced analytics and team collaboration. Set up a shared workspace where your builder can access all client projects.

Your unit economics at scale: a Growth-tier client pays $3,000 setup + $500/mo retainer. Your builder costs $100-150 per bot. Your monthly maintenance per client is 1-2 hours of builder time ($25-50). Profit per client in month one: ~$2,800. Monthly recurring profit per client: ~$450. At 20 clients, that is $9,000/mo in recurring profit plus setup fees.

Cost Breakdown

ItemFree TierPaid TierWhen to Upgrade
Voiceflow3 projects$50/mo (Pro)At 4+ clients
OpenAI APIPay per use~$20-50/moScales with usage
NotionFree$10/moAt 5+ clients for team features
StripeFree2.9% + 30c per transactionAlways use
Domain for demos$12/yrImmediately
Hosting for demo pageFree (Netlify)Immediately

Total monthly cost at 5 clients: ~$80-100/mo Total monthly revenue at 5 clients: $2,500/mo retainers + setup fees

Production Checklist

Before delivering any bot to a client, verify every item:

  • All intents trigger correctly with at least 8 training phrases each
  • Knowledge Base answers are accurate and do not hallucinate
  • Fallback path catches off-topic questions without fabricating answers
  • Widget matches client’s brand colors and uses their logo
  • Bot has been tested with 20+ conversations including edge cases
  • Welcome message is professional and lists available actions
  • Timeout messages are configured (60 seconds of inactivity)
  • Client knows how to check analytics and update the Knowledge Base
  • Widget is installed and verified on the live website
  • Monthly maintenance schedule is set (check logs, update KB, fix issues)

What to Do Next

Once you have delivered your first 3-5 bots in one business category, expand:

  • Build bots for a second business category (the same process, different knowledge base)
  • Add voice agent capability using Vapi Vapi ($30-80/mo) — voice bots command 2-3x higher pricing
  • Create a client portal in Notion where clients can submit update requests
  • Set up automated monthly reports using Make Make that pull Voiceflow analytics and email them to clients
  • Consider white-labeling — let other agencies resell your bots under their brand for a 40-50% revenue split
Affiliate Disclosure: Some links on this page are affiliate links. If you purchase through them, we may earn a commission at no extra cost to you. This helps us keep creating free content.
PLAYBOOK

The AI Automation Agency Playbook: 32 Steps to $35K/Month

The most advanced AI automation agency blueprint ever created. 12 modules, 47 step-by-step procedures, interactive check-ins at every stage, complete tech stacks, client delivery frameworks, and scaling systems. From zero to ₦40M/month.

SHARE YOUR STARTUP STORY
Built something with AI? We want to hear about it.