DEV Community

Yuhe He
Yuhe He

Posted on

From 1,459 Views to Zero Sales: One Week of Raw Funnel Numbers, Nothing Rounded

Public building usually ends at the vanity metric. Here is the rest of the table, zeros included, with the numbers my own dashboard reports and nothing rounded — the view counts, the store visits, the sales, and the one diagnosis the data supports. If you're building something and selling nothing, this ledger is your company too, and the point of publishing it is that the format is portable: take the table, put your numbers in it, run the same diagnosis on your own funnel.

The ledger, one week in

Stage Count
Article views (all-time, dev.to) 1,459
Storefront views (Gumroad) 84
Views today 79 → 84
Sales 0

Read that middle row again: 1,459 people read the articles; 84 of them visited the storefront — and the storefront's own counter moved from 79 to 84 today, five fresh humans walking in unprompted. Traffic to the shop is not the bottleneck; it arrived while I watched. The distance between 84 and 0 is the entire business.

What the numbers are not telling me

First, what they can't tell me, stated as a rule: 1,459 article views, in funnel methodology, is close to zero information. A view is a stranger's eyeballs on a free page that already answered their question; it records attention, not intent. Likes are the same instrument reading lower. The first real data point in the whole exercise is the pair that ends in 0 — the view-to-purchase pairs are the only cells in the table that can be wrong, and therefore the only cells that mean something.

Second, what the zeros are not: not a traffic problem (84 store visits, 5 of them today), not a writing-quality problem (the articles get read, commented on, and reacted to), and not price — nobody has told me it's too expensive, because nobody has gotten far enough to have an opinion.

The diagnosis the data does support

The break is "look → buy," and the honest cause is that the shop, as built, sells information — the thing the free articles already give away. Readers finish a post with the answer in hand; the storefront then offers more of the same answer, formatted. There is no pain the free article doesn't already remove, so the purchase button has no job. The fix follows from the diagnosis, and it's the same rule my freshness posts apply to data, turned on the shop: sell the result, not the write-up. The catalog is being rewritten around hours the buyer doesn't spend — the crawl you don't build, the audit you don't run, the week you don't lose to a stale pipeline — and the price anchors on that, not on word count.

What the data can't see, and what I'm doing about it

The funnel has a blind spot bigger than the zeros: readers who wanted the paid version of the thing and never knew it existed. They don't appear in any row — they browsed, got the free answer, left, and bought nothing, which is indistinguishable from never arriving. The countermeasure is boring and public: every post now ends with named deliverables at named prices, and this one does too, at the bottom of the page. The countermeasure to self-deception is the publishing itself — the ledger goes up before I know how it ends, which is what makes it evidence instead of a victory lap.

The promises, so the table stays auditable

  1. Next update carries the same rows — storefront views, article views, sales — with the same dashboard as the source of truth. If the sales column reads 0, the post says 0.
  2. Numbers come from the official panels only. The lesson, learned the expensive way: a regex scraping page text once found "$20" in my storefront, and I celebrated a sale that the official panel said never happened. A number read off the layout, not the ledger, is a rumor with good formatting — the same sin as a stale timestamp, in a marketing costume.
  3. The catalog rewrite (sell the hours, not the prose) ships before the next ledger post, so the next numbers test a change, not a hope.

The portable part

Copy the table. Fill your four rows: attention (views), interest (store visits), intent (anything that costs the visitor something — email, cart, a download), money (sales). If your attention row is big and your intent row is empty, you don't have a conversion problem — you have a product-shape problem: the paid thing is offering what the free thing already delivered, and no funnel copy fixes that. Five people walked into my shop today on the strength of free articles. Nobody walked out having bought the obvious thing. That pair of facts, published in the same week, is a diagnosis; published a month later, it would be a story.

The ledger is the product. The numbers are allowed to be zeros as long as they're real — and the format is allowed to be yours as long as you publish it before the results are in.

— 何雨禾 (heyuhe). I run one pipeline, one shop, and one dashboard, so the funnel has exactly one defendant and no place to hide.


The paid versions exist so the next ledger has money in it, and they're priced on hours saved, not pages sold: free Telegram OSINT sample (suggested $5) · Premium 2-day dump, 6 channels ($30) · tg-crawl Pro: the scraper wheel + daily-crawl recipes ($9) · daily freshness report ($5). The method behind the zeros — the freshness discipline the shop now sells: Runbook Rot: Three Fingerprints of Stale CI Docs · Freshness Watermarks Belong on Every Row, Not the README.

Top comments (0)