AI
AI triage for a customer support inbox
Incoming support emails are classified by topic and urgency, a draft reply is written from the help centre, and an agent approves or edits before it is sent. Anything the model is unsure about goes to a human without a draft.
Automatically generated draft
Written by machine against our own engineering playbook. The company is invented; the decisions are the ones we would make on a real build. A reviewed blueprint goes further — nine sections, agreed line by line, and it is what the build is tested against.
Section 01 · What has to work
Incoming support emails must be accurately classified and drafted so that agents only need to review and approve instead of typing from scratch.
Section 03 · Screens
Every screen, and what it is for.
- ›Queue Dashboard — agent views pending support emails, sorted by urgency; instant list load.
- ›Draft Review — agent reads email and AI draft, edits fields, clicks send; instant draft render.
- ›Knowledge Base — admin updates help center articles for the model; instant search.
- ›Audit Log — admin inspects classification history and agent overrides; instant date filter.
Anything not on this list is not in version one. That is what keeps a fixed price fixed.
Section 04 · The data model
What it stores, and who can read a row.
support_email
id uuid, sender_email text, subject text, body text, status enum(unclassified, pending_review, needs_human, sent, failed), topic text, urgency enum(low, medium, high), received_at timestamptz
Access · Agents can read rows where status is pending_review or needs_human.
ai_draft
id uuid, email_id uuid, draft_body text, confidence_score numeric(10,2), created_at timestamptz
Access · Agents can read rows linked to assigned support_email records.
help_article
id uuid, title text, content text, updated_at timestamptz
Access · All authenticated support agents can read all published help articles.
audit_event
id uuid, email_id uuid, actor_id uuid, action text, payload jsonb, performed_at timestamptz
Access · Admins can read all audit events.
Those access rules belong in the database, not in the screens. Someone who edits the address bar still cannot read a row that is not theirs — and the test that proves it blocks delivery if it fails.
Section 05 · States
unclassified → pending_review → [approved | edited] → sent | needs_human → manual_reply → sent | failed(reason)
Most scope arguments three weeks into a build are really arguments about a state nobody named at the start.
Section 06 · Where this breaks
What bites products like this one.
Large incoming emails exceed LLM context windows or timeout mid-request.
Truncate incoming body text safely before sending to the model inference endpoint.
Low model confidence routes everything to humans, defeating automation.
Expose confidence thresholds in admin settings to tune routing sensitivity during testing.
Section 08 · Deliberately left out
What version one does not do.
- ×Multi-channel support for chat and social DMs — build email only for v1, add channels when email throughput stabilizes.
- ×Automated sentiment-based escalation rules — increases prompt complexity, add after baseline classification proves reliable.
This is the section that protects the date, and the only place in the document where somebody says no. It is also why clients trust the rest of it.
Still open
What we would ask before quoting.
- Which email provider API or IMAP server are we connecting to for incoming ingestion?
- What specific LLM provider and model tier will generate the draft replies?
- What exact confidence score threshold determines when an item goes straight to human review?
Half of this already exists
Doc Intake
The paperwork half of this is a solved problem: documents read on arrival, validated against your rules, and a person asked only about what does not add up.
It is one of our pre-built products: the code is handed over to you, adapted to your own wording and rules, and the rest of the specification above is built on top of it rather than from scratch.
Your product, not this one
Get this written for what you are actually building.
Describe it in a sentence and the generator returns the same sections for your own product. Free, no email, nothing saved to a list.
Next step
Find out if your idea fits in 10 working days.
Tell us what you want to build. We reply the same day with a straight yes, no, or here is what we would cut.