The problem

Processing a long recording inside an API request ties the caller to the slowest stage. Splitting, transcription, and summarization have different compute needs and failure modes.

The approach

  1. Let FastAPI accept a job, return its ID, and report progress. Keep queues, job state, and results in Redis.
  2. Separate the Splitter, Transcriber, and Summarizer into independent workers using Whisper and Gemini.
  3. Use idempotent retries so a failed task can be retried without requiring the client to restart the whole workflow.

How it fits together

FastAPI job
Redis queue
Split
Whisper transcription
Gemini summary

The result

Reduced turnaround for a one-hour meeting from 45–75 minutes to 7–11 minutes.

The engineering decision

The API remains responsive while worker capacity can scale independently. The queue and job-state model become critical infrastructure and must preserve retry semantics.