← ALL WORK
Secondary · 03Self-hosted analytics

The Analytics Stack

A self-hosted analytics stack that turns fragmented source systems into one queryable picture — fully owned, no cloud required.

Sources
Fragmented systems
student records, CRM exports, enrollment
Ingest
PostgreSQL
landing & source-schema catalog
Store
ClickHouse
columnar analytics engine
Present
Metabase
dashboards over Caddy
fig.01 — the analytics pipelineself-hosted · fully owned
one table
645K
rows in the person-analytics table alone
largest source
1.16M
Gecko contact values consolidated
catalogued
366
source-schema tables mapped in the metadata index
Problem

The data existed. It just lived in a dozen systems that couldn't answer a question together.

Every real question — how does enrollment move with contact activity? — meant exporting from one system, wrangling it against another, and hoping the join held. The answer was always late and never repeatable. What was missing wasn't more data; it was one place to ask.

Approach

Sources land in PostgreSQL — which also catalogs every source-schema table so nothing goes untracked — then flow into ClickHouse, a columnar store built to answer analytical questions in one pass. Metabase sits on top for dashboards, served through Caddy. The whole stack runs self-hosted via Colima: no cloud bill, no data leaving the institution's hands.

advisor activity, week by week
fig.02 — advisor activity, week by week
Why it matters

A question that used to take a day of exports now takes a query — and everyone's looking at the same answer.

And it does that without a cloud contract or a vendor holding the institution's data. The infrastructure is quiet, local, and owned — exactly the kind of plumbing that should never be something anyone has to think about.

Built with PostgreSQL · ClickHouse · Metabase · Caddy · Colima
Next · Secondary 04
Institutional Knowledge Graph