Case Study
Salsa te Gusta Analytics Chat
A private, team-only chat app that answers plain-language questions about the dance school — always grounded in real spreadsheet data, never a guess
Project Overview
An internal analytics assistant built with Claude Cowork for an Amsterdam salsa school. Staff ask questions like “is this season filling faster than last year?” in plain language, and the app answers using a RAG-style pipeline over the school's Google Sheets. A key design rule: answers must always trace back to real data, so the model is only ever allowed to call typed analytics tools rather than invent numbers.
The build leans heavily on a privacy-first architecture — student names and contact details are pseudonymised before anything reaches the model and only restored in the authorised browser — plus role-based access, charting, and personal dashboards. It's a good example of a non-trivial, production-minded AI app shipped through vibe coding.
Technical Implementation
Grounded, multi-step tool calling
Built on the Vercel AI SDK with streamText and multi-step tool calling: the model calls a typed analytics tool, reads the result, and may call another before answering — so every number traces back to a real spreadsheet row.
Aggregation in code, not the model
All counting, grouping, and rate math live in pure, unit-tested functions. The model orchestrates and explains; it never crunches raw rows. Tool descriptions double as documentation that drives accurate tool selection.
PII never reaches the model
The Google Sheets layer is the choke point: names become stable HMAC tokens and emails/phones are dropped before anything reaches the LLM. The team still sees real names — tokens are swapped back in the browser, after inference.
Role-based access + personal dashboards
A flat RBAC module gates which data sources and tools each user can reach, fails closed on auth, and lets users pin analytics panels to a personal dashboard backed by Vercel KV.
Key Features
- Plain-language questions answered from live Google Sheets data
- Season-over-season enrolment pacing and try-out → course conversion metrics
- Charts and pinnable dashboard panels per user
- Team-only Google sign-in (NextAuth), fails closed if unconfigured
- Privacy-first: pseudonymised data to the model, real names only client-side
- Nightly Postgres mirror for deeper Metabase dashboards
Interested in similar automation?
Let's discuss how I can help automate your marketing workflows and analytics reporting.
Impact
Technologies Used
Business Value
- Staff self-serve business questions without a data analyst
- Trustworthy answers — every figure cites its source and time range
- Privacy-by-design keeps student data away from the model