Pheno is a Chrome extension that reads coat-colour genetics from your Horse Reality horse profiles and shows them as a panel inside the page. The genetics analysis itself runs entirely in your browser. Three optional things send data off your device: a free account (so you can save horses to a collection), the cosmetic sync backend, and opt-in usage analytics. Each is explained below.
What Pheno reads from Horse Reality
- The horse profile page's DOM (the genetic test results table you can already see).
- The Horse Reality v2 API endpoints that page is already calling on your behalf (
/api/player/horse/<id>,/api/player/horse/<id>/passport,/api/player/me) — using your existing HR session and CSRF token.
Pheno does not log into HR for you, store your HR credentials, or read any other site.
Your account (Clerk)
Saving horses requires a free account. Sign-in is handled by Clerk, our authentication provider, which stores your email address (and, if you use a social login, the basic profile it returns) to manage your login. The first time you save a horse, we also record your Horse Reality player id against your account so the server can confirm you only add horses you actually own. Clerk acts as a data processor; their privacy policy is at clerk.com/legal/privacy.
Your collection (saved horses)
When you click Add to collectionin the panel, Pheno sends that horse's public profile details to our backend, stored against your account in a Neon Postgres database. That record contains: the horse's life number, name, recognised colour, base colour, sex, breed, the registered owner's player id, inbreeding coefficient, the genotype and hidden-modifier read-out, what it can pass on, and the URLs of its passport image layers. If you organise horses into breeding groups or save dam × sire pairings, the group names and any goal notes you type are stored too.
This data is private to your account — it is returned only to you when you're signed in, and is never made public or shared. You can remove any horse, group, or pairing from the portal, or delete everything at once (see Deleting your data below).
What Pheno stores in your browser
- Your manual coat add-on toggles per horse (sooty, hidden sabino, etc.) — in
chrome.storage.local. - Your picked grey / leopard / tobiano shades per horse — in
chrome.storage.local. - Your analytics opt-in choice, and your account identity once signed in (Clerk user id + email, used to attribute usage events) — in
chrome.storage.syncand your Clerk session.
The cosmetic sync backend (Vercel + Neon Postgres)
When you, as the registered owner of a horse, toggle a cosmetic add-on or pick a shade, Pheno sends those settings to a small backend so that every other Pheno user viewing the same horse profile sees what you set. The request body contains: the horse's life number (the same number visible in the HR URL), your HR player id (so the server can record who claimed the write), and the cosmetic settings themselves. No breeder name, no email, no IP-based identity beyond what every Vercel request log captures and discards after a short retention.
Reads of this cosmetic data are public — any Pheno user looking at the same horse can fetch the same record.
Usage analytics (PostHog) — anonymous by default, identified when you opt in
Pheno sends usage events to a PostHog project so we can see how it's actually used and what's breaking for people. By default these are anonymous: each event is recorded as a "personless" event against a random id with no profile, no email, and nothing tying it to who you are. The first time the panel renders, a banner asks whether you'd like to share stats tied to your account. If you decline (or never choose), collection stays anonymous. If you opt in, events are attributed to your account — PostHog records them against your Clerk user id, with your email attached as a person property once you sign in. You can change your mind any time via the "Usage analytics" row in the panel footer.
The same applies to the collection & breeding web app: product events (saving or removing a horse, creating a pairing or breeding group, viewing a foal report) are recorded the same way — anonymous until you opt in, then tied to your account. No horse names, breeder names, genotypes, or images are ever sent on any event.
Pheno sends exactly these event types, and nothing else:
extension_installed— fired once, on install. Carries the extension's version number.panel_opened/panel_closed— no extra data.manual_toggle_changed— which add-on key (e.g.sooty) was flipped, and whether it's on or off. No horse id, no breeder id.shade_picked— which kind (grey/leopard/tobiano) and which value (e.g.dapple). No horse id.lethal_warning_shown— the gene id that triggered the warning (e.g.white-spotting). No horse id, no allele detail beyond the gene.blue_roan_displayed— fires when the headline rename to "Blue Roan" runs.analytics_opt_in_accepted/analytics_opt_in_declined— fires once on each transition.error_thrown— a JavaScript error stack, truncated to 1 KB and never including page contents.
When you're opted in, each event is sent with your Clerk user id (or, before you sign in, a random id later merged into your account) and a timestamp, and your email rides along as a person property via PostHog's identifyAPI. When you're not opted in, the very same events are sent against a random anonymous id with $process_person_profile: false, so no profile and no email are ever recorded. Either way, Pheno never sends horse names, breeder names, genotypes, or images. PostHog is the data processor; their privacy policy is at posthog.com/privacy.
How to opt out
- For account-tied analytics:open any horse profile, click the panel's trigger tab, and flip "Usage analytics" to OFF in the footer. Identity and email stop immediately; anonymous, profile-less usage events continue so we can still gauge overall use.
- For saving horses: simply don't sign in / don't use Add to collection. The genetics panel works fully without an account.
- For the cosmetic sync backend:it only fires when you, as the registered owner of a horse, change a cosmetic toggle. Don't touch the toggles, and nothing is sent.
Deleting your data
You are in control of everything tied to your account:
- Remove individual items — delete any horse, breeding group, or pairing from the collection portal at any time.
- Delete your whole account — sign in and use Delete my account on your account page. This permanently erases every horse, group, and pairing saved to your collection and deletes your Clerk login account. It cannot be undone.
- Browser data — uninstalling the extension at
chrome://extensionsclearschrome.storage.localandchrome.storage.syncautomatically.
Children
Pheno is not directed at users under 13.
Contact
Pheno is built by player SMR (Renwick Performance Horses). For questions or a data request, find me in-game or by replying to whichever channel pointed you here.