A Pune management consultancy was losing leads at 9pm. Visitors filled the contact form, got an auto-reply, and 40% went cold before a human replied the next morning. We built a lead-qualifying website chatbot that asks four scoring questions and books hot leads straight into Calendly — no human in the loop. In month one it booked 31 after-hours meetings that would otherwise have waited until morning. This is the four-day build, with the qualification logic and the Calendly handoff code.
31
After-Hours Meetings Booked, Month 1
4 days
Build to Live on Their Site
4
Qualification Questions Before Booking
## The Answer in 60 Words
You build a chat widget that asks four qualifying questions — budget, timeline, company size, problem — scores the answers, and only offers a Calendly booking to leads above a threshold. Low-score leads get a resource link and an email capture instead. The bot runs on a small Node API plus an LLM for intent, and embeds Calendly's inline widget for the actual booking.
## Why This Matters Now (June 2025)
Indian B2B buyers increasingly research and decide outside business hours. A consultancy or agency that only responds 10am–7pm leaks pipeline every evening and weekend. Calendly's developer portal now ships a [Scheduling API](https://developer.calendly.com/schedule-events-with-ai-agents) built specifically for AI assistants and chatbots to suggest times and book on a user's behalf. That closes the old gap where a bot could collect a lead but not actually schedule the meeting. The result: a visitor at 9pm books a 10am slot themselves, and your calendar fills while you sleep.
## How Should the Bot Qualify a Lead?
A qualifying bot scores a visitor on a few firmographic and intent signals, then routes them. The mistake most teams make is asking too much — every extra question drops completion. Four questions is the sweet spot we landed on.
💰
Budget Band
"What budget range are you working with?" Three buttons, no free text. Below-floor budgets route to a resource link, not a booking.
⏱️
Timeline
"When do you want to start?" This month scores high; "just exploring" scores low and gets a newsletter opt-in instead of a slot.
🏢
Company Size
"How many people in your team?" A proxy for fit. The Pune firm only sells to 20+ person companies, so this gates hard.
🎯
Problem Statement
One free-text box. An LLM classifies it into a service category, which pre-fills the Calendly event type and the sales note.
## The Scoring Logic (Copy This)
Keep scoring transparent and tunable. We used a simple additive model the client could adjust in a config file without redeploying.
| Signal | High (3 pts) | Medium (2 pts) | Low (1 pt) |
| Budget | Above ₹2L | ₹50k–₹2L | Under ₹50k |
| Timeline | This month | This quarter | Just exploring |
| Company size | 20+ people | 5–19 people | Under 5 |
| Problem clarity | Specific + in-scope | Vague but relevant | Out of scope |
A lead scoring 9 or above (out of 12) gets the Calendly widget. Below 9, the bot offers a relevant guide and captures email for a slower nurture sequence. This single threshold is the difference between a calendar full of qualified calls and one full of tyre-kickers. As
Hrishikesh, our CTO, says about every bot we ship: the routing logic is the product, the chat UI is just the wrapper.
## What You'll Need
- A Calendly account with API access (paid tier for the Scheduling API)
- A Node.js backend (we used Node 20 + Express) for scoring and the LLM call
- An LLM API key — we used Claude Haiku for cheap, fast intent classification
- A chat widget — a 200-line React component or an open-source widget
- Your Calendly event-type URI (pulled once from the API)
- A CRM or Google Sheet endpoint to log every lead, booked or not
## The 4-Day Build
Here is the day-by-day sequence we ran for the Pune consultancy. Each day ends with something testable.
1
Day 1: Chat flow + scoring config
Map the four-question flow as a state machine. Put the scoring weights in a config.json the client can edit. Verify: run the flow in the terminal, feed sample answers, confirm scores compute correctly for high, medium, and low leads.
2
Day 2: LLM intent classification
Send the free-text problem to Claude Haiku with a prompt that returns one of your service categories plus an in-scope/out-of-scope flag as JSON. Verify: 20 sample problem statements classify correctly; log any the model gets wrong and tighten the prompt.
3
Day 3: Calendly handoff
For high-score leads, embed Calendly's inline widget pre-filled with name, email, and the matched event type. The public API reads availability and event types; the embed handles the actual booking flow. Verify: book a real test slot end to end and confirm it lands on the calendar.
4
Day 4: CRM sync + after-hours test
Log every conversation to the CRM with score, transcript, and booking status. Add a Calendly webhook so a booked meeting creates a CRM deal. Verify: run the full flow at 9pm with the office closed and confirm a deal appears with no human touch.
The Calendly embed vs API distinction trips people up. Calendly's public read API gives you event types and availability, but it does not run the booking UI. For visitor self-booking, you embed the inline widget. The Scheduling API is for cases where your bot books on the user's behalf — useful for voice agents, less so for a website widget where the visitor is right there to pick a slot.
## The Calendly Handoff in Practice
Once a lead scores 9+, the bot swaps the chat panel for Calendly's inline embed, pre-filled from the conversation. The embed script is a few lines.
| Approach | What it does | Best for |
| Inline embed | Renders Calendly's booking UI inside your widget | Website visitor self-booking — our choice here |
| Pop-up widget | Opens booking in an overlay on click | Sites where chat stays minimised |
| Single-use scheduling link (API) | One-time link, expires after 90 days if unused | Email or SMS follow-up to a captured lead |
| Scheduling API booking | Bot books a slot on the user's behalf | Voice agents and fully automated assistants |
We pre-fill the embed with the visitor's name and email so they do not retype anything, and pass the matched service category as a UTM-style parameter so the sales team sees context before the call. For after-hours leads that scored just under the threshold, we generate a single-use scheduling link and email it — those links expire after 90 days, which is plenty for a nurture window.
## Common Mistakes (When This Goes Wrong)
We have shipped enough of these to know the failure modes. Four to avoid.
First, asking too many questions. Every question past four drops completion sharply. If you need ten data points, collect six on the call, not in the widget. The bot's job is to qualify and book, not to run a full discovery.
Second, no out-of-scope path. If every visitor gets offered a slot, your calendar fills with mismatched calls and your sales team stops trusting the bot. The low-score branch — resource link plus email capture — is mandatory, not optional.
Third, a brittle LLM prompt. If the intent classifier returns free-form text instead of strict JSON, your backend breaks on edge cases. Constrain the output to a fixed enum and validate it. Reject and retry once on malformed responses.
Fourth, no human fallback. Some visitors will type "I just want to talk to a person." Detect that phrase and offer a direct booking or a callback request immediately. Forcing a confused visitor through scoring questions is how you lose a good lead.
Do not let the bot promise things you can't honour. If it books a 10am slot, someone must show up at 10am. Wire the Calendly webhook to your team's real calendar with buffer rules, or you will double-book and burn the trust the bot just earned.
## When NOT to Build This
A qualifying bot is wrong for some businesses. If your sales motion needs a human to build rapport before any meeting — high-ticket enterprise deals, sensitive advisory — a bot that gates the calendar can feel cold and cost you deals. If your monthly lead volume is under roughly 50, the build cost may not pay back; a shared inbox and fast human replies work fine at that scale. And if your offering is genuinely complex to qualify, four questions cannot capture it, and a poorly-scoped bot books the wrong people. Be honest about which case you are in.
## Real Example: The Pune Consultancy
A Pune-based management consultancy — 24 staff, selling 3–6 month engagements to mid-size manufacturers — came to us in May 2025. Their problem was timing, not volume: plenty of evening and weekend form fills, but a morning-only response window meant cold leads by the time anyone called.
😴
Before — 40% of after-hours form fills went cold by morning
🤖
Built — 4-question qualifier with Calendly self-booking
📅
Month 1 — 31 after-hours meetings booked with no human
📊
Bonus — sales saw context on every call before joining
The same conversational stack powers our voice work. On
TalkDrill, our in-house English-speaking app, we run real-time intent handling on the same Node + LLM pattern used here for the qualifier. We have built related lead-capture and CRM-sync flows for clients like
Radiant Finance, and the booking logic pairs naturally with our
CRM development work. If you would rather automate the whole funnel, our
AI and automation team ships these end to end. For a deeper chatbot pattern, see our guide on building a
RAG support bot with Claude and pgvector.
## Frequently Asked Questions
### Can a chatbot actually book a meeting into Calendly automatically?
Yes. Calendly's inline embed lets a visitor self-book inside the chat widget, and the Scheduling API lets a bot book on a user's behalf. For website widgets we use the embed — the visitor is present to pick a slot — with the API reading availability and event types.
### How many qualification questions should the bot ask?
Four is our tested sweet spot. Each question beyond four meaningfully drops completion. Ask budget, timeline, company size, and a problem statement; collect any remaining detail on the call itself rather than in the widget.
### What does a build like this cost in India?
The Pune project ran roughly ₹68,000 over four working days, including the scoring logic, LLM intent classification, Calendly handoff, and CRM sync. Costs vary with how many integrations and event types you need, but most fit a ₹55k–₹95k band.
### Which LLM should I use for intent classification?
We use Claude Haiku for cheap, fast classification of the free-text problem into a service category. The key is constraining output to strict JSON with a fixed category enum, then validating it server-side and retrying once on malformed responses.
### What happens to leads that score too low to book?
They get a relevant resource link and an email-capture for a slower nurture sequence, often with a single-use Calendly scheduling link by email. Those links expire after 90 days if unused. Never offer every visitor a slot — it floods your calendar with poor-fit calls.
### Do I need a paid Calendly plan?
For basic inline embedding, a standard paid plan works. The Scheduling API — needed if you want a bot to book on a user's behalf rather than via the embed — requires API access on Calendly's paid tiers. Check current pricing on Calendly's developer portal.
### How do I stop the bot from double-booking my calendar?
Wire Calendly's webhook to your team's real calendar and set buffer rules and availability limits in Calendly itself. The embed reads live availability, so as long as your Calendly calendar reflects reality, the bot only offers open slots.
Want a lead-qualifying bot live on your site this month?
We build qualifying website chatbots with Calendly booking and CRM sync for Indian SMBs in about 4 working days. Typical project: ₹55k–₹95k. Suitable if you get after-hours leads and lose them to slow replies. First call is technical, with the engineer who'd lead your build.
Book a 20-min Call