Data · the long version

Your data,
in every prompt.

Connect Postgres, MySQL, Oracle, or anything reachable over Tailscale. Parameterize SQL with Jinja. Cache results in DuckDB. Attach PDFs, docs, and sheets directly to prompts and the model recalls them on demand. Never copy/paste a CSV again.

Data sources

Real databases. Real queries.

SQL is the lingua franca of business data. Catalyst lets you wire up the real databases — not exports, not snapshots — and lets the model run parameterized queries against them at chat speed.

connection types

Postgres, MySQL, Oracle.

First‑class drivers for the big three. Connection strings live encrypted in your tenant. Add a read‑replica for safety, a prod for live data, a warehouse for analytics — all in one picker.

private networks

Tailscale‑reachable.

Need to reach a warehouse behind your VPC? Catalyst joins your Tailnet. Internal databases stay internal — no public endpoints, no IP allow‑lists, no ssh tunnels.

jinja sql

Parameterize without string interpolation.

Prompts and workflow nodes carry typed parameters. Jinja substitutes them safely into your SQL — WHERE q = {{ quarter }} beats f"WHERE q = '{q}'" every time.

duckdb cache

Local result cache.

Expensive query you keep re‑running? Catalyst caches the result in DuckDB on the backend. Same params, same SQL, same result — no second round‑trip to the warehouse.

catalyst · data sources
finance_db · postgres prod · 14ms · healthy
analytics · mysql prod · 22ms · healthy
crm_replica · postgres replica · 8ms · healthy
warehouse · oracle tailscale · 140ms · slow
duckdb_cache · local local · 2ms · healthy
SELECT * FROM revenue WHERE q = {{ quarter }} AND plan IN {{ plans }}
Knowledge attachments

Drop a PDF on a prompt.
The model knows it forever.

Some context isn't in a database — it's in a PDF, a deck, a spreadsheet. Attach files directly to a Prompt and they become part of that prompt's context, every session, no copy/paste.

hybrid load

Small files inline, big files chunked.

Files ≤ 5KB appear in the system prompt verbatim (the model reads them every turn, no tool call). Larger docs auto‑chunk (~3200 chars, 400‑char overlap) and embed for on‑demand recall.

file conversion

PDF, Word, PowerPoint, Excel, CSV, JSON.

Markitdown converts at upload time so the model sees readable text. Raw bytes stick around for Python code that needs the native library (pdfplumber, python‑docx).

scoped recall

One prompt's tool, not the whole world's.

When a prompt has chunked docs, a recall_prompt_docs tool appears in that session — and only that session. Other prompts don't see it. Tool surface stays focused.

generous limits

15 MB per file · 50 files per prompt.

The cap is real‑data sized, not toy‑sized. Annual reports, technical spec docs, customer transcripts — they fit. Configurable per deployment if you need more.

safe sharing

Share the prompt; keep the bytes.

Share a prompt publicly and recipients see the doc metadata + inline content — but they can't download the raw files. Your storage is never exposed by a share link.

cascade delete

Delete the prompt, everything goes.

One delete drops the Supabase row, the Lance embeddings, and the on‑disk files in one operation. No orphaned chunks haunting the vector store.

Your data, your model

Stop copy/pasting.
Start querying.

Real connections to real databases. Real attachments to real prompts. The model sees what it needs to see, when it needs to see it — and nothing else.