Meter
Intermedia usage, billed straight into ConnectWise.
Full-stack billing automation that pulls Intermedia telecom usage and posts itemized charges straight into ConnectWise agreements, replacing a manual monthly reconciliation.
- language
- Python 3.11 (FastAPI), React 18 (TypeScript)
- sync engine
- 27 modules, idempotent ConnectWise sync
- ingest
- Selenium (Intermedia exposes no billing API)
- deploy
- Fly.io, 2-process (app + scheduler)
- history
- 1,792 commits over ~19 months
- repo
- Private
The problem
MSPs reselling Intermedia hand-enter line-item charges into ConnectWise every month, where charges get misassigned and retries quietly create duplicates. Meter automates the whole cycle, with the idempotency and reconciliation needed to do it safely against real customer billing.
How it is built
-
Idempotency for a system with no safe retry
DB-level per-account locks stop concurrent syncs from double-billing. When ConnectWise returns an ambiguous 5xx, a ghost-addition detector queries back within a 15-minute window, matched on a content hash, to confirm whether the charge actually posted, instead of blindly retrying or failing silently.
-
Edge cases turned into code
ConnectWise rejects additions dated before an agreement billing start. An effective-date handler detects that exact error, fetches the start date, adjusts, and retries, removing a class of manual corrections that used to happen every month.
-
Preview-before-sync and reconciliation audits
Operators can diff what the system would send against what ConnectWise already holds, with comparison keys that normalize display-string drift so it does not surface as a false mismatch. The reconciliation audit is what caught a tax-row identity bug spanning 202 accounts.
By the numbers
self-reported marks figures stated in docs or commit history that the source brief could not reproduce from the repository alone. Everything else is traceable to code.
Where this honestly stands
Shipped and actively maintained in production: the longest commit history in the portfolio. The often-cited 931 / 634 / 202 figures come from one reconciliation incident, not steady-state volume.
Want the parts that are not in a public repo? I will walk you through the architecture and the decisions on a call.