

How Ease Health automated ERA enrollments and claim follow-up in four weeks
- 20h → 13h
- per batch of 50 enrollments, with review on
- ~10 min
- a week, with review off
- 13 hrs/wk
- of fetching and converting remits becomes an upload
- 4 weeks
- kickoff to code in Ease's repo
“It's a hell of a lot better than tracking this on a spreadsheet.”

Ease Health runs a billing platform for healthcare practices and does the billing for some of them as a service. Ease gets paid a percentage of what it collects, so a payment nobody posts is money Ease never sees either.
When Sabrina, RCM Lead, took over the RCM team in August 2026, she found ERA enrollments tracked in a spreadsheet, claims sitting in "awaiting payment" with nobody checking on them, and remits being pulled from payer portals by hand. She'd built her own fixes for all three at a previous job. This time she wanted them inside Ease. Ray, Ease Health's co-founder and CTO, asked us to build them.
What the work looked like before
Every new practice meant going through its payer list, working out which tax IDs and NPIs it billed under, and keying each ERA enrollment into Availity one screen at a time. Then logging it in the tracker, and checking Availity later to see if anything had changed.
Claims with no response from the payer were worse. A biller would log into a portal, look up claims one at a time, pull the EOB, and post it. "It's a black hole of work," Sabrina told us on the first call. And for any payer without a working ERA connection, remits had to be found on a portal, converted to PDF and uploaded by hand: about 40 a week, 20 minutes each.
What we built
The tracker moved into Ease. Each enrollment is a record with the customer, payer, tax ID, NPI, type, status and assignee, using Sabrina's own status list. Customers can see their enrollments. Ease sees everything.
A nightly job sorts open enrollments into what can go now, what needs a biller, and what needs the customer (a wet signature, say). A biller reviews the ready ones by customer, previews the exact CSV, and sends. An agent uploads the file to Availity, waits for confirmation, retries on dropped connections, and shows any other error in red. Every two hours it checks Availity for status changes and updates the tracker. Statuses the team sets by hand are never overwritten.
We built the agent by mapping every button in Availity's enrollment flow into code, so the clicking is deterministic. A model classifies and reads results. It doesn't improvise in the portal.
On the claims side, a 4 AM job pulls 277 responses from Availity and puts a payer status column on the worklist. And the archive-only upload button is gone: a biller drops in an 835, .rmt or PDF, an X12 parser we wrote splits it into claims and matches them by patient control number, and a review screen applies them in bulk.
All of it merged into Ease's own repo through pull requests. Their engineers own it.
How it fits the team's day
Nothing new to log into. Enrollments are a page in Ease, claim status is a column on the worklist, and remits import where they always did. Review is a dial: right now every batch gets a human look before it goes to Availity, which is what Sabrina wants while she untangles what came before her. Every run is logged with its outcome, so when the team is ready, the easy enrollments can stop waiting.
“Not having to manually post, that's like a huge thing for me. And then just having visibility into the enrollments and having some of this automation is going to be insane.”
What it saves
Our estimate at handoff, built from Sabrina's own timings: a batch of 50 enrollments drops from about 20 hours of work to 13 with review on, and to around 10 minutes a week with it off. The 13 hours a week spent fetching and converting remits becomes an upload. Claim status checks that ate several hours a week now show up overnight.
The thing Sabrina reacted to most wasn't the agent. It was being able to download the 835 and bulk-apply remits instead of posting each one by hand.
“You guys did a great job. Send [anyone] my way and I will do infinite references for you guys.”
What's next
A stale-claim agent that pulls and posts the remit when a 277 comes back paid or denied. Worklist routing that treats one denied line as a denial. Integrations with Zelis and the other payment portals.