Two jobs, strictly separated
Most AI coding tools ask a language model to pick the code. We do not, because a model asked for a code can drift, and the same note could get different answers on different days. The assistant splits the work in two.
First, the AI reads your note and extracts structured facts: the problems addressed and their status, the data reviewed (unique tests, outside records, independent historians, your own interpretations, discussions with other clinicians), the risk of the plan, any procedure performed, whether the visit contained work separate from that procedure, and any stated total time. It runs at temperature zero, which means it takes its most confident reading every time rather than sampling creatively.
Second, a deterministic rules engine scores those facts. It is ordinary code, not AI. It applies the two of three rule to the problems, data, and risk columns, applies the time thresholds, and assembles the codes, the rationale, and the documentation tips. The same facts produce the same answer, every time. That is also why the controls under your result recompute instantly: changing an answer reruns the engine, not the model.
What the engine is checked against
The scoring rules were verified line by line against the American Medical Association's E/M descriptors and guidelines (the 2021 office visit framework with the 2023 revisions, current through the latest reviewed CPT and E/M guidance as of July 2026), including the medical decision making table's exact category definitions: what counts as a unique test, when an independent historian counts, when a chronic illness stops being stable, how prescription drug management sets moderate risk, and the rest. Consultation time thresholds, prolonged services rules, and the exact minutes documentation requirement were cross checked against the AMA text, a major specialty society's current E/M reference guide with worked clinical examples, and Medicare contractor guidance.
The 31,000 check battery
Testing runs in two layers. The first is 146 encounters with expected answers derived by hand from the AMA table, or taken from published clinical vignettes with official answers, before the engine ran: every problem type, every data combination, every risk element, every time boundary for new, established, and consultation visits, prolonged services units, counseling add-on codes, and twelve scenarios that exercise modifier 25 in both directions, including the cases where the correct answer is the procedure alone.
The second layer borrows a method from safety critical software: a second implementation of the AMA rules, transcribed independently from the published table in a different style, and 9,363 systematically generated encounters covering the full lattice of problems, data, risk, visit types, every minute from 5 to 95 across all three time families, consultations, procedures with and without separate work, counseling combinations, G2211 boundaries, and one hundred deliberately malformed inputs. The engine that ships and the independent implementation must agree on every one. When they first disagreed on thirty encounters, the disagreement exposed a real ordering defect (a counseling code listed ahead of the procedure on procedure only visits), which was fixed. The two implementations now agree 9,363 for 9,363.
Two details worth sharing, because they are the point of the design. In an early run of the hand derived set, one human expectation disagreed with the engine, and on review the engine was right. And the cross verification sweep is what caught the ordering defect above. Testing that cannot find anything is not testing.
What it is not
The assistant is educational support, not billing advice, and it can only work from what your note documents. Extraction can misread an ambiguous note, which is exactly why every factor it found is shown as a control you can correct, with the score recomputing as you do. Your documentation and your judgment decide what is coded. Never paste protected health information; use de-identified notes only.