Methodology · Lens system

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.

  1. Step 01

    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).

  2. Step 02

    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.

  3. Step 03

    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.

  4. Step 04

    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.

TopicDefault geoOverride allowed
TechGLOBALYes
ScienceGLOBALYes
MarketsGLOBALYes (regional)
ClimateGLOBALYes
AI / AgentsGLOBALNo
GeopoliticsGLOBALYes
PoliticsLocalYes
SportsLocalYes
CultureLocalYes
BusinessMixedYes

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 GLOBAL for 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.

Page last revised . The full revision history of this methodology page lives in the public Git log.

Lens system — thegen.media