the whole thing, in plain words. there is no longer version hiding behind this one.
we run one analytics script — ours (/js/analytics.js). it
sends events to our own server, which writes them to our own database.
that is the entire pipeline: our script, our server, our table. no one
else is in it. the events, exactly:
with each event the server also stores: a random session id that dies with your browser tab, the page path, a truncated hash of your ip address (16 characters of a sha-256 — the address itself is never stored), your browser's user-agent string, and — only if you signed in — your account id.
to make the site better. that's the whole reason. seeing which photos hold people and which get scrolled past is how we learn what belongs here and what doesn't — the site gets better at showing you things worth seeing, or the data was pointless.
everything else. no third-party trackers, no ad pixels, no fingerprinting, no analytics vendors, no cookies from anyone but us. nothing is sold, shared, or traded.
honest part first: we collect while you're deciding. hit decline on the banner and the script sends nothing — not less, nothing: zero requests leave your browser. events sent before you declined stay in the database until they age out (below). your choice lives in your browser's storage — clear that storage and the banner will ask again.
every event is stamped to auto-delete 90 days after it lands. the database enforces that, not a policy document — the actual deletion usually completes within a few days of the stamp.
a dedicated contact address is being set up and will appear right here the moment it works — we won't print an address that goes nowhere. meanwhile: decline needs no permission (it's enforced in your browser, see above), and every event self-deletes inside 90 days regardless. creators: the same-day takedown promise stands and the address for it lands here first.