Problem
Firma żyła w 13 rozłączonych arkuszach — około miliona rekordów edytowanych ręcznie, łączonych lookupami, po cichu uderzających w limity wierszy. Ten sam klient figurował w kilku z nich w nieco innej pisowni, więc żadne dwa pliki nigdy się nie zgadzały. Nie było historii zmian, strategii backupu ani bezpiecznego sposobu na rozwój: jedno złe wklejenie mogło bezpowrotnie utracić dane.
Osobno dane call center siedziały w bazie dostawcy telefonii, ale nigdy nie trafiały do analityki. Gotowe narzędzie do transferu wciąż padało, bo dostawca wymusza twardy limit dwóch jednoczesnych połączeń — więc raporty były zawsze nieaktualne albo ich brakowało.
Co zbudowałem
Wszystkie 13 arkuszy wyczyszczone, zdeduplikowane i znormalizowane do jednego schematu relacyjnego, a potem przeniesione na samodzielnie hostowaną platformę w chmurze firmy: NocoDB na PostgreSQL, za reverse proxy z automatycznym HTTPS i Google SSO ograniczonym do domeny firmy, z dziennymi backupami i zweryfikowaną ścieżką odtworzenia. Osoby nietechniczne dostają znajomy, arkuszowy interfejs; dane pod spodem są wreszcie relacyjne, z kontrolą dostępu i audytowalne.
Dla danych call center zastąpiłem padający transfer zaplanowanym zadaniem, które synchronizuje 27 tabel do hurtowni co 15 minut — działa na jednym połączeniu, by uszanować limit dostawcy, używa watermarków do ładowań przyrostowych i deduplikacji merge-on-write, więc analityka jest aktualna, nigdy nie wyczerpując źródła.
Osobny panel umów spina workflow prawny z CRM-em sprzedaży przez webhooki, synchronizując statusy w obie strony.
Stack
NocoDB · PostgreSQL · Google Cloud · Cloud Run · BigQuery · Python · Docker · Traefik · Next.js · Express