data dumps

Your exports, on your machine.

Ingest your own GDPR and app exports into DuckDB, then look at them in a local dashboard. This is not a hosted service. The dumps and the warehouse stay outside git.

One warehouse, many exports

Each loader detects its own zip or folder. The same ingest command covers Spotify, Telegram, LinkedIn, Slack, Google Takeout, and the rest.

Ingest

Drop an export on uv run ingest. Loaders write into one DuckDB file under your data root, not into the git tree.

Explore

A Marimo dashboard on loopback. After more than one source is loaded, Compare and Correlations tabs appear.

Privacy

Source tables drop IPs, phones, ads, and KYC, and they do not show email addresses. The dashboard has no password — bind it to localhost.

Docker, optional

The image is code only. Compose bind-mounts your data root and publishes 127.0.0.1:2718.

What can I do with it?

  • Load a Spotify extended history and open the explorer
  • Add Telegram, LinkedIn, Slack, Google, and other exports
  • Compare sources once more than one is in the warehouse
  • Run the same ingest and dashboard from Docker

Request steps and what each loader drops: getting your data.

On your machine

Do not put the dashboard on a shared network. The warehouse is single-writer: stop the dashboard before the next ingest. Do not commit dumps, extracted files, or DuckDB databases.

Install

Python 3.11+ and uv. Put exports under ~/Documents/data_dumps_raw, or set DATA_DUMPS_ROOT.

uv sync
uv run ingest /path/to/my_spotify_data.zip
uv run marimo run notebooks/explorer.py --host 127.0.0.1 --port 2718

Open http://127.0.0.1:2718. Details: GitHub · README