For heads of platform, internal tools, and PMO: a complete, runnable process that takes an unmeasured application estate to a keep/fix/kill decision deck in one month. No consultants, no six-month discovery phase.
You cannot audit what you haven't listed, and every estate is bigger than its owner believes. Build the inventory from four sources, in this order: the SSO/IdP application list (the closest thing to ground truth), DNS and internal load-balancer entries, the finance system's software line items, and — last — asking department heads "what do your people use daily?" Expect the four lists to disagree; the disagreements are findings.
Capture one row per app:
| Field | Notes |
|---|---|
| Name, URL, owner team, sponsor | If no owner can be named in two emails, flag it — ownerless apps are retirement candidates by default. |
| Intended audience & job-to-be-done | One sentence. "Managers approve expenses" — if the sentence takes a paragraph, note that too. |
| Annual run cost | Licenses + infra + the honest maintenance fraction of engineer time. Estimate bands (S/M/L = <$10k / $10–100k / >$100k) beat false precision. |
| Believed usage | The owner's guess, recorded now — comparing it to measured reality in week 4 is the audit's best slide. |
| Overlap candidates | Other apps claiming the same job. |
The classic audit fails here by commissioning a measurement project per app. Don't. A portfolio-grade tool needs one script tag per app in the shared layout — for most estates that's a batch of one-line PRs a single platform engineer can open in an afternoon, and app teams merge in passing. Sequence:
<script async src="…/widget.js" data-feedback-key="fbk_…"> per app, or point a coding agent at the repos via the MCP connector and let it install and verify_install each one. Anonymous by design, so this rollout does not need a privacy-review cycle per app — one review covers the platform (see the approval pack).Two weeks of data is enough to separate the quartiles, which is all a first audit needs. Score each app 1–5 on three axes:
Portfolio score = U × S, read against C. Keep the two numbers separate rather than blending — a 20/25 on usage-sentiment with an L cost is a different conversation than a 6/25 with an S cost.
| Quadrant | Profile | Default disposition |
|---|---|---|
| Fund | High usage, high sentiment | Protect the team; copy its practices. |
| Fix | High usage, low sentiment | Captive users, real pain — top of the investment list, with the feedback stream as the spec. |
| Niche | Low usage, high sentiment | Keep if cheap; a small audience that loves a tool is fine at S-cost and a problem at L-cost. |
| Retire? | Low usage, low sentiment | Justify-or-sunset queue, using pre-published kill criteria. |
Six slides, no more:
The one-time audit decays in a quarter. What keeps it alive: a monthly 30-minute portfolio review of movers and bottom-rated apps; anomaly alerts to owners when usage halves or ratings slide; and the feedback-to-backlog loop so the Fix list continuously re-derives itself from real comments (see from stars to sprint).