A reporting system is only useful if people believe it. In a contact centre, the phone systems are the source of truth, and any dashboard that disagrees with them — even by one call — gets ignored. So the core design rule for OpDesk Hub was simple: every number we publish must be reproducible from the PBX records, and we check that continuously.
What gets reconciled
Each Asterisk/FreePBX system produces two independent records for a call: the CDR (the billing-style record) and the queue log (the agent- and queue-side events). OpDesk ingests both, plus agent login events, and builds its own call model. Reconciliation means re-deriving the totals from the raw PBX tables and comparing them with what the hub reports, per queue, per agent, per day.
How the checks run
- Continuous, not monthly. A scheduled job re-counts the previous window against the live PBX databases. A mismatch is an alert, not a report.
- Deterministic joins. Calls are matched on the PBX's own unique id plus timestamps, never on fuzzy fields like caller number.
- Checks in production. There are 115+ automated checks that run on the production server itself — against real data, not fixtures — because the failure modes that matter (clock drift, a trunk renamed, a queue added without telling anyone) only exist there.
The result
The last full reconciliation matched exactly, call for call. That result is the reason supervisors act on the live floor dashboard while callers are still waiting, and the reason per-customer billing reports go out without a manual audit.
The same discipline carries over to financial systems: a ledger you cannot reconcile is a ledger nobody should settle against.
