Skip to content

dataflocks · Case study

Podcasts as Data

Turning a German economics & politics podcast into a private, queryable knowledge graph - running entirely on a laptop.

In 2024 I built the better part of a pipeline that turned a podcast into a queryable knowledge graph, then had to shelve it. In 2026 I rebuilt it to run entirely locally, with no data leaving the building. The following articles summarise some of the architecture and my findings, and what became newly possible in those two years.

What this first set covers

These chapters describe building the pipeline and the problems I hit doing it — the messy engineering of turning raw audio into a graph you can trust. The problems are the point; the pipeline chapters are here to give them their context, because a bug only makes sense once you can see the machine that produced it. The part it's all for — querying that graph and getting answers with citations back to who said what, when — is a second set of chapters, following shortly. Expect this first stretch to be fairly technical.

How to read this. Every chapter opens with the general picture and where it fits, in plain language, then gets more detailed and technical as it goes on. Read as far down each chapter as you like: it's written to stay useful whether you stop after the first two paragraphs or follow it all the way to the detail.


A bird's-eye view

A view of what changes between just running a naive pipeline and making sure everything actually works together, based on a 12-episode subset.

metric before after
statements 1,974 2,764 (+40%)
statements / chunk 4.0 5.6
entities in a relation 37% 49%
edgeless orphan entities 228 0
mangled entity names 134+ 0
conversational-bleed leakage n/a 0

12-episode proof-of-concept · 494 chunks · GLiNER2 entities + gemma-3-12b (MLX) relations + Neo4j, all local. A separate entity-resolution pass cleaned the full 352-episode core corpus (see chapter 6).


The chapters

  1. The premise - speech to graph with citations; the 2024→2026 revival.
  2. Going local - cloud prototype to one workstation; why it matters for EU clients.
  3. Use the structure you have - don't pay an AI to re-derive metadata you were handed with the feed.
  4. Who said what - the hard part isn't transcription, it's attribution.
  5. From talk to graph - a knowledge graph of facts, not chatter.
  6. The cleanup is the work - disambiguation and entity resolution, where a bigger model is the wrong move.
  7. Ideas are cheap - the plausible "fixes" that barely moved the number, and the silent defaults and misread symptoms that did.

More chapters — grounded answers over the graph, incremental updates, and the cost retrospective — are in preparation.


The code is private. This case study stands on specific numbers, artifacts, and the visible iteration, not the repo.

How this was made. The pipeline and the articles you're about to read were both created with AI assistance. Responsibility for both, and especially for the statements made in the articles, lies with me. I acknowledge and respect that many people, for ethical or other reasons, will not want to consume content that was created in part or wholly using LLMs. This is your notice. My intent is to inform, not deceive.

Close