<?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: godfalcon</title>
    <description>The latest articles on DEV Community by godfalcon (@godfalcon).</description>
    <link>https://dev.to/godfalcon</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4058728%2F61e05275-abbc-4560-92c4-9b863edde844.png</url>
      <title>DEV Community: godfalcon</title>
      <link>https://dev.to/godfalcon</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/godfalcon"/>
    <language>en</language>
    <item>
      <title>SEO for a $2.99 product: what 28 days of Search Console data taught me</title>
      <dc:creator>godfalcon</dc:creator>
      <pubDate>Sun, 02 Aug 2026 06:19:25 +0000</pubDate>
      <link>https://dev.to/godfalcon/seo-for-a-299-product-what-28-days-of-search-console-data-taught-me-40kp</link>
      <guid>https://dev.to/godfalcon/seo-for-a-299-product-what-28-days-of-search-console-data-taught-me-40kp</guid>
      <description>&lt;p&gt;I'm building &lt;a href="https://petsignal.ai" rel="noopener noreferrer"&gt;PetSignal&lt;/a&gt; — a browser-based AI that reads dog and cat body language from a photo and flags stress signals (whale eye, freezing, lip curl) before they escalate. It's a solo project, the core purchase is a $2.99 credit pack, and that one number dictates the entire growth strategy.&lt;/p&gt;

&lt;p&gt;Here's the math that rules everything: at a ~$3-10 one-time AOV, paid ads can never work. US pet-niche CPC runs $0.5-2; even at optimistic conversion rates you're paying $50+ to acquire a $3 customer. So the product lives or dies on organic search. That constraint turned out to be a gift — it forced me to treat SEO as an engineering discipline with real feedback loops instead of a checklist.&lt;/p&gt;

&lt;p&gt;Twenty-eight days of Search Console data later: 230 clicks, 15,953 impressions, and impressions in the second half up 105% over the first. Small numbers, real slope. These are the five things the data actually taught me.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Symptom pages beat product pages — but not the way I expected
&lt;/h2&gt;

&lt;p&gt;My content engine is ~35 "symptom pages": &lt;em&gt;Dog Opening and Closing Mouth Repeatedly&lt;/em&gt;, &lt;em&gt;Cat Whale Eye&lt;/em&gt;, &lt;em&gt;Cat Breathing Fast&lt;/em&gt;. Each one answers a moment of owner anxiety that ends with a photo the owner has already taken — which is exactly what the product analyzes.&lt;/p&gt;

&lt;p&gt;The surprise: one page carries 54% of all clicks. Not the homepage, not the tool pages — a page about dogs opening and closing their mouths. Meanwhile my four "commercial" analyzer pages have CTRs of 6-9% (site average: 1.8%) but almost no impressions. The lesson: content pages find demand, commercial pages convert it, and internal links are the pipe between them. I spent a day rebalancing internal links after realizing my refund policy — sitemap priority 0.4 — carried roughly twice as many site-wide links as any commercial page, while the general-purpose analyzer had exactly zero editorial links pointing at it.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Every page is data, not HTML
&lt;/h2&gt;

&lt;p&gt;All 35 symptom pages live in one TypeScript file as structured objects: title, quickAnswer, sections, tables, related links. One React template renders them all. This sounds like a detail; it's the whole game:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A section heading ending in &lt;code&gt;?&lt;/code&gt; automatically joins FAQPage structured data — so writing content in question form is a one-character schema decision.&lt;/li&gt;
&lt;li&gt;Comparison tables became a typed field after I learned answer engines lift tables more readily than prose. Adding table support to the template upgraded 35 pages at once.&lt;/li&gt;
&lt;li&gt;Site-wide fixes (last-updated dates, CTA placement, internal link cards) are one-file changes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you're building content SEO as a developer, this is the leverage: don't write pages, write a page &lt;em&gt;system&lt;/em&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Title rewrites: one 24x win, one two-week disaster
&lt;/h2&gt;

&lt;p&gt;In mid-July I rewrote titles on underperforming pages into what I call "answer-promise" format: &lt;em&gt;Cat Wagging Tail While Lying Down: 4 Meanings &amp;amp; Vet Red Flags&lt;/em&gt;. One page went from 21 impressions to 533 in the following two weeks — Google started testing it against dozens of new queries.&lt;/p&gt;

&lt;p&gt;Two weeks earlier, I'd changed the meta on a page ranking #7. It dropped to #10 and took two weeks to recover. Same lever, opposite outcomes. The rule I derived: &lt;strong&gt;rewrite titles on pages with nothing to lose (page 2+), never touch pages that are already winning.&lt;/strong&gt; Every title change is a bet, and position is the stake.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. An AI Overview ate my best page — the fix wasn't more keywords
&lt;/h2&gt;

&lt;p&gt;My top page ranks #2 for its query, but CTR sat under 2%. Live SERP inspection showed why: an AI Overview answers the question above me, citing big veterinary sites. My page wasn't cited because it didn't cover two causes the Overview emphasized.&lt;/p&gt;

&lt;p&gt;The fix was content, not optimization: I rewrote the opening into a ~100-word extractable answer covering all six causes, added a cause × symptom × urgency table, and added the missing medical content. Whether it wins a citation is still an open experiment — but "be quotable by the machine that's answering above you" is now a design requirement for every page.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Indexing is a solved pipeline (if you actually build one)
&lt;/h2&gt;

&lt;p&gt;New pages here get: sitemap entry (automatic, since pages are data) → IndexNow ping on deploy → Search Console request for stragglers. Result: the last batch of 9 pages was fully indexed within 24 hours; a request-indexing queue I ran over two weeks went 19/19. If your pages sit "Discovered - currently not indexed" for weeks, the answer is usually authority — but the mechanical half of the problem is entirely automatable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where it actually stands
&lt;/h2&gt;

&lt;p&gt;Full honesty, because that's the point of building in public: this is still early. The organic curve is compounding — impressions tripled over the month — but compounding from a small base is still small, and the paywall hasn't seen enough traffic yet to say anything meaningful about its conversion rate.&lt;/p&gt;

&lt;p&gt;The next experiments: a free &lt;a href="https://petsignal.ai/tools/cat-breathing-rate-counter" rel="noopener noreferrer"&gt;cat breathing rate counter&lt;/a&gt; (tap-to-count, zero AI cost) as a link-earning utility, and community distribution where the pet-owner anxiety actually lives.&lt;/p&gt;

&lt;p&gt;Happy to answer anything about the page-system architecture or the Search Console feedback loops in the comments.&lt;/p&gt;

</description>
      <category>buildinpublic</category>
      <category>seo</category>
      <category>startup</category>
    </item>
  </channel>
</rss>
