Document intake that shows its work
DocuFlow pulls documents from the inboxes, folders and records they already land in, reads every field against the page it came from, and hands your team only the ones that need a person.
See a reviewReview inbox
Documents the automation rules held back for a person. Work top-down: highest priority, then longest waiting.
- aetna-pa-whitfield.pdf2 pages · Prior authorization18m overdue4 hours ago71%3 flagsDA
- UHC_precert_MRI_lumbar.pdf3 pages · Prior authorizationin 42m2 hours ago84%1 flagPR
- fax_20260918_0912.tif4 pages · Prior authorizationin 1h 50m1 hour ago62%5 flags—
- Cigna PA - infusion - Okafor.pdf2 pages · Prior authorizationin 3h 5m38 minutes ago88%1 flagMW
- Referral: cardiology consult1 page · Referralin 5h22 minutes ago93%1 flag—
- referral_ortho_hendricks.pdf2 pages · Referralin 6h 10m9 minutes ago79%2 flagsJO
jkmovespacepreview↵openuupload
- Not in Payer plans.Use Aetna Choice POS II
- Required for a fax reply. Read it from the page or ask the office.
It starts where the paperwork already lands
Connect a shared mailbox, a SharePoint library, a Teams channel or a Salesforce object once. Sources poll on their own, and any system can call a source's hook to say look now.
Every value, pinned
to the page it came from
Each field comes back with the box it was read from and a confidence built from the model, the OCR and how well the two agree. A second model can check the first one's work. Your reviewer confirms with Enter and moves on, instead of retyping a form into another form.
Learn moreaetna-pa-whitfield.pdf
Needs review18m overdue3 flaggedPrior Authorization Request Form
Medical services · Complete all sections. Incomplete requests will be returned.
FAX 1-888-555-0142
Page 1 of 2
Pt reports R knee pain and locking x 5 months. Failed 8 wks PT and NSAIDs.
MRI 08/22/2026: complex tear, posterior horn medial meniscus. McMurray (+).
Requesting outpatient arthroscopic partial medial meniscectomy.
Included
Only the referrals,
not the whole mailbox
Intake rules decide what gets in at all. They read the sender, subject, body and attachments of an email, or the name, folder and age of a file, and anything the fields cannot say you can ask a model. Try it runs the rules against the real folder and imports nothing.
Learn moreWhich emails to pull
Leave empty to take every email in the folder. Conditions read the subject, sender, body and what is attached; a model can answer anything the fields cannot.
- Has attachmentsis yes
- andFrom addressdoes not containnoreply@
- andAsk a modelanswer is yesIs this a prior authorization request, or a reply to one we sent?Only when at least70% sure, otherwise the answer counts as no.
Which attachments to keep
Applied to each attachment of an email that got through above. Inline images, like signature logos and pasted screenshots, are never pulled.
When several attachments match
Every attachment that matchesOnly the first matchOnly the largest matchTry it
Reads the most recent items and shows what these rules would take. Nothing is imported.
Of the last 15 emails, this source would bring in 6 documents.
- PA request: MRI lumbar spine, member W5521093847Lakeside Orthopedics <intake@lakesideortho.example>PA_MRI_Lumbar.pdf · 412 KBimage001.png · 6 KBmatches
- RE: Additional clinicals for case 88213Dr. Priya Shah <pshah@valleycardio.example>clinical_notes_0912.pdf · 1,204 KBmatches
- Your September statement is readyBilling <noreply@officevendor.example>skipped
- Lunch and learn ThursdayMarcus Webb <mwebb@northwindhealth.org>skipped
- Fax from 12145550199 (4 pages)Fax gateway <fax@northwindhealth.org>fax_20260918_0912.tif · 880 KBmatches
Included
Checked against your data,
not just the page
Rules run after every extraction: patterns, ranges, dates, expressions across fields, a call to your own endpoint, and matches against reference data you upload or sync. A near miss arrives with the closest real value, one click away.
Learn moreRules run after every extraction. Errors block approval; warnings flag the field for the reviewer.
| On | Rule | Kind | Level |
|---|---|---|---|
Member ID format /^[A-Z]\d{10}$/ | Pattern | error | |
Plan is one we contract with payer-plans · fuzzy ≥ 85% | Match data set | warning | |
Ordering provider is in network provider-roster · normalized | Match data set | warning | |
Start date not in the past today → today+180 | Date range | error | |
Units match the CPT code service.units <= lookup("cpt-limits", service.cpt).max | Cross-field check | error | |
Eligibility check https://eligibility.northwindhealth.org/v1/check | External lookup | warning |
| Data set | Key column | Rows | Source |
|---|---|---|---|
| Provider rosterprovider-roster | npi | 48.2k | Synced hourly12 minutes ago |
| Payer planspayer-plans | plan_name | 1,146 | Synced hourly1 hour ago |
| CPT limitscpt-limits | cpt | 10.9k | Upload3 days ago |
| Membersmembers | member_id | 412k | Synced hourly6 hours ago |
Not in Payer plans.Use Aetna Choice POS II
Included
Rules that run themselves,
and say why
When a document reaches a point in its life, check its conditions and act: approve it, route it, assign it, set a deadline, send it to a system of record. Every evaluation is logged with the values it compared and what each action did.
Learn moreAutomations
Auto-approve clean prior auths
If
Leave this empty to act on every document that reaches the trigger.
- Lowest field confidenceis at least90 %
- andValidation errorsis at most0
- andHealth planis in data setPayer plans
Then
Actions run in order. One that cannot run is recorded and the rest continue.
- ApproveApprove the document without a reviewer.NoteEvery field at or above 90%, plan on file, no rule errorsShows on the document's timeline so the decision is explainable.
- TagAdd or remove tags.Addstraight-throughTag and press Enter
- Run a destinationDeliver the document through one of the queue's destinations.DestinationSalesforce · Case decision
- UHC_precert_MRI_lumbar.pdf41 ms
Conditions
- Lowest field confidenceis at least90%· was94%
- andValidation errorsis at most0· was0
- andplan.nameis in data setpayer-plans· wasAetna Choice POS II
Actions
- Approved: every field at or above 90%, plan on file
- Tagged straight-through
- Delivered to Salesforce · Case 00188213
- fax_20260918_0912.tif12 ms
Included
Questions a person
answers in a second
Is this urgent? Which queue does it belong to? What is the referring NPI? A condition or an action can be a question in your own words. The model's answer and its reason go into the run log, and below the confidence you set, nothing happens.
Learn more- Ask AI to classifyPut a question to a model with a list of answers, then route or tag by the one it picks.AskWhat kind of request is this fax? Look at the form title and who it is addressed to.The model reads the file name, where it came from and everything already extracted.AnswersOne row per answer. Each can send the document to a queue and tag it.Prior authorization→ stay putpaReferral→ ReferralsreferralMedical records request→ Records requestsroiSomething else→ stay puttriageOnly if75% sure or moreBelow this the model's answer is recorded in the run log but nothing is changed.
- Ask AI for a valuePut a question to a model and write its answer into a field.FieldReferring provider NPIAskWhat is the referring provider's NPI?
Has the patient tried conservative treatment, and for how long?
Included
Prompt and answer text is not stored unless you switch it on. It is your patients' paperwork.
Off the Case,
and back onto it
A Salesforce source watches one object and pulls the files attached to matching records, classic attachments included. A destination writes what was extracted onto any object you map, finds parent records by searching for them, and can put the original file back on the record.
Learn moreChanges a record that already exists.
Field mapping
What each Case field is filled with.
- SubjectTextSubjectTemplatePA {{service.cpt}} · {{patient.lastName}}As written
- Status*PicklistStatusFixed textDecision PendingAs written
- Member IDTextMember_ID__cExtractedMember IDTrim whitespace
- Requested Service DateDateRequested_Service_Date__cExtractedRequested startDate (YYYY-MM-DD)
- CPT CodeTextCPT_Code__cExtractedCPT codeAs written
- DocuFlow LinkURLDocuFlow_URL__cDocumentLink in DocuFlowAs written
Related records
Fill a lookup by searching for the parent, so nobody has to paste eighteen-character ids into DocuFlow.
AccountId find the Account whose
Try it
Builds the record against the most recently processed document in this queue and checks it against Salesforce. Nothing is written.
Using aetna-pa-whitfield.pdf, this would update one Case keyed on 5003h00000QxT2kAAF.
- Case.BusinessHoursId is required and nothing fills it. Salesforce sets it from the org's default hours.
Salesforce would accept this record.
Lookups
AccountId: found Lakeside Orthopedics by NPI__c
The record
{
"Subject": "PA 29881 · Whitfield",
"Status": "Decision Pending",
"Member_ID__c": "W2918847301",
"Requested_Service_Date__c": "2026-10-06",
"CPT_Code__c": "29881",
"AccountId": "0013h00000Lk9QpAAJ"
}Included
The rest of the desk,
already there
Deadlines that count business hours and holidays. Assignment by turn or by lightest load. Notifications for mentions and breached SLAs. A command palette that searches inside extracted values, and throughput counted in the database so it stays true at any volume.
Learn moreHolidays
Thanksgiving DayNov 26
Notifications
AllUnread 2Today
- SLA breached: aetna-pa-whitfield.pdfPrior authorizations · due 18 minutes ago18 minutes ago
- Priya Raman mentioned you@Dana can you confirm the plan name on this one?40 minutes ago
- Assigned to you: UHC_precert_MRI_lumbar.pdfRound-robin · Prior authorizations2 hours ago
Documents
Actions
Service level
How quickly documents in this queue should be handled, from the moment they arrive.
Assignment
Who picks up new work.
Auto-approved
76%
3,412 of 4,488 approved
Median processing
14.2 s
p95 41.8 s
Documents per day
By final status
It learns your forms
from your corrections
When reviewers keep fixing the same field, DocuFlow proposes a short instruction for it, and nothing reaches the extraction prompt until someone accepts it. Evaluate scores any change against a golden set of approved documents, field by field, before it ships.
Learn moreLearnings 1 to review
Per-field guidance distilled from reviewer corrections (212 recorded, 9 new; distilled every 25). Only accepted learnings are added to extraction prompts. Measure their effect
- plan.nameproposedfrom 9 corrections · 2 hours ago
Plan names end in Roman numerals (II, III). A "11" or "111" at the end of a plan name is a misread numeral, not a number.
- patient.memberIdacceptedfrom 14 corrections · 3 days ago
Aetna member IDs start with W followed by ten digits. Ignore the two-digit suffix printed after a dash on older cards.
- service.startacceptedadded by hand · last week
When only a month and year are given, use the first of the month and leave the field flagged.
Runs
Tick two runs to compare them.
| Run | Field acc. | Docs correct | Straight-through | Cost |
|---|---|---|---|---|
With learnings, 2 new 2 hours ago · 120 docs | 97.8% | 88.3% | 81.7% | $4.12 |
Baseline, schema v7 yesterday · 120 docs | 95.1% | 79.2% | 72.5% | $4.06 |
Flash as first reader 3 days ago · 120 docs | 93.4% | 74.2% | 68.3% | $1.18 |
What every model call cost,
and why it was made
Each call is filed against the work that caused it: extracting a claim, a rule asking a question, a reviewer asking the document. See spend by day, model, queue and document, and open any run to read it call by call.
Learn moreAI cost
Every model call the workspace made: what it cost, how long it took, and what it was for.
Spend
$163.83
last 30d
Model calls
82,565
41 failed
Median call
1.9 s
p95 8.4 s
Tokens in
611.2M
402.9M cached
Tokens out
18.4M
2.1M thinking
Spend per day
Cost of every model call, by the day it was made.
By model
Which model the money went to, and how fast it answers.
| Model | Calls | Median | Cost |
|---|---|---|---|
| gemini-3.1-pro-preview | 18,442 | 6.1 s | $132 |
| gemini-3.8-flash | 41,208 | 1.9 s | $29.80 |
| gpt-oss-120b | 22,915 | 0.9 s | $2.41 |
By kind of work
What the models were asked to do.
Extract aetna-pa-whitfield.pdf
Extraction · pipeline
Cost
$0.0884
Took
16.3 s
Calls
4
Tokens
38.1k / 2.2k
4 calls, in order
- Classify pages1.2 s$0.0021
- Extract fields · page 16.8 s$0.0412
- Extract fields · page 25.9 s$0.0388
- Second reader · 4 low-confidence fields2.4 s$0.0063Modelgemini-3.8-flashvertexTokens6,120 in · 214 out · 5,880 cachedFinished becausestop
Prompt and answer text is not recorded on this deployment.
Included
Access you can explain
to an auditor
Permissions are module and action pairs, granted to people, teams and API keys across the workspace or inside one queue. A clinical reviewer can approve prior authorizations and never open a claim. Every change is logged with who made it, when, and from where.
Learn moreClinical reviewer
Nurses who review prior authorizations and referrals. Can approve, cannot export or delete.
| When | Actor | Action | Target | |
|---|---|---|---|---|
| 2 minutes ago | DADana Alvarez | document.approved | aetna-pa-whitfield.pdf | |
| 9 minutes ago | Fax gateway | document.uploaded | fax_20260918_0912.tif | |
| 1 hour ago | MWMarcus Webb | role.updated | Clinical reviewer | |
| 3 hours ago | PRPriya Raman | automation.updated | Auto-approve clean prior auths | |
| yesterday | MWMarcus Webb | apiKey.created | Epic interface engine | |
| yesterday | DADana Alvarez | member.invited | j.okafor@northwindhealth.org |
Included
An API that is safe
to retry
Send an Idempotency-Key and retry as often as the network makes you: the first answer is replayed for 24 hours. Every response carries a request id and your remaining budget, every error a stable code to branch on, and every webhook a signature.
Learn more| Name | Key | Scopes | Limit | Last used |
|---|---|---|---|---|
| Epic interface engine | dfk_live_7Hq2•••••••• | 3 scopes | 1200/min | a few seconds ago |
| Fax gateway | dfk_live_Pz81•••••••• | 2 scopes | 600/min | 2 minutes ago |
| Warehouse nightly export | dfk_live_c0Wm•••••••• | 2 scopes | 120/min | 9 hours ago |
Access for Fax gateway
A key can do what its creator can do, narrowed to these scopes. It never holds members, roles or other keys.
Included
Built at a healthcare desk,
ready for any stack of paper
A queue is one kind of document: its fields, its rules, where it comes from and where its data goes. Prior authorizations and claims run beside credentialing packets and vendor invoices, each with its own reviewers, deadline and threshold.
Queues
Each queue is one document family: its extraction schema, validation rules, sources and where approved data goes.
6 active queues
Prior authorizations
Payer prior-auth requests: member, provider, service, diagnosis.
- Documents
- 9,412
- Approved 7d
- 1,371
- Confidence
- 94%
Referrals
Inbound referrals from partner practices, email and fax.
- Documents
- 6,208
- Approved 7d
- 902
- Confidence
- 92%
Claims (CMS-1500)
CMS-1500 claim forms with service lines.
- Documents
- 22,730
- Approved 7d
- 3,118
- Confidence
- 96%
Credentialing
Provider credentialing packets: licenses, DEA, board certs, CVs.
- Documents
- 1,044
- Approved 7d
- 118
- Confidence
- 89%
Vendor invoices
Vendor invoices and bills with line items.
- Documents
- 5,381
- Approved 7d
- 740
- Confidence
- 97%
Records requests
Release-of-information requests and authorizations.
- Documents
- 2,190
- Approved 7d
- 301
- Confidence
- 93%
Common queues
Bring the forms your team still retypes
A working session on your own documents: one queue, your fields, your rules, and a count of what would have gone straight through.