Skip to main content

Capture anywhere

Route: Tasks toolbar → Captures · Permission: Use AI assist Module: Task Management · Entry points: Create task → microphone · WhatsApp · mobile app → Capture · /ext/task-intake


What this is. Record work where it happens — a voice note, a photo, a line of text, or an event from another system. What it is for. Capturing the job while you are standing in front of it, instead of remembering it until you reach a laptop. The problem it solves. Work noticed on a site at 11am and typed up at 6pm is work that gets forgotten, or mis-remembered.


1. The rule that shapes all of it​

A capture never creates a task.

Everything captured becomes a draft that a person reviews, with the transcript shown beside it. Speech recognition mishears names. A photo of a whiteboard is ambiguous. An alerting system fires twice. None of that should turn into someone's Monday morning unreviewed.

You review the draft in the normal task-review screen, and applying it is the same gated action as any AI work breakdown.

2. The four ways in​

ChannelHowBest for
Dictate hereThe microphone on Create taskHands on a keyboard, wanting to talk instead of type
WhatsAppSend a voice note, photo or message to the organization's numberWalking a site, on a phone you already have open
Mobile appTasks → CaptureThe same, with the camera, and working without signal
Intake APIPOST /api/v1/ext/task-intakeA vision QC rig, an IIoT gateway, a monitoring tool

3. WhatsApp — connect your number first​

Figure 1 — Profile → Capture from WhatsApp. The one-time code goes to the number on WhatsApp; it never appears on this screen.
An unverified number can never create anything

A message from a number nobody has verified is logged and dropped, with no reply. Answering would confirm to a stranger that the number is an Orbit endpoint, and would let anyone make it send messages. This is deliberate silence, not a failure.

The one-time code expires in ten minutes, is stored only as a hash, and is burned the moment it is used. Five wrong attempts locks that attempt cycle — request a new code.

Set a default project when connecting: a WhatsApp message names no project, so without one there is nowhere for the draft to land.

Your organization needs a working WhatsApp connection. Without one, connecting explains that rather than pretending a code was sent.

4. Mobile — captures survive no signal​

The point of capturing on a phone is that you are where the work is, which is exactly where the signal is worst.

The capture is written to a queue on the device first and sent afterwards. On a plant floor or in a basement it waits, and goes when you surface — the queue is flushed whenever the app comes back to the front.

Each queued item carries a key the server recognises, so a retry that already succeeded creates no second draft. Something that can never succeed stops retrying and asks you to delete it, instead of draining the battery.

The message is honest about which happened: "Captured" or "Saved on this device. It will be sent as soon as you have signal."

5. The Captures inbox​

Figure 2 — Captures: the channel, the status, and What was heard verbatim. Nothing has been created until you review the draft.

Tasks → Captures, with a count of what still needs a person.

StatusMeans
Queued / Reading itArrived; being transcribed
Draft readyA draft exists. Nothing has been created — open it to decide
Tasks createdYou reviewed the draft and applied it
DiscardedYou decided against it. The note is kept for the record
Could not read itSays why — a silent recording, no transcription provider, no project

The transcript is always shown, so you judge what was actually heard rather than only what the model made of it.

6. Hindi and Hinglish​

Site staff dictate in a mix of Hindi and English. A generic English model turns that into confident nonsense — worse than nothing, because the transcript is what the reviewer trusts. An administrator sets TASK_CAPTURE_STT_ENGINE_HI (default indic) for those captures.

7. The intake API​

POST /api/v1/ext/task-intake
Authorization: Bearer <api key with scope task:intake:write>

{
"project_id": "…",
"source": "vision-qc-line-3",
"external_ref": "defect-88213",
"severity": "high",
"title": "Weld porosity on bracket batch 4471",
"description": "Confidence 0.94 across 6 frames.",
"media_url": "https://…/frame.jpg",
"occurred_at": "2026-09-12T09:14:00Z"
}

Answers 202, not 201: a draft exists, a task does not. Saying "created" would be a lie an integrator builds on.

source + external_ref are the duplicate key, so a retrying integrator produces one draft, not forty. The same operation is available as an MCP tool.

8. Administrator settings​

KeyDefaultWhat it does
TASK_CAPTURE_DAILY_CAP_PER_ORG50Captures per organization per day, all channels. A cost guard — each media capture costs a transcription call, and an integration stuck retrying should hit a wall rather than a bill
TASK_CAPTURE_STT_ENGINE_HIindicSpeech engine for Hindi / Hinglish
TASK_INTAKE_AUTO_APPLY_ENABLEDfalseSeeded and not connected to any code. Every intake becomes a draft

Migrations 001178–001180 and 001182. Media limits: 16 MB audio, 5 MB images, 10 MB documents.

9. Downstream​

  • Captures become task drafts reviewed in the normal AI plan review
  • Applying a draft creates tasks through the ordinary permissions
  • The intake API is an MCP tool as well as a REST endpoint

10. Don't confuse this with…​

ThisThat
Capture — raw input becoming a draftCreate task — you typing a task directly
Captures inbox — things waiting to be reviewedMy work — tasks that exist
Draft readyA task. Nothing is created until you apply the draft
Intake APIPOST /ext/task/tasks, which does create a task directly

11. Troubleshooting​

SymptomCauseFix
WhatsApp messages do nothingThe number is not verified, or is verified for a different organizationProfile → Capture from WhatsApp
"A code cannot be sent"The organization has no WhatsApp connectionAn administrator connects it first
"This capture is not linked to a project"No default project on the connectionSet one when connecting
"No transcription provider is configured"Voice and photo capture need oneAsk an administrator; typing still works
"Daily capture limit"The organization hit its capResets at midnight UTC, or raise TASK_CAPTURE_DAILY_CAP_PER_ORG
Mobile captures stay queuedNo connectivity, or the server refused themReopen the screen to retry; an item showing an error explains itself
The integrator sees 202 but no taskCorrect — a draft was createdReview it in the Captures inbox