v0.4 · open beta

Your inbox
was always
a database.

Every email is a row. Three fields fill automatically on arrival — category, importance, a one-line summary. Ask anything in plain English. Search by meaning. Automate with workflows. Connect any agent via 28 MCP tools.

free tier · no card · your data stays yours
public.messages primary
id uuid pkey
mail_from text
mail_from_name text
subject text
received_at timestamptz
thread_root uuid
category enum ai
importance int 1–5 ai
summary text ai
labels text[] yours
read bool triage
replied bool triage
snoozed bool triage
archived bool triage
list_unsubscribe text rfc 8058
+ vector index semantic
aliases
address
local_part
label
created_at
contacts
email
name
notes (agent)
workflows
name
trigger
schedule
last_run
scheduled_sends
to
subject
send_at
which inquiries still need a reply? agent: list_emails · filter not_replied
from subject category importance received replied
01how it works

Every email runs through a pipeline. Then it’s data.

01receiveSMTP arrives at your @emailsomewhere.com address — or your own domain via MX.
02parseMIME → structured columns. Threading resolved. Sender upserted into your contacts.
03classifyThe model fills three columns on arrival — category, importance, a one-line summary.
04embedEmbedded for semantic search — find mail by meaning, not keywords.
05triggerWorkflows watching for matching rows fire — label, archive, webhook, or let the agent act.
02your inbox is a table

Every email becomes a queryable row. Three fields are AI-filled on arrival.

Category, importance, and summary are written the moment your email arrives. Everything else is structured from the message itself.

03queries

The questions you couldn’t ask before.

Three examples. The agent compiles each natural-language question to SQL, vector search, or both.

Find every email like the one Jane just sent.semantic
SELECT id, subject, importance,
       embedding <-> $query_vec AS dist
FROM messages
ORDER BY dist ASC
LIMIT 20;
// result Top 5 by distance · 0.08, 0.12, 0.18, 0.22, 0.24
Group customer complaints this week by category.agg
SELECT category, COUNT(*) AS count,
       string_agg(summary, ' | ')
FROM messages
WHERE 'complaint' = ANY(labels)
  AND received_at > now()
    - interval '7 days'
GROUP BY category
ORDER BY count DESC;
// result inquiry · 4 transaction · 2 notification · 1
Inquiries I haven’t replied to, highest importance first.filter
SELECT subject, summary,
       importance, received_at
FROM messages
WHERE category = 'inquiry'
  AND replied = false
ORDER BY importance DESC,
         received_at ASC;
// result 14 open inquiries · 3 high-importance
04workflows

Every saved query can be a workflow.

Add a trigger and an action. Watch it run. No DAGs. No Zapier soup. Just queries with side effects.

  • ON INSERTrun when a new email matches the query
  • EVERYrun on a schedule — cron, or natural language
trigger ON INSERT INTO messages WHERE category = 'inquiry' AND importance >= 4
row matches
query SELECT thread, summary, signals get_contact + prior-thread context
agent picks actions
action 1draft reply
action 2webhook → slack
action 3tag thread
action 4set importance
05pricing

Two plans. Everything free during beta.

planpricereceive + MCP + search + workflowssend from UI/APIcustom domainunlimited aliases
free $0 /mo yes get started

INSERT INTO your_inbox
VALUES (you);