← projects

[Nothing Recomputable]

Tiered Affiliates Dashboard

One route, two readings by role — and no hidden number can be rebuilt from what's left on screen.

● In productionProduct & FrontendCompany↑ Analytics Dashboards HubReactTanStackPostgresSQL
01 /context

Three requests — hide sensitive data from affiliates, give the AOV team a front-end × back-end view, create access levels — were about to become three dashboards.

02 /my role

Saw they were one problem and built one dashboard with cuts by role.

03 /problem

Affiliates needed their own numbers without being able to infer what's reserved for masters and owners.

04 /how it works
  1. 01 · Member cut

    Revenue, net, net % and refund + chargeback rate. No order counts (revenue ÷ orders = AOV) and no affiliate filter.

  2. 02 · Master / owner

    Everything, plus channel chips (front end, recovery, monetization, broadcast, brand bidding), a back-end/front-end AOV column, a detail ⇄ macro toggle and best/worst warnings.

  3. 03 · The recomputability rule

    If a number can be recomputed from what's left — on screen or in the CSV — it wasn't hidden.

  4. 04 · One truth

    Formulas shared with the AOV dashboard and checked number by number, so the two can't drift.

05 /architecture
01
Resolve role
02
Cut definition
03
Shared route
04
Member view
05
Master / owner view
06
Cut-aware CSV
06 /interactive demo

what you're seeing

The KPI cards a member or a master sees. You choose what to hide from members; the leak detector checks whether a hidden number can be rebuilt from what's left — on screen or in the exported CSV.

try this

  1. 1.As Member, hide only AOV: the detector shows it leaks through revenue ÷ orders.
  2. 2.Hide order count too — now the cut is consistent.
  3. 3.Turn on CSV export: the file carries the hidden columns until “CSV follows the screen cut” is on.

real vs simplified

The rule and the leak paths are the real ones behind the affiliates dashboard. The program and its numbers are fictional.
[lab] loading demo…
07 /results
Three requests closed with one dashboard; migrations verified by checksum against the database before merge.
08 /what broke and what I changed
  • ! brokeHiding the filters in the UI wasn't enough: affiliate values passed in the URL still filtered the data, and the per-affiliate query still fired.

    → changedMember requests drop those parameters, and the breakdown query isn't sent at all.

09 /related