tristanfaure.com /projects / qos-hub

QoS Hub

Multi-country incident-analysis platform — Axian Digital & Fintech

2026 · LIVE

Stack

Python · FastAPI · pandas · PostgreSQL · Docker · Kubernetes · oauth2-proxy · Entra ID · nginx · RHEL

Key figures

Incidents
22,451 unified
Countries
MG / TZ / TG
Tests
129 automated
Access
3 layers, negative-tested

Three Axian subsidiaries delivered their incidents in three different formats, analyzed by hand in spreadsheets. Built during a summer internship at Axian (Digital & Fintech), QoS Hub turned that analysis chain into a shared platform: exports uploaded through the UI, asynchronous processing, one dashboard over 22,451 tickets.

The structuring choice: ask nothing persistent from the cluster. Raw exports, produced files and the published dashboard live in the database, and every container rebuilds what it needs at startup. Verified by wiping the whole disk — the platform came back identical.

The hardest part was not the code but the data: a cp1252 export dated in UTC+3, another with durations in seconds and no resolution date, a hand-kept register without identifiers where inserting an old row renumbers everything. Every deviation is documented and owned rather than masked — out-of-scope tickets are flagged, never deleted, and every dashboard figure opens onto the ticket IDs behind it.

Access: three independent layers, each proven by a real negative test — an account outside the tenant rejected by Microsoft, an employee outside the group rejected by the proxy, per-country scoping enforced server-side. The application itself has no login screen and stores no password: it is handed an identity by the proxy, read in a single file, so the whole sign-in mechanism can be swapped without touching anything else.

Went live after three days of coordination with four teams in three countries — including a network diagnosis that required proving, packet capture in hand, that the blockage did not come from our servers.

Links

All 33 projects · Open the interactive portfolio · About Tristan