Running in production
Payroll check since 2026-09-19, reading and filing since 2026-09-20, the reminder-and-close cycle since early October.
The situation
Care staff submit paper route sheets, often as phone photos, twice a month. The office compared them by hand with EMR visits and per-person unpaid-visit exports. A misread date or a missing sheet reaches payroll as money paid twice, or not at all.
The cost of leaving it alone
Payroll errors are the fastest way to lose a caregiver’s trust, and the manual comparison happened under deadline, every pay period.
What we built
A redesigned sheet with corner marks and a QR code lets software straighten and identify each photo. A local vision model reads handwritten digits only from cells that geometry has already validated, and unreadable sheets go to a review folder with a plain-language reason, never a guess. Sheets are matched to the right patient and caregiver using the EMR’s own lists, renamed to a fixed pattern, and filed by pay period.
A payroll check exports each person’s unpaid visits and reconciles every visit against the sheets and the EMR, producing an exceptions-only list, so visits that are fine never appear. Around the close, caregivers get a reminder and a confirmation copy of their own visits, and a final tool compares what accounting paid with what was expected.
OpenCV and QR geometryLocal open-weight vision and text models on a GPU server powered on only for the runPython on timersMicrosoft 365: shared mailbox, SharePoint libraries and lists, Power Automate
Why AI, or why not
Narrow AI, used where nothing else works. Blank versus filled, row count, orientation, pay-period validity and duplicates are arithmetic. A model only reads digits from a cell that geometry has already validated. When we tried a model four times larger it scored worse, so the smaller one stayed.
The results
How PHI was protected
- Route-sheet photos are PHI and are read only on agency-controlled local hardware. The GPU machine is powered on just for the run.
- Working files sit on the encrypted volume.
- The developer never views the photos. Quality is judged by match rates, not by looking at records.
- Emails and Teams cards carry no patient names.
- The job never marks visits paid in the EMR, and the read-only library guards against empty or mass-deletion syncs.
What we would tell you to skip
Do not buy a bigger model first. Measure what the current one gets wrong, because most errors were fixable with the EMR’s own roster. And test the first real mailing on yourself: our first caregiver mailing wrongly told 8 of 11 people a sheet was missing, mostly because the sheets never reached the mailbox, and the rest because of our own defects.
Reusable for
Agencies that pay nurses and aides per visit from paper or photographed sheets, with an EMR that can export unpaid visits.