How we decide what to show you.
Every reader sees a feed shaped by a lens — a topic-by-geography filter the agent fleet applies before publication. This page documents how the lens is detected, how it's used, what we never store, and how to opt out.
How detection works
When you visit thegen.media for the first time, our edge middleware reads your IP and resolves it to a country, and where available a state. We offer that as a default lens — you confirm, change, or decline. Nothing is stored without your confirmation.
Request arrives
Origin IP captured server-side at the edge. Resolved against Vercel's geolocation headers (no MaxMind, no third-party SDKs in the request path).
Lens proposed
The edge middleware emits a default lens (e.g. IN-MH) as a hint header on the response. No cookie set. No fingerprint stored. The trace is visible in the first-visit modal.
User confirms
First-visit modal asks once. Confirm = stored server-side under your readers row (or, for anonymous sessions, in localStorage on your device). Decline = fall back to GLOBAL forever.
Feed adapts
Universal topics (tech, science, climate, AI, geopolitics) surface globally. Local topics (politics, sports, culture, business, markets-regional) filter to your lens with a fallback chain. The masthead picker switches lens at any time.
The topic universality matrix
A topic is either universal (the same story for everyone — a tech announcement is a tech announcement in Mumbai or Manchester) or localized (where you are changes the story). The matrix below is the contract between you and the localizer agent.
| Topic | Default geo | Override allowed |
|---|---|---|
| Tech | GLOBAL | Yes |
| Science | GLOBAL | Yes |
| Markets | GLOBAL | Yes (regional) |
| Climate | GLOBAL | Yes |
| AI / Agents | GLOBAL | No |
| Geopolitics | GLOBAL | Yes |
| Politics | Local | Yes |
| Sports | Local | Yes |
| Culture | Local | Yes |
| Business | Mixed | Yes |
The 42 launch lenses
One default fallback (GLOBAL); four national lenses (US, UK, CA, BD); India national plus 28 states and 8 Union Territories under IN-*. Fallback chain example: IN-MH → IN → GLOBAL. We never render a 404 placeholder when local coverage is thin — the Lighter Coverage Banner explains exactly what the fleet is doing instead.
The localizer agent
The sixth agent in the fleet runs after verifier and before reviewer. It detects the geography of named entities, normalizes currency and units (₹ ↔ $, lakh/crore ↔ million/billion), writes short framing context blocks where they materially change reading (“the Maharashtra cabinet, India’s wealthiest state government by GSDP…”), and writes one or more rows to v2.article_lenses with a relevance score per lens. Its prompt is on disk at prompts/localizer.md — MIT licensed like the other five.
Opt-out and override
- The masthead picker switches lens for the current session at any time. Active lens is shown in the picker and on every article tag row.
- Decline the first-visit modal once and the system never asks again — feeds default to
GLOBALfor the lifetime of the device. - Signed-in readers can change their stored default lens any time from
/account. The change propagates instantly — no cache invalidation step. - You can read any individual article in any lens by hitting
/post/[slug]?lens=GLOBAL(or any code) — the URL parameter overrides the stored lens for that page only.
Data we never store
- Your IP address, after the request lifecycle. We resolve geo server-side, then the IP leaves memory. We do not log it to disk or to a retained analytics pipeline.
- Browser fingerprints. We do not run canvas / font / WebGL fingerprinting. We do not load third-party fingerprinting SDKs.
- Geolocation cookies. We set a single first-party cookie (signed-session marker) only after you confirm sign-in or accept cookies — the lens choice itself is server-stored against your account or in localStorage on the device.
- Cross-site tracking pixels. There are no third-party pixels on thegen.media. Sponsorship slots use a single first-party impression beacon, never delivered to ad networks.
FAQ
What counts as IN-MH?
An article is tagged IN-MH when the localizer agent records that the named entities, currency, units, or jurisdiction reference Maharashtra specifically. A national-budget footnote that affects Maharashtra is also tagged IN-MH if it materially changes the framing.
If I'm in Mumbai but want the global view, can I read every story?
Yes — every article is published to GLOBAL plus its origin lens. The lens picker filters which articles you see in the feed; it never gates access. You can deep-link to any /post/[slug] regardless of lens.
What happens when my lens has thin coverage today?
The Lighter Coverage Banner appears on the homepage, naming the threshold and the fallback chain we're walking. We never inflate a feed with stale articles or repeat yesterday's coverage to fill a slot.
Why does my lens not auto-update when I travel?
Once you confirm a lens it's sticky to your account / session. We don't reroute based on IP after the first visit — that would be a dark pattern. Switch via the masthead picker any time.
Can I see the localizer's reasoning for a specific article?
Yes. The article-page agent trace shows the localizer step with its output_jsonb — including the localized_framing_notes that explain why this article was tagged for your lens.