Complaint Flow Algorithm · Companion Document 2 of 4

ODPP Complaint Routing & Escalation Logic

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

Execution Mechanics & State Reference

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