Now building: Supercenter

Open-Sourcing Resonant: What I Learned Building a Local-First Voice App

6 min read

I sent this note to all Resonant users today.


Hi all,

Big news today.

I just open-sourced Resonant's core into github.com/tohmsc/resonant-community with the help of my good friends Fable 5 and GPT 5.6 Sol.

That means Resonant is now yours to freely modify and configure as you like, and available to the public in all forms.

From February to May of this year, I worked on this project to create a privacy-focused alternative that was clean, innovative on UX, blazing fast, and local. For a time, Resonant was 3x faster than market leaders on short utterances, and it is much better than Mac's local service.

You may have noticed a slowdown of updates in May.

What I do now: I shifted my focus to a new chapter — building agentic systems and leading AI transformation for scale-ups, PE/VC funds, and their portfolio companies under the specialtytokens.com brand. The demand has been incredible.

To Resonant

The biggest win: in a few months of work, Resonant has been used almost 20M times in its current state. A huge accomplishment I am proud of.

I received countless pieces of feedback from users that this was exactly what they wanted and needed. Executives and privacy-focused professionals in tech who I respect, practitioners in medicine, and professionals in finance all reached out weekly to tell me how much it had changed their working lives.

My ambition was to build a beautifully branded, local-first speech-to-text service that would remain free for most users. It would keep dictation, meeting transcripts, and accessibility data private, while making that context available through a local MCP. The user could then connect their agents to identify recurring patterns and turn them into reusable skills, snippets, workflows, and intent signals — eventually becoming the foundation for a voice-controlled agent platform. The enterprise version would allow larger organizations to manage and apply that shared voice context across the entire company.

I've moved on from that.

I learned an enormous amount about marketing (distribution), local inference engines, Swift development, and unifying multiple services across this project.

Infrastructure

  • I knew that OSes and computer manufacturers will bake this functionality in natively, maybe with less control, so there is some sort of timeline.
  • Groq is king for inference processing speed on cheap open LLMs. I was able to average around 400-500ms for cleaned-up dictations using instruct models from Llama, and in some cases GPT-OSS, due to speed (tokens per second).
  • I believed that the inference spend of competitors for STT processing and the 7-9 LLM passes on dictations in less than 700ms would become my advertising budget/opportunity, since mine ran locally.
  • But running so much inference for dictation cleanups locally on weak Macs for consumers is too expensive still. The hardware isn't there yet and it takes too long. Many open models still openly hallucinate.
  • You can only do so much deterministic cleanup — regex, formatting, etc. It's just not "smart" enough for a consumer-scale product. People are picky. AI to them means intelligence, not a transcription model. AI is AI. Because there is something AI (an audio model), it should "know them" and personalize. They don't think about context or memory.
  • Your foundation matters. I became aware of the Fluid Inference team on my third rewrite (research matters). They are GOATs with their library, and it transformed my build to be fast and elegant.
  • Voice is a unique challenge and it's all about testing. A good voice system can hear you, manage microphones, format text, run locally, manage multiple models for audio and text (across languages), understand what you meant to say — not what you said — fix corrections, remember names properly, extract data from your screen, insert into text fields, map keys, and the list goes on. I wish I had learned how to build a proper harness for audio features and lifecycle testing.

Positioning

  • I took a stand to be an alternative that is local, privacy-first, and agent-native. That worked quite well.
  • I also wanted the free tier to be unlimited on dictations. This also worked well, as everyone else limited you to 2,000-5,000 words per week. Free and local? That directly attacked the primary conversion play and usage cap of larger players. Worked excellently.
  • There is huge opportunity outside of the English-speaking market for voice-first AI. If a market has a language niche, be quick to support it. Danish, Arabic, and Chinese were some of my biggest requests. I used open models from Qwen, Cohere, and NVIDIA, which had good breadth but not always depth on language data for smaller languages. This did create unique localized marketing opportunities, if your eyes are open to behavior per region (typing, talking, transcribing).
  • Opportunities come up when you least expect them. I was doing dictation, but a user told me they wanted meeting transcripts, and then Granola fumbled the bag. They were in the tech news for training models on users without their consent, so I jumped into the meeting transcription pool as well to cover all voice data and let people know it's not possible to train on you. That strengthened my position on privacy.
  • Not to toot my own horn, but after doing this, my agents kept an eye on my competitors and noticed they made these stances more prominent.
  • Positioning matters. Be first, be better, be louder. I'm amazed at the engineering marvel Wispr built, and I was always held against their standard. Be different.

Distribution & Growth

  • In total, I made maybe 30 posts across TikTok, Reddit, Instagram, and HN to kick-start this project. After some time it began to snowball into 5-10 signups per day and accelerating, with launch day being over 300 voluntary testers. General recommendations would drive ~40 signups. Authentic referrals are a gold mine. I could have made 500 posts of my own, but I recognized you have to balance your "personal brand" with your project. It's a fine line.
  • Reddit was great for SEO/AEO/GEO, whatever you want to call it. I would make genuine posts — bad, lazy posts — and then edit them later to say "edit: I found Resonant instead." I also submitted my link and left comments everywhere for backlinks in relatable threads.
  • Podcasts equal huge conversion. Did you ever wonder why founders do podcast circuits? It's because people buy like crazy after watching you on one of these. And so many people write to you with their thoughts, support, opportunities, etc.
  • Social media kind of helped. I have around 75k followers across platforms (50k at the time of posting). If you share the journey, it does work.
  • Make a public changelog and update people often. Just make it a semi-anonymized (technically) account during the release process. I made a multi-repo setup including the website for agents to operate on and share updates, so I didn't always have to write them.
  • Even small features are great social posts for demos. You'd be surprised by how many signups a new feature can drive from a 7-second video.
  • Programmatic alternative pages and long-tail pages drive a lot of search traffic. The other thing that worked was making smaller web tool pages on my site. If there are trends coming that you know about (running local models for specialized languages), prepare your SEO in advance.
  • If you post on X about success, copycats will come for you. Young, hungry, well-funded cats. Perhaps even doing 1:1 copies.

Community

  • Discord is a great resource for feedback. Build that FAQ and redirect people — it saves you a lot of headaches and explanation. People will help each other.
  • Having email drip campaigns to educate, automate asking for feedback, and get people back on really helped keep the product in shape.
  • Videos are best for onboarding to walk people through side by side. Mobile apps do this well with PiP, and OpenAI does a great job of getting Codex installed using drag and drop. UX around accessibility is so underappreciated.

Product & UX

  • First activation is everything. If you don't get it into their behavior, they won't switch. I made various onboarding sequences, and I am sure you remember how bad they were. So buggy and so, so, so bad.
  • With AI, it's all a UX game to get people to enjoy changing their behavior. I spent so much time making it so fast (local inference), so good (dictionary, snippets, reliability, etc.), and so carefree that you don't even edit what you write (above a 95% success rate with no editing of the text).
  • Usage stat: usage dies on weekends and peaks mid-week. I found that entertaining. This is dictations per day per user.

Development

  • Dogfood like a mofo. I was lucky that this tool was something I could use all day, every day. It made it really easy to make it good.
  • Bugs pile up fast. There are still bugs. I am sorry, I'm trying.
  • Editing a Mac app is a pain. You have to rebuild it and then test out all these tiny voice features somehow. My testing was vibes for a while, and when confident, users. Voice and input data is very hard to test and refine for a product like this.

Closing

  • Thanks for joining on this journey.
  • Admission: it was 100% written by agents, but with my guidance.
  • I will still be updating it, just less frequently.

The source is available under the MIT License: github.com/tohmsc/resonant-community

If you try it, I'd love feedback, issues, or contributions. And if you want to support the project, starring the repository helps. Thank you for your trust.

Best,

Thomas