How we stay brand-safe under trademark rules
Where the "mons" / "the game" convention applies, where the trademarked name is allowed, and why.
Body UI never says "Pokémon" or "Pokémon GO" — we use "mons" / "the game" / "in-game" instead. Trademarked names are reserved for HTML <title>, Open Graph, JSON-LD, the footer disclaimer, and code comments — the surfaces search engines need but UI users do not see.
Niantic and Nintendo / Game Freak hold trademarks on "Pokémon" and "Pokémon GO". Independent fan projects are allowed to reference them descriptively, but heavy brand-name use in product UI risks a takedown.
Our convention: body UI strings refer to "mons" (singular: "a mons"), "the game", or "in-game". This reads naturally to the audience (everyone knows what game we mean) and keeps the actual trademarked term out of the user-visible product surface.
| Surface | Allowed name | Reason |
|---|---|---|
| Body UI text | mons / the game | User-facing — minimize trademark use. |
| <title> tag | Pokémon GO | SEO — search ranking depends on it. |
| Meta description | Pokémon GO | SERP snippet — must signal relevance. |
| Open Graph / Twitter card | Pokémon GO | Social link previews — same SEO logic. |
| JSON-LD schema | Pokémon GO | Structured data for Google. |
| Footer disclaimer | Pokémon GO | Required to identify the disclaimer. |
| Code comments | Pokémon GO | Internal — never seen by users. |
| Alt text on images | mons / the game | User-facing accessibility text. |
Every page on hundo-hunter.com renders a fixed footer block: "Hundo Hunter is an independent fan-made project. Not affiliated with, endorsed, sponsored, or specifically approved by Niantic, Nintendo, Game Freak, The Pokémon Company, or any related entity. All Pokémon names, sprites, and game assets are trademarks of their respective owners."
This is the standard nominative-fair-use disclaimer pattern used by every reputable fan site (Silph Road, PvPoke, LeekDuck). It identifies us as a fan project and disclaims sponsorship.
The convention is checked by automated tooling, not memory:
- ▸A repo-wide grep on body UI strings flags any literal "Pokémon" / "Pokémon GO" / "PoGO" before each release.
- ▸The iOS app translation file lib/i18n/translations/en.ts is linted for the same — all locales inherit the convention.
- ▸The translate.ts pipeline glossary preserves the convention into every locale (JA: "ポケモン" stays out of body strings).
- ▸Code review: the brand-safety memory file is loaded into every Claude session so generated UI strings follow the rule by default.
How Hundo Hunter solves the CP formula backward to find IVs.
How Hundo Hunter ranks the top 12 counters for every raid boss.
How Hundo Hunter curates the top-12 picks per league.
How Hundo Hunter computes the hundo and floor CP for every raid catch.
How Hundo Hunter assigns S / A+ / A / B / C tiers to attackers.
How Hundo Hunter maps the in-game appraisal stat bars to exact 0-15 IVs.
The DPS × Effectiveness × Bulk formula behind every counter list on Hundo Hunter.
The 91% IV threshold, XL-relevance check, and per-species candy economics behind every Pinap recommendation.
Per-level CPM math, Lucky halving, Best Buddy stack, and why our estimates can differ from in-game by 1-2%.
ASC API + ct= campaign tokens, per-source attribution, and zero personal data on the install funnel.
LeekDuck → ScrapedDuck → our API, with 1-hour refresh, Postgres translation cache, and graceful fallback.
Vercel Analytics, no personal tracking, opt-in email only, and stateless HMAC unsubscribes.