AI Dispatch · fully specified

No black box.

You type one plain sentence; AI Dispatch turns it into a governed, assigned, audited task. For a governance-first product, "trust us" isn't good enough — so here's exactly what runs, what it sees, what it never sees, and how it fails.

The pipeline

Most dispatches never call an LLM.

Every request runs a cost-aware pipeline. A model is the exception, not the rule — reached only for genuinely complex or ambiguous input. Simple, repeated, and paraphrased requests are resolved deterministically, on-device or from cache, for $0.

Stage 1

Exact cache

Identical input you've dispatched before (within your workspace) reuses the earlier decision — byte-for-byte, no model call.

$0 · deterministic
Stage 2

Semantic cache

A close paraphrase of an earlier request matches via an embedding your browser computes on-device, and reuses that parse.

$0 · deterministic
Stage 3

On-device parser

Short, clear tasks are parsed by a transparent rules engine (priority, owner, deadline, tags, amount) — on-device-router-v1. No model.

$0 · deterministic
Stage 4

Claude Haiku 4.5

Only long, multi-step, vague, or file-grounded input reaches the LLM — the one path that has a per-call cost.

model · metered

Each request carries its method back to you — cache, semantic-cache, local, or llm — plus a confidence score and a one-line reason. You always know which path ran.

The model

What powers it — named.

Platform model
Claude Haiku 4.5
claude-haiku-4-5

A generally-available, fast, structured-output-reliable model. The exact model is set by an AI_MODEL env var, so it can be upgraded without a code change.

Bring your own key
Your Anthropic key

Add your workspace's own key (Settings → BYOK) and dispatch runs on it — no shared cap. The key is AES-256-GCM encrypted at rest and stays server-side, never in the browser.

Deterministic paths
No model at all

The cache and on-device parser paths use no model — plain, inspectable code. On a typical workspace these handle the majority of dispatches.

Data boundary

What it sees — and what it never does.

When the LLM path runs, the model receives a deliberately minimal payload. Everything else your workspace knows is applied after the parse, deterministically, on our servers — and never sent to the model.

Sent to the model only this
  • The sentence you typed — capped at 2,000 characters.
  • An attached file's text, only if you attach one — and your browser extracts that text (pdf.js / mammoth.js). The server never receives the raw file.
  • A fixed, versioned system prompt (dispatch-sys-v1) telling the model to return task JSON.
Never sent to the model excluded
  • Your other tasks, projects, or board.
  • Workspace members, clients, or engagements.
  • Your constitution, teams, skills, or on-call — used server-side to route, not shared with the model.
  • The raw uploaded file. The Anthropic key. Anything you didn't type.

For audit, your workspace stores the first 500 characters of the input, the method, model, confidence, reason and parsed output in its AI decision ledger — visible to you, deletable with the task. Full data-handling detail: /trust/ai/.

Failure modes

Every failure becomes a plain task.

AI Dispatch is fail-safe by design: if anything goes wrong, you still capture the work. It never blocks you, never loses your input, and never silently guesses.

SituationStatusWhat you see
Upstream out of credits503"Temporarily out of credits — use + Add to save it as a plain task." The upstream status is surfaced for diagnosis, not hidden.
Free monthly limit reached (25 free / mo)402"You've used all 25 free AI Dispatches this month — upgrade to Pro for unlimited, or use + Add."
Shared AI budget reached503"At this month's shared capacity — use + Add, or add your own AI key for unlimited."
Model returned non-JSON502"AI couldn't parse that — try rephrasing, or use + Add." Nothing malformed is ever saved.
No AI key configured503"AI Dispatch isn't configured yet — add a workspace AI key, or use + Add."
Low parse confidence200The task is created but auto-routed to a human approver (pending-approval) instead of acting on a guess.
The one guarantee: "+ Add" always works. It saves exactly what you typed as a plain, editable task — no AI, no dependency, no data leaving your workspace. AI Dispatch is an accelerator on top of a capture path that never fails.
Governed, not guessed

Every decision is explainable and recorded.

Constitution gate

The parsed task runs through your workspace constitution before it lands. A value-threshold or low-confidence gate re-routes it to a named approver (team on-call or manager) and tags it pending-approval — maker-checker, automatically.

Explainable output

Every task is stamped with ai_confidence, ai_reason, ai_method and ai_model. You see why each field was chosen — not just the result.

AI decision ledger

Each routing decision is written to ai_decisions with the method, model, confidence, reason, output and the versioned system prompt — an auditable trail of what the AI did and why.

Dry-run sandbox

Enterprise dispatch supports a dry run: every routing step executes (parse, team, skill, load-balance, constitution) and returns "what would happen" — without creating a task or billing a second time.

Verify it, don't take our word.

The deterministic parts — the parser, constitution, routing and load-balance — are open-source kernels you can run yourself.