Spring til indhold
zentropix[ai]
MENU

Cases / Case

14.249.840 USD afstemt. Én database.

Vores egen performance-marketing-gruppe kørte på 877 eksportfiler spredt over 8+ platforme i iGaming og forbrugslån. De samlede tal kunne ingen efterprøve. Vi samlede dem til én dedupliceret masterdatabase, bygget og testet som software.

Klient
Vores egen marketinggruppe
Vertikaler
iGaming · forbrugslån
Stack
Python · testdækket pipeline
Status
Intern platform, i drift

Performance marketing efterlader spor overalt. Hver platform eksporterer sin egen sandhed i sit eget format, og hos vores egen marketinggruppe blev det til 877 råfiler fra 8+ platforme, spredt over iGaming og forbrugslån på tværs af 10 markeder. Totalerne stemte aldrig: den samme bruger lå i to systemer, den samme konvertering blev talt to gange, og omsætningen så større ud, end den var.

Konkret talte den samme konvertering med i både tracking-værktøjet og e-mail-platformen, og brugere, der bevægede sig mellem iGaming og forbrugslån, blev registreret som to. Vi vidste, at vi et sted i regnestykket betalte for de samme resultater to gange. Vi vidste bare ikke hvor, eller hvor meget.

Standardsvaret er et regneark, der samler tallene manuelt en gang om måneden. Men et regneark kan ikke testes, og en rapport, ingen kan køre igen, er reelt et rygte. Når budgetter flyttes efter tal, der er 1,7 % for høje, flytter man dem det forkerte sted hen.

Vi ville have tal, vi kunne genskabe på kommando, spore tilbage til den enkelte råfil og teste som enhver anden kode. Kort sagt en masterdatabase, der opfører sig som software, og ikke som en fælles mappe med eksportfiler.

Vi byggede en pipeline, der læser alle 877 råfiler ind og samler dem i én dedupliceret masterdatabase. Arbejdet lå tre steder:

  • Indlæsning: 8+ platforme har 8+ formater. Et tracking-værktøj og en e-mail-platform er ikke enige om, hvad en “bruger” eller en “konvertering” er, så hver mapning er eksplicit og testet. Hver kilde fik sin egen parser med skemakontrol, så en ændret kolonneoverskrift stopper indlæsningen i stedet for stille at forurene databasen.
  • Deduplikering og afstemning: pipelinen fandt 84.726 brugere, der optrådte på tværs af vertikaler, og korrigerede ~1,7 % omsætningsinflation fra 826.000 dublet-events. Samtidig blev 2,79 mio. + 3,22 mio. USD i tidligere usynlig omsætning synliggjort fra siloer, den gamle rapportering ikke så.
  • Test og genopbygning: testsuiten voksede fra 59 til 490 automatiske tests, alle grønne, og en rød test blokerer merge. Hele masterdatabasen på 15,5 mio. rækker kan genopbygges fra rå kildefiler på ~10 minutter, så tallene aldrig afhænger af en tilstand, ingen kan reproducere. Genopbygningen er samtidig vores backup: kildefilerne er sandheden, og databasen kan altid gendannes fra dem.

Resultatet er én kilde til sandhed, hvor hvert tal kan spores tilbage til den råfil, det kom fra. Ingen månedlig manuel samling, ingen regneark, der stille driver fra virkeligheden.

Det, der gør den til software, er disciplinen omkring den. Pipelinen lever i versionsstyring, hver ændring udløser de 490 tests i CI, og afstemningsrapporten genskabes ved hver kørsel. Begynder et tal at flytte sig, kan vi se præcis hvornår og i hvilken kilde, før det ender i en beslutning.

Fordi genopbygningen tager ~10 minutter, koster det næsten ingenting at afprøve en ændring: kør den, se om tallene og testene stadig holder, og rul tilbage, hvis de ikke gør. Det er den samme rytme, vi bruger til kode, brugt på data.

Samme rå kilder ind. Samme database ud.

Tallene herunder er pipelinens aktuelle output, genskabt fra de 877 rå kildefiler ved hver kørsel og dækket af hele testsuiten. Ingen af dem er tastet ind i hånden.

2.490.766

brugere samlet fra 8+ platforme

14.249.840 USD

omsætning afstemt

13.377.929

events i masterdatabasen

59 → 490

automatiske tests, alle grønne

84.726

overlappende brugere på tværs af vertikaler

~10 min.

fuld genopbygning af 15,5 mio. rækker

Tal, ingen kan efterprøve?

Vi kan bygge den samme kilde til sandhed på jeres data. Audit først, fast pris.