Most people are overpaying property tax and never find out. In the US, 30 to 60% of homes are valued too high for tax. In the UK, hundreds of thousands of homes sit in the wrong council tax band, still based on a rushed 1991 valuation. The proof is public record. The catch is that nobody could ever actually query it.
So for the ClickHouse x Trigger.dev Summer Hackathon 2026 (theme: "Beyond the Wall of Text"), I built Overtaxed: a chat agent where you type your home address and, instead of a paragraph, you get a picture.
Live demo: https://overtaxed-mauve.vercel.app
Code: https://github.com/usv240/overtaxed
The idea: the answer IS the product
The hackathon brief was clear. Don't reply with walls of text. Reply with maps, charts, and interactive things you can explore. If your best answer is a paragraph, you missed the point.
Overtaxed leans all the way into that. Type an address and you get:
- A one line verdict ("you're overpaying about $3,793 a year")
- A map of your street, with your home glowing red against neighbours
- The comparable sales that prove it
- Two AI advocates that debate whether you should appeal
- A real, filled-in appeal document, ready to review
- And you can just ask the data anything and watch it answer live
It also works for the UK (live council tax band checks) and covers a second US county, with no code changes.
ClickHouse is the star, not the storage
This was the fun part. ClickHouse is the primary database and it does all the actual thinking, live, over about 8 million real rows (6M UK Land Registry sales and 1.6M Chicago properties).
A few of my favourite uses:
-
Comparable sales with
geoDistance()to find the nearest real sales to any home. - Fairness science live: the standard IAAO uniformity metrics (PRD and COD) computed over 60k+ sold homes, sub-second.
-
A "Tax Divide" heatmap: one spatial query turns 1.6 million homes into about 1,800 map cells (
round(lat, 2), round(lng, 2), avg(ratio)) in roughly 200ms. No external GIS. -
Zero-ETL ingestion with
INSERT ... SELECT FROM url(...), so ClickHouse reads the raw government CSVs straight off HTTP. -
A materialized view (
AggregatingMergeTreewithargMaxState) for each home's latest sale. - Ask the data anything: the agent turns your plain-English question into a safe, read-only ClickHouse query, runs it, and picks a chart. This is the judges' own "ask my logs anything" idea, pointed at a real civic dataset. The generated SQL and the run time stay on screen, so every answer is auditable.
Every result shows its query latency, so the speed is proven, not claimed.
Trigger.dev runs the whole show
The experience is a Trigger.dev chat.agent(). The agent routes each message to tools that query ClickHouse and return visual specs (a map, a chart, a card), never prose.
But it does more than chat:
- Durable, long-running ingestion tasks stream millions of rows into ClickHouse, retryable, no timeouts.
- A durable child sub-task runs the "should you appeal?" debate: two advocates argue in parallel, then a verdict. Even if the browser closes, it keeps running.
- A scheduled cron task re-checks saved homes and flags changes, surfaced by a "Watch this home" button in the UI.
The bonus round: OLTP + OLAP in one query
For the OLTP + OLAP category, saved appeals live in Postgres. The portfolio page runs a single ClickHouse query that pulls those Postgres rows in via the postgresql() table function and joins them against the analytics tables. One statement, two engines, with the query and its latency shown right on the page.
Why it matters
This is not a toy. In Cook County alone we measure about $460 million a year of unfair over-assessment, live over real homes. Scaled nationally, and consistent with published research across 118 million homes, that points to roughly $20 billion a year, quietly taken from the people who can least afford it.
Overtaxed turns those buried public records into a verdict, visible evidence, and a path to act, in about ten seconds.
Try it
- Live: https://overtaxed-mauve.vercel.app
- Code (MIT): https://github.com/usv240/overtaxed
Built by team Agent Forge for the ClickHouse x Trigger.dev Virtual Summer Hackathon 2026. Thanks for reading.
Top comments (0)