Detection Engines

How each detection engine decides what to flag

Criteria, thresholds, and the plain-English meaning of "no finding" — for the overstacking, anticholinergic burden, and compound accumulation engines.


Before the engines

An information product, not a prescribing tool

StackRx surfaces primary-source information and never prescribes. Every engine output on this page is informational only — it lists what the engine checked, the threshold that flips a checked result from quiet to flagged, and what a quiet result means in plain English. Nothing on this page is guidance. Not a substitute for medical advice.


Engine 1

Overstacking Detection

The overstacking engine runs four always-on detectors on the full medication stack and rolls every finding into a single 0–100 Stack Health Score.

Criteria — what the engine looks at

  • Pairwise drug-drug interactions. Every ordered pair of medications in the stack is checked against the published drug-database interaction table (drawn from FDA drug labeling and maintained cross-references) plus an ARV/PrEP-specific table covering tenofovir with a known nephrotoxic agent, St John's Wort with an antiretroviral, rifampin with an antiretroviral, a boosted protease inhibitor with simvastatin or lovastatin, Biktarvy with dofetilide or dronedarone, and dolutegravir with a mineral antacid.
  • Therapeutic duplication. Two or more medications that resolve to the same drug-database CATEGORY are flagged as overlapping in the same therapeutic class. Rx-only category overlap raises a caution finding; OTC / supplement category overlap raises a warning finding.
  • Lab contraindications. Each medication is compared against documented thresholds in the engine's LAB_CONTRAINDICATIONS table — tenofovir with an eGFR ≤60 (critical), metformin at reduced eGFR thresholds, a statin with markedly elevated ALT, an ACE inhibitor or ARB with hyperkalemia, and valproate with transaminitis (ALT or AST ≥100).
  • Dosing anomalies. Each entered numeric dose is compared against the per-medication STANDARD_DOSE_MAX table. Medications flagged noStandardDose — as-needed dosing, injectables, and other formulations without a daily total — are skipped.

Stack Health Score bins

Score Label
≥ 90Clean
≥ 70Watch
≥ 40Caution
below 40Critical

A finding deducts 25 points when labeled critical, 10 when labeled caution, and 4 when labeled warning, applied in order and floored at 0. For dosing findings alone, a dose at 1.5× the standard maximum or higher raises a critical flag; a dose above the maximum but below 1.5× raises a caution flag.

"No finding" means the stack triggered none of the four detectors. The score stays at 100, the label stays at Clean, and the engine returns an empty findings array. In plain English: the engine looked at every pair, every category, every documented lab threshold, and every dose relative to its standard — and nothing crossed any of those lines. Not a substitute for medical advice.


Anticholinergic Burden

The anticholinergic engine scores each medication on the published Anticholinergic Cognitive Burden (ACB) scale — 0 through 3 — then surfaces the cumulative burden across the full stack.

Criteria — what the engine looks at

  • Per-medication ACB score. Every medication is resolved through lookupDrug with a fallback to the engine's ACB_SCORING_KEYWORDS table so OTC anticholinergics (diphenhydramine, doxylamine) and brand names still credit correctly. ACB values are 0 (none), 1 (low but additive), 2 (moderate), or 3 (clinically significant anticholinergic activity).
  • Cumulative burden. The per-medication ACB scores are summed across the full stack.
  • Beers list overlap. Medications on the 2023 AGS Beers Criteria list for use with caution in older adults are flagged individually.
  • Cross-class combinations. Anticholinergic combinations that span therapeutic classes — antihistamines, tricyclic antidepressants, bladder antispasmodics — are surfaced because their combined effect is additive even when each was prescribed by a different specialist.

Severity thresholds

Total ACB score Severity
≥ 3critical
≥ 2caution
≥ 1warning
0no finding

"No finding" means every medication in the stack was looked up on the ACB scale and none of them carry anticholinergic activity. The cumulative burden is zero, the score stays at 100, the label stays at Clean, and the engine returns an empty findings array. In plain English: the engine checked every medication for anticholinergic load, summed the scores, and the total came back to zero. Not a substitute for medical advice.


Engine 3

Compound Accumulation

The compound accumulation engine groups medications by therapeutic intent and flags when two or more agents in the same group are working on the same pathway from different angles.

Criteria — what the engine looks at

  • Cluster tagging. Each medication is matched against the engine's REDUNDANCY_CLUSTERS table — serotonergic antidepressant, direct factor Xa inhibitor, acid-suppression therapy, RAAS inhibitor, statin, NSAID, glucose-lowering agent, beta-blocker, and the other clusters defined in the file.
  • Cluster match count. Two or more unique medications in the same cluster (resolved by drug-database key + cluster keyword) trigger a cluster finding. One medication in a cluster does not.
  • Cross-class vs. same-class. When the matched medications come from different therapeutic classes within the same cluster, the finding is labeled caution. When they share one class, the finding is labeled warning.

Cluster finding threshold

Cluster matches Finding Severity bucket
≥ 2 (cross-class)cluster findingcaution (deducts 10)
≥ 2 (same-class)cluster findingwarning (deducts 4)
below 2 in every clusterno finding—

"No finding" means no cluster lights up with two or more matched entries from the stack. Every cluster returns fewer than two matches (including zero), the score stays at 100, the label stays at Clean, and the engine returns an empty findings array. In plain English: no pathway overlap the engine can call out. Not a substitute for medical advice.


What "no finding" means in aggregate

"No finding" is an engine-level signal — it is information about the check the engine ran, not clinical clearance.

"No finding" from any engine is informational only. It means the engine's criteria, at the thresholds the engine documents, did not return a flag for the stack as entered on the run the engine looked at. Different runs, different medications entered, or different labs uploaded can produce different results.

Documented evidence lists are not exhaustive. The drug-database interaction table, the contraindication table, the ACB keyword list, and the redundancy clusters all cover a published subset of the relevant medications. A medication that does not appear in any table will not contribute to a finding — that does not mean it is free of interactions or redundant coverage.

Absence of a finding is not clinical clearance. "No finding" is the engine reporting what it did and did not check. Decisions about what to take, how much, and when belong to you and a prescriber, made in the visit. Not a substitute for medical advice.

See what your own stack surfaces

Enter your medication list and lab markers. The free tier covers up to four medications with full engine output and a printable doctor brief.

Start Free — No Payment Required
Free for up to 4 medications. $12/mo for unlimited.