Complaint Flow Algorithm · Companion Document 2 of 4
Nova Generation Technologies
Sprint Uganda Limited · JLOS House, Naguru
Step 1 · Ingestion & anchor registration
Incoming public or internal complaint
Web portal · Toll-free line · Walk-in desk · Email → bound to crb_number, tracking code issued
Step 2 · Category triage
Is complaint type = CONDUCT?
Yes — conduct complaint
Bypass local station entirely
Misconduct, bribery and file-suppression allegations never route through the officer complained against.
Route direct to Directorate of Inspections & Quality Assurance
HQ, JLOS House. Handling officer assigned; subject officer's access to the investigation file is revoked at the data layer.
Inspections finding & disciplinary directive
Written to the immutable ledger. Complainant notified against tracking code. Status → SANCTIONED or CLOSED_NO_FINDING.
No — process-decision complaint
Tier 1 — Route to RSA at station of origin
Target action: re-perusal of the case docket. SLA clock starts. State → OPEN_RSA.
Resolved at RSA level within the {{ slaDays }}-day SLA window?
Yes
Issue resolution directive & close
State → RESOLVED_RSA
No / dissatisfied
Tier 2 — Auto-escalate to Regional Officer
State → ESCALATED_REGIONAL
Resolved at regional level within SLA?
Yes
Issue regional directive & close
State → RESOLVED_REGIONAL
No / dissatisfied
Tier 3 — Escalate to DPP Executive Office
State → ESCALATED_HQ
Terminal authority
DPP recalls the file & issues a binding directive
File Recall Order recorded in the immutable ledger. Master docket status updates to REINSTATED or SANCTIONED.
Every transition above writes an append-only entry to the File Movement Ledger, chained to its predecessor.
Page 1 of 2 · Routing logic
Complaint Flow Algorithm
CRB-anchored · Append-only ledger
Step-by-step mechanics
1 · Ingestion & anchor registration
The complaint enters through the public gateway, the toll-free capture console, the internal desk, or the monitored inbox — and binds immediately to crb_number. Where the complainant has no CRB reference, triage resolves it against the station ledger before the record can advance. A tracking code is returned at this moment, not later.
2 · Category triage
Conduct complaints — misconduct, bribery, file suppression — route directly to HQ Inspections at JLOS House to prevent local tampering. Process-decision complaints — disagreement with a sanction or a withdrawal — route to the local RSA for initial re-examination of the docket.
3 · SLA monitoring
Background tasks continuously track open complaints. If the RSA fails to resolve the petition within the {{ slaDays }}-day window, the state advances to ESCALATED_REGIONAL without human intervention. Escalation is a property of the clock, not of anyone's discretion.
4 · File recall & directives
Where a matter escalates to HQ, the DPP issues an administrative order calling up the file. The order is recorded in the immutable ledger and the master docket status updates to REINSTATED or SANCTIONED. The complainant is notified against their tracking code at every state change.
Conflict isolation rule
An officer who is the subject of an active conduct complaint cannot view or edit the associated investigation file. Enforced at the data layer, so it survives direct queries and exports.
State machine reference
| State | Custodian | Exit trigger | Next state |
|---|---|---|---|
| RECEIVED | Intake officer | CRB bound & category set | OPEN_RSA / OPEN_INSPECTIONS |
| OPEN_RSA | Resident State Attorney | Directive issued, or SLA expiry ({{ slaDays }} days) | RESOLVED_RSA / ESCALATED_REGIONAL |
| ESCALATED_REGIONAL | Regional Officer | Directive issued, SLA expiry, or recorded dissatisfaction | RESOLVED_REGIONAL / ESCALATED_HQ |
| OPEN_INSPECTIONS | Inspections & Quality Assurance | Finding recorded | SANCTIONED / CLOSED_NO_FINDING |
| ESCALATED_HQ | DPP Executive Office | File Recall Order & binding directive | REINSTATED / SANCTIONED |
| RESOLVED_* | Closing officer | Terminal — reopening creates a new linked complaint | — |
Test scenario validated in the PoC
A citizen logs a complaint against a closed theft charge, CRB 412/2026. The system routes it to the local RSA. The SLA expires after {{ slaDays }} days without action. The system auto-escalates the file to the Regional Officer, who issues a File Recall Order. The DPP re-peruses the docket and issues a binding directive: re-instate charges. Every one of those six transitions is recoverable from the ledger, with timestamp and actor.
SLA windows shown are working assumptions pending confirmation of official ODPP service delivery timelines.
Page 2 of 2 · Mechanics