ThoughtLab Geo

How Geo processes.

Your Reddit data.

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.

Pipeline overview · runs every Refresh

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.storage so 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.