Hey everyone 👋 Bayram here, from Turkey. For the past months I've been building HepTakipte — not a chatbot, a customer communication platform. Think Intercom's shape, built for markets where business runs on WhatsApp. The agent One agent across WhatsApp, Instagram DM, email and a web widget — every channel shares the same contact record, lead history and knowledge base. It has 28 tools, and it doesn't just answer, it acts: - Reads the calendar, finds slots, books, reschedules, cancels, manages waitlists - Creates and enriches leads, scores them, flags the ones going cold - Schedules its own follow-ups - Transcribes voice notes, analyses images - Detects the customer's language from the first message and replies in it - Hands off to a human with a written summary of where the conversation stands Every write action goes through a three-step lifecycle: prepare → customer approval → execute. The agent can propose a booking, but nothing mutates until the customer explicitly says yes. An ambiguous reply doesn't count as consent. The platform behind it This is the part that makes it a platform instead of a bot. Multi-tenant from the ground up, 5-role RBAC, and an operations panel with: - Lead scoring with time decay and risk flags - Tickets with SLA policies - Campaigns and node-based automation flows - Knowledge base with pgvector semantic search - CSAT capture and a conversation funnel — automation rate, agent-involvement rate, resolution rate - Audit log and KVKK/GDPR data erasure flows Safety lives in code, not in the prompt Every agent reply is scanned for numbers and validated against the real service catalogue before it sends. Prices can't be invented — not because the prompt asks nicely, but because the code refuses. Same for handoff integrity: lead status can't jump to HANDOFF without an actual handoff record existing, so nothing can look transferred while sitting in nobody's queue. Stack: TypeScript, Fastify, Postgres + pgvector, Docker. 866 tests.