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.
Inside this tab
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
- —
model.sql
Pipeline stage
Select a stage
Model contract
What one row means in each table.
| Relation | Layer | Grain | Key | Purpose |
|---|---|---|---|---|
bronze_ngrams | Bronze | One NGram per document | doc_id + quadgram | Lossless raw facts |
bronze_articles | Bronze | One source record per document | doc_id | Titles, URLs and language |
silver_matches | Silver | One matching NGram per document | doc_id + quadgram | Normalized phrase matches |
joined_articles | Intermediate | One matched document | doc_id | Resolve facts to dimensions |
gold_topic_articles | Gold | One canonical article URL | url | Queryable analytical mart |
gold_topic_history | Gold | One canonical URL per snapshot | snapshot_id + url | Historical drill-down |
snapshot_metrics | Gold | One available partition | snapshot_id | Comparable trend denominator |
Latest partition · data quality
Rows worth a closer look
Recent history
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.
One snapshot
in this snapshot
- Relevant articles
- —
- Snapshot share
- Publishers
- —
- Languages
- —
Context fragments
How the phrase appears
Publishers
Where it appeared
Languages
Languages in this snapshot
Traceable output
The articles behind the metric
Top 10 for the selected point. Query gold_topic_history for every row.
What this can show
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.
What leaves your browser
The edge fetches public GDELT files. It never sees your phrase. DuckDB-Wasm does the matching, joins and modeling in this tab.
The inspiration
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.