How Geo processes.
ThoughtLab Geo is a Chrome extension that pulls your full Reddit posting history, fans out to per-post insight pages, and parses country-level view data into a single dashboard. Everything runs locally in your browser. This page explains exactly what happens between clicking Refresh and seeing the dashboard fill in.
Your data never leaves your browser
Geo runs entirely as a Chrome extension. Every fetch goes from your machine directly to www.reddit.com using the cookie you're already logged in with. The snapshot is stored locally in chrome.storage — no Geo backend, no third-party server, no analytics.
1 · Snapshot the previous run
Before anything new gets fetched, Geo captures every enriched item from your last analysis into an in-memory map keyed by kind_id36. That cache is what lets the next stages skip work for posts whose stats haven't changed — you're not paying the network cost twice.
2 · Pull your full history in parallel
Two listing crawlers fire at the same time against www.reddit.com using your existing login cookie — one for submitted posts, one for comments. Each walks Reddit's listing pages up to the platform's hard cap of 1,000 items, paginating 100 at a time.
No OAuth token, no API key, no separate login — the extension just rides the Reddit session you're already in.
3 · Merge, sort, and rebuild state
Posts and comments collapse into one timeline sorted newest-first by createdUtc. Each item is matched against the snapshot from step 1 — if its enrichment is still done, the cached views, vote ratio, and country breakdown are copied straight over and the item skips the worker pool entirely.
4 · Worker pool fetches per-post insights
A bounded pool of 6 concurrent workers grinds through every queued post, fetching /poststats/<id>/ as raw HTML and parsing out the view counts, upvote ratio, vote breakdown, and the country-flag table that powers the geo grouping.
Pacing is adaptive — Reddit's response headers feed back into a min/max interval so the pool slows down before you ever hit a 429.
- Concurrency — up to 6 in-flight requests at once.
- Adaptive pacing — minimum interval grows when Reddit signals load.
- 429-aware retry — a single delayed retry on rate-limit before giving up on an item.
5 · Comment views via listing scrape
Comments don't have a poststats page, so Geo uses a different trick: it scrapes the rendered /user/<you>/comments/ HTML in parallel cursors, plus a one-time DOM prefill from any open profile tab you already have. View numbers come straight out of the listing markup — no per-comment endpoint, no extra fan-out.
6 · Render, persist, repeat
UI updates are coalesced on a 250 ms tick so the dashboard stays smooth while data streams in. Country totals, sub-group cards, sort order, and search filters all recompute live. When the pool drains, the full snapshot is written to chrome.storage so the next session starts pre-populated.
What you see in the dashboard
- Posts & comments — every item with views, score, upvote ratio, and Reddit's country breakdown.
- Subreddit groups — items collapsed by sub with total views, item count, and per-sub yield.
- Country totals — flag emojis pulled from the insight HTML, rolled up into a leaderboard you can click to filter the feed.
- Live search & sort — filter by title, sub, or status; sort by views, score, age, or yield.
Permissions used
- activeTab — to read the URL of your current Reddit tab.
- cookies — to ride your existing Reddit session for authenticated requests back to Reddit.
- storage — to persist the snapshot locally in
chrome.storageso the next session starts pre-populated. - Host permissions for reddit.com — to fetch listing JSON, post insight HTML, and the rendered comments listing for local analysis.