Skip to content
// SELECTED WORK
01 / OWNED PRODUCT · 2024–

Satsu

Cookieless analytics, AI-traffic attribution, site audits and uptime — one private place, no consent banner.

// ~1M EVENTS/MO

Satsu site overview: visitors, pageviews, bounce rate and visit duration over 30 days, a live-visitor panel, device breakdown and top pages, with tabs for Audience, Behavior, AI, Health and the five audits.
Services, one monorepo
18
Tracker, zero dependencies
2.9 KB
Audit pillars
5
Cookies set
0

// THE PROBLEM

I wanted analytics for my own projects and hated the options: cookie banners, GDPR overhead, dashboards buried in noise. So I built Satsu. The first version ran on a single Express server; an independent developer deployed its script inside two Indonesian government projects (under NDA). In 2026 I rebuilt it as a platform and relaunched publicly at satsu.pro. In the weeks since, analytics grew into a site-health suite: 18 services around one event pipeline.

// WHAT I BUILT

  1. 01

    A tracker that ships raw signals only — pageviews, custom events, SPA navigation, outbound clicks, downloads, scroll depth, real-user Core Web Vitals — in 2,880 bytes of dependency-free JavaScript, measured on the production build.

  2. 02

    A Go event pipeline — ingest → NATS JetStream → processor → ClickHouse — that filters bots and enriches geo and device in-stream; ingest stays up and buffers while everything behind it redeploys.

  3. 03

    An AI-traffic suite: per-assistant attribution across 18 AI hosts (ChatGPT, Perplexity, Claude, Gemini …), the share of sessions with an AI touch, referrer-stripped external clicks recovered from Sec-Fetch-Site, AI landing-page breakdowns and AI-crawler sightings.

  4. 04

    Five audit pillars — SEO, WCAG 2.1 AA, security headers, GDPR, Lighthouse performance — run by headless-Chromium workers, plus uptime and TLS-expiry monitoring, anomaly alerts, public monitor share links and a status page.

  5. 05

    Org → workspace → site tenancy, an org-scoped read-only API, and Stripe billing (Merchant of Record) with trials, vouchers and soft limits that never drop data — in one self-hosted monorepo with a verify environment per push, SHA-pinned Swarm deploys and nightly restore-tested backups.

// THE INTERESTING PART

Satsu identifies a visitor without ever setting a cookie. The processor derives a daily session id as sha256(siteId | masked IP | user agent | date | salt), truncated to 16 hex chars — the date is inside the hash, so the id rotates at midnight UTC and the same person tomorrow is a new, unlinkable session. And because ClickHouse stores only raw enriched events, everything above them — sessions, bounce, channels, goals, AI attribution — is derived at query time: a better classifier reaches back across all history without reprocessing a single row.

// IN THE PRODUCT

Satsu AI tab: AI visitors, the AI-influenced share of sessions and hidden external clicks, a per-assistant breakdown for ChatGPT, Perplexity and Claude, and which pages AI visitors land on.
Satsu Audience tab: a world map of visitor locations with a country list, beside channel attribution — social, direct, organic search, referral, AI, email, paid.
Satsu Behavior tab: outbound-link engagement, a scroll-depth histogram, custom event counts and goals with conversion rates.
Satsu landing page hero — analytics, SEO, accessibility and uptime in one place — with a live dashboard for satsu.pro itself: the product tracks its own site.

// OUTCOME

// IMPACT

Live at satsu.pro since the July 2026 relaunch, with free registration and paid plans; AI-traffic attribution, five audit pillars and uptime monitoring shipped on top. Deployed by a third-party developer into two Southeast Asian government projects (under NDA); handles roughly 620k–1M tracked events a month.

// STACK

Go services (ingest, processor, query, public API, status) + TypeScript workers (core-api, billing, notifications, prober, five audit workers, screenshots), Next.js dashboard and landing, ClickHouse + PostgreSQL + NATS JetStream + Redis + MinIO, headless Chromium, Stripe Merchant of Record. Self-hosted on Hetzner, Docker Swarm, Prometheus + Loki + Grafana.