Resource · Methodology

How We Build These Numbers.

Sample sources, deduplication, and the publishing threshold behind the Digital Ad Cost Index and the Live Host Rate Index — written for people who want to check our work, not just read our numbers.

Two datasets, two different methods — this page documents both honestly rather than describing one uniform process that doesn't exist. The Digital Ad Cost Index (Malaysia/Singapore) is aggregated from managed client accounts. The Live Host Rate Index is sampled from public job listings. They are built differently because the underlying data is available differently, and this page says so rather than papering over it.

1. Digital Ad Cost Index — Malaysia & Singapore (first-party)

Ranges are drawn from the client accounts we manage directly across Malaysia and Singapore, expressed as bands rather than single figures. Reviewed quarterly (see the live Review history for the dated log of what changed each quarter): every range is checked against the most recent quarter's managed-account data, and bands that have genuinely moved are adjusted — bands that haven't are left alone rather than nudged for the sake of showing activity.

What this is not: a fixed-sample-size statistical protocol with a published account count or a formal deduplication step — that rigor belongs to the Live Host Rate Index below, which is a different kind of dataset (public listings, not managed accounts) that needs it for a different reason (no natural "account" boundary to de-duplicate against). The Ad Cost Index's discipline is instead: real accounts, real spend, reviewed on a fixed quarterly cadence, and a visible dated changelog so a stale or wrong band can't hide.

2. Digital Ad Cost Index — Australia (curated, not first-party)

AU figures are not from managed accounts — we don't yet run a large enough Australian book of business to publish first-party AU figures honestly. Instead, the cross-industry AU bands (Google Search CPC, Meta CPC/CPM, GST rate) are curated from published third-party sources (rockingweb.com.au, cross-referenced against wordstream.com) and clearly labelled as such on the live page. Vertical-specific AU bands (aesthetic clinic, dental, interior design) are verify_gate: true — see §4 below — because no defensibly-sourced band could be found for them; they render as a gap, not a guess.

3. Live Host Rate Index — Malaysia (third-party sampled, not shakalakaa session data)

Individual job listings sampled from public postings on Malaysian job platforms (Indeed Malaysia primary, cross-referenced against Jobstreet/Jora/Glassdoor listing-volume counts). For each observation: employer, region, employment type, posted rate range and unit were recorded, then de-duplicated by employer+location+role to remove re-posted/duplicate listings appearing across multiple search queries. Minimum 20 observations required before a band is published as a number; below that, the band is marked insufficient sample and no number is printed on the live page. Employer names are recorded here for de-duplication and audit purposes only and are never published against individual rates on the live page — only aggregate bands are shown, per the collection method's own no-attribution rule.

Known bias, stated rather than hidden: Posted rates skew toward employer-side openings and roles that need advertising to fill. Experienced hosts with existing audiences are typically booked through direct relationships or agencies without a public job listing and are not represented in this sample. Ranges reflect what employers are willing to post publicly, not necessarily what the most in-demand hosts actually command.

Context on market size (not used as the observation source for the published bands): Jobstreet 326 listed roles (as of 2026-06); Jora 697 (as of 2026-02); Glassdoor 490 (as of 2026-03).

4. What verify_gate means

Every figure in data/benchmarks.json can carry a verify_gate: true flag. It means: a number for this metric hasn't cleared our own bar for publication — either no session/account data exists yet, or what exists doesn't meet the minimum sample the dataset requires (20 observations for the Live Host Rate Index; a defensibly-sourced citation for curated AU figures). Every page and tool that reads benchmarks.json is required to check this flag at render time before showing a figure — a page is not allowed to quietly ignore the gate and print the underlying placeholder value. When a metric is gated, the honest behaviour is to show the gap, not a number. This is a structural rule, not a one-off editorial choice: scripts/check-placeholders.sh Part 2 fails the build if any page reads a verify_gate: true figure without checking the flag first.

Licence and reuse

Both datasets are published under CC BY 4.0 — free to reuse with attribution. Read-only JSON is available at /api/benchmarks.php and /api/live-host-rates.php — see the API documentation for parameters and response shapes.

← Back to the Digital Ad Cost Index · Live Host Rate Index →

Cite this

shakalakaa (Plixitt Solutions). "Methodology — shakalakaa Digital Ad Cost Index & Live Host Rate Index." https://shakalakaa.my/resources/ad-benchmarks-methodology. Licensed under CC BY 4.0.

LET'S START
THE CONVO.