Version 2 broke in ways I didn’t expect, so here is what I changed and what it taught me. Although it's a second version, I have tried implementing in 3 more other ways and this is the final one I chose that is more optimized!! Hi all, Hope everyone is doing well!! What it does - Chats with property buyers on WhatsApp Qualifies them (budget, location, timeline, financing) Saves them to Supabase Matches properties Books site visits on Google Calendar Asks a human on Slack when it isn’t sure instead of guessing. The 7 requirements I set at the start, and where I am: 1. Save lead (insert, update, lookup): ✅ One upsert per WhatsApp number, no duplicates, saved record read on every message. 2. Warm/cold appointments + partial matches: ✅ Any lead can book if they ask. Partial matches get alternatives based on their top priority (priority_match). 3. Uncertain property questions go to a human: ✅ Pets? Home theatre? Hold this property? Price negotiation? Asks the team, doesn’t guess. 4. Persistent approval workflow: ✅ A separate workflow takes the team’s decision from Slack, stores it, and the agent replies in its own words. (24h WhatsApp window handling still to add.) 5. No match / vague requirements escalate: 🟡 Built, edge cases still in testing. 6. Booking verified before Slack is told: ✅ Event ID and confirmed time checked first. 7. Busy-calendar test: 🟡 Slot rechecked right before booking. Deliberate clash test is next. The biggest lesson: let the AI handle conversation and judgment, and let code handle anything that must be exactly right (verifying a booking, checking the calendar, building an alert).