Healthcare · eye care and dental · insurance · Wichita Family Vision and Tri-Valley Dental · Live on the eye clinic's own server since 2026-10-12; the biller's first live run 2026-10-21
ClaimStride, insurance claims software for eye care and dental: every unpaid claim checked with the insurer and given its next step.
An aging report says how old a claim is, never why it hasn't paid. ClaimStride reads the practice's own report, asks each insurer where every unpaid claim stands, and puts the next step on each one, in plain words.
1,140claimsread from the biller's real Compulink report, with every total adding up to hersThe eye clinic's insurance receivables report, read on 2026-10-16 before her first run: every claim, every sheet, totals matched by age group.
~2minto check 97 unpaid claims with their insurers on the biller's first live run
The week's claims, checked with the insurers and sorted by what needs action. Sample clinic, made-up patients.
What was broken
Before
The eye clinic's biller carried about 1,200 unpaid claims and worked them from Compulink's aging report, which says how old a claim is but never why it hasn't paid. Finding out meant an insurer portal or a phone call per claim, and a claim left too long can miss the insurer's filing deadline. The dental practice had the same problem on Dentrix, and checked coverage by hand, portal by portal.
What I built
The build
Reads the report the practice already makes. Compulink's insurance receivables report at the eye clinic, in every format and every sheet, and the Dentrix aging report at the dental practice. Nothing has to connect into the practice software.
Asks every insurer. Each unpaid claim goes to its insurer through a healthcare clearinghouse and comes back with one status: needs action, paid, pending, not on file, or no electronic status for insurers like VSP that don't answer that way.
The next step on every claim. Where the insurer or its payment file gives a reason, it's written in plain words with numbered steps and the insurer's deadline, so the biller knows what to fix and by when.
The view the biller asked for. Primary, secondary and tertiary claims kept apart, denied against not yet touched by age group, and the deadlines due in the next 30 days at the top.
Coverage before the visit. A coverage check per patient with active dates, the deductible and what's left this year. The dental front desk ran its first live check on 2026-10-22.
A brake on spend. The price shows before a run, a monthly limit stops it, and anything above $10 asks first.
A denied claim: the reason, what not to do, the steps and the deadline.Every claim gets its own next step, including the ones an insurer won't answer electronically.
What changed
Before and after
Before
By hand
Why a claim hasn't paidA portal or a call per claim
What to do nextWorked out claim by claim
The old unpaid claimsA line on the aging report
Checking coveragePortal by portal, by hand
After
The system
Why a claim hasn't paidAsked of every insurer in one run
What to do nextWritten on the claim, with the deadline
The old unpaid claimsDenied or untouched, by age group
Checking coverageOne check, one card
Where the numbers come from. Checks go through a healthcare clearinghouse at about 30 cents each, its published rate for the first 250 a month. Every screen on this page is the sample clinic with made-up patients.
For engineers
How it's built
Architecture
A Python FastAPI service with a server-rendered page. Claim status is X12 276/277 and coverage is 270/271 through Stedi; payment files (835) supply the reason where the insurer sends one. Deterministic code reads every report format and every insurer answer, so the same claim always gets the same status and the same steps. An insurer that doesn't answer electronically is marked for a call rather than given an answer it never sent.
Where it runs
For the eye clinic, a small server in the practice's own AWS account: encrypted disk, sign-in required, code shipped from a private bucket in that account and released through SSM with a one-command rollback. The dental practice runs in its own AWS account under its BAA and moves into the practice's name at hand-off. The clearinghouse is the one outside connection.
Tests and evals
2,596 automated tests (22 Oct 2026). Before the biller's first run, her real 1,140-claim report was read with every total matching hers. Every release is tagged and can be rolled back in one command.
Cost and latency
About 30 cents a check at the clearinghouse's published rate for the first 250 a month. The monthly limit and the confirm step above $10 keep the bill where the practice set it.
Guardrails
It never guesses. A missing detail says what to ask instead of sending a guess, an insurer with no electronic answer is marked for a call, and the price is shown before anything is sent.
The tradeoff we chose
Why this way and not the other
No direct connection into Compulink or Dentrix yet. The reports the practice already exports are enough to run on, and an approved integration costs thousands up front. A direct connection comes once enough practices on the same software are using it.
In their words
“I'm really impressed with what you guys have done so far.”
The biller, Wichita Family Vision, after her first live run