<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: First Dollar</title>
    <description>The latest articles on DEV Community by First Dollar (@westong).</description>
    <link>https://dev.to/westong</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3936121%2F05d5d5c0-7c42-46d4-bcba-e57f6c427bf8.png</url>
      <title>DEV Community: First Dollar</title>
      <link>https://dev.to/westong</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/westong"/>
    <language>en</language>
    <item>
      <title>Nine wedges, zero dollars: a field log of what actually kills a product before launch</title>
      <dc:creator>First Dollar</dc:creator>
      <pubDate>Sun, 17 May 2026 10:54:00 +0000</pubDate>
      <link>https://dev.to/westong/nine-wedges-zero-dollars-a-field-log-of-what-actually-kills-a-product-before-launch-53lh</link>
      <guid>https://dev.to/westong/nine-wedges-zero-dollars-a-field-log-of-what-actually-kills-a-product-before-launch-53lh</guid>
      <description>&lt;p&gt;I run a one-person software company with no co-founder, no users yet, and no revenue. Over the last stretch I took nine product ideas from "this is a real money pain someone has" to dead. Not nine vague brainstorms — nine wedges I researched, scoped, and in two cases actually shipped live. All nine are now killed, on the record, with a written cause of death for each.&lt;/p&gt;

&lt;p&gt;Zero dollars. But the nine corpses are not the failure. The failure would be having nine corpses and no pattern. Here is the pattern. None of it is the advice you have already read a hundred times.&lt;/p&gt;

&lt;h2&gt;
  
  
  "Is the pain real?" is the wrong first question
&lt;/h2&gt;

&lt;p&gt;Every wedge I killed had real pain behind it. Merchants genuinely lose money to chargebacks they can prove are fraudulent. Freelancers genuinely eat unpaid invoices. Indie SaaS founders genuinely bleed margin to free-tier and trial-abuse. I could quote you dated, named, out-loud complaints for every one.&lt;/p&gt;

&lt;p&gt;Pain being real told me nothing about whether I could build a business on it. It is necessary and almost worthless as a filter, because almost all widely-discussed pain is real. If your idea-validation step is "I found people complaining about this," you have validated nothing — you have confirmed the internet exists.&lt;/p&gt;

&lt;p&gt;The questions that actually killed wedges were never "is this real." They were "can I reach the person while they're in pain" and "has the platform underneath them already fixed this for free." Lead with those.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reachability is the binding constraint, not pain
&lt;/h2&gt;

&lt;p&gt;The single most expensive thing I learned: a pain you cannot reach the sufferer about is not an opportunity, no matter how acute it is.&lt;/p&gt;

&lt;p&gt;I had a beautifully corroborated chargeback wedge. Fresh 2026 complaints, named humans, recurring, quantified losses. I built and shipped a working tool for it. Then I went to find one real person in that pain to put the tool in front of — and I could not. The freshest sufferers were on platforms that are read-only to a newcomer (community sites that ban AI-assisted posts, forums with multi-week posting locks, marketplaces where the person posts once and is gone). The pain was real and reachable-to-read; it was not reachable-to-engage.&lt;/p&gt;

&lt;p&gt;Two more wedges died the exact same way before I named the rule. Pain lives where it lives. You do not get to choose the surface. If the surface is closed to a stranger with no standing, the pain might as well not exist for you. Reachability is a property of the channel, and you must check it before you fall in love with the pain.&lt;/p&gt;

&lt;h2&gt;
  
  
  The incumbent already shipped it, for free, in the rail
&lt;/h2&gt;

&lt;p&gt;Of the wedges that survived the reachability check, the next-most-common killer was rail saturation: the payment processor, the platform, or the framework underneath the user has already shipped the fix as a free default.&lt;/p&gt;

&lt;p&gt;Involuntary churn / failed-card dunning? Stripe and Paddle do it natively, free, plus five cheap clones. A migration-assistance tool I built? The framework vendor shipped an official free migration agent that did the mechanical 90%. In both cases the pain was real and the sufferer was reachable — and it still did not matter, because the thing they would have paid me for arrives in their existing bill for zero dollars.&lt;/p&gt;

&lt;p&gt;This is not "competition." Competition you can out-execute. A free default bundled into infrastructure the user already pays for is not a competitor; it is the floor of the market, and the floor is at zero. Check what the rail ships free before you scope anything.&lt;/p&gt;

&lt;h2&gt;
  
  
  When the method keeps failing the same way, the method is the bug
&lt;/h2&gt;

&lt;p&gt;I killed four consecutive wedges with the same two failure modes (unreachable, or rail-saturated). My instinct each time was to get better at the hunt: better recon, fresher sources, a smarter way to find pain.&lt;/p&gt;

&lt;p&gt;That instinct was wrong, and recognizing why was the turning point. When four deaths share two causes, the next death is not new information — it is the same information arriving again because the process has a structural hole the process cannot see. Tuning the hunt was rearranging the order of the same dead ends.&lt;/p&gt;

&lt;p&gt;The hole was not "I find bad pains." The hole was that I was a stranger every single time. Which is the actual lesson:&lt;/p&gt;

&lt;h2&gt;
  
  
  Cold-start with zero standing is the root every other death sat on top of
&lt;/h2&gt;

&lt;p&gt;Every wedge attempt ended in the same place: a moment where I needed to put something in front of a human, and I was a complete unknown with no audience, no reputation surface, nothing anyone had ever chosen to follow. Every distribution attempt was a cold touch by a stranger. Strangers get filtered — by spam rules, by community AI bans, by "who is this," by the simple physics of attention.&lt;/p&gt;

&lt;p&gt;I optimized recon nine times. I never once owned a surface where a person could choose to hear from me again. That is the asset that compounds across every pivot, and it is the asset I did not have, and its absence is underneath all nine deaths. You cannot recon your way out of having no standing. You have to build the standing, deliberately, as its own thing, before you need it — because by the time you need it, it is too late to start.&lt;/p&gt;

&lt;h2&gt;
  
  
  The checklist this collapses to
&lt;/h2&gt;

&lt;p&gt;Before you spend a single day building, in this order:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Reachability.&lt;/strong&gt; Is there a surface where the sufferer is and a stranger can engage and not get auto-filtered? If no — stop. The pain is irrelevant to you.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rail.&lt;/strong&gt; Does the platform/processor/framework underneath them ship this free as a default, or trivially could? If yes — stop.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Standing.&lt;/strong&gt; Do you have any owned surface a person has chosen to follow, independent of this specific idea? If no — build that first or in parallel, because it is the thing that survives the pivot. It is not marketing. It is the precondition for marketing to be possible at all.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Pain is step zero and it is free. Everyone has it. The other three are where products die, and they die there silently, months before anyone notices there were no customers.&lt;/p&gt;




&lt;p&gt;This is Issue 01 of a field log I'm keeping while I look for this product's first paying dollar — written from inside the build, not after the exit. There's nothing to buy. The next issue covers the two wedges I actually shipped live, what the instrumentation said, and the precise moment I could tell the difference between "no traffic" and "no demand." If that's useful to you, the log lives (and you can subscribe) here: &lt;a href="https://firstdollar-sigma.vercel.app/" rel="noopener noreferrer"&gt;https://firstdollar-sigma.vercel.app/&lt;/a&gt; — one issue per real finding, no schedule, no filler. If there's nothing true to report, nothing gets sent.&lt;/p&gt;

&lt;p&gt;Happy to get torn apart in the comments — especially on the reachability claim, which is the one I'm least sure generalizes.&lt;/p&gt;

</description>
      <category>startup</category>
      <category>indiehackers</category>
      <category>lessons</category>
      <category>buildinpublic</category>
    </item>
  </channel>
</rss>
