Inspiration

Local government matters, but the format does not always meet people where they are. Council, commission, and board meetings often run for hours, and the recordings can feel dry or hard to follow. Many residents still want to understand budgets, zoning, public comment, and votes—they are just short on time and attention. Lil Sebastian exists to close that gap: turn the full meeting into something people can actually finish on a walk or a commute, without losing the civic thread.

What it does

Lil Sebastian is a podcast-style experience built from official meeting video. Government workers upload a recording through the website. The pipeline extracts audio, transcribes it, uses a language model to write a structured multi-character “show” script (narrator plus recurring co-hosts), synthesizes voiced audio, and publishes MP3 episodes to cloud storage backed by Supabase. Citizens use the mobile app or website to browse by location, search for their town, hear recent meetings, and keep track of what they have played—so staying informed feels closer to tuning into a short episode than homework.

How we built it

  • Processing pipeline (Python): Meeting video is converted to M4A with ffmpeg; scripting uses libraries such as elevenlabs, pydub, and supabase clients (see requirements.txt).
  • AI & audio: Transcription and multi-voice TTS lean on ElevenLabs; script generation uses Google Gemini to shape the transcript into episodic dialogue with a fixed cast (narrator, co-hosts, guest).
  • Backend & assets: Finished audio lands in Supabase Storage; metadata and access patterns are shaped with SQL/policy work in supabase_sql/ (bucket setup, episodes, grants, etc.).
  • Citizen clients: Listeners use an Expo / React Native app (app/) with Supabase for data and expo-av for playback, plus AsyncStorage for local state like recently played episodes.
  • Staff & web: The website (website/) is a lightweight HTML/CSS/JS front end for uploads and discovery, configured via config.js.

Challenges we ran into

  • Balancing fidelity (votes, motions, substantive debate) with tone (funny, sitcom-energy) so the recap stays trustworthy and usable, not misleading.
  • Long-form audio: chunking transcripts, pacing the script, and managing API/runtime cost across transcription, generation, and TTS.
  • End-to-end delivery: reliable uploads, storage paths, MIME types, signed or policy-gated playback, and a smooth listener experience on mobile networks and background audio.
  • Product surface area: two clients (app + web), two audiences (staff vs public), and keeping configuration (keys, buckets, cities/locations data) sane across environments.

Accomplishments that we're proud of

  • A clear concept-to-listener arc: upload → processed episode → playable in-app or on the web.
  • Recurring cast and narrator-driven structure so episodes feel consistent rather than one-off gag reads.
  • A stack that separates concerns: Python for heavy media + AI orchestration, Supabase for storage and backing data, Expo for cross-platform listening.
  • Grounding civic content in real meeting audio rather than skipping primary sources altogether.

What we learned

  • Local governance content needs careful summarization norms: cite what happened, distinguish summary from verbatim, and avoid inventing procedural outcomes.
  • Generative tooling shines when constrained—fixed roles, prompts, and review hooks beat open-ended “make it funny” for repeatable quality.
  • Developer experience pays off early: scripted conversion steps, typed app code, and explicit SQL migrations/policies make the system easier to hand off or demo.

What's next for Lil Sebastian

  • Stronger human-in-the-loop review for sensitive items (legal notices, contentious votes).
  • RSS / podcast directories or shareable links so episodes meet listeners in their usual podcast apps.
  • Accessibility: transcripts paired with audio, clearer chapter markers, and optional straightforward “plain summary” mode alongside the comedic cut.
  • Operational polish: job status for uploads, retries, cost dashboards, and templates for more meeting types (school board, water district, etc.).

Built With

Share this project:

Updates