I’m building a hybrid AI sales system (APOLLO) — pre-call intelligence briefs delivered as voice notes to reps in Slack before each dial.
Current design: Close CRM webhook fires → n8n pulls call scorecard from Google Sheets → assembles prompt → Claude API generates the brief text → need to convert that text to audio and deliver as a voice note in Slack.
Has anyone wired this chain? Specifically:
HTTP Request node to Claude API → ElevenLabs TTS → Slack audio attachment
Or a Gemini multimodal router handling the TTS conversion instead of ElevenLabs
Would love to see the node structure, especially how you handled the Slack audio file upload format.
Building in public — Chicago, June 2026.
— Earl McGhee | MCG<
Hi @Dr_EPOD Welcome!
I have created a similar project but that was on whatsapp/telegram. What i have used was:
Use Claude models for text generation those are awesome! And instead of getting yourself an official Claude credits consider going with Openrouter as it gets a variety of different models with credits.
11Labs for TTS no doubt they have the best tech you can either use HTTP node which i recommend it is cool to use and a lot more control, also you can install its node.
For slack set it as a trigger for file upload so that it always listens if there is some file uploaded.
Now my insights is that make sure you know how to play around with binary files as those files not easily move around every node so make sure your structure keeps all binaries differently for processing further, also the Gemini currently does not provide TTS i guess.
Major problem people face is not the generative or AI stuff, it is that the slack trigger would fire multiple times in every file user uploads so you have to implement a logic so that it does not process garbage files and only considers audio files.
The Slack audio part is what trips people up here — on the ElevenLabs HTTP Request node make sure you set response format to file so you actually get binary data back, then use the Slack node with the File Upload operation pointed at that binary property. Set the filename to something like brief.mp3 and Slack will render it as a playable audio message in the channel.