Join the waitlist

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 Freshdesk.

Ask Otto in Slack or Teams

Your team asks where it already talks. Otto answers in the thread with the number first, and links to the charts it saves in Insignal.

  • A direct message or a channel

    Message Otto directly, or @mention it in a channel. An admin decides whether Otto answers in channels.

  • Answers use the asker's access

    Each answer says whose access it used. Nobody in the channel sees data through Otto that the asker can't see.

  • Risky steps ask first

    Approve or decline with buttons in the chat. Only the person who asked can approve, and the audit log records it.

See it in

#revenueThreadFinance› revenue
  1. DR

    Dana Reyes

    @Otto which region drove the rise in Q3 revenue?

  2. Otto

    Eastmere drove 66% of the Q3 rise. Its revenue grew 31% to $1.42M.

    Answered with Dana's access

  3. DR

    Dana Reyes

    @Otto share the Q3 review dashboard with the Sales group

  4. Otto

    Share Q3 review with Sales? 12 people will see it. Sharing doesn't give them access to data they can't already read.

    DeclineApprove

    Approved by Dana Reyes

  5. Shared Q3 review with Sales. Lee and 11 others can open it now.

Q4 plan

Your scenario

Projected Q4 revenue

$5.12M

+$144K vs actuals

Q3 actuals

$4.98M

Reads no slider

Projected revenue by region

Eastmere$1.46M
Westbrook$0.78M
Northwind$1.27M
Southvale$1.04M
Highmoor$0.57M

ProjectedQ3 actual

insignal.acme.internal/d/q4-plan?scenario={"price":0.05,"lost":0.020}

Try a what-if, right on the dashboard

Drag a slider and every number on the dashboard follows. Each viewer's sliders are their own, so nobody changes the dashboard for anyone else.

  • Share the link and your scenario comes with it.
  • Otto adds sliders when it builds a dashboard. Editors add them from the / menu.
  • Projections show the difference from actuals, in green or red.

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_email carries the pii tag, masked outside Finance.

Q3 review

Viewing as Dana Reyes

Revenue, Q3

$4.98M$1.42M

All regionsEastmere only, by row filter

Largest orders, Q3

order_idregioncustomer_emailamount
A-10482Eastmere$2,140
A-10477Northwind$1,980
A-10471Eastmere$1,872
A-10466Southvale$1,640
A-10459Eastmere$1,515
A-10451Westbrook$1,402

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.

  • Single sign-on (SSO) with Google, Microsoft, Okta or any OpenID Connect provider
  • Turn passwords off, so everyone signs in through SSO
  • Grants on catalogs, schemas and tables
  • Governed tags, row filters and column masks
  • Agents act with the person's permissions, never more
  • Secrets never reach the model
  • Every change is written to the audit log
  • Set how long each kind of record is kept
  • In Slack and Teams, Otto answers with the asker's access

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.

MCP clientinsignal.acme.internal · Dana Reyes
  1. You

    Add the Eastmere chart to Q3 review and send me the PDF.

  2. insignal.find_chartsquery: "Eastmere"

    1 chart · Eastmere added $336K of the $512K Q3 rise

  3. insignal.add_dashboard_carddashboard: "Q3 review"

    Add 1 card to Q3 review? Dana, Lee and Ed will see it.

    DenyApprove
  4. Approved by Dana Reyes · card added

  5. insignal.export_pdfdashboard: "Q3 review"

    Q3 review.pdf · 2 pages

  6. Assistant

    Done. The Eastmere chart is on Q3 review, and the PDF is attached.

Audit log

  1. 05:38:51Saved chart “Eastmere added $336K…”Dana Reyes in the app
  2. 05:41:09Added card to Q3 reviewDana Reyes via MCP · approved
  3. 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, or copied in

  • PostgreSQL
  • MySQL
  • MariaDB
  • Iceberg
  • Delta Lake

Also hosted: Amazon RDS, Cloud SQL, Azure, Supabase, Neon and Timescale

Files in buckets

Parquet, CSV, JSON, Excel

  • Amazon S3
  • Google Cloud Storage
  • Azure Blob Storage

Or attach CSV and Excel files to a chat

Business apps

Copied into your lakehouse

  • Salesforce
  • HubSpot
  • Stripe
  • Jira
  • Monday
  • Freshdesk

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

Ask why the cloud bill went up

Point Insignal at the cost exports AWS writes to your S3 bucket. Otto works out what changed, with every number computed in SQL. Each new month's files count from the next question on, with nothing to resync.

Why did our AWS bill go up in October?

Otto

+$4,400. October came to $41,200, up 12% on September. EC2 in eu-west-1 added $3,100 of the rise.

Change from September, by service

EC2, eu-west-1+$3,100
S3 storage+$800
Everything else+$500

aws_billing.cost_exportShow SQL

  • 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.
acme-insignal-01
$ 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.

We'll only use your email to tell you when Insignal is ready for your team.