First in a series of retrospectives — one per product I ship. Kicking it off with VNotes, a free, open-source desktop app for taking timestamped, snapshot-rich notes from videos.

The one-month scoreboard

Before the lessons, the honest numbers from roughly the first month:

  • 40 pre-registration emails collected before I paused collection
  • 40+ installs in the first week of the v0.0.1 release
  • 4 people in the Discord
  • ~100 followers after posting consistently for about two months

Not viral. But real users, real installs, and real feedback — enough to learn a lot from. Here’s what I’d tell myself if I started over.

Product & validation

Figure out distribution before you write code

My biggest lesson: the way you ship and get the app into people’s hands should be figured out during the proof-of-concept phase — not in week four. I left packaging, code signing, and notarization until the end, and it turned into a multi-day scramble across three operating systems. If I’d known the distribution shape early, I’d have made different architecture calls sooner.

Talk to your actual users, not just yourself

VNotes started from my pain as a video learner. That’s a fine seed, but a sample size of one isn’t validation. My ICP is really students, and I never set up a dedicated place to talk to them regularly. Next time I’d find a community to engage before and during the build, not after.

Don’t over-invest in exploration

When I researched open-source models and alternative approaches, I went deep on every single option — WebGPU, TransformerJS, Gemini, Ollama. It was thorough, but slow, and most of that depth never shipped. Time-box experiments and decide fast.

Distribution & marketing

Reddit beat everything else

I tried LinkedIn, X, TikTok, and Reddit. The winner by a distance was Reddit — one post in r/ProductivityApps got me about six pre-registers in a single day, and r/saas threads (the ones where people ask you to share your project) were consistently the best source of early users. I wish I’d started there instead of treating it as an afterthought.

Put the signup where people land

My pre-registration CTA wasn’t the first thing visitors saw. It should be. If someone lands and likes the idea, don’t make them scroll to give you their email.

Don’t build what you can rent

I started writing my own script to email pre-registered users. That was a waste — services like resend.com do it better for free. Same story with Google Forms for collecting signups: it worked, but it wasn’t the right tool, and I pivoted away from it. Rent the boring parts, build the differentiated parts.

Engineering

Pick boring, reversible tech for an MVP

I stuck with plain JSON files over SQLite because the app is read-heavy and rarely runs complex queries. SQLite (with encryption) is on the post-MVP list, but for shipping fast, JSON was the right, reversible call. Don’t over-engineer the storage layer before you have users.

Let constraints pick your platform

VNotes is a desktop app for one concrete reason: the snapshot feature. Browsers taint any canvas you draw a cross-origin YouTube frame onto, so canvas.toDataURL() throws a security error — you physically can’t grab pixels from an embedded video on the web. That single constraint decided the whole platform. (Related lesson: base64-encoding video into the renderer bloated everything and lagged; switching to Uint8Array + object URLs fixed it.)

Question the whole shape of the thing

Electron bundles Chromium, which makes the app large — Tauri (system webview) is worth evaluating. And the bigger question I should have asked earlier: do people even want this as a desktop app? A piece of advice that stuck with me: consider forking an existing open-source repo and building on top of it, the way Cursor built on VSCode. You don’t always need to start from zero.

The lesson nobody warns you about: yourself

During the MVP push I ran on 4–5 hours of sleep nearly every weekday. It’s not a flex — it’s a bug. Two things I’d hold onto:

  • Consistency is king. Move the product forward even a little every day. Momentum compounds.
  • Learn when to rest. Burnout doesn’t ship faster; it just ships worse.

And a small operational one: standardize your build-log format from day one. Mine drifted, which made bookkeeping harder later.

What’s next for VNotes

Post-MVP, I’m exploring integrations (Notion, Obsidian), lighter packaging, open-source models to remove the API-cost element entirely, and a hard look at whether desktop is even the right home. More on that in future entries.