TL;DR
Snowflake Cortex is the umbrella for Snowflake's agentic stack: Cortex Agents orchestrate Cortex Analyst (text-to-SQL over a semantic model) and Cortex Search (unstructured retrieval), with Snowflake Intelligence as the business-user surface. Mitzu is an analytics platform on your data warehouse for BI, product analytics and experiment analysis, where the data team governs the metrics and everyone uses them through dashboards, an AI agent, Slack and their own AI assistants. The architectural difference is who writes the SQL. In Cortex an LLM authors it for each question. Mitzu's agent assembles an analysis specification and a deterministic engine turns it into SQL, so the same question gets the same answer.
Use this comparison if you are evaluating Snowflake Cortex Analyst for AI analytics on Snowflake and want to see how it differs from a governed analytics platform on the same account: who writes the SQL, how metrics are defined, and what each runs beyond a chat answer.
Snowflake has been steadily building out an agentic stack (Cortex Agents, Cortex Analyst, Cortex Search and Snowflake Intelligence) and positioning the result as the "control plane for the agentic enterprise." That makes "Snowflake Cortex vs Mitzu" a fair question: both answer plain-English questions on Snowflake data, and Snowflake teams sit squarely in Mitzu's audience. Cortex is a general-purpose way for an LLM to write SQL on Snowflake, grounded in a semantic model. Mitzu is one analytics platform on the warehouse for BI, product analytics and experiment analysis, governed by the data team, with an AI agent whose SQL comes from a deterministic engine. Snowflake is one of the warehouses Mitzu connects to.
What is Snowflake Cortex?
Snowflake Cortex is the umbrella name for Snowflake's in-warehouse AI features. The agentic surface area is built from a small set of composable pieces:
- Cortex Agents: the orchestration layer. An agent plans a question, picks tools (Cortex Analyst for structured data, Cortex Search for unstructured, custom stored procedures, web search via Brave), reflects on results, and returns an answer. Exposed via REST API and the Snowsight chat UI.
- Cortex Analyst: fully managed text-to-SQL over a semantic model, written as a YAML file or as a semantic view in Snowflake. The model defines logical tables, dimensions, facts, metrics and relationships. LLMs (Claude and OpenAI, selected per query) author SQL against it.
- Cortex Search: retrieval over unstructured data (PDFs, docs, transcripts).
- Snowflake Intelligence: the business-user surface. A "personal work agent" with MCP connectors to Gmail, Slack, Jira and Salesforce, deep research, and an iOS app.
- Cortex Code: a Snowflake-native coding agent for builders, with VS Code and Claude Code plugins.
An April 2026 update collapsed two of the layers: Cortex Agents that use a Cortex Analyst semantic view as a tool now generate SQL directly rather than delegating to the Analyst service as a separate step. Lower latency, fewer round-trips. The architecture is otherwise unchanged: an LLM authors the SQL, grounded by a semantic model the data team writes.
The stack is general-purpose by design. The same architecture handles a quarterly revenue question, a support-ticket summary, a contract search and a sales-pipeline question. It is not pitched at product analytics or experiment analysis, and the semantic model does not ship native funnel, retention, segmentation, cohort or experiment primitives. Methodology lives in whatever SQL the LLM produces for each question.
What is Mitzu?
Mitzu is an analytics platform on your data warehouse for BI, product analytics and experiment analysis, where the data team governs the metrics and everyone uses them through dashboards, an AI agent, Slack and their own AI assistants. Like Cortex, it answers plain-English questions on Snowflake data. Unlike Cortex, the same governed definitions also run KPI dashboards, funnels, retention, journeys and A/B test analysis inside Mitzu.
The data team defines metrics such as net revenue, orders, average order value and margin once, on its own fact and dimension tables, and Mitzu can draft those definitions from the warehouse and dbt models for the data team to review. A Configuration Agent scans the warehouse for event and dimension tables, identifiers and property values. Every KPI dashboard, agent answer and scheduled agent reuses the same definitions, and each person sees only the data their Mitzu role allows. People reach Mitzu in the app, by mentioning @mitzu in Slack, through a remote MCP server from Claude, ChatGPT, Cursor, GitHub Copilot and other MCP clients, and through emails from scheduled monitoring agents that review dashboards and KPIs. Snowflake is one of the supported warehouses, alongside BigQuery, Databricks, Redshift, ClickHouse, PostgreSQL, Athena, Trino, Firebolt and Microsoft Fabric. See AI Analytics for Snowflake for a deeper walk-through.
The trust differentiator: Mitzu's agent does not write SQL. It assembles structured analysis specifications (a metric and its breakdown, funnel steps with a conversion window, retention cohorts and return events, segmentation filters with sampled property values, journey definitions, an experiment and its metrics) and a deterministic query engine turns those specifications into SQL. The same specification produces the same SQL every time. Methodology errors that LLMs reliably make, such as a funnel without a window, a retention chart that double-counts or a cohort defined wrong, are prevented by the engine rather than by prompt engineering.
Snowflake Cortex vs Mitzu: side-by-side
| Snowflake Cortex | Mitzu | |
|---|---|---|
| Category | Agentic SQL and general AI analytics on Snowflake | Analytics platform on the warehouse: BI, product analytics and experiment analysis, with AI agents |
| Who writes the SQL | LLM (Claude / OpenAI, selected by Cortex Analyst per query) | Deterministic query engine, from a typed analysis specification |
| Grounding | Semantic model as a YAML file or semantic view, written by the data team (Autopilot can draft); logical tables, dimensions, facts, metrics, relationships | Metrics on fact and dimension tables, plus events, properties, entities and sampled filter values; drafted by Mitzu from the warehouse and dbt models, owned by the data team |
| Governed metrics and KPI dashboards | Metrics in the semantic model; charts in chat and Streamlit-in-Snowflake apps | Metrics defined once; KPI dashboards built by clicking or by asking the agent |
| Methodology primitives | None native: the LLM composes ad-hoc SQL per question | Funnel, retention, segmentation, journey and cohort as first-class primitives |
| Experiment analysis | No built-in methodology; the LLM writes any test statistics per question | Lift, 95% interval, corrected p-values, guardrails and health checks on exposures in the warehouse |
| Scheduled monitoring | Not listed | Monitoring agents review dashboards or KPIs on a schedule and email the team |
| Where it runs | Snowflake only | Snowflake, BigQuery, Databricks, Redshift, ClickHouse, PostgreSQL, Athena, Trino, Firebolt, Microsoft Fabric |
| Surfaces | Snowsight chat, Snowflake Intelligence (iOS + web), Cortex Agents REST API, Microsoft Teams | Mitzu app, Slack, remote MCP server, monitoring-agent emails |
| Unstructured data | Cortex Search (PDFs, docs, transcripts) is a first-class tool | Out of scope: Mitzu analyzes structured event and business data in the warehouse |
| Source model | Proprietary feature inside the Snowflake account | Commercial SaaS; self-hosted deployment available on Enterprise |
| Best for | Free-form questions across any modeled Snowflake data, including documents | KPI reporting, product analytics and experiment analysis on one set of governed definitions, with an agent that explains why a number moved |
SQL examples: the same question, two paths
A governed KPI question such as "What was net revenue last quarter?" works in both once the metric is defined. The difference shows on the product question that usually comes next: "What is our 7-day signup-to-activation conversion rate, broken down by acquisition channel, for the last 30 days?"
Snowflake Cortex: SQL the LLM might generate
-- Plausible Cortex Analyst output against a Snowflake events table.
-- Looks reasonable; methodology depends on the YAML semantic model + prompt.
WITH signups AS (
SELECT user_id,
MIN(event_time) AS signup_at,
ANY_VALUE(properties:channel::string) AS channel
FROM analytics.events
WHERE event_name = 'signup'
AND event_time >= DATEADD('day', -30, CURRENT_TIMESTAMP())
GROUP BY user_id
),
activations AS (
SELECT user_id, MIN(event_time) AS activated_at
FROM analytics.events
WHERE event_name = 'activated'
AND event_time >= DATEADD('day', -37, CURRENT_TIMESTAMP())
GROUP BY user_id
)
SELECT s.channel,
COUNT(*) AS signups,
COUNT_IF(a.activated_at <= DATEADD('day', 7, s.signup_at)) AS activated_in_7d,
ROUND(activated_in_7d / NULLIF(signups, 0) * 100, 1) AS conv_pct
FROM signups s
LEFT JOIN activations a USING (user_id)
GROUP BY s.channel
ORDER BY signups DESC;Reads cleanly, but the methodology is doing a lot of work in the semantic model and the prompt. A different prompt run, a different model selection, or a slightly different semantic model entry can yield a window measured against the wrong anchor, an activation that pre-dates the signup counted as a conversion, channel attribution joined off the wrong row when a user has multiple signups, or a window that quietly slips to 30 days because the LLM conflated the lookback with the conversion window. None of these are SQL bugs. They are methodology choices an LLM is making implicitly, every time.
Mitzu: SQL from a deterministic engine
The Mitzu agent does not write the SQL. It assembles a funnel specification, roughly { first_event: "signup", subsequent_events: ["activated"], conversion_window: "7d", breakdown: "channel", date_range: "last_30_days" }, and the deterministic engine emits the same SQL every time:
-- Engine output for a 2-step funnel with a 7-day conversion window,
-- broken down by channel, for the last 30 days. Same spec -> same SQL.
WITH step_1 AS (
SELECT user_id,
MIN(event_time) AS step_1_at,
ANY_VALUE(properties:channel::string) AS channel
FROM analytics.events
WHERE event_name = 'signup'
AND event_time >= DATEADD('day', -30, CURRENT_TIMESTAMP())
AND event_time < CURRENT_TIMESTAMP()
GROUP BY user_id
),
step_2 AS (
SELECT s1.user_id,
s1.channel,
MIN(e.event_time) AS step_2_at
FROM step_1 s1
INNER JOIN analytics.events e
ON e.user_id = s1.user_id
AND e.event_name = 'activated'
AND e.event_time > s1.step_1_at
AND e.event_time <= DATEADD('day', 7, s1.step_1_at)
GROUP BY s1.user_id, s1.channel
)
SELECT s1.channel AS channel,
COUNT(DISTINCT s1.user_id) AS step_1_users,
COUNT(DISTINCT s2.user_id) AS step_2_users,
ROUND(COUNT(DISTINCT s2.user_id)
/ NULLIF(COUNT(DISTINCT s1.user_id), 0) * 100, 1) AS conv_pct
FROM step_1 s1
LEFT JOIN step_2 s2 USING (user_id)
GROUP BY channel
ORDER BY step_1_users DESC;The conversion window is enforced strictly (activation must be after signup and within 7 days). Distinct users prevent double-counting. Channel comes from the signup row, so attribution is consistent. The engine has been generating this shape of SQL in production for years; the agent's job is to assemble the specification, not to author the query.
The SQL is shown to the analyst as a verification artifact, not as the agent's authored work, and the funnel can sit on the same dashboard as the revenue KPI it explains.
UI surfaces compared
Both platforms expose chat. The differences live in the artifacts the chat produces, where they can be reviewed, and what keeps running after the conversation ends.
| Surface | Snowflake Cortex | Mitzu |
|---|---|---|
| Web chat | Snowsight chat; Snowflake Intelligence personal-agent surface | In-app analytics agent for quick questions, impact analysis and deep dives |
| Chat in Slack / Teams | Microsoft Teams integration; Slack via custom integration | Native Slack app (@mitzu in any channel, answering in the thread) |
| Mobile | Snowflake Intelligence iOS app | Slack mobile (the Slack app works wherever Slack does) |
| Programmatic / external agents | Cortex Agents REST API | Remote MCP server for Claude, ChatGPT, Cursor, GitHub Copilot and other MCP clients |
| Dashboards | LLM-generated charts; published Streamlit-in-Snowflake apps | KPI dashboards, saved insights and named cohorts on governed metrics; any chart the agent builds can go onto a dashboard |
| Scheduled monitoring | Not listed | Monitoring agents email the team on every run, or only when a plain-English condition is met |
| Reviewable SQL | Shown alongside Cortex Analyst answers | Shown for every answer; semantic layer visible in app |
| Semantic layer authoring | YAML files in a Snowflake stage or semantic views (Autopilot can draft) | Drafted by Mitzu from the warehouse and dbt models; reviewed and edited in-app by the data team |
Advantages and trade-offs
Snowflake Cortex
| Strengths | Trade-offs |
|---|---|
| Fully managed inside the Snowflake account: no extra infrastructure, no separate billing relationship. | Snowflake-only: a single-warehouse architecture, not a fit for teams running BigQuery, Databricks or ClickHouse for events. |
| General-purpose by design: the same architecture handles finance, sales, support, ops and product questions. | The LLM authors SQL, so methodology errors on funnels, retention, cohorts, journeys and test statistics are easy to make and hard to spot in a chat reply. |
| Cortex Search integrates unstructured data (PDFs, docs, transcripts) as a first-class agent tool. | The semantic model is written by hand (Autopilot drafts; humans maintain). Ongoing maintenance moves with schema changes. |
| Snowflake Intelligence brings MCP connectors (Gmail, Slack, Jira, Salesforce), deep research and an iOS app to business users. | Charts are LLM-generated rather than driven by a typed methodology layer; consistency across questions is not guaranteed. |
| Cortex Agents REST API makes the orchestration available to any external application. | Data, agents and access control are tightly coupled to one cloud provider account. |
Mitzu
| Strengths | Trade-offs |
|---|---|
| The agent does not write SQL; a deterministic query engine does, from a typed specification. Same input, same SQL, same answer. | Pixel-perfect and financial reporting are out of scope; teams with heavy needs there often keep a BI tool for them. |
| One semantic layer for business metrics and product data: metrics on fact and dimension tables, plus events, properties, entities and sampled filter values. Mitzu drafts definitions from the warehouse and dbt models; the data team reviews and owns them. | Requires business and event data already in the warehouse. Companies without a warehouse, or with events trapped in a third-party tool that will not export, are not the fit. |
| KPI dashboards, funnels, retention, segmentation, journeys, cohorts and A/B test analysis on the same definitions. | Open-ended statistical modeling, such as fitting a churn model, belongs in a notebook (Hex, Deepnote, Jupyter), not in Mitzu. |
| Runs on Snowflake, BigQuery, Databricks, Redshift, ClickHouse, PostgreSQL, Athena, Trino, Firebolt and Microsoft Fabric. | Unstructured retrieval (PDFs, transcripts) is out of scope; pair Mitzu with Cortex Search if both are needed. |
| The app, Slack, the MCP server and scheduled monitoring agents all use the same definitions and Mitzu roles. | Questions run on the metrics, events and tables the data team exposes in Mitzu, not on any table in the account. |
| Plans with Editor seats and unlimited events; warehouse compute stays under the customer's control. | — |
Capability scorecard
Where each tool stands on governed metrics and BI, on product analytics and experiment analysis, and on how people reach the agents.
| Capability | Snowflake Cortex | Mitzu |
|---|---|---|
| Runs on the customer's warehouse | ✅ | ✅ |
| Multi-warehouse support (BigQuery, Databricks, ClickHouse, Redshift, Trino, Postgres…) | ❌ Snowflake only | ✅ |
| Self-hosted / single-tenant deployment | ✅ in customer's Snowflake account | ✅ Enterprise tier |
| Governed metrics and KPI dashboards | Partial: metrics in the semantic model; charts in chat or Streamlit apps | ✅ |
| Deterministic SQL engine (agent does not write SQL) | ❌ | ✅ |
| Semantic layer drafted from the warehouse and dbt models | Partial: Autopilot drafts a YAML model or semantic view to maintain | ✅ |
| Native funnel methodology | ❌ | ✅ |
| Native retention methodology | ❌ | ✅ |
| Native segmentation, journey and cohort primitives | ❌ | ✅ |
| Sampled property values for filters | ❌ | ✅ |
| A/B test analysis (lift, intervals, guardrails, health checks) | ❌ | ✅ |
| Scheduled agents that review KPIs and email the team | Not listed | ✅ |
| Reviewable SQL surfaced for every answer | ✅ | ✅ |
| Unstructured data retrieval (RAG) | ✅ Cortex Search | ❌ out of scope |
| MCP server for external agents | ✅ Snowflake Intelligence MCP connectors | ✅ Remote MCP |
| Slack agent | ❌ via custom integration | ✅ native |
| Free-form questions on any table in the account | ✅ | ❌ governed metrics and exposed tables |
When to choose Snowflake Cortex, Mitzu, or both?
Both answer plain-English questions on Snowflake data, so they overlap. Cortex gives you a general agentic interface to everything in Snowflake, documents included, with an LLM writing the SQL. Mitzu gives you one analytics platform where the same governed definitions run KPI dashboards, product analytics and experiment analysis, with a deterministic engine that keeps the methodology right. The right choice depends on which questions dominate the team's workload and how much the answers have to agree with each other.
- Choose Snowflake Cortex when the questions are broad and free-form across finance, sales, support and ops data, documents and transcripts are part of the answer, Snowflake is the single source of truth, and you have the data-engineering cycles to write and maintain Cortex Analyst semantic models or semantic views.
- Choose Mitzu when you want KPI dashboards plus funnels, retention, journeys and A/B test results on one set of definitions the data team governs; an agent that explains why a number moved (why did week-2 retention drop, did the new pricing page move trial-to-paid, which onboarding step has the highest drop-off) with SQL from a deterministic engine; scheduled agents that watch the KPIs; and the same answers in Slack and AI assistants. Especially if some of your data also lives in BigQuery, Databricks or ClickHouse.
- Run both when Snowflake Intelligence already serves as a cross-system work assistant and Cortex Search covers documents, and the data team wants governed KPI reporting, product analytics and experiment analysis on the same Snowflake account. Any assistant that supports MCP can call Mitzu's analytics agent for those questions.
FAQ
Does Mitzu work with Snowflake?
Yes. Snowflake is a first-class supported warehouse. Mitzu reads event, fact, dimension and dbt-modeled tables in place, with no data movement and no per-event pricing. See AI Analytics for Snowflake for the broader landscape on Snowflake.
Does Snowflake Cortex replace Mixpanel, Amplitude or other product analytics tools?
Not by itself. Cortex is general-purpose agentic analytics on Snowflake data. For product analytics methodology specifically (funnels with conversion windows, retention cohorts, journey trees, segmentation with sampled filter values) and for experiment statistics, you either use a platform like Mitzu, where that methodology is built into the engine next to the KPI dashboards, or build it yourself in SQL and rely on the LLM to compose it correctly each time.
Can I use Cortex Analyst for funnels and retention?
An LLM can write a funnel or retention query against Snowflake. Whether the methodology is right depends on the semantic model, the prompt, the model selection that day, and the schema in front of it. The risk is not that the SQL fails to run (it usually runs) but that it answers the wrong question: a window measured wrong, double-counted users, attribution joined off the wrong row. A deterministic engine that owns the methodology removes that class of error.
How does Cortex Analyst's semantic model differ from Mitzu's semantic layer?
Cortex Analyst's semantic model, written as a YAML file or as a Snowflake semantic view, describes logical tables, dimensions, facts, metrics and relationships: a BI-shaped model that gives the LLM a grounded vocabulary for text-to-SQL. Mitzu's semantic layer holds metrics such as net revenue, orders and margin on fact and dimension tables, plus events, event properties, entities (users, accounts, teams), dimension properties and sampled property values for filters. Mitzu drafts it from the warehouse and dbt models, the data team reviews and owns it, and every dashboard, agent answer, Slack reply, MCP answer and monitoring agent uses it.
Is Mitzu self-hostable inside our Snowflake account?
Mitzu is a commercial SaaS product. The Enterprise plan supports self-hosted deployment in the customer's own infrastructure for cases where SaaS analytics isn't acceptable. Mitzu reads Snowflake from there in the same way the SaaS version does, with no data movement and no per-event pricing. Every plan includes Editor seats and unlimited events; see the pricing page for current details.
Where does the data live in either tool?
Inside Snowflake. Both architectures are warehouse-native: Cortex by being a Snowflake-native feature, Mitzu by design (the agent reads Snowflake through the deterministic engine). Neither moves data into a vendor silo. Compliance, data residency and cost control all stay on the customer's side of the line.
Related reading
- AI Analytics for Snowflake
- ClickHouse AI vs Mitzu
- ChatGPT vs AI Analytics Agent
- Warehouse Native vs First-Generation Product Analytics
- Agentic Analytics Platforms Compared
- Mitzu BI and Warehouse Metrics
- Mitzu Experiment Analysis
- Mitzu Semantic Layer
- Mitzu Product Analytics

