Execution-verified · fails closed

The model writes a plausible answer. The harness makes it true.

FactQL plans, drafts, executes, verifies and self-corrects the analysis before you see a number. One POST, one JSON answer with the query, the rows and the lineage behind it.

Start with an uploaded CSV, not production credentials.

Terminal demo of a FactQL query. The user asks which region drove the Q3 revenue drop. FactQL explores the schema across 14 tables, drafts candidate SQL, executes it to verify, flags an ambiguous "revenue" column, self-corrects to net_revenue_gbp, and verifies the corrected query in 0.9 seconds. It returns a three-row result: EMEA down 18% quarter over quarter, North America up 1%, APAC flat at 0%. The underlying SQL is shown alongside the result, stamped verified.

01

01 · Sources

Bring a dataset, not a database.

Your first query can run on an uploaded file — no production credentials on day one.

Postgresread-only
MySQLread-only
DuckDB gatewayone endpoint
CSV / XLSXversioned · S3-mirroredDay one
PDFcited answers
02

10.8%

02 · The problem

execution accuracy of a leading agentic frontier-model setup on BEAVER, a benchmark built from real enterprise warehouses.

Source: BEAVER, Chen et al., 2024 (v3, 2026)

The model isn't the problem. What's missing is everything it can't know: which of your 400 near-identical columns is real revenue, what your terms mean, and when to stop instead of guessing.

03

03 · The harness

Plan. Draft. Execute. Verify. Correct — or fail closed.

Diagram of the FactQL harness pipeline. Six stages: plan, then explore schema with tools, then candidate query, then execute to verify — which loops back to candidate query as a re-draft when verification fails, and marks a green check when it passes — then grounded summary. A branch from execute to verify leads to a red-tinted failure state labelled fail closed, 4xx, when the harness cannot verify an answer.

planexplore schemawith toolscandidateSQLexecute toverify✓groundedsummaryre-draftfail closed · 4xxplanexplore schema with toolscandidate SQLexecute to verify✓grounded summaryre-draftfail closed · 4xx

Every response includes the SQL. Audit anything we ever answer.

04

04 · Proof

What verification actually means.

Execution-verified, not generated.

The agent runs the query before you see it; a wrong query self-corrects or fails loudly.

Five sources, one POST.

Postgres, MySQL, DuckDB gateway, CSV/XLSX, or a cited PDF — same endpoint.

Zero invented figures.

Summaries are constrained to the result set.

Fail-closed multi-tenant isolation.

Isolation is enforced on every query and checked by committed proofs, regenerated after structural changes.

A hard ceiling on spend.

Budget alert, then a hard 402. You are never invoiced for going over.

One key, many users.

Send X-End-User-Id and each person in your app gets private conversations.

05

05 · The API

The API, in one call.

curl -X POST https://api.factql.ai/query \
  -H "X-API-Key: $FACTQL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"q": "Top 5 customers by revenue this quarter vs last?"}'
{
  "sql": "SELECT customer_name, SUM(revenue) AS revenue …",
  "data": { "columns": ["customer_name", "revenue"], "rows": [ … ] },
  "explanation": "Acme Ltd leads at 70,467, then Summit Shell …",
  "lineage": { "tables": ["orders"], "measures": ["SUM(revenue)"] },
  "result": "success"
}
06

06 · Objections

Objections, answered.

Why not just a model and a database connector?

Try both; ours takes five minutes. The model writes a plausible query; the harness executes it, corrects it, or refuses. Every answer ships its SQL, so you can check our work on your own tables.

Is my data safe?

SELECT-only, encrypted credentials, fail-closed tenant isolation with committed proofs, full audit. Start on an uploaded file; connect a database when we've earned it. Or run on your own model key.

What happens when it's wrong?

It tells you. Failures and thumbs-downs land in a worklist; fixes promote into certified metrics — admin-blessed canonical SQL that makes repeat questions exact.

Am I locked in?

No semantic model to author and no cloud to adopt. FactQL is one POST across Postgres, MySQL, a gateway, a spreadsheet or a PDF — and every response ships its SQL, so leaving costs you a URL.

07

07 · Pricing

Free to build. Paid plans when you ship.

Start here

Developer

$0/mo

Try the real engine, not a crippled trial. Hard $10/month usage cap, no card required.

  • The full query engine
  • $10 of usage a month, then a 402
  • 30 requests a minute per key
  • 1 workspace, 3 team members
Get an API key

Team

Early access

For a team shipping a real integration: more room, and the interpretation layer.

  • Higher caps and rate limits
  • More workspaces and seats
  • Signals and briefings

Scale

Talk to us

Your own model keys, custom limits and a security review.

  • Bring your own model keys
  • Custom limits and support
  • Security review

Usage is metered by the model tokens each answer spends. Every plan has a hard cap: at the cap the API returns 402 and you are never invoiced for going over.

08

08 · Start

Your first verified query is five minutes away.

Upload a CSV or point us at Postgres. Free tier: full engine, hard $10/month cap, no card — at the cap you get a 402, not an invoice.

Get an API key