SAMPLE DATA: generated from a fake Open Dental database and made-up vendor contracts. These aren't real patients, claims, vendors, or dollars.
AuditArch · daily check
Sample Family Dental (DEMO DATA)
Monday, October 26, 2026 · read-only check of your Open Dental data
Good morning. Archy the Auditor here. I found 43 things worth a look this morning, including a contract cancellation deadline in 16 days. Start with the 5 under "Do these first"; the rest can wait until after the morning huddle.
43
items to check today
$13,349
insurance $ stuck or unbilled (est.)
$2,747
patient balances nobody is working
+$3,054
90+ day A/R change since 10/25
Do these first
1.Send the non-renewal notice to ChairsideConnect Patient Messaging (DEMO) by Nov 11 (16 days). Otherwise it renews for 12 months, $4,668. Draft letter is ready.
2.Finish batch insurance payment EFT447120 from MetLife (sample) ($2,318), still partial after 11 days.
3.Review adjustment #76 (Pat #37, −$1,180 by frontdesk.kim): ≥ $200; backdated 45 days.
4.Review adjustment #75 (Pat #38, −$640 by temp.alex): ≥ $200; temp.alex made 0 adjustments in the prior 90 days.
5.Send 4 claims sitting unsent 7+ days ($2,818; oldest 19 days).
● Claims created but not sent8 · $3,295
● Insurance payments entered but not finalized6 · $4,594
● Completed procedures never billed to insurance6 · $1,377
● Unusual adjustments & write-offs4 · −$2,664
● Vendor contracts: cancellation notice deadlines4 · $23,796
● Claims & pre-auths with no answer for 30+ days10 · $4,083
● Patient balances 60+ days old that nobody is working5 · $2,747
1. Claims created but not sent 8 to check
Created 2+ days ago and still not sent to insurance. Unsent claims don't get paid, and some carriers have filing deadlines.
Claim #Pat #CarrierStatusCreated by$ Est. insAge days
30736Delta Dental (sample)Unsentbilling.jo$1,02919
314 (secondary)316MetLife (sample)Hold until primary receivedbilling.jo$83715
308103Delta Dental (sample)Unsentfrontdesk.kim$17712
309228Cigna Dental (sample)Unsentfrontdesk.kim$7759
31092MetLife (sample)Waiting in queuefrontdesk.kim$1526
311108Delta Dental (sample)Unsentbilling.jo$1214
312311Guardian (sample)Unsentfrontdesk.kim$1303
31345Cigna Dental (sample)Unsentbilling.jo$74.402
In Open Dental: Manage module > Send Claims, or Reports > Standard > Claims Not Sent
2. Insurance payments entered but not finalized 6 to check
Payment amounts were keyed onto these claims, but they were never attached to an insurance check (finalized). They won't show up in deposits or reports, and this is where payments go missing.
Claim #Pat #CarrierEntered$ Paid$ Write-offAge days
32889Delta Dental (sample)Oct 4$1,029$29922
32935United Concordia (sample)Oct 12$177$51.3014
33085MetLife (sample)Oct 18$775$2258
33197Cigna Dental (sample)Oct 21$226$65.705
332125Delta Dental (sample)Oct 23$68.20$19.803
Batch payment EFT447120 from MetLife (sample) for $2,318 (dated Oct 15, 11 days ago) is still marked partial, which means it was never finished.
In Open Dental: Reports > Standard > Unfinalized Insurance Payments
3. Completed procedures never billed to insurance 6 to check
Completed 2+ days ago, the patient has active insurance with an estimate, but no claim was created and the procedure isn't marked 'Do Not Bill Ins'.
Proc #Pat #CodeDateCarrier$ Fee$ Est. insAge days
410235D2740Sep 16Guardian (sample)$1,350$81040
41197D4341Oct 5Cigna Dental (sample)$285$17121
412237D2392Oct 15Cigna Dental (sample)$245$14711
413185D0274Oct 19Guardian (sample)$85.00$51.007
414277D7140Oct 21United Concordia (sample)$210$1265
415152D1110Oct 23Aetna Dental (sample)$120$72.003
In Open Dental: Reports > Standard > Procedures Not Billed to Insurance (or Send Claims > Procs Not Billed)
4. Unusual adjustments & write-offs 4 to check
Large adjustments, adjustments from someone who doesn't normally make them, backdated adjustments, and insurance write-offs well above Open Dental's own estimate. These are the classic places money quietly disappears.
Entered Oct 25: 7 adjustments totaling −$2,205. By user: frontdesk.kim 2 (−$1,215), temp.alex 1 (−$640), billing.jo 4 (−$350).
Adj #Pat #TypeEntered by$ AmountWhy flagged
7637Bad Debt Write-offfrontdesk.kim−$1,180≥ $200; backdated 45 days
7538Professional Courtesytemp.alex−$640≥ $200; temp.alex made 0 adjustments in the prior 90 days
77293Insurance Write-off Adjustmentbilling.jo−$275≥ $200
Insurance write-offs above Open Dental's estimate
Claim #Pat #Proc #Posted by$ Expected$ Written off
333241416billing.jo$243$812
In Open Dental: Reports > Standard > Daily Adjustments, and Daily Write-off; Audit Trail for who changed what
5. Vendor contracts: cancellation notice deadlines 4 to check
Auto-renewing contracts whose notice deadline (renewal date minus notice period) is within 90 days. Miss it and you're committed to another term. A draft non-renewal letter is ready for each one.
Sample contracts: made-up vendors and prices for the demo.
VendorNotice deadlineRenews$ / month$ Next termDays
ChairsideConnect Patient Messaging (DEMO)
Phones + patient texting/reminders
Nov 11 ≤30 days NEW Jan 10 2027 $389$4,668 16
InsightMetrics Practice Analytics (DEMO)
Dashboard + KPI reporting
Dec 1 ≤60 days NEW Mar 1 2027 $299$3,588 36
SecureByte Managed IT (DEMO)
Managed IT, backup and helpdesk
Jan 1 ≤90 days NEW Apr 1 2027 $1,150$13,800 67
LineOne Office Phones (DEMO)
Backup phone line
Sep 21 missed NEW Nov 20 $145$1,740 25 to renewal
A draft non-renewal letter for each is saved in out/letters/2026-10-26 (text + printable HTML). Check the notice method your contract requires before sending. Not shown: 1 contract that won't auto-renew (BrightReview Reputation (DEMO)).
Where: your contracts file (contracts.sample.toml) or `python -m auditarch contracts-form`. Not Open Dental.
6. Claims & pre-auths with no answer for 30+ days 10 to check
Sent 30+ days ago, no response recorded, and no tracking note in the last 30 days. Usually that means nobody has called the carrier.
Claims
Claim #Pat #CarrierServiceSent$ Est. insOut days
31565United Concordia (sample)Jul 21Jul 22$83796
31687Aetna Dental (sample)Aug 12Aug 13$35374
31828Aetna Dental (sample)Sep 3Sep 4$1,02952
31950Cigna Dental (sample)Sep 10Sep 11$15245
32159United Concordia (sample)Sep 18Sep 19$12137
32264United Concordia (sample)Sep 22Sep 23$1,48833
3232Delta Dental (sample)Sep 24Sep 25$10231
Pre-authorizations (treatment may be waiting on these)
Claim #Pat #CarrierSent$ FeeOut days
324155Cigna Dental (sample)Aug 17$2,40070
325173Delta Dental (sample)Sep 8$1,35048
326191Guardian (sample)Sep 22$28534
Not shown: 2 more over 30 days old that have a recent tracking note (someone is working them).
In Open Dental: Reports > Standard > Outstanding Insurance Claims (add a Custom Tracking note when you follow up)
7. Patient balances 60+ days old that nobody is working 5 to check
Family balances with $100+ older than 60 days and, in the last 30 days, no statement, no payment, no staff call or note, and no active payment plan. Older balances get harder to collect.
Pat # (guarantor)Last statementLast paymentLast staff contact$ 61-90$ 90+$ Family total
318 Aug 12Jun 28none $300$940$1,240
319 nevernevernone $685$685
320 Sep 11nevernone $410$410
321 (stalled pay plan) neverAug 7none $140$120$380
322 neverSep 16none $152$152
Total (5 families)$2,747 aged$2,867
In Open Dental: Reports > Standard > Aging of A/R; then Account module > Statement / Commlog / Payment Plan
8. 90+ day accounts receivable
Patient balances older than 90 days, summed across families (Open Dental stores aging on the guarantor). Growth here means collections aren't being worked.
90+ days now
$20,524
32 families
Previous (2026-10-25)
$17,470
28 families
Change
+$3,054
Total A/R $56,518
Biggest moves into 90+: Pat #167 +$475, Pat #125 +$426, Pat #30 +$415, Pat #17 +$392, Pat #266 +$368 (+9 more)
Based on Open Dental's last aging run: 2026-10-26.
In Open Dental: Reports > Standard > Aging of A/R
AuditArch reads your Open Dental database with a read-only user and never changes anything. Patients are shown by Pat # only. Look them up in Open Dental. Vendor contracts come from your own contracts file, not Open Dental.
Thresholds: unsent ≥ 2 days · outstanding ≥ 30 days · adjustments ≥ $200 · write-off over estimate ≥ $150 · unworked balances ≥ $100 older than 60 days, untouched 30 days. Change them in config.toml.
AuditArch is part of the ScribeArch family (scribearch.com). Archy the Auditor is AuditArch's mascot and isn't related to the Archy practice-management software.
Generated 2026-10-26 02:07 · dry-run (written to file, not sent).