I want to be upfront about something before you read any further: I am not the target user for the app I built.
I don't own moisturizer, foundation, or lip gloss. I couldn't tell you what a PAO symbol is without having looked it up for this project. I am a developer who identified a problem that genuinely affects millions of people — expired and forgotten beauty products silently draining money and cluttering shelves — and decided to solve it, despite having no personal entry point into the world I was building for.
That decision has taught me more about humility than five years of shipping software ever did.
ShelfCheck is a Flutter app that helps people track their beauty collection — what they own, when it expires, and what they're spending. The core loop is simple: scan a product's barcode, let the app fill in the details, set an expiry date, and get notified before it goes bad. I built it in five weeks using Flutter and Firebase, with Claude Code handling most of the heavy lifting on implementation. Total cost to get here: around $355 — two months of AI tooling, developer account fees, a domain, and a Google Workspace email so I looked slightly less like I was operating out of my basement.
The feature set is real. Barcode scanning with product lookup. AI-generated expiry estimates for products that don't have a clear date. Dual-view browsing across inventory and insights. Sharing options. Cloud sync. Notifications. Search and sort across your collection. For a solo developer with no prior mobile shipping experience, I am genuinely proud of what ended up in the build.
Here is where the pride ends and the honesty begins.
The app is currently sitting in Google Play's closed testing track. To advance to open testing — the step before public launch — I need 12 people to opt in to the testing program over 14 consecutive days. I have 5. I have been staring at that number for two weeks. I know, rationally, that 5 is not a large number. I know that 12 is not a large number either. And yet here we are, because the gap between 5 and 12 has started to represent something larger to me than a closed testing requirement. It represents the gap between building something and bringing something to market.
I understand code. I understand product decisions. I understand trade-offs between features and timelines. What I did not fully understand, until I was standing on the other side of a finished product with almost no one looking at it, is that distribution is its own entirely separate discipline — one I have no natural aptitude for and no authentic community standing in.
I have published 36 posts across TikTok, YouTube, X, and Pinterest in five weeks. My following across all four platforms combined is, generously, near zero. I have two waitlist signups. I know why: the people who need this app are not following a developer account on TikTok. They are in beauty subreddits and skincare Facebook groups and comment sections of influencers I have no relationship with. They speak a language I have spent five weeks learning secondhand. I am an outsider trying to open a door from the wrong side.
There is a version of this post where I frame five weeks of hard work and a stalled launch as a fun learning experience. I am going to resist that version because I do not think it would be honest and I do not think it would be useful. The honest version is that I am somewhere between confident and lost. I believe in the product. I believe the problem is real — the beauty industry has a waste problem, the average person has no idea what is expired on their shelf, and no existing app solves this cleanly. I did the research. The market exists. What I cannot figure out is how to reach it.
I am not the face of this product. I cannot post an authentic skincare routine or show off my collection because I don't have one. Every marketing playbook I find assumes some version of founder-as-user that simply doesn't apply to me. The community I need to reach has every reason to wonder why a developer with no beauty background built this, and I have to earn their trust from scratch.
And I am going to keep going anyway, because the only way I know how to respond to a problem I can't solve yet is to stay in the room until I can.
I'm not posting this to promote the app. Anyone curious will find it. What I actually want to know — from people who have been here, who have built something real for an audience they weren't part of — is this: how do you market to a community you have no authentic entry point into? Not theoretically. Not the generic "find where they hang out" advice. I know where they hang out. What I don't know is how to show up there as someone who built a tool for them without it immediately coming across as an outsider trying to sell something.
That's the question I'm sitting with this week. If you've solved a version of it, I'd genuinely like to hear how.
The honest version of this post is more useful than most — thank you for writing it.
I'm in a related situation with RecoverKit. I built a Stripe payment recovery tool for subscription SaaS founders. I'm not a subscription SaaS founder with a large failed payment problem. I built it from research: industry benchmarks, IH posts where people mentioned bleeding money on failed payments, Pieter Levels' tweet about his own 20% recovery rate.
What I've found works when you can't lead with personal story: lead with the problem data instead.
Instead of 'I use this / it changed my life,' it's 'here are the numbers that tell you this problem exists for you.' For beauty products: the average person owns X products, Y% expire unused, average household waste is /year. I'd bet some of those numbers are genuinely surprising and shareable.
For your specific distribution problem — beauty subreddits and skincare groups — I'd suggest starting by answering existing questions, not promoting the app. Find threads asking 'how do you track expiry dates?' and answer the question honestly. Your app might come up naturally or it might not. But you become a trusted voice in the community first, and that trust compounds.
The outsider angle can actually become an asset: 'I built this because I watched my partner throw away 00 of expired products and realized there was no app that solved this cleanly' is a more honest pitch than most founders make.