Project 01 · Case Study

An agentic analytics assistant, built in a weekend.

LangGraph + Qdrant + a hand-built semantic layer turned 48 hours of datathon time into a working analyst-on-tap for a real product dataset.

Walkthrough video · coming soon
datathon-agent
semantic layer · v0.3

What drove the engagement drop in week 12?

Weekly engagement fell -18.4% in week 12 (Mar 17–23). Decomposing by surface:

SurfaceWoW ΔContribution
Feed-22%61%
Search-9%18%
Notifications-14%21%

Most of the drop is concentrated in the Feed surface and aligns with the Mar 18 ranking model rollout (v2.4). Want me to pull the experiment readout?

Yes — pull the experiment.

Experiment feed_rank_v24 ran Mar 18 → Mar 24.

Sessions / DAU · treatment vs control

Treatment shows a -2.1% lift on sessions/DAU (p = 0.03). The drop is real, not seasonal. I'd recommend rolling back v2.4 or holding out a control until the ranking model is retrained.

What drove the engagement drop in week 12?Compare cohort retention by acquisition channelTop 5 features correlated with D30 retention
Ask anything about the dataset…Send

Problem

Analysts as a bottleneck.

Most product teams wait days for an analyst to translate a question into SQL, a chart, and a recommendation. The datathon brief: collapse that loop without losing rigor.

Architecture

LangGraph + semantic layer + RAG.

A planner agent decomposes the question, a SQL-tool agent queries the semantic layer (not raw tables), and a retrieval step pulls past analyses from Qdrant. Outputs are validated before they reach the user.

Deployment

Cached, secured, and explainable.

Response caching at the query-plan level kept latency under 4s. Every answer ships with the SQL it ran and the data it pulled — so the analyst-in-the-loop can trust, edit, or override.

Outcomes

80% of requests, served in minutes.

In production at Benable, the same pattern now handles the majority of ad-hoc analytics requests and freed the analyst team to focus on causal and strategic work.