Tools, not free-form output
The model is given three functions with typed arguments and required fields. It chooses one or answers in text. The workflow, not the model, performs the database write, so an odd reply cannot become an odd query.
AI and automation / 2026
Adding a contact or logging a call means opening the CRM and typing. Someone between meetings puts it off, and the record is written late or not at all.
A voice note posted in Slack starts the workflow. It is transcribed with Whisper and checked before any model call is paid for. GPT-4o then receives the transcript, the user's last ten turns and three tool definitions, and either calls one tool or answers directly. A switch runs the matching Supabase action, a code step writes a one-sentence confirmation, ElevenLabs speaks it, and the audio is posted back to the channel. Each turn is saved so a follow-up such as "log a call with her" has context.

My part
Decisions
The model is given three functions with typed arguments and required fields. It chooses one or answers in text. The workflow, not the model, performs the database write, so an odd reply cannot become an odd query.
Slack retries an event if it does not get a quick response. The workflow acknowledges the event before transcription starts, so a slow model call does not cause a retry.
Near-silent audio can come back from Whisper as a stock phrase such as a video sign-off. The validation step stops those, along with empty and over-long notes, before any tokens are spent.
The spoken reply is assembled from the tool name and its arguments, for example the contact's name and company. It says exactly what was written, and it costs no extra model call.
Only the last ten turns for that user are replayed. That is enough to resolve "her" or "that company" in a follow-up, and it caps the size of every request.
Screens
SYSTEM ARCHITECTURE
Slack posts a file_shared event to the workflow's webhook. A first code step answers Slack's one-time URL check and ignores other event types.
The workflow replies to Slack straight away, then fetches the file details and downloads the audio with the bot's token.
Whisper transcribes the audio. A validation step rejects empty, very short, very long or likely mis-transcribed notes.
The user's last ten turns are loaded from Supabase and placed before the new transcript in the request.
GPT-4o is called with three tools. The response parser handles a tool call, a plain answer, or an error.
Built with
Links
More work
Gazelle's KitchenA WhatsApp business gatekeeper that qualifies genuine orders, enforces business and safety rules, contains off-topic or abusive conversations, and only surfaces the small set of cases that genuinely need the owner.PilotSellavie AIAn independent project: multi-tenant conversational-commerce software that connects social messaging with business knowledge, guarded AI, human handoff, orders, billing, analytics and operations.MaintainedAI Automation Control PlaneA runnable multi-tenant control plane for AI-assisted business workflows, combining FastAPI, Next.js, PostgreSQL, Redis, n8n, provider routing, human approval, idempotency, replay, cancellation, audit traces, and deterministic local demonstrations.Maintained