Allocation Score v1.0 — methodology
Everything the score does, in full. A metric whose definition is private cannot be cited, and one whose definition moves silently cannot be trusted — so this page is versioned and every change is listed at the bottom.
The foundation we build on
The backbone is the FinOps Foundation’s published KPI, Percentage of Costs Associated with Untagged CSP Cloud Resources: untagged cost divided by total cost. The Foundation documents a variant restricted to taggable resources, and states that 0% is unattainable because some resources cannot be tagged — so under 10% is the recommended initial goal. We use the taggable-denominator variant and anchor grade A to that 10% target.
FinOps Foundation material is used under CC BY 4.0. Finitizer is not affiliated with the FinOps Foundation.
The five components
Coverage
40 pointsShare of taggable spend carrying at least one tag.
Why it is weighted this way: This is the FinOps Foundation KPI, inverted. It gets the largest weight because it is the question everything else serves: can this dollar be attributed to anyone at all?
Required-tag completeness
25 pointsShare of taggable spend carrying every tag in your required set (default env, owner, cost-center, app).
Why it is weighted this way: One tag is enough to prove a resource was touched. Showback needs a specific set, and a resource tagged only with "app" cannot be charged to a cost centre.
Key hygiene
15 pointsPenalises keys that exist in more than one spelling (CostCenter / costcenter / cost_center) and keys covering under 1% of spend.
Why it is weighted this way: Variant keys silently split a dimension in two, so every report built on them is wrong in a way that is very hard to see. Orphan keys are usually abandoned experiments adding noise to every group-by.
Value hygiene
10 pointsShare of tagged spend whose value is a placeholder — tbd, test, none, xxx, and so on.
Why it is weighted this way: A tag with a placeholder value passes every coverage check and allocates nothing. It is worse than no tag, because it hides the gap.
Concentration
10 pointsShare of unallocated spend held by the five largest service/region groups.
Why it is weighted this way: One $40k untagged node group and four thousand $10 resources can produce identical coverage, and they are not equally bad. The first is one tagging rule away from fixed; the second is a quarter of work. The score reflects that.
Grade bands
| Grade | Score | Reads as |
|---|---|---|
| A | 90+ | Meeting the published target. Under 5% untagged earns an A+ note. |
| B | 75–89 | Working, with known gaps. |
| C | 60–74 | Showback is possible but contested. |
| D | 40–59 | Allocation exists on paper. |
| F | 0–39 | No usable allocation. |
Taggability rules
Each charge is classified before scoring. Untaggable charges leave the denominator entirely; unknown charges are counted as taggable, which is the conservative choice, and reported so you can see how much rests on it.
| Matches | Verdict | Why |
|---|---|---|
| ^tax$ | untaggable | Tax is levied on the account, not on a resource. |
| support | untaggable | Support is billed as a percentage of account spend. |
| \bmarketplace\b | untaggable | Marketplace charges carry the vendor's metadata, not yours. |
| data ?transfer|egress|bandwidth | untaggable | Data transfer is billed at the account or lane level, not per resource. |
| refund|credit|adjustment | untaggable | Credits and adjustments are account-level. |
| ^aws (cost explorer|budgets|config|cloudtrail)$ | untaggable | Account-level management services. |
| savings ?plan|reserved instance|committed ?use | untaggable | Commitment charges are account-level, not resource-level. |
| ec2|compute engine|virtual machines? | taggable | Instances support tags. |
| \bs3\b|cloud storage|blob storage | taggable | Buckets support tags. |
| \brds\b|cloud sql|database | taggable | Database instances support tags. |
| lambda|cloud functions|cloud run | taggable | Functions and services support tags. |
| bigquery|redshift|snowflake | taggable | Datasets and clusters support labels or tags. |
| kubernetes|eks|gke|aks | taggable | Clusters and node groups support tags. |
This table is incomplete by nature — cloud providers add services faster than anyone can classify them. If you find a charge we classify wrongly, we want to know.
What this score does not do
- · No benchmark percentiles. We will publish a distribution when we have collected enough anonymised scores to have one. Inventing “the median organisation scores 58” today would be a fabrication, and this tool exists partly as a reaction against exactly that.
- · No judgement of your tag values. We can see that a value is a placeholder; we cannot see whether “team-alpha” is a real team.
- · No allocation of shared costs. Splitting a shared Kubernetes cluster across tenants is a genuinely hard problem and is not what this measures.
Changelog
- v1.0
- Initial published version. Five components at 40/25/15/10/10, grade A anchored to the FinOps Foundation’s under-10% target.
Scoring once tells you where you are. Scoring continuously tells you whether you are winning.
Finitizer recomputes allocation on every run and tracks whether NEW spend arrives tagged — the number that says whether your policy is actually working, rather than whether someone did a clean-up sprint last quarter.