Analytics that build themselves.
Tell Otto where your data lives. It builds your data warehouse, then keeps improving it from the questions your team asks.
A demo with data from Acme Inc. Ada Kim signs in for the first time. Otto asks where the data lives, and Ada picks PostgreSQL, Stripe and HubSpot. Otto copies 41 tables, builds pipelines into lake.finance.revenue and defines 12 metrics. Ada asks "Which region drove the rise in Q3 revenue?" Otto shows the read-only SQL it ran and answers: Eastmeredrove 66% of the Q3 rise. Its revenue grew 31% to $1.42M. Ada asks Otto for a Q3 review dashboard; Otto builds it and shares it with Ed Ortiz, who joins and comments on churn: "Can we see churn by plan?" Ada sets an alert on weekly orders, and it fires: "Orders fell 18% last week, from 1,284 to 1,050." In Otto's weekly update, Otto has added plan to the churn metric because 18 questions asked for it, and suggests connecting Google Ads.
Sharing never grants data access
Dana and Lee open the same dashboard. Each sees what their role allows.
Try it: view the dashboard as
-
Grant. Both can read
lake.finance. -
Row filter. Sales people see their own region:
region = 'Eastmere'. -
Column mask.
customer_emailcarries thepiitag, masked outside Finance.
Q3 review
Viewing as Dana ReyesRevenue, Q3
$4.98M$1.42M
All regionsEastmere only, by row filter
Largest orders, Q3
lake.finance.revenue 1 row filter · 1 column mask
What did we spend on payroll in Q3?
Otto
You do not have access to the payroll schema. Ask an admin to add it to your role.
- Grants on catalogs, schemas and tables
- Governed tags, row filters and column masks
- Agents act with the person's permissions, never more
- Sharing a dashboard never grants data access
- Secrets never reach the model
- Every change is written to the audit log
Bring Insignal into every AI tool you use
Connect Claude or any MCP client. It signs in as you and sees only what you may see.
- Otto
- Claude
- ChatGPT
- Cursor
- GitHub Copilot
- Agents in your terminal
- Any MCP client
Use it from Otto or the AI tool you already use.
- You
Add the Eastmere chart to Q3 review and send me the PDF.
insignal.find_chartsquery: "Eastmere"1 chart · Eastmere added $336K of the $512K Q3 rise
insignal.add_dashboard_carddashboard: "Q3 review"Add 1 card to Q3 review? Dana, Lee and Ed will see it.
DenyApproveApproved by Dana Reyes · card added
insignal.export_pdfdashboard: "Q3 review"Q3 review.pdf · 2 pages
- Assistant
Done. The Eastmere chart is on Q3 review, and the PDF is attached.
Audit log
- 05:38:51Saved chart “Eastmere added $336K…”Dana Reyes in the app
- 05:41:09Added card to Q3 reviewDana Reyes via MCP · approved
- 05:41:10Exported Q3 review.pdfDana Reyes via MCP
Same entries whether the action came from the app, Otto or an MCP client.
-
Every action is an operation
The same operations sit behind the UI, Otto and MCP. One permission check covers all three.
-
Risky actions ask first
Destructive actions always ask first. Over MCP, the client shows the same confirmation.
-
Agents never use a seat
Agents and MCP connections never use a seat. Seats are for people.
-
Your own model keys
Bring your own model keys for Anthropic or OpenAI. We add no spend caps and no markup.
Ask across every source at once
One dialect across every source. Answers can join a database, a bucket of Parquet files and a SaaS app in one query.
Databases
Read live
- PostgreSQL
- MySQL and MariaDB
- Amazon Redshift
- Iceberg tables
Files
Parquet, CSV, JSON, Delta
- Files on S3
- Files on Google Cloud Storage
- Files on Azure Blob Storage
- CSV and Excel in chat
SaaS apps
Through connectors · examples
- Salesforce
- HubSpot
- Stripe
- Shopify
- Zendesk
- Jira
- Google Sheets
- Notion
One catalog
Grants, tags and a semantic layer over every source. One dialect.
SELECT o.region, sum(r.amount) AS refunds FROM shop_db.sales.orders o JOIN lake.finance.refunds r USING (order_id) GROUP BY o.region;
PostgreSQL + Parquet on S3, one query
Otto and the app
- Answers with their SQL
- Charts, 15 types
- Live dashboards
- PDF reports
- MCP tools
No warehouse needed
No warehouse? Insignal builds you a lakehouse: connectors copy your SaaS apps in, and dbt models shape them.
One meaning for each metric
A semantic layer (Cube) holds your metric definitions, so “revenue” means one thing in every answer.
Read-only, always
Insignal never writes to your sources. The query guard allows reads only, and sources attach read-only underneath it.
Runs on your own server
Install Insignal in your own cloud account, next to your data. You hold the credentials, the model keys and the audit log.
- One Linux VM. Signed images from GitHub Container Registry.
- Install, upgrade, roll back, back up and restore with the insignal CLI.
- Backups stream to your own S3 bucket.
- A signed license file sets your seats. Seats are for people; agents never use one.
- Your data stays on your server. Otto sends the question and the rows it needs only to the model provider you choose, with your key.
$ insignal install --license ./acme.lic✓ Checked license: Acme Inc · 40 seats✓ Pulled insignal-server image, signature verified✓ Started insignal-server on :443✓ Backups streaming to s3://acme-backups/insignalOpen https://insignal.acme.internal and sign in.
Ask your own data a question
Join the waitlist. We'll email you when Insignal is ready for your team.
Ed Ortiz Can we see churn by plan?