AI Website Concierge: Answering Visitors, Qualifying Leads and Booking Calls

Case study

AI Website Concierge: Answering Visitors, Qualifying Leads and Booking Calls

All case studies

I built the AI concierge that runs on my own website, vaiibe.com. It answers visitors in French, English and Arabic, by text or by voice, using live data from the site instead of a frozen script. When a conversation turns into a project, it captures the lead, alerts me right away and books a call in my calendar.

24/7
Availability
3
Languages, text and voice
13
Tools reading live site data
6
Slots proposed per booking request

The problem

My clients are in Tunisia, Europe and North America, which means visitors arrive on my site at any hour, often when I cannot answer. A classic portfolio site handles that badly:

  • Questions go unanswered. A visitor who wants to know whether I handle a specific stack or budget has to fill a form and wait.
  • Warm leads cool down. The longer the gap between interest and reply, the lower the chance of a conversation.
  • Typical chatbots go stale. They answer from a script written once, so the moment a service or a project changes, the bot says something outdated, or worse, invents an answer.
  • Booking is a separate journey. Moving from chat to a calendar page loses people along the way.

The approach

I built the concierge as an agent connected to the site's own data, with clear rules about when it may act.

Answers from live data, not a frozen script

The assistant has thirteen tools that read the same database as the website: projects, services, skills, experience, education, blog posts, FAQ, methodology and quote builder information. When I update a service in my admin panel, the concierge knows it on the next question, with no retraining and no prompt to rewrite.

Text and voice share one brain

The text chat is a Genkit flow and the voice mode uses the Gemini Live API. Both read the same system prompt and the same tool handlers from a single configuration, so the two modes can never drift apart. The voice connection opens only when a visitor presses the talk button, and the browser receives a short lived token minted by the server, never the API key itself.

From conversation to qualified lead

The lead capture tool only runs once the visitor has confirmed three things: a name, a contact (email or WhatsApp) and a description of the project. The assistant is instructed never to invent those values. As soon as a lead is saved, I receive an alert with the budget, timeline and urgency signals gathered during the chat.

Booking without leaving the chat

The concierge reads my real availability from Cal.com, proposes up to six slots in plain language and books the meeting directly. If the calendar is unreachable, it falls back to my public booking link instead of failing silently.

Outcome

The concierge is live on every page of vaiibe.com, in three languages, around the clock.

  • Visitors get answers at any hour, grounded in the current content of the site rather than an outdated script.
  • Leads reach me immediately, with the context of the conversation instead of a bare form submission.
  • Calls are booked inside the chat, without sending the visitor to another page.
  • Each conversation is saved per session, so I read the full context before the call.

The same pattern fits any business with a service catalogue, recurring questions and a booking step: the tools change, the architecture stays. The concierge is part of the VAIIBE project.

Tech stack

Genkit
Gemini
Gemini Live API
Next.js
Firestore
Cal.com
TypeScript

Related services