← Back to Portfolio

Saraswati

Saraswati turns voice memos into searchable notes on my own server. It transcribes audio locally, stores the results in SQLite, and can run configurable LLM steps for summaries or structured JSON.

View on GitHub

About the Project

Saraswati runs the complete note pipeline on a self-hosted server: audio is transcribed locally, the result is stored in SQLite, and optional LLM stages can create summaries or structured JSON. The replica below uses canned samples and contacts no server.

Demo:

Interactive demo

A self-contained replica of the Saraswati UI. Everything runs in this page: no audio is uploaded, no server is contacted, and the transcripts and model outputs below are canned samples. The controls behave like the real app so you can see how the pipeline is configured and what it produces.

    Pipeline Control

    Manually wake the horizontal pipeline. Processes pending, in-progress, and due retry files through ASR and the LLM stages of the active preset.

    1. Click Trigger Pipeline to run the sample files through ASR and the LLM stages.
    2. Watch progress update live under Queues and File Status below.
    3. Open the Entries tab when it finishes to browse the generated results.
    4. Change the preset under Settings and run again to get different outputs.

    Upload Audio

    In the real app this accepts audio and video files or whole folders, hashes each one to skip duplicates, and drains the queue automatically. Here the two sample files are already queued, so the picker is decorative.

    Drag and drop files or folders here, or:

    Queues

    One file occupies the pipeline at a time; the rest wait in FIFO order. The real app pushes these updates over server-sent events, which is why there is no polling interval.

    File Status

    Every file carries a status and the stage it is currently in. Once a row reaches done you can click it to jump straight to its entry.