Landry Bodjona
LB-05

Data Analyst

Answers business questions in plain language by writing, checking and running SQL on the company’s sales data.

Open the evaluation board
Phase 1Flask · sync · Size M

What a visitor does Asks a sales question, then tries to drop a table

Problem

Owners wait days for simple numbers, and letting a model run SQL against a database is a real security risk.

Try it live

Ask which coffees lost the most repeat buyers last quarter. You get the SQL, the table, a chart and a plain explanation. Then try to make it delete data and watch each safety layer stop it.

Proves

Safe text-to-SQL, a semantic layer, and a measured choice of sync over async.

  • Tool use
  • Structured output
  • Text-to-SQL

Signal chain

  1. resolve metrics
  2. write SQL
  3. parse + allowlist
  4. EXPLAIN
  5. run read-only
  6. self-correct
  7. chart + explain

Stack

Flask (sync) · gunicorn threaded workers · DuckDB · sqlglot · Vega-Lite · Vue

Engineering highlights

  • Six layers of SQL safety: a SELECT-only parse, an allowlist of tables, columns and functions, a plan check before anything runs, a locked read-only connection, a forced row limit and a query timeout.
  • Sync on purpose. Queries are short and CPU-bound, threads cover the model wait, and the code stays simple. The datasheet publishes a load test against an async build.
  • Execution accuracy measured on 100 question and answer pairs.
Table 1. Operating limits
Operating limitValue
Questions per visitor per day25
Query timeout5 s
Row cap1,000
Model calls per question (est.)2–4

Status The evaluation board for this part is open. It starts on curated samples, and your own text runs live within your daily allowance. Open the evaluation board