Marathon Bot: Mindfulness Mentor
Forgiveness marathons are structured online courses where participants work through daily exercises over several weeks. The format is proven, but course owners faced a recurring problem: engagement dropped off after the first week. Participants would sign up, complete the opening modules, then go quiet. The course content was good. What was missing was a feedback loop — a way for participants to reflect in their own words and get a meaningful response back.
The problem
Course owners wanted richer engagement. The existing setup was a Telegram channel with daily prompts and a manual journaling workflow. Participants were supposed to write reflections, send them to a curator, and wait — sometimes days — for a response. The friction killed the habit. Most participants stopped journaling within ten days. Completion rates sat around the industry baseline for self-paced courses, which is to say, not great.
The constraint was specific: the reflection had to feel personal, not like filling out a form. Text journaling was too much friction for mobile users. Voice was natural — people speak faster than they type, and speaking feels more like the introspective exercise the course was designed around. But voice means transcription, and transcription means either humans (unscalable) or a speech-to-text pipeline that actually works in Russian.
The approach
We built a Telegram bot on aiogram that sits between the participant and the course workflow. The interaction model is simple: the participant sends a voice message. The bot transcribes it, sends the transcription to GPT-4o with a course-aware prompt, and returns a structured reflection response — acknowledgment, a question that pushes deeper, and a connection back to the current module.
The key design decisions:
- Whisper-cpp for transcription, not a cloud API. Course owners were sensitive about sending raw audio to third-party services. Whisper-cpp runs locally, transcribes Russian audio with high accuracy, and keeps audio processing on infrastructure the course controls.
- GPT-4o for feedback, not for content generation. The model never writes the course material. It reads the participant's reflection and responds within the frame the course authors defined. The prompt is course-aware — it knows which module the participant is on, what the exercise asked, and what a good reflection looks like. This keeps the feedback grounded instead of generic.
- State per participant. The bot tracks where each participant is in the course. Feedback references prior reflections when relevant, so the conversation builds on itself rather than restarting every day.
What was built
A Telegram bot (@Forgiveness_marathon_bot) built in Python with aiogram. The pipeline: voice message in → Whisper-cpp transcription → GPT-4o feedback with course context → response back to the participant. The bot maintains per-participant state, tracks module progress, and logs every interaction for the course curators to review.
The curator dashboard is minimal by design — curators see transcriptions, the bot's responses, and flags where the bot was uncertain or the participant seemed stuck. Curators step in when needed, but the bot handles the daily reflection loop on its own.
Results
- Completion rate up 11%. Participants who used the voice journaling bot were more likely to finish the course than those who used the text-only workflow. The voice format lowered the friction enough to keep the daily habit alive.
- Upsell roughly 1.6x. Participants who completed a marathon with the bot were more likely to enroll in the next one. The reflection loop created a sense of progress and personal investment that carried over.
- 400+ audio notes transcribed. The Whisper-cpp pipeline handled the full volume without cloud dependency. Transcription quality was high enough that GPT-4o could produce meaningful feedback without manual correction.
The takeaway
Engagement is not about more content. It is about a tighter feedback loop. Voice journaling worked because it removed friction from the input side and GPT-4o worked because it removed latency from the response side. The bot did not replace the course — it made the existing course exercises actually get done. Local transcription mattered for trust, and keeping the LLM inside a course-defined frame mattered for quality. The 11% completion lift and 1.6x upsell came from that combination, not from any single piece of the stack.
