News Pulse · Browser data lab

A small news warehouse in your browser.

Pick a phrase. News Pulse loads a few public GDELT snapshots, models them with DuckDB-Wasm, and leaves you with tables you can query. No sign-in, and your phrase stays in this tab.

Try
Up to four real snapshotsYour phrase stays localDuckDB-Wasm SQL
Pick a phrase to get started.

Here's what the pipeline built.

Each snapshot goes through the same Bronze, Silver and Gold steps. The latest raw and intermediate tables are here to inspect, alongside a Gold table for the short history. Click a step or change the SQL to see for yourself.

Engine
DuckDB-Wasm
Window input
—
Snapshots
—
Window build
—
news-pulse.duckdb in-browser
LINEAGElatest partition → temporal mart · click to inspect

model.sql

ResultsReady

Select a stage

What one row means in each table.

RelationLayerGrainKeyPurpose
bronze_ngramsBronzeOne NGram per documentdoc_id + quadgramLossless raw facts
bronze_articlesBronzeOne source record per documentdoc_idTitles, URLs and language
silver_matchesSilverOne matching NGram per documentdoc_id + quadgramNormalized phrase matches
joined_articlesIntermediateOne matched documentdoc_idResolve facts to dimensions
gold_topic_articlesGoldOne canonical article URLurlQueryable analytical mart
gold_topic_historyGoldOne canonical URL per snapshotsnapshot_id + urlHistorical drill-down
snapshot_metricsGoldOne available partitionsnapshot_idComparable trend denominator

Rows worth a closer look

A few snapshots, side by side.

Each bar comes from a GDELT file. It shows the share of articles that matched. Click one to see the sources and articles.

in this snapshot

Snapshot

Relevant articles
—
Snapshot share
—
Publishers
—
Languages
—

How the phrase appears

Where it appeared

Languages in this snapshot

The articles behind the metric

Top 10 for the selected point. Query gold_topic_history for every row.

    These are snapshots of published articles, not a measure of what people think. GDELT does not catch everything. If a partition is missing, I leave it out; the percentage uses each snapshot's own article count.

    The edge fetches public GDELT files. It never sees your phrase. DuckDB-Wasm does the matching, joins and modeling in this tab.

    I started this after reading Simon Späti’s article Run DuckDB in your Website. I wanted to try the idea with a news dataset and show the SQL instead of hiding it.