DGTCP · Client Listening platform
Complaint and claim management for users of the Beninese public Treasury: account-free submission, reference-code tracking, user portal, five-role staff back office, and a per-department map of services.

The DGTCP receives complaints and claims from users about its services: payments, pensions, public accounting. Without a system, a claim gets lost between the desk that receives it, the department that should handle it, and the user waiting for an answer. Nobody knows where a file stands, how long it took, or what was answered, so the administration has no basis on which to measure its own service quality.
Three surfaces over a Django 5 API. A user files a complaint with no account, around the clock: they pick the service concerned, attach supporting documents, and leave with a ticket number and a reference code. They then track the file either publicly with that code or in a portal, signing in with a one-time code sent by email. On the administration side, a back office maps departments and their services, routes each ticket to the right agent, and follows the Submitted → Assigned → In progress → Resolved → Closed cycle, with status-change history and processing-time calculation. Five roles share the permission matrix: administrator, CEC supervisor, CEC agent, processing agent, user. Postgres, Redis and Celery carry the scheduled work (auto-closing resolved tickets, reminders) and notifications go out through SendGrid or Brevo, on editable templates.
The structural decision was to make filing and tracking possible without an account. Requiring registration on a public complaints service filters out the least-equipped users, precisely the ones who most need recourse. The reference code gives read-only tracking with no authentication; the portal, with a one-time code, adds full history and the conversation with the agent.
The project shipped with its documentation: three separate manuals for users, staff and technical operations, totalling 43 published sections as a browsable site. On an administrative platform where agents rotate through posts, documentation is part of the deliverable, not an afterthought.
- Roles
- 5
- Django modules
- 12
- Ticket statuses
- 5
- Manual sections
- 43
- Celery
- Vite
- S3
- Redis
- Docker
- Postgres
- Django
- Python
- React
- Next.js
- TypeScript

