← All projects

Promotion spend · Decision rules

ZaloPay — promotion budget concentration

Where the promotion budget actually goes, and a recommendation scoped to what the data can support.

T-SQLPythonPower BICost coverageRule simulation
254Ktransactions
90.6Kusers
4.26%of users
26.94%of promotion cost
My role
Independent analyst · Sole contributor
Period
2026 · Approximately 1 month
Engagement
Self-directed case study; completed individually

Business objective: Prioritise promotion-cost review while balancing investigation workload against customer impact.

My ownership: I completed this project independently from end to end: framed the question, prepared and validated the data, performed the analysis, built the reporting output, and wrote the recommendations and limitations.

A digital wallet runs promotional campaigns. Which users should a limited review team look at first, and what share of the promotion budget does that queue actually cover?

The answer

254K transactions and 90.6K users scored on six behavioural signals, built twice — once in T-SQL and once in pandas — and reconciled against each other. 4.26% of scored users are associated with 26.94% of credited promotion cost, a concentration that exists before any rule is applied. The recommendation is a shadow-mode review queue rather than auto-blocking, because the data carries no fraud labels.

  • Six behavioural signals. Velocity, shared device and IP, referral patterns, reciprocal transfers — engineered in T-SQL, simulated in pandas, reported in Power BI.
  • Reconciled the two implementations independently. The SQL and the Python were written to produce the same numbers and then checked against each other. Two implementations that agree are evidence; one implementation is an assertion.
  • Framed it as queue economics, not detection. The question a review team has is not 'who is suspicious' but 'how much cost does an investigator-hour cover'. The output is a five-page decision report trading workload against coverage.

What the evidence says

What it found.

01

The budget is concentrated before any rule is applied

4.26% of scored users are associated with 26.94% of credited promotion cost. That concentration exists in the data independently of whether any of it is abuse.

02

A review queue, not a block list

Recommended shadow mode: score, queue, review, and measure. Auto-blocking on an unvalidated rule costs real customers.

What it looks like

The output, not a description of it.

Where the promotion budget goes
Where the promotion budget goes4.26% of scored users are associated with 26.94% of credited promotion cost — a concentration that exists before any rule is applied.
Workload against cost coverage
Workload against cost coverageThe question a review team has is not who is suspicious, but how much cost an investigator-hour covers.
Scoped to review, not to blocking
Scoped to review, not to blockingThere are no fraud labels in this data, so the output is a review-priority signal and is named that way throughout.
  • There are no fraud labels in this data. So the output is a review-priority signal, not confirmed abuse, and it is named that way throughout. An unlabelled score cannot support a fraud claim, whatever it is called.
  • No precision or recall can be reported, because there is nothing to measure them against. That is why the recommendation is shadow mode — it generates the labels that would let you measure.
  • Concentration is not causation. Heavy promotional users may simply be heavy users.