DEV Community

Cover image for Selling Your Vibe-Coded App Isn't a Marketing Problem. It's a Forgotten Spec.
Phil Rentier Digital
Phil Rentier Digital

Posted on • Originally published at rentierdigital.xyz

Selling Your Vibe-Coded App Isn't a Marketing Problem. It's a Forgotten Spec.

Back when I was an employee, "marketing" sounded like a dirty word. It smelled of used-car salesmen, the Facebook ad that follows you for 3 months, etc.

Not for me. I was coding, I was shipping, the product was good, the rest would follow.

Except the rest never followed.

TLDR: You're not bad at marketing. You're building your app without the spec that makes marketing possible. 4 questions to answer before line 1 of code, and why the marketing fundamentals collapse without them.

Then I clocked something dumb. "Marketing" just means explaining what you do to people who might care. That's it. Once you write it like that, the LinkedIn-coach reflex is hard to keep.

Except I was still bad at it.

I shipped 4 apps in 2 years. My family used 3 of them. 3 Discord friends tested one. The code wasn't the issue. Classic marketing tactics weren't either, I tried. The problem was somewhere else, upstream, before line 1 of code.

The "For Everyone" Trap

When someone asked who my app was for, my answer was "everyone". Small business owners, creators, marketers, freelancers, anyone really.

An app for everyone is an app for no one. What looks like a marketing problem is a NaN dressed as a target audience.

Obviously the dopamine wants a massive imaginary TAM. When you're vibe coding on a Sunday afternoon with the kids fighting over the pool floaties, a vague millions sounds better than 400 angry plumbers in Ohio. But the millions don't exist. The 400 do, and they have a Slack group.

A TAM you imagined has no channel, no trigger, no vocabulary. Nothing you can act on. The 400 plumbers have all 4.

This is the trap nobody flags to vibe coders. You spend 6 weekends shipping something polished, and at the end you have a product that speaks to nobody in particular. Then you blame marketing. You blame the algorithm. Reddit moderators get the heat too (fair, sometimes).

But the gap wasn't in tactics. It was in the spec you never wrote.

The Marketing Spec Nobody Writes

The spec I'm talking about isn't the product spec. It's not the wireframes, the schema, or the user stories. It's the user spec, and it has 4 fields.

  1. Who exactly. Not "small business owners". Granular job + life context.
  2. Where they already hang out. A specific community, not "online".
  3. What triggers their search. The moment they type something into Google or ask a friend.
  4. What words they use. Verbatim, not paraphrased.

Code is cheap now. Specs are the multiplier.

This is the same spec mindset I apply to prompts: write the contract before the action, or the action gambles. Marketing is exactly that, applied to a person instead of an LLM.

Why it has to come before the code: if you don't know who the app is for, the app you ship will be vaguely-shaped. It will speak to nobody in particular. And no marketing tactic can fix it later, because there's no specific person to aim at.

The product is downstream of the spec. So is the marketing. So is the pricing.

Skip the spec, and everything downstream wobbles like a Death Star with a missing thermal exhaust port.

What "Skipped Spec" Sounds Like in the Wild

I don't have to make this up. The voices are everywhere on Indie Hackers. Same pattern every time.

A founder posted in March 2026:

"The distribution vs product skill gap is very real. A lot of builders assume that if the product is good enough, users will somehow appear. In reality those are two completely different problems to solve."

A builder, 2 weeks after launching, on the same forum:

"A calculator with 0 signups isn't a calculator problem, it's a no-urgency-at-the-trigger problem. Embed it inside your existing accountant-outreach email where the user already has intent, not as a top-of-page curiosity hook."

That phrase "no-urgency-at-the-trigger problem" is gold. The builder discovered field 3 of the spec by hitting a wall. You can write it down before, or you can find it 2 weeks late with 0 signups.

Another thread, January 2026:

"I just launched my first app a week ago, built with AI, no coding background. Right now I'm figuring out distribution. Reddit karma limits, Indie Hackers posting restrictions, it feels like building was the easy part."

Building was the easy part. That sentence keeps surfacing. Vibe coding made it worse, because the build is faster than ever and the spec gets skipped more aggressively.

Same forum, a different founder who did the opposite:

"I started treating distribution not as a final step, but as the first step. When I finally started building again, I already had an audience. Not a huge one, maybe 200 followers, 50 engaged Reddit users, a few helpful DMs, but enough to ship with momentum."

200 followers and 50 engaged Reddit users isn't much. But it's the spec, executed. He knew who, where, trigger, and vocabulary. He had pre-validated the 4 fields by talking to those 50 people for months.

These builders aren't idiots. They're caught in the dopamine of coding, same as I was. The dopamine doesn't reward writing a spec. It rewards seeing the next feature compile.

The 5 Marketing Fundamentals Don't Work Without Step 0

The 5 marketing fundamentals are 50 years old. They work. No question.

But each silently assumes the spec is done. Drop them on an undefined target and you get a clean null pointer. No stack trace, just Claude shrugging politely.

Fundamental 1: Define target and problem.

You are a brutally honest market analyst. Given my ICP below, return:
- 3 painful problems my ICP has today
- The exact words they'd use to describe each
- The 1 problem they'd pay to solve right now.
ICP: <paste spec field 1>
Enter fullscreen mode Exit fullscreen mode

Without an ICP, the brutal analyst returns "not specific enough" and refuses to play.

Fundamental 2: Get close to the user.

Find 3 places online where my ICP hangs out, ranked by density, posting tolerance, and frequency of "I need a tool that..." posts.
ICP: <paste field 1>
Enter fullscreen mode Exit fullscreen mode

Without a clear ICP, you get "Reddit, Twitter, LinkedIn". A list anyone could write without an LLM.

Fundamental 3: Analyze ratios.

My funnel: <channel, content, CTA>. Conversion at step 2 is X%. Industry benchmark for this ICP+channel? Single most likely bottleneck?
ICP: <paste spec>
Enter fullscreen mode Exit fullscreen mode

Without an ICP, "industry benchmark" is meaningless. You compare against an average of averages.

Fundamental 4: Adapt to the channel.

Rewrite this for <channel> in my ICP's voice. Their vocabulary, not mine.
ICP: <field 1 + field 4>
Original: <paste>
Enter fullscreen mode Exit fullscreen mode

Without field 4, Claude defaults to LinkedIn-bro neutral.

Fundamental 5: Watch competitors.

For my top 3 competitors, list: top 3 homepage claims, exact pain points called out, vocabulary they use that I don't.
Competitors: <list>
My ICP: <paste spec>
Enter fullscreen mode Exit fullscreen mode

Without an ICP, you get generic intel. Not strategic intel.

It's the same reason CLIs beat MCP for AI agents: tools work when the architecture above them is right. They don't compensate for missing it.

Claude can write your marketing for you. It cannot guess who you are marketing to.

I Know. This Is the Least Fun Part.

Yes, less fun than vibe coding a feature on a Sunday afternoon while the kids fight over the pool floaties. No dopamine in answering 4 questions about a person you have never met.

No revenue either.

This is exactly what separates "app used by your family and 3 Discord friends" from "app that pays your rent". Code is the easy part now. The spec is the multiplier.

The 4-Field Spec You Can Write Tonight

OK, you're still here. Good. This is what writing the spec looks like in practice. Not next quarter. Tonight.

Field 1: Who exactly.

Question: in 1 sentence, who is this person? Job, context, what makes their week hard.

Pass criterion: give your sentence to 10 different people, ask them to picture this person, they all picture the same one. "Small business owners" fails. "Karen from Accounting, the one who still emails Excel files because the SaaS her company bought doesn't sync with QuickBooks Online" passes.

Where to find the raw material: G2 and Capterra reviews of competitor tools. The 3-star reviews specifically. People with 5 stars say "great tool". People with 1 star say "broken". The 3-star ones describe exactly who they are and what they wanted to do. Gold for field 1.

Field 2: Where they already hang out.

Question: name the 3 specific communities, forums, or platforms where this person spends real time. Not "Twitter". Twitter is not a place, it is a postal code.

Pass criterion: each of the 3 has a URL you can click and see actual posts from your ICP this week.

Where to find: 5 short calls with people who match field 1. Or read the bios of 30 people who left reviews of your competitors and see what they link to. Or search " Discord", " subreddit", " Slack community" and dig.

I spent 3 months filling field 2 for 1 project. That's where it finally unlocked.

Field 3: What triggers their search.

Question: what is the moment, the day, the situation when this person types something into Google looking for a tool like yours?

Pass criterion: you can describe the trigger as a scene with a time, a tool, and a feeling. "Tuesday morning, opening her inbox, 14 new client emails that all need the same boilerplate reply, feeling angry" passes. "When they need productivity" fails.

Where to find: search Twitter and Reddit for "I just spent X hours on", "why is there no tool for", "anyone else hate having to". The triggers are right there, in plain English, written by your ICP for free.

Field 4: What words they use.

Question: list 20 phrases, verbatim, that your ICP uses to describe their problem and the desired outcome.

Pass criterion: 20 phrases. Not 5, not your translation. The actual words, copy-pasted from Reddit or G2 or wherever you found them.

Where to find: same as field 3. Plus the 1-star and 3-star reviews of every competitor.

If you can't fill a field in 1 specific sentence, that is the field you are going to fail on after launch.

Steal Your Competitor's Spec From Their Ads

You have 2 options once you've nailed the 4 fields in theory.

Interview 50 users. Slow and biased.

Or read what the competitors who already convert have put in their ads.

Their ads are their user spec, externalized and A/B tested. For free. To you. It's like raiding a public dungeon where the loot is already on the floor 😏.

3 public ad libraries to use:

  • Meta Ads Library (facebook.com/ads/library), every active Meta ad by advertiser, filterable by country and category.
  • Google Ads Transparency Center (adstransparency.google.com), active Google and YouTube ads by verified advertiser.
  • TikTok Creative Center (ads.tiktok.com/business/creativecenter), top TikTok ads by sector, region, format.

Public data designed to be seen, which is literally the whole point.

The prompt to feed Claude (chat version, copy-paste, no setup):

You are a marketing reverse-engineering analyst.

STEP 1: I'll paste 8-12 ads from a competitor below.
For each ad, extract:
- The exact hook (first line/scene)
- The pain point being called out
- The promise being made
- The CTA
- The format (image, video, carousel)

STEP 2: After all ads are processed, synthesize:
- Target segments visible across the ads (1-3 max)
- Common pain points
- Common positioning angle vs alternatives

STEP 3: Output the reverse-engineered spec as 4 lines:
- Who exactly
- Where the ads run (channels)
- What trigger the ads activate
- What vocabulary the ads use (10 phrases verbatim)

Ads: <paste ads here>
Enter fullscreen mode Exit fullscreen mode

Run that prompt on 3 competitors in 1 evening. You don't get your final spec (you still have to validate against your own ICP) but you get a strong draft.

There's also a Claude Code version that automates this via browser MCP for batch competitor analysis. The chat version is enough for most cases.

Your competitors already paid for the spec. You just have to read it.


Marketing was a dirty word in my vocabulary for years. Turns out it wasn't dirty, it was a clean word I was using to hide a missing spec.

The Blueprint Method I describe in Vibe Coding, For Real starts with this exact spec, before line 1 of code.

And the market already knows. Dotmarket, a European broker for digital business sales, refuses to list any business under 2 years old. Not from snobbery: under 2 years, nobody can tell if the audience comes back on its own, if churn is stable, if partnerships hold without the founder pushing every week. The invisible work is the asset. That work starts with 4 answers on a sheet of paper.

Write the 4 sentences tonight. Ship anything you want tomorrow.

Sources

  • Indie Hackers, "The #1 reason indie products die isn't the product. It's finding customers." (March 2026): indiehackers.com
  • Indie Hackers, "2 weeks later: still no paying users. Here's what I've learned." (May 2026): indiehackers.com
  • Indie Hackers, "How I got my first sale from a forgotten project" (January 2026): indiehackers.com
  • Dotmarket newsletter, "Ce que l'IA ne peut pas construire en 18 mois" (Kevin Jourdan, 13 May 2026): dotmarket.eu
  • Meta Ads Library: facebook.com/ads/library
  • Google Ads Transparency Center: adstransparency.google.com
  • TikTok Creative Center: ads.tiktok.com/business/creativecenter
  • Vibe Coding, For Real: amazon.com/dp/B0GYQHLSCB

Top comments (0)