The chat on this site isn't a chatbot.
It's a working agent.
It qualifies visitors, books calls on a live calendar, hands off to Charlie in real time, logs every lead, and runs a Program Pulse Check that ends with a branded PDF. It's the same kind of build we deliver for contact centers, at website scale. And it answers the phone: call (216) 279‑7939 to talk to the voice version.
More than FAQs and a contact form
Most website chat widgets answer a few FAQs and then hand you a form. A consultant's site has a harder job: work out whether a visitor is a real prospect, get them to a person quickly when it matters, and never let a lead slip through the cracks. Charlie wanted his own site to do that, and to show prospects the kind of AI he delivers for clients.
One conversation, the right action
Live handoff
DMs Charlie in Google Chat with an AI-written brief. If he takes it within 60 seconds, he joins the same chat window.
Book a call
Reads his real calendar, offers three open times and books the one the visitor picks, with a Google Meet invite.
Program Pulse Check
Eight quick questions, then an instant branded one-page PDF: is the program alive, dead or dying?
Answers & one‑pagers
Questions about services and experience, plus the right capability sheet for the conversation.
Understand
The agent greets the visitor, works out what they need, and answers questions about services and experience.
Choose a path
Hand off live, book a call, run the Pulse Check or share a one-pager, depending on the conversation.
Follow through
Every lead reaches Charlie's inbox and a Google Sheet. If the visitor asks, the agent emails them a recap.
What it does
The build
| Layer | What it does | Built with |
|---|---|---|
| Conversation | Understands intent, follows playbooks, decides which tool to use | Voiceflow AI agent with playbooks and tools |
| Actions | Live handoff, calendar booking, Pulse Check scoring and PDFs | A small Node.js service on Google Cloud Run |
| People | Handoff card with an AI-written brief; Charlie replies right from Google Chat | Google Chat, Gemini on Vertex AI |
| Systems of record | Calendar, email, lead log | Google Calendar, Gmail, Google Sheets |
| Front door | Every "Schedule" and "Pulse Check" button opens the agent | Squarespace |
Built to be trusted
- It says it's an AI. The recap email is signed by "the Braman Consulting assistant (AI)," not dressed up as Charlie.
- The code checks the AI. The model never does the scoring or the booking math. The service scores the answers, re-checks the calendar before booking, and refuses anything incomplete instead of guessing.
- Every path has a fallback. If Charlie is offline, busy or in a meeting, the visitor gets a clear next step and the lead still reaches him.
- Nothing goes out without a yes. There's no recap email or booking unless the visitor asks for it.
- Secrets stay server-side. Calendar and messaging credentials live in the cloud service, never in the website or the chat.
What we'd tell a client
- Put the rules where the model reads them. The lead log only filled in reliably once the column order moved from a tool description into the playbook instructions.
- Don't let the model do bookkeeping. An early Pulse Check run passed answers as a letter code, and a single dropped letter changed the result. The fix was to pass the visitor's actual answer wording and let the service match and validate it. Verification belongs in code, not in the prompt.
- Design the "no" paths first. Off-hours, busy, declined and timeout cases were built and tested before the happy path went live.
The full end-to-end architecture
Every working part: what runs on Squarespace, Voiceflow, Google Cloud and Google Workspace, how they connect, and exactly where a language model is used and where plain code takes over.
Show the architecture diagram
Scroll sideways to see the whole diagram.
Website visitor
Any page, desktop or phone
Pages & buttons
"Schedule a Consultation", "Discuss Your Project", "Take the Pulse Check" link to #schedule, #talk-to-ai, #pulse-check
Footer code injection
- Loads the Voiceflow chat widget
- Turns those links into "open the agent", and auto-starts the Pulse Check
- Keeps the chat with the visitor page to page during a visit
1Chat widget
Voiceflow web chat embedded on every page
One-pager PDFs
CCaaS & AI, PMO and this case study, hosted on the site
2Main Agent
Global prompt: identity, tone, guardrails, pricing and urgency rules. Understands intent and decides which playbook, workflow or tool to use.
Knowledge base
Services, approach and experience content. Retrieved to ground answers, so it never invents clients or results.
Playbooks
Workflow: Live chat with Charlie
Custom Handoff step with the full transcript. Returns to the playbook when Charlie leaves or can't join.
Tools
7Transcripts & evaluations
Every conversation logged and scored for resolution. Used to find and fix failure modes.
Cloud Run service (Node.js)
One small container; every route checks its own credentials.
Vertex AI · Gemini Flash
Reads the transcript and writes Charlie's handoff brief: who, need, stage, scale, mood, open questions. 6-second timeout with fallback.
Secrets & identity
Bearer token for Voiceflow, a signed webhook secret, Charlie's Calendar OAuth (internal-only client), and a service account for Chat and Vertex AI
Google Chat app
DM card with the AI brief and Take it / Not now. Charlie's replies go straight to the visitor's chat window.
Google Calendar
Free/busy for open times and "is Charlie in a meeting?"; booked calls with a Meet link and an invite to the visitor
6Gmail
Lead summary to Charlie; the visitor's recap (signed by the AI assistant, with Charlie bcc'd)
Google Sheets
Lead log, one row per lead, 13 fields; URGENT flag for at-risk programs
Charlie
Joins live from Google Chat, follows up within one business day
Every path a visitor can take
The decisions the agent makes, from the moment a visitor opens the chat to a booked call or a follow-up, and the rules behind each branch.
Show the decision flow
If a visitor asks to book before the closing, the booking happens first and the recap follows with the booked time.
Rules behind the branches
- Offered once. The live-chat check and the Pulse Check are each offered at most once per conversation.
- Live chat never fails visibly. Off hours (outside Mon–Fri, 8am–6pm ET), Charlie busy with another visitor, in a meeting, declined, or no answer in 60 seconds all return the visitor to the AI with neutral wording.
- Lead first. The lead email to Charlie and the Google Sheets row go out before the closing, so a visitor who leaves early still leaves a lead.
- Recap by default. Every visitor who gives an email gets one recap, without being asked, with Charlie copied. The main agent sends it, then writes the closing or booking confirmation.
- Booking. Times come only from the live calendar, and a call is confirmed only after the booking succeeds. If either step fails, the agent shares Charlie's booking-page link instead.
- Guardrails on every path. No prices, fees or committed dates in replies or emails, and nothing a visitor types is ever treated as coming from Charlie.
The same patterns, at contact-center scale
The same patterns decide whether contact-center AI works in production: clear intents, real actions in the systems behind them, clean handoffs to people, and guardrails that hold up when the model gets something wrong. If you're planning a voice or chat virtual agent, or rescuing one that's stalled, we can help you get it right.

