I am Adi, a founder based in Melbourne, Australia. This is the honest story of launching Freebird AI.
Two weeks ago, I dropped a comment in a Hacker News thread about what I was building. Not a launch post. Not a Show HN. Just a few sentences in a monthly "What are you working on?" thread.
By the next morning, I had users in Paris, Mumbai, Frankfurt, Seoul, Singapore and Cape Town.
Here's what happened, what broke, and what I learned.
The numbers (14 days, zero paid marketing)
444 page views
403 acquisitions,106 active installs
90.77% page-to-install conversion rate
10 countries and 12 cities with active users
$0 in advertising

That conversion rate surprised me. It means the people who find the listing almost always install it. Discovery is the bottleneck - not the product.
But the install number hides something important: most of those users hit errors on their very first message. More on that shortly.
Why I built it
I'm an architect and researcher by training, and I lecture in construction at a University in Melbourne, Australia.
A few years ago, I started writing code seriously. And like every developer in 2024, I started relying on AI coding assistants.
The problem was Copilot. It's genuinely good - until you hit your monthly high-speed limit and suddenly you're on a degraded model that can barely keep up with a simple refactor. Cursor was the obvious alternative, but at $20/month as an additional cost, it felt steep, and it required migrating my entire workflow.
So I built the thing I actually wanted: an AI coding assistant that works the second you install it, gives you 20 free advanced edits every day via Gemini Flash, and never blocks you.
That's Freebird AI.
The first spike — and why the product was broken
The HN comment drove a real spike. The VS Code Marketplace showed downloads climbing from Paris, Mumbai, Seoul, and Cape Town - all organic, all within 24 hours.
Then I looked at the telemetry.
I'd built anonymous event tracking from day one — no PII, just counts. Extension activated, message sent, api error. Here's what the first few days showed:
Jun 19: extension_activated: 4, api_error: 3, message_sent: 3
Jun 20: extension_activated: 5, api_error: 6, message_sent: 7
Jun 21: extension_activated: 20, api_error: 5, message_sent: 5
Every single day, api_error was nearly 1:1 with message_sent. Users were hitting errors on almost every interaction.
The root cause: I had set Ollama as the default backend, with an auto-install routine that was supposed to download and install Ollama silently on first run. On paper, clever. In practice, it failed on almost every machine - blocked by macOS Gatekeeper, Windows UAC, and corporate firewalls. The silent failure just threw an api_error with no useful message.
Users in Seoul and Mumbai installed Freebird, tried to use it, got an error, and uninstalled. I didn't know until I looked at the data.
The Stripe problem nobody told me about
Someone in Paris was clicking the upgrade button every single day for three days. Never converted.
When I finally checked Stripe, I found the reason: the payment link was showing A$9 instead of $6 USD.
The currency mismatch was stopping people at the last step. A US or European developer seeing "A$9" when they expected "$6" closes the tab. I would never have known without looking at Stripe directly.
Pricing friction kills conversion silently.
The fix sprint
I spent a day fixing everything:
Changed the default backend from Ollama to Gemini Flash - new installs now work immediately with zero setup
Built a proper fallback chain - Gemini Flash → local Ollama → Gemini fallback endpoint
Fixed Stripe - new $6 USD payment link, updated all references
Upgraded Gemini from free to paid tier (rate limits were hitting with concurrent global users)
Fixed a deprecated model name - Google silently deprecated gemini-2.0-flash mid-session. Users burned through their entire daily quota, hitting 502 errors before I caught it 40 minutes later. This is what convinced me to set up UptimeRobot monitoring.
Built a quota wall — instead of a generic error when free edits run out, users now see a proper upgrade prompt with their session stats and a personal message from me
After the fixes:
Jun 24: extension_activated: 33, message_sent: 4, cloud_edit_used: 4, api_error: 0
Zero api_errors. First clean day since launch.
What the conversion funnel actually looks like
Here's what surprised me most when I dug into the data:
81.93% page-to-install is strong. It means the README and listing are doing their job.
But only 4 messages sent across 33 sessions is a problem. That's a 12% activation rate - meaning 88% of users who install the extension don't send a single message.
This is the blank canvas problem. Users open the extension, see an empty chat input, don't know what to type, and close it.
My fix: clickable suggested prompts on the welcome screen.
🔍 Explain this file and suggest improvements
🐛 Find bugs or potential issues in my code
✨ Refactor this code to be cleaner
🧪 Write tests for the current file
One click sends the prompt. Removes all friction from the first interaction. I'm watching the telemetry to see if message_sent climbs.
The most important insight
Power users will find you before you find them.
Mumbai, Paris, Cape Town - these users found Freebird organically, used it heavily enough to exhaust their 20-edit free quota multiple times in a single day, and kept coming back. I didn't market to them. I didn't even know they existed until I looked at the Vercel logs.
One Mumbai user sent over 40 messages in a single sitting across two quota resets.
These are your early evangelists. When someone uses your product that intensively, don't just reset their quota - talk to them. I added a personal founder message to the quota wall for users who hit 15+ edits:
"You're a serious Freebird user ⚡ — I'm Adi, the founder. Email me for a free 30-day Pro key."
That message costs nothing and creates a direct line to your most engaged users.
What I'd tell anyone building a VS Code extension
Ship early, but monitor from day one. I had users before I had proper monitoring. If I'd checked telemetry on day 2, I would have caught theapi_errorspike immediately.
The default experience is everything. Making Ollama the default made sense to me as a developer. But "install this 4GB model first" is not a first-run experience for most users. Cloud-first with a local fallback is the right default.
One HN comment can drive real traction. A genuine, specific description of what you're building, in the right thread, can reach thousands of developers actively looking for solutions. The >"What are you working on?" monthly thread is one of the most underrated distribution channels for developer tools.
Pricing friction kills conversion silently. The Paris user who clicked upgrade three days in a row and never converted wasn't price-sensitive. They wanted to pay. The A$9 vs $6 USD mismatch was stopping them at checkout.Conversion rate tells you about product-market fit. Page views tell you about distribution. My 81.93% conversion rate is a strong signal. My 404 page views in two weeks are a weak signal. Discovery is the problem to solve next.
What's next
I'm planning a Show HN post for July 1 and a Product Hunt launch for mid-July.
But the thing I'm most excited about is a domain-specific version for architects, BIM developers, and computational designers. General AI assistants handle the Revit API, IFC schemas, and Grasshopper data trees terribly - they hallucinate method names and get relationship traversal wrong.I have an unfair advantage here: I'm an architect who has used these tools professionally. That's a longer post for another day.
Try it
If you're tired of Copilot throttling or Cursor's price, give Freebird a try. It works immediately, no setup required.
→ Install free from the VS Code Marketplace
→ GitHub (MIT)Happy to answer questions in the comments - especially from anyone who's built VS Code extensions or shipped developer tools independently.
Tags:
#vscode#ai#opensource#devtools#buildinpublic#showdev#typescript#javascript
Top comments (0)