Jangada AIJangada AI

Example: Meeting assistant

Takes a meeting's audio (or video) and returns: the transcript, structured minutes (summary, decisions, action items with owners) generated by a Flow, and an executive summary in streaming. It combines transcription + pipeline + structured output + streaming.

Folder: pocs/reuniao-assistente · Suggested port: 8003

jangada features

  • Audio.from_bytes() + llm.atranscribe() — speech-to-text
  • Flow — sequential pipeline (clean transcript → structure minutes)
  • aparse(..., schema=Ata) in a Flow step — typed output
  • llm.astream() — token-by-token response

Core of the example

A Flow pipeline that cleans the transcript and produces typed minutes (app/routers/reuniao.py):

from jangada_ai import Flow

flow = (
    Flow(llm)
    .step("clean", "Rewrite the transcript fixing noise and organizing it by "
                   "speaker turns, without losing information:\n{{transcricao}}")
    .step("minutes", "From the organized transcript, produce the meeting minutes.\n{{clean}}",
          schema=Ata)
)
r = flow.run(transcricao=transcricao)
minutes = coerce(r.completions["minutes"], Ata)   # Pydantic object from the "minutes" step

Transcribing the upload (audio or video):

from jangada_ai import Audio

audio = Audio.from_bytes(data, mime, name=name)    # preserve the extension in name!
comp = await stt.atranscribe(audio, language="pt")

Streaming summary:

async def generate():
    async for token in llm.astream("Summarize this meeting in bullets:\n{{t}}", t=req.transcricao):
        yield token
return StreamingResponse(generate(), media_type="text/plain; charset=utf-8")

Things to watch

  • Whisper has a ~25 MB per-file cap. Pre-process the media in your backend (extract audio, mono/16 kHz with ffmpeg) — jangada is thin and doesn't bundle ffmpeg, it just forwards the bytes.
  • Preserve the extension in name (meeting.mp3): Whisper infers the container from the name.
  • Each Flow step becomes a {{ }} variable for the next; the last one comes out typed with schema=.

How to run

cd pocs/reuniao-assistente
pip install -r requirements.txt
uvicorn app.main:app --reload --port 8003   # http://localhost:8003/docs

See Audio transcription, Flows and Streaming.

On this page