QueryPanel vs Luzmo vs Explo vs Toucan

A practical compare page for SaaS teams evaluating embedded analytics suites.

Luzmo, Explo, and Toucan all serve SaaS teams that want analytics inside their product without building every reporting surface from scratch. This comparison is most useful when your team is deciding between a managed embedded analytics suite and a lighter QueryPanel path for AI-native, tenant-aware customer questions.

Comparison at a glance

This table summarizes typical positioning. Every vendor changes over time—validate details against current documentation and your security review.

DimensionLuzmo vs Explo vs ToucanQueryPanel
In-app experience for end usersThese tools generally focus on embedded dashboards, reports, or guided analytics surfaces that can be branded and integrated into a SaaS product.First-class `@querypanel/react-sdk` components—`QuerypanelEmbedded` for a full dashboard, or `QueryPanelProvider` with `QueryInput` / `QueryResult` for a bespoke flow. They render in your React tree like any other product screen (layout, router, modals, tokens)—not a separate iframe "mini app" on another origin. Mint short-lived JWTs on your server; never ship your workspace private key to the browser.
Primary product shapeManaged embedded analytics suites with builders and configuration workflows for customer-facing reporting.AI-native React workspace plus headless Node `ask()` calls for teams that want customer questions, SQL, and charts in one product loop.
Trainable knowledge & steeringDefinitions, metrics, and dashboard behavior live primarily in the vendor platform and your surrounding data model.Gold SQL queries (curated examples the model prioritizes), database annotations (business context on tables/columns, re-embedded with schema), glossary (domain terms and definitions), and tenant-level definitions (isolation field, enforcement, and per-tenant sync context so every ask() is grounded in the right customer slice—not a one-size global prompt).
Natural language workflowCoverage varies by vendor and edition; evaluate current docs for AI assistant, report builder, and exploration depth.Natural language to SQL and chart generation are central paths for both embedded users and server-side SDK calls.
Developer ownershipLower front-end assembly work when the vendor's packaged dashboard and reporting model matches your needs.More code-adjacent control: React components in your app, Node SDK in your API routes, and SQL execution in your environment.
Multi-tenant SaaS fitCommonly positioned for customer-facing SaaS analytics; implementation details depend on your tenant model and data connection strategy.Tenant id and isolation rules are part of the generated-query contract for embedded dashboards and NL questions.
Best first winLaunch branded dashboards or reporting surfaces with a vendor-managed analytics workflow.Ship a tenant-scoped AI analytics route where customers ask questions and receive SQL-backed charts.
Trainable knowledge base

Four layers your team—and your tenants—can train for better answers

Natural language is only as good as the context the model sees. QueryPanel's knowledge system lets you steer retrieval and SQL with curated examples, business meaning on the schema, shared glossary terms, and tenant-aware definitions—so customer-facing analytics matches how your product actually defines revenue, usage, and risk.

01

Gold queries

Save vetted SQL for recurring questions. Gold examples are retrieved with schema context and treated as the strongest pattern signal when they match the end user's intent—so joins, filters, and metrics follow what your team already proved in production.

02

Database annotations

Attach free-text business meaning to tables and columns. Annotations are merged into embedded schema chunks (“Business Context”) so search and generation see how revenue, activation, or ARR are really defined in your warehouse—not only raw column names.

03

Glossary

Define terms customers actually say (“active seat”, “net MRR”, “expansion”). Glossary entries are embedded alongside schema so the model resolves ambiguous language the way your finance and product teams mean it.

04

Tenant-level definitions

Per-tenant isolation settings and tenant-scoped schema sync mean each customer’s ask() carries the right tenant id and rules—so retrieval and generated SQL respect dynamic per-tenant shape, not a single global tenant-agnostic prompt.

Manage gold SQL and glossary from the dashboard knowledge base; annotations attach business context to schema objects; tenant isolation and sync keep per-customer context aligned. See documentation for SDK routes and ingestion APIs.

When Luzmo vs Explo vs Toucan is the better fit

Honest tradeoffs help your team pick faster—and match how buyers actually decide.

  • You want a vendor-managed analytics builder for dashboards, reporting, or guided customer analytics.
  • Your main need is branded dashboard delivery rather than natural-language SQL generation inside your product workflow.
  • You prefer configuring an embedded analytics platform over owning more of the query-generation and validation loop in code.

When QueryPanel is the better fit

Especially strong for B2B SaaS shipping customer-facing analytics on Postgres and similar databases.

  • You want a trainable knowledge system—gold queries, DB annotations, glossary, and tenant-aware definitions—so NL→SQL and charts reflect your business, not generic schema-only guesses.
  • You want customer questions to become SQL and charts directly inside your React app, with your backend signing JWTs and executing queries.
  • You need the same AI ask() contract for embedded dashboards, admin workflows, and custom product screens.
  • You want tenant context to be part of generation from the start instead of treating multi-tenant filtering as integration glue.
  • You prefer a smaller developer-owned surface over a broad embedded analytics suite.

Keep comparing the implementation details

Vendor fit depends on more than a feature matrix. These guides cover the security, embedding, and buying choices that usually decide a SaaS analytics rollout.

Ship the customer UI with React—not an iframe

Most teams lead with @querypanel/react-sdk: drop QuerypanelEmbedded on a normal product route, or compose QueryPanelProvider with QueryInput / QueryResult. It behaves like any other React subtree—your app shell, router, modals, and design tokens—not a separate cross-origin iframe "mini app" with its own layout chrome.

The browser talks to the QueryPanel API with a JWT you mint on your server (RS256). Never ship your workspace private key to the client.

React — QuerypanelEmbedded (tsx)
import { QuerypanelEmbedded } from "@querypanel/react-sdk";

// Render like any other page — not an iframe. Mint tenantJwt (RS256) on your server
// with @querypanel/node-sdk; pass only the JWT to the client.
export function CustomerAnalytics({ tenantJwt }: { tenantJwt: string }) {
  return (
    <QuerypanelEmbedded
      dashboardId="your-dashboard-id"
      apiBaseUrl="https://api.querypanel.io"
      jwt={tenantJwt}
      allowCustomization
    />
  );
}

Headless Node SDK (optional, for your API)

Use @querypanel/node-sdk on your backend to attach database clients, sync schema, sign JWTs for the React embed, and call ask() from API routes when you want a fully custom pipeline. SQL still runs with your drivers. Full quickstart in documentation.

Node — QueryPanelSdkAPI (typescript)
import { QueryPanelSdkAPI } from "@querypanel/node-sdk";

const qp = new QueryPanelSdkAPI(
  process.env.QUERYPANEL_URL!,
  process.env.PRIVATE_KEY!,
  process.env.QUERYPANEL_WORKSPACE_ID!,
);

// After attachPostgres / syncSchema — tenant comes from your auth layer
const result = await qp.ask("Revenue by country last quarter?", {
  tenantId: org.id,
  database: "analytics",
});

// result.sql, result.params, result.rows, result.chart — you execute SQL with your driver

Still evaluating Luzmo vs Explo vs Toucan and QueryPanel?

Start on the free tier, embed one dashboard, and compare implementation time against your current shortlist.