01
We take your census
An API push, a scheduled export you already produce, or a feed we pull for you. No integration project — a list of patients is enough.
Most buildings find out coverage changed when the claim comes back denied.
By then the stay is over. Aacuity re-checks every patient on your census, compares each answer to the last, and sends only what changed — to the person who can still act on it.
Running in production Medicare · state Medicaid programs · managed care · commercial
How it works
01
An API push, a scheduled export you already produce, or a feed we pull for you. No integration project — a list of patients is enough.
02
Medicare, state Medicaid and managed care, on a cadence you set, and compare each answer against the last one we stored.
03
The terminations, plan switches and liability changes — ranked by severity, to the person who owns the building. Silence when nothing changed.
Why we exist
Healthcare still talks to payers through phone trees, fax machines and portals designed in 2003.
Every interaction between a provider and a payer — checking whether somebody is covered, getting an authorization, asking why a claim was denied — is still a person, on hold, retyping something. The information exists. It is simply not reachable in a way software can use, and so it is reached by hand, one patient at a time, or not at all.
Aacuity is building that conversation as an interface. Change detection is the first piece and the one that is live: instead of a person re-checking a census they do not have time to re-check, the census is re-checked on a schedule and the differences come to them. Authorizations are next. After that, the phone call itself.
Two ways in
The reason change detection works for every healthcare company is that it is not gated on you having an engineering team. If you have an API, use it. If you have a spreadsheet, use that.
Option one
Push a roster and pull a change feed, or give us a webhook and we deliver findings as they are confirmed. Every check, every delta and every severity is available as JSON; nothing on this page is a screen you have to look at to get the data.
Option two
Send us the census or patient list you already produce, or let us pull it. That is the whole setup. No feed to build, no interface engine, no IT ticket, no one on your side writing code. The findings arrive as an email a business office manager can act on before their first meeting.
Scope
Nothing about the engine is specific to one vertical. Re-verify a population on a schedule, diff each answer against the last one, and decide which differences are worth somebody’s attention — that is the whole shape of it. The population can be a nursing home’s census, a home health agency’s active patients, a hospital’s admitted list, a behavioral health caseload, a dialysis schedule, a physician group’s panel. The census changes. The problem does not.
Skilled nursing is where it is proven today, because that is where an undetected termination costs the most and is noticed the latest. It is where the product was hardened, not where it is scoped.
In production today against traditional Medicare, Medicare Advantage, state Medicaid programs and their managed care organizations, and commercial payers — each of which says the same thing in a different dialect, which is a problem we have already solved rather than one you inherit.
Undetected terminations cost the most and surface the latest. Where the product was hardened.
A moving panel of homebound patients, each with their own coverage clock.
Election and revocation dates that change the payer overnight.
Authorization-heavy, recurring, and unforgiving of a lapsed plan.
Long stays where a Medicaid redetermination can quietly flip the payer.
Standing caseloads with frequent MCO churn.
PT, OT and speech — benefit caps and visit limits that move.
The 30-month coordination window that decides who pays first.
High-cost drugs where a coverage lapse is a five-figure write-off.
An admitted census that turns over daily.
A panel large enough that manual re-checking was never possible.
Populations where eligibility changes are the norm, not the exception.
What it catches
These are real delta types from the live catalog, at the severity the engine actually enforces. The severity is not decoration: it is what decides whether this wakes somebody up or waits for the weekly digest.
| Finding | Severity | What it means to you |
|---|---|---|
| Medicaid terminated | Critical | An authoritative end date has appeared. Every day after it is unfunded. |
| Eligibility flipped to ineligible | Critical | The state now says no. Usually a missed redetermination, and usually reversible if you catch it. |
| MCO terminated or changed | Critical | The single largest billing-impact change there is. Different payer, different auth, different contract. |
| Part A or Part B terminated | Critical | Medicare carries an end date. Skilled days stop being billable on it. |
| Patient liability changed | High | Spend-down or NAMI moved. Somebody now owes an amount nobody has collected. |
| Coverage line vanished | High | A line that was there last week is gone from an otherwise healthy response. Flagged provisionally, then confirmed. |
| MBI changed | High | The identifier you have been billing under is no longer the right one. |
| New hospice election | High | Somebody elected hospice elsewhere. It changes who may bill for what, immediately. |
| Long-term-care status changed | High | Institutional status gained, lost or re-dated — often the difference between paid and denied. |
| SNF days used or remaining moved | Medium | The benefit period is shorter than your census believes. |
| Date of last billing activity moved | Medium | Another provider billed Medicare for this patient. Often the first sign of a hospitalisation nobody reported. |
| Recertification month changed | High | The renewal you were going to prepare for is now due on a different date. |
| First check — coverage found | Low | A baseline, not news. Recorded so the second check has something to differ from. |
Around eighty delta types are live. The developer reference lists every one with the severity the engine enforces, and it renders from the engine’s own registry rather than being written by hand, so it cannot quietly fall behind.
Signal, not noise
Anyone can re-run an eligibility check. Run it on two hundred residents every morning and you have created a second problem: two hundred answers that all look like an answer. A report that flags everything gets read twice and then filtered into a folder.
Something about this patient’s coverage is different from the last time we looked, and the difference has money or care attached to it. A termination date. A new MCO. A liability amount.
This is the only category that reaches a human by default.
We have never checked this patient before, so everything about them is technically new. Reporting it as a change would mean every new admission arrives as a page of alerts.
Recorded, retrievable, never sent as news.
A payer restated the same coverage with different whitespace, a name lost a middle initial, a message got reworded. The response differs. The coverage does not.
Held out of the alert stream entirely, so nobody learns to ignore it.
The split is what makes a daily report readable. A building with a hundred and eighteen residents gets four lines, and the four lines are true. That is the product.
For developers & AI agents
The reason eligibility is hard to automate is not the transaction. It is knowing where to send it. Aacuity takes the identifier and the raw payer name your system already has, and works out the rest.
Here is what a caller actually has. A member ID, and a payer name typed by an admissions coordinator at half past four:
UHC SENIOR CARE OPTIONS MA-Y001
To route that correctly you would need to know that this is UnitedHealthcare’s Massachusetts Senior Care Options plan; that SCO is a dual-eligible programme, so the check belongs with a Medicare Advantage trading partner rather than with MassHealth; which of several UnitedHealthcare payer identifiers that particular product answers on; and how Massachusetts words a managed-care segment differently from Ohio or West Virginia.
A caller should not have to know any of that. Neither should an agent. Send the identifier and the string; get back a normalised answer, with the payer we resolved it to and how confident we were.
Ambiguity comes back as ambiguity — candidates and confidence, never a confident guess. A wrong route is a wrong answer about somebody’s coverage, and that is worse than no answer.
Request
POST /v1/eligibility/resolve
Authorization: Bearer sk_live_…
{
"member_id": "1EG4TE5MK73",
"payer_text": "UHC SENIOR CARE OPTIONS MA-Y001",
"state": "MA",
"dob": "1941-03-08"
}
Response
{
"payer": {
"name": "UnitedHealthcare Senior Care Options",
"kind": "medicare_advantage_dual",
"route": "ma_trading_partner",
"confidence": 0.97
},
"coverage": {
"active": true,
"effective": "2025-01-01",
"terminates": null,
"liability": 0
},
// enrol this member and every later check is a diff
"monitor": true
}
Medicare, Medicaid, managed care and commercial answers come back in the same shape, with the same field names, whatever dialect the payer replied in.
Where the managed-care organization lives in the response, and which code carries patient liability, differs by state. That difference stops at our boundary.
A resolve call can also enrol the member. Every subsequent check is compared to the last, and you receive deltas rather than answers.
Cadence and delivery
Coming next
Change detection is the piece that is live. It is not the whole thesis. The same routing that knows where an eligibility check belongs knows where the other interactions belong too.
Submit a prior authorization, check where it is, and receive the decision — through one interface, whether the payer behind it has a modern API, a portal with a login, or neither. The provider’s side of it should look the same either way.
Some answers still exist only at the end of a phone tree and twenty-five minutes of hold music. So we place the call. You make a request; we navigate the menu, wait, ask the question, and return the answer as structured data with a recording attached.
Send us one facility’s list and we will run a single pass against it — terminations, plan switches, benefit movement and liability changes that nobody had been told about. No integration, and no obligation.