Skip to content
Docs overview

Ask questions

Ask in plain language and get an answer grounded in your ontology, with the SQL that produced it. The same engine answers in three places: the web app, any MCP client, and Slack. This page is for anyone who just wants answers. No setup knowledge required.

Access is limited to selected design partners today. Leave your email at getcassis.com to be notified when it opens up.

How asking works

The model is the same everywhere you ask.

Plain language
Ask the way you would ask a teammate. Cassis grounds the question against the ontology, then writes the SQL.
Always planned
Cassis plans every question first. When the plan has no real judgment call, it runs automatically and shows the plan for transparency. When a question has a genuine fork (an assumption you could resolve differently), it pauses so you can confirm or switch the interpretation before it runs.
Follow-ups keep context
A conversation holds its context, so "now break it down by month" works without restating the scope.
Every answer is auditable
Answers carry the SQL, the objects used, and a πŸ‘ / πŸ‘Ž. Your corrections feed back into the ontology as refinements the data team reviews.
Two project modes
Connected to your warehouse, Cassis runs the SQL and returns results. In generate-SQL-only mode, it returns the grounded SQL for you to run. An admin sets this up, see Connect your warehouse.

In the web app

Sign in at app.getcassis.com and open a project's Chat. Every answer carries the SQL, the objects used, πŸ‘ / πŸ‘Ž, and an "Add as test case" shortcut. The examples below use a Formula 1 project.

1. Question with no judgment call
Runs automatically, with the plan shown for transparency plus the SQL and result so anyone downstream can verify.
Cassis · Formula 1 project
Who won the most races in 2023?
Max Verstappen won 19 out of 22 races in 2023, far ahead of Pérez (2) and Sainz (1).
sql: SELECT d.full_name, COUNT(*) FROM public.results r
  JOIN public.races ra ON r.race_id = ra.race_id
  JOIN public.drivers d ON r.driver_id = d.driver_id
  WHERE ra.year = 2023 AND r.position = 1
  GROUP BY d.full_name ORDER BY 2 DESC

objects_used: public.results, public.races, public.drivers
Show SQL πŸ‘ / πŸ‘Ž Add as test case
2. Plan, then execution
A question with a genuine fork pauses on the plan first. Review or switch the assumptions and objects, then run it.
Cassis · Formula 1 project
Compare total points scored by all drivers in 2022 vs 2023, including sprint results.
Proposed query plan
UNION query combining the public.results and public.sprint_results tables, grouped by season.
public.races public.results public.sprint_results
Assumptions:
· Sprint points included in the total
· Points rolled up across all drivers per season
Run plan
Across 2023 drivers scored 2,458 points combined, slightly ahead of 2022 at 2,350. Sprint points are included in both totals.
3. Follow-up in the same chat
The chat holds its context, so follow-ups reference earlier results without restating the scope.
Cassis · Formula 1 project · continued
Now break it down by constructor for 2023.
Grouped by constructor in 2023: Red Bull Racing 860, Mercedes 409, Ferrari 406, McLaren 302, and six more.
objects_used: public.constructor_standings, public.constructors

From an MCP client

Connect a client once (Claude Code, Claude Desktop, Cursor, or a custom agent, see Connect MCP clients), then ask in natural language. The client picks the right tool and calls it for you, so the experience matches the web app:

You type, the agent calls
You ask a question; the client calls the ask_question tool under the hood. You never see the raw payload.
Forks still gate
A question with a genuine fork returns a plan. The client shows it and waits for your explicit approval before executing.
Follow-ups
The client keeps the chat going, so you can refine and drill down in place.
Tool shapes
The exact parameters and response fields live in the MCP reference.

How it looks depends on the client. Cassis returns the answer, the SQL, and (for complex questions) a plan; the client renders them in its own chat UI. The example below uses Claude Desktop. For the exact payload, see the MCP reference.

Claude Desktop · Cassis (MCP)
Who won the most races in 2023?
Max Verstappen won 19 of 22 races in 2023, far ahead of Pérez (2) and Sainz (1).
sql: SELECT d.full_name, COUNT(*) FROM public.results r ...
  WHERE ra.year = 2023 AND r.position = 1 GROUP BY 1

objects_used: public.results, public.races, public.drivers

A complex question surfaces a plan first. The client shows it and waits; you approve in plain language, and it runs.

Claude Desktop · Cassis (MCP)
Compare total points scored in 2022 vs 2023, including sprint results.
Proposed query plan
UNION query combining the public.results and public.sprint_results tables, grouped by season.
public.results public.sprint_results
Assumptions:
· Sprint points included in the total
· Points rolled up across all drivers per season
Approve this plan to run it, or tell me what to change.
Yes, run it.
In 2023 drivers scored 2,458 points combined, up from 2,350 in 2022. Sprint points are included in both totals.

In Slack

Once an admin has installed the app and mapped a channel to a project (see Install the Slack app), @-mention the bot with a question. It posts a "Working on it…" placeholder, then replies in the thread with the answer, the SQL, and a link to the full chat in Cassis. Each thread maps to one Cassis chat, so follow-ups stay in the thread.

#race-analytics · Cassis
@Cassis who won the most races in 2023?
@you Max Verstappen won 19 of 22 races in 2023, far ahead of Pérez (2) and Sainz (1).
sql: SELECT d.full_name, COUNT(*) FROM public.results r
  JOIN public.races ra ON r.race_id = ra.race_id
  WHERE ra.year = 2023 AND r.position = 1 GROUP BY 1

results: 3 rows
Open in Cassis ↗ πŸ‘ / πŸ‘Ž
@Cassis now break it down by constructor.
@you Red Bull Racing 860, Mercedes 409, Ferrari 406, McLaren 302, and six more.
results: 10 rows attached as results.csv
Thread ownership
A thread belongs to whoever started it. Only they can ask follow-ups, run its plan, or rate its answers. Anyone else who @-mentions the bot is told to start their own thread.
Plans in the thread
A question with a genuine fork posts a plan inline with a Run plan button the author clicks to execute without leaving Slack. To change the interpretation, use the Change assumptions button, or @-mention the bot with what to change. A plain reply is not picked up. Once it runs, the button goes away.
Rating
Every answer shows πŸ‘ / πŸ‘Ž. The author's rating persists alongside the ratings collected in the web app.
Large results
More than a handful of rows attach as results.csv. The inline reply still shows the first few.

Want to try Cassis?

Access is limited to selected design partners today. Leave your email to be notified when it opens up.

Stay tuned