I'm building PetSignal — 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.
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.
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.
1. Symptom pages beat product pages — but not the way I expected
My content engine is ~35 "symptom pages": Dog Opening and Closing Mouth Repeatedly, Cat Whale Eye, Cat Breathing Fast. 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.
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.
2. Every page is data, not HTML
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:
- A section heading ending in
?automatically joins FAQPage structured data — so writing content in question form is a one-character schema decision. - 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.
- Site-wide fixes (last-updated dates, CTA placement, internal link cards) are one-file changes.
If you're building content SEO as a developer, this is the leverage: don't write pages, write a page system.
3. Title rewrites: one 24x win, one two-week disaster
In mid-July I rewrote titles on underperforming pages into what I call "answer-promise" format: Cat Wagging Tail While Lying Down: 4 Meanings & Vet Red Flags. One page went from 21 impressions to 533 in the following two weeks — Google started testing it against dozens of new queries.
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: rewrite titles on pages with nothing to lose (page 2+), never touch pages that are already winning. Every title change is a bet, and position is the stake.
4. An AI Overview ate my best page — the fix wasn't more keywords
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.
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.
5. Indexing is a solved pipeline (if you actually build one)
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.
Where it actually stands
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.
The next experiments: a free cat breathing rate counter (tap-to-count, zero AI cost) as a link-earning utility, and community distribution where the pet-owner anxiety actually lives.
Happy to answer anything about the page-system architecture or the Search Console feedback loops in the comments.
Top comments (0)