THE ENGINE
Two kinds of seeing. One loop.
SSVP is one engine, not a bag of tools. A layer that watches PrimeRx without pause, a layer that reads each document once, and a single loop that turns what they see into staged actions — every one of which waits for a pharmacist to sign.
TWO LAYERS OF PERCEPTION
The screen never stops. The paper is read once.
UI automation
FlaUI
Every field, all the time
Drives PrimeRx the way your staff does — reading the value in every control, clicking the real buttons, keying into the real boxes. No API, no PMS-vendor permission. It never stops watching the screen, and every write it makes is read back and compared.
reads + writes
→ PrimeRx control values
Vision-language + OCR
local VLM · OCR
One read, per document
An on-device vision-language model and OCR open their eyes a single time for each piece of paper — a script, a card, an ID, an audit notice — turn the pixels into structured fields, and hand off. It is a read, not a stream. The image never leaves the building.
turns pixels into
→ structured fields
One layer never looks away from the screen. The other opens its eyes once, for each piece of paper, then closes them. Between them, the software reads your pharmacy the way a good technician does — and only ever proposes what a good technician would.
// THE LOOP
Perceive, reason, act — then wait for the signature.
The same four beats run under every module. Three are the machine. The fourth is a person, and it is the only one that counts.
- 01
Perceive
UIA reads the live control values off the screen; when a document is in play, the VLM reads it once and structures it.
the machine
- 02
Reason
On-device models resolve the fields — sig, NDC, BIN/PCN, discrepancy codes — against the versioned payer-rule knowledge base.
the machine
- 03
Act
UIA keys and clicks inside PrimeRx, then reads every write back and compares it to what it intended before anything is trusted.
the machine
- 04
Verify
A licensed pharmacist is the hard gate. Nothing counts until they sign — and the signed action lands in the append-only log.
the human · hard gate
and back to Perceive
The pharmacist gate
The agent perceives, reasons, and stages. The human signs. Nothing on the fill path moves without them, and controlled substances are excluded from the loop entirely.
The append-only log
Every signed action is written once and never edited — attributable after the fact, and the same trail that becomes your audit-defense evidence.
The computer does the reading and the typing. A pharmacist still says yes. That is the whole design.
ON-DEVICE STACK
Everything that thinks runs in your building.
| Layer | Runs on device |
|---|---|
| OCR | PaddleOCR · Surya |
| Vision-language | Qwen2.5-VL · MiniCPM-V · InternVL2 |
| Language reasoning | Ollama · llama.cpp (quantized, local) |
| UI automation | FlaUI |
| Overlay shell | Electron · .NET Windows-native |
| Data spine | PostgreSQL · pgvector |
The models live on hardware you own and can point to. Nothing about a patient leaves the four walls of the pharmacy to make a decision.
THE DATA SPINE
Three tables the loop is built on.
payer_rule
Each PBM's manual, documentation standards, and appeal procedures — the moat, versioned and dated.
audit_outcome
The feedback loop: what actually wins. Flags rules that stopped winning before they cost a defense.
action_log
Append-only. Every action attributable — and it doubles as the audit-defense evidence trail.
→ surfaces publicly as SSVP Pulse
One clean record of what was bought, what was dispensed, and what was signed. That single record is what pays off the day an auditor calls.
// THE RECEIPTS
We don’t sell automation — we sell receipts.
Pulse is the public face of the append-only action_log: a live stream of what the engine actually did, so a claim can always be checked against a record instead of a promise.
If we say the machine typed a script or caught a shortage, the line is already in the ledger. You are never asked to take our word for it.
Two kinds of seeing. One loop. Every action, on the record.
Book a working session and we'll walk the loop on your own PrimeRx screens.