Case study · Conversational & agentic AI

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.

The problem it solves

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.

How a conversation flows

One conversation, the right action

Website visitor
↓
AI agentUnderstands the need and picks 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.

Google Chat

Book a call

Reads his real calendar, offers three open times and books the one the visitor picks, with a Google Meet invite.

Live calendar

Program Pulse Check

Eight quick questions, then an instant branded one-page PDF: is the program alive, dead or dying?

Branded PDF

Answers & one‑pagers

Questions about services and experience, plus the right capability sheet for the conversation.

On brand
Every conversation ends with
A lead emailto Charlie, with a summary
A lead log row13 fields in Google Sheets
A visitor recapemailed if the visitor asks

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.

By the numbers

What it does

60 secto find out whether Charlie can join live
3real open times offered, booked without leaving the chat
8Pulse Check questions, about two minutes
13fields captured for every lead
0dead ends: every path has a fallback
Under the hood

The build

LayerWhat it doesBuilt with
ConversationUnderstands intent, follows playbooks, decides which tool to useVoiceflow AI agent with playbooks and tools
ActionsLive handoff, calendar booking, Pulse Check scoring and PDFsA small Node.js service on Google Cloud Run
PeopleHandoff card with an AI-written brief; Charlie replies right from Google ChatGoogle Chat, Gemini on Vertex AI
Systems of recordCalendar, email, lead logGoogle Calendar, Gmail, Google Sheets
Front doorEvery "Schedule" and "Pulse Check" button opens the agentSquarespace

See the full end-to-end architecture ↓

Design choices

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.
Lessons from the build

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.
For the technically curious

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 Squarespace

Website visitor

Any page, desktop or phone

UI

Pages & buttons

"Schedule a Consultation", "Discuss Your Project", "Take the Pulse Check" link to #schedule, #talk-to-ai, #pulse-check

CODE

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
UI

1Chat widget

Voiceflow web chat embedded on every page

FILES

One-pager PDFs

CCaaS & AI, PMO and this case study, hosted on the site

Conversation Voiceflow
LLM

2Main Agent

Global prompt: identity, tone, guardrails, pricing and urgency rules. Understands intent and decides which playbook, workflow or tool to use.

LLM

Knowledge base

Services, approach and experience content. Retrieved to ground answers, so it never invents clients or results.

LLM

Playbooks

Qualify & connect: what, when, who, then name and email, the live-chat offer, the lead email and sheet row, and the close
Program Pulse Check: asks the 8 questions as buttons and passes the exact answers to the scoring tool
FLOW

Workflow: Live chat with Charlie

Custom Handoff step with the full transcript. Returns to the playbook when Charlie leaves or can't join.

TOOLS

Tools

API tools: Get open times · Book consultation · Run pulse check
Integrations: Gmail Send email (lead to Charlie; recap to the visitor) · Google Sheets Add to sheet
LLM

7Transcripts & evaluations

Every conversation logged and scored for resolution. Used to find and fix failure modes.

Actions Google Cloud
CODE

Cloud Run service (Node.js)

One small container; every route checks its own credentials.

4Live handoff: takes Voiceflow's handoff, posts the card to Google Chat, relays messages both ways, applies business hours, busy and 60-second timeout rules
3Slots & booking: calendar rules (9–5 ET, 4-hour notice, 15-minute buffers), re-checks free/busy before booking, idempotent retries
5Pulse Check: matches answers by wording, scores out of 16, renders the branded PDF, issues signed 90-day links
LLM

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.

CONFIG

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

People & records Google Workspace
APP

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.

DATA

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

DATA

6Gmail

Lead summary to Charlie; the visitor's recap (signed by the AI assistant, with Charlie bcc'd)

DATA

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

LLM where a language model is used CODE deterministic logic: rules, scoring, validation request / action event or data coming back
Entry. A button on the site links to #schedule or #pulse-check. The footer script catches it and opens the chat widget, and for the Pulse Check it sends the first message for the visitor.
Understanding. The Main Agent (an LLM) reads the message against its global prompt, pulls facts from the knowledge base, and hands off to a playbook when the conversation calls for one.
Calendar. To book, the agent calls Get open times and Book consultation. The Cloud Run service applies Charlie's rules against Google Calendar free/busy, then creates the event with a Meet link.
Live handoff. The Live chat workflow hands off to the service. Gemini writes a brief, Google Chat shows Charlie a card, and if he takes it the messages relay both ways.
Pulse Check. The playbook asks eight questions with buttons and sends the exact answer wording to the service. Code scores it and returns a signed link to the branded PDF.
Follow-through. Native Voiceflow integrations email the lead to Charlie, add a row to the Google Sheet, and send the visitor a recap only if they ask.
Learning. Every conversation is logged and scored for resolution. That's how failure modes get found and fixed, like a model mis-encoding answers or a tool that wasn't reachable from the right agent.
Where the LLMs stop. Models handle language: understanding, conversation, choosing tools and summarizing. Code handles anything that has to be exactly right: scoring, availability, bookings, links and permissions.
How a conversation flows

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
Visitor opens the chatfrom a site button or link Main Agentanswers from the knowledge baseoffers one-pagers, never prices What do they need? Program Pulse Check8 questions, a PDF to keep Answer the questionand offer a one-pager Qualify & connectwhat, when, who, then name and email Wants a call? Live chat?offered once Live chat with Charliecard in Google Chat, 60 sskipped if off hours or busyCharlie types done to return Lead email and sheet rowto Charlie, logged in Google Sheets Recap email to the visitorsent once if they gave an email Closing messageoffers to book if no call yet Books a call? Charlie follows upwithin one business day Book the callopen times, Meet invite, Charlie DM'd program at riskjust questions yesno wants help or a call yes no no back to the AI yes

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.
Why it matters for your program

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.