Dev journey

Humble beginnings

Nucleate is the product of months of building, tuning, testing—and re-inventing.

Making an app that does transcription and summarization isn’t the hard part. It was the value of building project memory that took me ~1000h hours to realize

All told, Nucleate has been written (or rewritten) three times.

The first version was a backend-only set of scripts — transcribe audio, write a short summary, move on. It worked—but only for me. No UI, no flexibility, and no sense of how recordings connected to each other over time.

The second version was a Tkinter-based tray app and is where Nucleate started to feel like a product. Very early customization appeared with a few different user modes. Early “special notes” were introduced (the early version of today’s Insights). Tagging, config management, and basic AI engine flexibility followed.

This phase forced a lot of “responsible developer” growth—cleaner data handling, better config management, avoiding stale data, etc. At the time, I genuinely thought this version (then called Echo) might ship as a small, focused devlog and journaling-only tool. I brought it to the point of customizing animations, Tkinter dark mode (which was very painful, by the way), and individual styling of every single modal toplevel.

And yet, scope creep…

The third version was a full reset. I’d way outgrown Tkinter and decided that I’d short changed the app by stopping at “devlog tool.” The real bet was progressive compression — daily notes feeding weekly and monthly rollups that could finally answer questions a single summary never could. I migrated to PySide6 and rebranded the project from Echo to Nucleate. Migration require rework of every panel and quickly revealed that my “finished” app was just trenchcoat spaghetti code.

Only after this third iteration did the app really start to mature. Deep customization, a full suite of Insights, diarization, cross-platform support, automated setup flows, proper error handling, state management, in-app recording, Windows + macOS support, and far more flexibility than the original vision allowed. Content and customization blossomed.

It wasn’t really my intent, but Nucleate became the product of “completionist” compulsion and gamified code. I wanted it done and to feel like I pushed it all the way to an endpoint.

And now, here we are. Nucleate is entering beta—and for the first time, it feels ready to be shared.

Development stats

I like data! See the stats that went into Nucleate pre-release. Hover the chart—or the milestone labels below it—to explore key moments in the project timeline. For how the plot is built, see Building the Dev Stats Chart.

Accumulated development hours

  • 2025-04-16: Repo established for "LLM Scribe"
  • 2025-06-28: Development for general release begins under the "Echo" project name
  • 2025-09-01: Addition of multiple user modes and supporting system prompts
  • 2025-10-26: Rebranding under a product name, "Nucleate"
  • 2025-11-16: Branch for Tkinter → PySide6 conversion
  • 2025-12-21: Removed Tkinter legacy code from repo, consolidation
  • 2026-01-01: macOS (x86) first development round complete
  • 2026-02-16: macOS (Apple Silicon) first development round complete
  • 2026-02-25: Windows w/ CUDA, Windows w/ CPU, and macOS w/ Apple Silicon packaged successfully
  • 2026-03-13: Mac (Metal) packaged .dmg successfully
  • 2026-04-07: Alpha feedback implemented, beta solicitation
  • 2026-04-14: Mac notarization and signing
  • 2026-04-21: Beta solicitation closed—unfortunately zero users
  • 2026-05-09: Version updated to 1.0 for first packaged release
  • 2026-05-19: First time using agentic AI to help review code before beta
  • 2026-05-25: v1.0 release and publication to Gumroad
  • 2026-06-07: First download—$0 from Germany!
  • 2026-06-21: Version updated to 1.1 for packaged release
  • 2026-08-01: Public visibility release