I'm a developer with 10+ years at a dev company, a singer-songwriter with 15 years of gigging, and a dad of two. At the end of 2025, I started building Fretlist — a web app to organize songs, chords and setlists for musicians. Two weeks ago I launched it. Here's the honest breakdown.
The numbers
- 60 signups in 14 days
- 18 users have added at least one song
- 42 users signed up and did nothing
- 0 paying customers (not charging yet)
- 0 ad spend
- All growth from one Threads post, one WhatsApp message, and personal outreach
What worked
One Threads post changed everything. My first post — "I built a thing for musicians" — got 2.7k views and 35 signups overnight. I had no audience on Threads before this. The post was personal, not polished. I told my story as a musician, not as a founder selling a product.
Local outreach outperformed social media. I messaged a local WhatsApp group with 61 musicians. 8 signed up within hours, and they were more engaged than any Threads signup. People who know your face trust your product faster.
The "hello from the founder" email works. I send every new user a short email 24 hours after signup: who I am, what kind of music do you play, how do you organize your songs. People actually reply. One user told me about his two bands and how he wants to share songs with bandmates. That's product direction I couldn't get from any dashboard.
What didn't work
Threads is unpredictable. First post: 2.7k views. Second post: 6 views. Third: 250. Same account, same kind of content. The algorithm picks winners randomly. Don't build your strategy on it.
Signups ≠ activation. 50 people signed up. 42 have zero songs. That's 70% who looked around and left. This was the biggest wake-up call. Getting people in the door and getting them to use the product are two completely different problems.
Features don't activate users. I shipped an import feature (PDF, Word, TXT, copy-paste) thinking it would unlock activation. It helped — but most inactive users stayed inactive. The feature wasn't the blocker. Motivation was.
What I'm learning
Activation is the real game. I defined an "Activated Core User" metric: 15+ songs, 3+ setlists, used play mode. I have zero ACUs so far. That's fine — it gives me a clear target and tells me exactly where the funnel breaks.
Talk to your users before building more features. I emailed all 41 inactive users asking "what held you back?" The replies are more valuable than any feature I could build. Some forgot. Some didn't know where to start. Some are waiting for a gig to try it. Each answer tells me what to fix.
Ask questions, don't post tips. My most useful content wasn't tips or advice about gigging. It was asking musicians direct questions — how do you organize your songs? How do you handle key notation? Do you build setlists or wing it? Those conversations shaped the product more than any analytics tool. And they built an audience of musicians who feel heard, not marketed to.
The tech (for the devs)
Fretlist is built with Next.js on Vercel, Supabase for auth and data, and Resend for emails. I built an admin dashboard to track every user's activity — songs added, setlists created, play mode usage, last login. It also has a built-in mailing system with user segmentation so I can email specific groups directly from the dashboard.
The whole thing was built in about two months of nights and weekends. Claude Code did a lot of the heavy lifting — I used to be a frontend developer, but with AI tooling I'm shipping full-stack features faster than I ever could alone.
What's next
I'm not building new features right now. I'm talking to users, learning why people don't activate, and posting value content to grow my audience organically. The product is good enough. Distribution and activation are the bottleneck.
My target: 100 Activated Core Users. That's 100 musicians who have 15+ songs, 3+ setlists, and actually use Fretlist on stage. I'm at zero right now. That number will tell me if this thing has legs — not signups, not page views, not Threads likes.
If you're building a side project and think "if I just add one more feature, people will come" — they won't. I learned that the hard way. Ship it, talk to people, and let the data tell you what to build next.
If you're a musician and this sounds useful: fretlist.com
If you're a dev building a side project: I'm happy to share more. Ask me anything.
Top comments (7)
The "signups ≠ activation" section hit hard — I went through the exact same reckoning after launching a Telegram checklist bot (@dunitbot) a few weeks ago, where early numbers looked fine but meaningful usage was a completely different story. Your point about asking "what held you back?" instead of "why aren't you using my app?" is the kind of reframe that sounds obvious in hindsight but almost nobody actually does. I also found that the most useful distribution came from places where context existed — a relevant community or personal message — rather than cold broadcast posts, which matches your WhatsApp vs. Threads finding. What's your plan for the activation email sequence once you've processed those 41 replies — are you thinking one targeted nudge per blocker type, or a single onboarding flow that tries to address them all?
Six weeks late, my bad — dev.to notifications don't reach me, only just spotted this.
Your @dunitbot point about context-rich distribution matches my data exactly. Cold broadcast posts on Threads bring numbers but not engagement. Personal messages, communities where I already exist as a human — those bring people who actually use the thing. It's a slower grind but the conversion is night and day.
On your question — I went with targeted nudges per blocker type, not a single flow. Three days after signup, two automated emails depending on user behaviour: one for users who bounced after a single page view (the empty-dashboard problem), one for users who poked around, played the demo, and left without bringing their own song (the "I didn't have a song handy" problem). Different framing for each, same goal: get one real song into their library, because that's where Fretlist actually clicks.
Just shipped a follow-up post if you're curious where things landed: Two months in. Activation is still the bottleneck but the shape of the problem is a lot clearer than it was in March.
How did the dunitbot activation play out for you?
— DJ
In my bot, I added something like interactive onboarding. When a user just joins, I send them a welcome short message (translated to 50+ languages) and a demo checklist. In this way, the user can see and test how it works. And then, when the user finishes this first list (there are two items, the first is done and the second is not, so the user needs to mark all as done), I push them to create their own first list. As a result, the conversion rate of users who create at least one additional checklist is increased.
Also, I tried Facebook ads. I spent $50 and got 1 user 😀. I'm interested in big countries by TG users, like India, Brazil, and the Philippines. So I tested my company in those countries. I'm not sure what the reason was; it was my first Facebook ads experience. But I'm not upset. It's just the experience of growing my own product, even if it's just a TG bot.
Glad it landed. Your interactive onboarding sounds smarter than what most apps do — making the user mark something done before pushing them to create their own is a tiny manufactured activation moment, and those are gold. I’m sitting with how to translate that to Fretlist. The equivalent might be a demo setlist with one song missing, asking the user to drag a real one in. Lower commitment than “now build your library from scratch” but still requires action.
On Facebook ads — $50 for 1 user matches my instincts about paid acquisition for tools like ours. The economics only really work once you have strong organic activation, because paid users tend to be the lowest-intent users. They didn’t seek you out, they got served you. Then you’re paying to push them up a hill they weren’t planning to climb.
My distribution that’s actually working: a viral Threads post, a forum post in a community where I genuinely participate, and direct user emails. None of it is scalable in the traditional sense, but the conversion is wildly better than anything else I’ve tried. The slow grind is annoying but the relationships are real.
How are dunitbot’s numbers looking now, a couple months in? Genuinely curious what’s working in the Telegram bot space.
— DJ
I'm glad that you liked my idea with onboarding. Here are the real numbers about it.

Here is about users and other metrics

2 premium users: it's me and someone who activated demo (after 3rd lists I give users 1 week of demo to show all options and features).
This tiny bot is really rich by some marketing stuff and analytics. Again, it's because I like to test all of these areas in product, because I don't have experience in it, and now with AI it's really easy to learn adn implement it. And I already changed my goal from "I just want to reach 100k premium users to get 100k$" to "ok let's test a lot of staff and do the next idea".
The 41-inactive-users email is the most important thing in this post. Not because of the replies, but because of the shape of the question. "What held you back?" treats someone as a person with a story. "Why aren't you using my app?" treats them as a conversion metric.
Dormant doesn't mean dead. Some forgot, some didn't know where to start, some are waiting for a gig — those are wildly different problems wearing the same symptom. And the only way to tell them apart is to ask, which most builders never do because they'd rather ship another feature than sit with the silence.
Zero ACUs with a clear understanding of why is more valuable than 10 ACUs you got by accident. You know exactly where the funnel breaks. That compounds.
Six weeks late, sorry — dev.to notifications go straight into the void on my end. I just found this.
You named something I hadn't fully articulated. The shape of the question is the whole thing. "Why aren't you using my app?" puts the user on trial. "What held you back?" treats them as someone whose week got busy, whose context shifted, whose first impression maybe missed.
The replies I got back proved your point cleanly. One person was waiting for a gig. Another forgot which email they signed up with. Another tried to import an OnSong backup that broke (now fixed). Three completely different problems. Without asking, all three would have looked identical in the dashboard — "user with zero songs."
And yeah, "rather ship another feature than sit with the silence" is the trap. I've caught myself reaching for it twice since. Both times I didn't. Sitting with it is harder than building, but the answers are worth more than the features.
— DJ