Two weeks ago Hundo Hunter didn't exist. Today it has 3 270 indexable URLs, 15+ interactive tools, an iOS app on the App Store, and a complete schema-marked-up content cluster. This post is the engineering case study — the stack, the SEO strategy, the things that worked, and the things that didn't.
Why bother
There are already a dozen Pokémon GO companion sites. PvPoke. PokeBattler. GamePress. Silph Road. GO Hub. LeekDuck. The problem isn't lack of information — it's that the information is fragmented across 8 different sites, each with their own UX, login walls, ad layers, and tracking.
I wanted one place. One toolkit. No ads. No tracking. No login. So I started building.
The stack
- ▸Next.js 15 App Router with React Server Components
- ▸Vercel hosting + Edge runtime for OG image generation
- ▸TypeScript strict mode, no JS files
- ▸Tailwind CSS for styling, no UI framework
- ▸pogoapi.net JSON snapshots for static Pokémon data
- ▸LeekDuck via ScrapedDuck for live events / raids / Rocket data
- ▸SQLite via better-sqlite3 for the admin / operator console
- ▸iOS app in SwiftUI with on-device IV-bar OCR via Vision framework
The SEO strategy
Programmatic SEO. The idea: take a known data set + a template + a generator and produce thousands of valuable pages. The trick is to make each page actually useful — not generic spam.
I targeted four kinds of pages:
- Per-entity pages with unique data (every Pokémon, every move, every raid boss, every shiny, every Community Day).
- Interactive tools that solve a real problem (IV calc, raid counters, PvP team-builder, catch-rate, DPS).
- Long-form guides with structured content (how-to procedures, best-of listicles, methodology articles).
- Comparison + reference pages that answer 'X vs Y' or 'what is X' queries.
Every page has FAQPage / Article / HowTo / BreadcrumbList JSON-LD schema. Every page has a canonical URL. Every page has a unique title + description + OG image generated on the edge.
3 270 indexable URLs · 50 000+ words of original content · 1 200+ pages indexed in Google in the first 3 days · 0 backlinks (yet) · 0 ad revenue (forever).
What worked
1. Dense internal linking
Every dex entry links to its evolutions, counters, moves, type pages, generation, shiny page, and form variants. Every move page links to every species that uses it. Every counter page links back to the boss's dex entry. The result: Google's crawler discovers new pages within hours, not days.
2. Schema markup on everything
Schema.org structured data is the single highest-ROI SEO investment per line of code. FAQPage gets Google's rich-result treatment in SERP. Article + dateModified signals freshness. BreadcrumbList ladders site structure in the SERP path. TechArticle on methodology pages signals authoritative content.
3. Quantitative tools
Every other Pokémon GO site has tier lists. Few have actual calculators. The IV calc, catch-rate calc, DPS calc, and PvP team-builder are all interactive — they take input and compute. That's a different SEO category (transactional intent, not informational) and the competition is much weaker.
What didn't (yet)
1. Search Console quota burn
Google Search Console caps manual 'Request Indexing' at ~10-12 URLs per day. I hit that wall fast. The sitemap submission is what actually drives bulk indexing — the request-indexing button is a small tactical lever, not the main engine.
2. Initial mobile layout bugs
Chip centering was wrong on mobile for the first 3 iterations. The fix turned out to be `inline-flex h-6 items-center justify-center leading-none` instead of `inline-block px-2 py-0.5`. The mobile-first audit caught it; I just hadn't done one.
3. Route conflict mid-build
I tried to put `/counters/[type]` and `/counters/[species]` next to each other. Next.js refuses — different param names at the same depth conflict. Refactored to `/raid/[species]` and `/counters/[type]` lived peacefully.
What's next
Distribution. The site is built. Now people need to find it. ProductHunt launch is queued. Reddit posts are drafted. Discord plugs are scheduled. Each of those is more impactful than another 100 pages of content at this point.
SEO is a 3-6 month game. The pages are indexed; the rankings will come. In the meantime, the brand promise stays: no login, no tracking, no ads. Forever.