Quality audit · Verdal Group (fictional case)

L2 — Internal audit

An isolated sub-agent with no access to the conversation that produced the work, scoring against a grid built for this deliverable.

QA Level 2 — Internal audit, WP1 Market

Documents audited: livrables/verdal-wp1-market.pptx (17 slides) + livrables/verdal-wp1-market-model.xlsx (7 tabs, 30 inputs, ~100 live formulas) Type: Board deck + supporting market model · capital-allocation decision · Date 27 July 2026 Method: independent Cowork subagent, isolated context — no access to the conversation that produced the deliverables. Dynamic criteria grid built for this deliverable (14 substance criteria + the 8-criterion design grid D1-D8). The model was rebuilt from its 30 assumption cells in Python and every value recomputed independently. Portion read: 100% of both artefacts, including the uncompressed sensitivity formulas. Honesty note on design: the audit read an extracted text rendering of the .pptx, not rendered pixels. D1 (colour), D2 (typography) and D8 (finish) are marked to be confirmed at render. Confirmed from the file itself: 13.33 × 7.5 in = 16:9, no ${...} tokens, no template placeholder strings, no Lorem.

No deliverable was modified.


Criteria grid

# Criterion Score /5 Justification Concrete fix
S1 Action titles are conclusions, not labels 3 All 12 content titles are complete sentences with a conclusion and no full stop — mechanically perfect. Two are factually wrong. Slide 13: "two equipment assumptions do [turn self-operation positive]" — its own chart shows charger spec at +0.6 and bays per charger at −2.8. One crosses zero, not two. Slide 5: "Three published constructions land near €25bn for Europe in 2030" — of the three, one is 2030, one 2034, one 2032. Slide 13 → "No demand assumption turns self-operation positive; one equipment assumption does, and it is the charger spec WP2 has not chosen". Slide 5 → "Three published constructions land within a factor of two of €25bn, on three different horizon years, and not one measures what a site host keeps".
S2 Title-flow test / narrative arc 4 The 12 titles read alone carry the argument end to end (full test below). One hole: no title ever states the incremental prize. A Board member reading titles only leaves believing the prize is €7m. Slide 11 title to lead with the delta: "A renegotiated revenue share beats today's assumed lease by €0.5m a year — the prize is the gap between structures, not the gap to gross revenue".
S3 Answer first, pyramid 4 Slide 2 answers in the title and carries the "so what" in a decision arrow. Every slide has a kicker. Exec-grade spine. Slide 2's title attaches the €7m to "a lease fee we have had to assume" — but €7.1m is the revenue share (15% × €47.58m) and does not use the lease fee at all. Re-word to "…on a bay count and a revenue share we have had to assume".
S4 Three supports under a governing thought 2 Direct rule breach on the most-read page. Slide 2 carries six numbered supports — the standard says "rarely four, never six". Slide 15 carries five; slide 13's tornado carries five bars. Slide 2: merge points 1+2 into one perimeter support, fold point 5 (footfall) into the decision arrow → four. Slide 15: promote items 1, 2 and 4 (the three Verdal holds) as the three supports, demote 3 and 5 into a "must be measured" sub-line.
S5 Quantification, units, basis 4 Near-exemplary: "three of the six countries", "1/2,850th", "€19,000 per DC charger a year", every figure with unit and year. Two lapses: slide 12's "€44m of the €70m" labels €43.85m as fixed cost per charger, but €4.62m of it is AC points and DC-per-charger alone is €39.2m. Slide 11's "2-3x our €1,500" is wrong on FX. Slide 12 → "fixed cost per charger and per point does €43.9m of the €70.0m of damage". Slide 11 → "£3,000-5,000 a bay a year — 2.3-3.9x our €1,500 at £1 = €1.17".
S6 Source line on every page 5 All 12 content slides carry one; the three dividers and the two book-ends correctly do not. Sources specific and dated (Eleport Feb-2026, ADAC Feb-2026, Eurostat band IC H2-2025, Interpath May 2026, Fastned FY2025). No exception found.
S7 Confidence scale used everywhere 2 The model is exemplary — Verified/Probable/Hypothesis in Assumptions!E and tab 1!E, defined in README!B9. The deck uses the scale on zero slides. It substitutes prose: "ours", "modelled", "judgement", "assumed". This is precisely the client's stated scoring criterion, and the deck drops the firm's own instrument for it. Add a confidence chip to every row of slides 4, 8, 9 and 12 and to each of the five items on slide 15, using the three words verbatim. On slide 12: gross revenue Verified; electricity Verified; grid capacity Hypothesis; payment Hypothesis; O&M Probable; charger capital Probable; grid connection Hypothesis.
S8 Say what is not known 5 The strongest thing in the package. F15 ("NOT SUPPLIED BY THE CLIENT"), F25 ("NOT PUBLISHED FOR ANY OF THE SIX COUNTRIES"), F37 (the benchmark is contested between two of our own research passes), README!B13-B15, tab 1!A18, tab 2!D17 ("the most this reconciliation can prove"), tab 5!A33 (the counterargument the model deliberately does not price). Slide 9 states plainly that 1,100 stores is the only Verdal-supplied figure in the deck. Better than most partner-level work.
S9 Board figure handled as perimeter, never as error 3 The framing discipline is right in three places (tab 4!A10-A11, slide 6 kicker, slide 16). But deck and model disagree on which level €25bn sits at: slide 4 and tab 4!C5 place it at level 1, infrastructure capex; tab 1!A20 says "the most likely thing a €25bn European charging figure measures: what customers pay at the plug" = level 2. On the one question the client commissioned, the package holds two answers. And slide 5's "the Board paper cited the right number from the wrong report" is an error accusation in perimeter clothing. Pick one level and make both artefacts say it (see Decisions). Slide 5 → "A McKinsey October 2023 title matches the figure, currency and horizon exactly but measures mobility-finance revenue across five countries. We cannot exclude it and we do not assert it — the Board paper's own citation settles it in one line." Delete "wrong report".
S10 No invented Verdal internal figure 5 Fully clean. C15 (bays), C37 (lease fee) and the energy contract are flagged HYPOTHESIS in capitals, listed as data-room requests, re-flagged on slides 9, 11 and 15. README!B13 states the rule explicitly.
S11 Arithmetic integrity of the model 4 All 7 tabs rebuilt from the 30 inputs — every model formula reproduces exactly (funnel, volume, three stacks, break-even, all 42 grid cells, both ratios). Zero errors, no hardcodes downstream. Two defects: the break-even is DC-only (tab 5!B9 = 159.82 kWh/bay/day) and contradicts its own grid, where 4 bays × 160 kWh = −€0.605m; the true whole-estate break-even is 162.2 once the AC estate's −€0.655m net drag is included. And F37 converts £3,000-5,000 to "€13-22m" at an implied FX of 1.00. tab 5!B7: subtract the AC net contribution, or re-label B9 "Break-even DC throughput, DC estate alone" and add "Whole-estate break-even 162.2 kWh/bay/day". F37: state the FX rate and correct to €15.4-25.7m.
S12 Deck↔︎model coherence, both directions 2 Four contradictions (full tie-out below). The most damaging: slide 2 says "the prize is of the order of €7m a year"; tab 3!D25 says "THE ACTUAL PRIZE" is €0.537m and explicitly warns against the comparison the deck's own headline then makes. The methodology's own words — "the gap between the first and the third is the actual prize" — are honoured by the model and abandoned by the deck. Slide 2 point 3 → "The pool is €7.1m a year; the incremental prize over today's assumed lease is €0.5m". Slide 4 level-4 row → add "of which €0.5m is incremental to today's lease".
S13 WP1 methodology conformity 3 Steps 1-4 delivered: perimeter levels (slide 4, tab 4), reconstruction with three candidates and an explicit refusal to assert (slide 5), funnel with basis and confidence per step (slide 8, tab 1), three margin stacks (slide 12, tab 3), single-cell replaceable assumption (C15), data-room list (slide 15). Step 5 is not delivered: the mandate requires "a range with its drivers, not a point estimate". The headline €7.1m is a point estimate on slides 2, 4, 6 and tab 4!C8. The tornado on slide 13 bounds the operate case only — the one structure the deck rejects. The three highest-leverage unknowns for the recommended structures (bay count, lease fee, revenue-share %) are never shown as a range. Add one slide between 11 and 12: a range chart. Lease €6.6m base, €15.4-25.7m at the Savills UK range; revenue share €4.8m at 10% to €11.9m at 25%; operate −€22.4m to +€0.7m. Build it as tab 5 section D so it is live, not drawn.
S14 Plausibility — could a partner present this as-is 3 Reasoning quality and honesty are partner-grade. What blocks it: a title contradicted by its own chart (13), a bridge step whose label is wrong by €30m (6), a takeaway contradicted by its own table (14), and the deck/model split on the €25bn level. Any one of these is a screenshot. Fix the four. None requires new research.
D1 Colour / charter coherence tbc at render The model's convention is explicit and documented (README!B7: blue = input, black = formula, yellow fill = unsourced and material) and applied consistently — FFFFFF00 on exactly the material unsourced cells, FF1F3864 headers, FFDDEBF7 result rows. Deck colours not judgeable from text. Confirm at render that the deck reuses the same three-colour semantics for assumption flags.
D2 Typographic hierarchy & legibility tbc at render Structure implies serif title + lighter sub-title + eyebrow, consistent across all 12 content slides. Point sizes and contrast not verifiable from text. Check slide 12 (7-row cost table with long basis strings) and slide 14 (7×6 numeric grid) hold a Board-legible body size.
D3 Content → visual fit 4 Well routed: bridge for the perimeter narrowing (6), funnel for the top-down (8), tree for the bottom-up build (9), bars for three structures (11), table for the cost stack (12), tornado for drivers (13), grid for the two-way sensitivity (14). Slide 5 is the misfit — three constructions with a level, a magnitude and a reason are a table, rendered as three prose blocks. Slide 5 → 3×4 table: Construction / Published figure and year / Perimeter level / Why it is not a site host's margin.
D4 Density & breathing room 3 Slides 8, 9, 11, 13 use a disciplined repeatable pattern (exhibit + two three-bullet columns) — excellent. Slides 5 and 16 are the outliers: three prose blocks of 55-75 words each, which is the "wordy slide" the standard forbids. Slide 2 carries six supports plus kicker plus source. Slide 16 → three columns of three bullets (WHO sends it / WHAT is asked / BY WHEN), keeping the dates. Slide 5 → table per D3.
D5 Quality of structured visuals 3 Units and bases are on the exhibits ("€M/YR 2030", "GWH A YEAR (2030)"), every exhibit sourced. Three defects: no confidence indicator on any exhibit (S7); slide 6's bridge step "Cost of delivery −40.5" is mislabelled; slide 14 is 42 parenthesised numbers with no legend and no unit on its column axis — the model's tab 5!A18 carries "DC kWh per bay per day →" and the slide lost it. Add the column-axis unit to slide 14, a shading legend, and a marked base-case cell. Keep the note "Every cell recalculates from the Assumptions tab".
D6 Template / master consistency 3 Layouts consistent (Titre / Séparateur / Texte / Fin), dividers at 3, 7, 10 numbered 01/02/03, doc ID and confidentiality on slide 1. Slides 15 and 16 carry the eyebrow "WHAT A SITE HOST ACTUALLY EARNS" — neither page is about what a site host earns; 15 is the data-room list, 16 the plan to 8 September. Three sections, four content blocks. Insert a fourth divider "04 — What we do before 8 September" before slide 15 and change the eyebrow on 15 and 16.
D7 Exec legibility & narrative 4 Titles are messages; the arc holds; every page ends on a decision arrow; the "so what" is never missing. Held back only by the two wrong titles (S1). Per S1.
D8 Finish tbc at render Confirmed from file: 16:9, 17 slides, no ${...}, no template placeholder strings. Slide 17 contains only "WP1 — Market". Confirm slide 17 is intended as a bare closing page.

Overall score: 66/95 (3.5/5)

Substance 49/70 · Design (scoreable) 17/25 · three design criteria deferred to render.


Title-flow test

The 12 content-slide titles, read alone and in sequence:

(2) The €25bn measures Europe's charging build-out, not Verdal's margin — which is nearer €7m a year, on a lease fee we have had to assume · (4) Charging figures circulate at four levels, and only the fourth — what a landowner keeps — is money Verdal would ever bank · (5) Three published constructions land near €25bn for Europe in 2030, and not one of them measures what a site host keeps · (6) Even Europe's entire €20.4bn of plug revenue becomes €7m for Verdal in three steps — and the Board's €25bn sits above even that top line · (8) Six steps take European electricity down to 1.5 TWh of grocery destination charging, and three of the six are our judgement, not a published split · (9) Bottom-up, 1,100 stores at four bays turn 84 GWh a year — under 6% of the pool, and all of it scales off a bay count Verdal has not supplied · (11) A renegotiated revenue share beats today's lease by under €1m a year, while operating the chargers ourselves loses €22m on the same energy · (12) Self-operation loses €22.4m on high-power charger economics, and fixed cost per charger does €44m of the €70m of damage · (13) No demand assumption turns self-operation positive — but two equipment assumptions do, and neither of them is settled · (14) On a high-power spec, self-operation clears break-even in three of forty-two combinations of bays and throughput · (15) Five inputs decide this answer, Verdal already holds three — the two to be measured are destination throughput and a real grid-connection quote · (16) Three actions before 8 September decide whether the interim reports a threshold or a forecast, and two are data requests Verdal can send this week

Verdict: PASS, with two repairs. The titles alone deliver the full argument — the figure is real but sits at the wrong perimeter level; here are the four levels; here is where €25bn could have come from; here is the narrowing; here are both routes to the volume; here is what each structure earns; self-operation loses money and why; it turns on equipment, not demand; here is what would have to be true; here is what we need and what we do next. Very few decks pass this cleanly.

Two repairs: title 13 is factually contradicted by its own exhibit, and the sequence never states the incremental prize — a reader of titles only ends up with "€7m" when the model's own conclusion is "€0.5m incremental".


Arithmetic and deck↔︎model tie-out

What ties — every model formula reproduces exactly

Chain Independent recomputation Model cell On slide
Funnel, 6 steps 3,005.62 → 129.242 → 38.773 → 8.530 → 2.559 → 1.4586 TWh tab 1!C5:C10 8 ✓
Level 2 plug revenue 38.773 × €0.525 × 1000 = €20,355.6m tab 1!C14 4, 6 ✓
Level 3 operator revenue 1.4586 × €0.525 × 1000 = €765.8m tab 1!C15 4, 6 ✓
Bottom-up volume 4,400 bays → 64.24 + 20.075 = 84.315 GWh tab 2!B15 9 ✓
Reconciliation 84.315 / 1,458.6 = 5.78% tab 2!B17 9 ✓ ("under 6%")
Gross revenue 64.24 × 0.60 + 20.075 × 0.45 = €47.57775m tab 3!B7 6, 12 ✓
Lease / rev share / operate 6.600 / 7.13666 / −22.44692 tab 3!B22:D22 11 ✓
Cost stack, 6 lines 16.0198 + 3.3726 + 2.3789 + 24.200 + 19.6533 + 4.400 = €70.025m tab 3!D15:D20 12 ✓
Uplift over lease €0.5367m tab 3!D25
Ratio to plug revenue 20,355.6 / 7.1367 = 2,852 tab 4!D8 2, 4 ✓ ("2,850")
Break-even DC contribution €0.34, fixed €43.633m → 128.33 GWh → 159.82 kWh/bay/day tab 5!B6:B9 2 ✓
All 42 grid cells reproduced to 4 dp; exactly 3 positive (5×160, 6×160, 8×160) tab 5!B19:H24 14 ✓

Numbers that appear on a slide and exist in no model cell — five

  1. Slide 6, the bridge step "−40.5 · Cost of delivery". No cell holds it. It is 47.578 − 7.137 = €40.44m, which is the 85% the operator retains under a revenue share — not a cost of delivery. The actual cost of delivering that energy is €70.02m (slide 12, tab 3!D15:D20). The deck therefore tells the Board on slide 6 that delivery costs €40.5m and on slide 12 that it costs €70.0m. This is the single most attackable object in the package. Fix: re-label the step "Operator's 85% share, −40.4", or rebuild the last leg as two steps — "Verdal's gross billing 47.6 → less the 85% retained by the operator → 7.1 revenue share" — and add the cell as tab 3!D26 so it is live.
  2. Slide 13, "Charger spec 200 kW → 75 kW: −22.4 to +0.6". No cell. Reproduces as +0.653 using F30's own stated destination-grade parameters (€80,000 installed, €8,000/yr opex) — defensible, but it lives only in a prose note and the client cannot recalculate it.
  3. Slide 13, "Bays per charger 2 → 4 outlets: −22.4 to −2.8". No cell. Reproduces as −2.830. It exists only as prose in F17, which itself says "It belongs in the sensitivity and it is not in it." The model knows the gap and ships anyway.
  4. Slide 13, "Contribution/kWh €0.25 to €0.45: −29.8 to −17.6". No cell. Reproduces as −29.770 / −17.565. tab 5!A31 names the driver but computes no result for it.
  5. Slide 8's four narrowing percentages (−70%, −78.1%, −69.4%, −42.3%). Computed off the rounded one-decimal display labels, not off tab 1. From the cells the correct figures are −70.0%, −78.0%, −70.0%, −43.0%. Two of the four are visibly wrong to anyone who divides the numbers printed beside them — on the page whose whole claim is arithmetic transparency.

Contradictions between deck and model — four

# Deck says Model says Severity
A Slide 2: "The prize is of the order of €7m a year" tab 3!D25: "THE ACTUAL PRIZE" = €0.537m, with a warning against exactly the comparison slide 2 makes High
B Slide 4 + tab 4!C5: €25bn is level 1, infrastructure capex tab 1!A20: "the most likely thing a €25bn European charging figure measures: what customers pay at the plug" = level 2 High
C Slide 8 bullet: "The IEA sources the first two steps: 4.3% of power, 30% public" F9 and tab 1!F7: "No authoritative European kWh split is published… this is the first soft step", graded Probable, not Verified High — the deck credits IEA with a number IEA does not publish
D Slide 2: "Break-even is 160 kWh a bay a day"; slide 14: three of 42 combinations clear it tab 5!B9 = 159.82 is DC-only; at 4 bays × 160 the model's own grid returns −€0.605m. Whole-estate break-even is 162.2 Medium

Three further internal defects


Strengths

  1. The honesty discipline is the best thing here, and it is exactly what the client said it would score on. F15 and F37 say in capitals that the client did not supply the figure; F25 says the grid charge is published nowhere in the six countries; F37 discloses that the benchmark is contested between two of the firm's own research passes; F17 admits a €19.6m driver "belongs in the sensitivity and it is not in it"; tab 2!D17 says the reconciliation can prove only order of magnitude; tab 5!A33 names the counterargument the model deliberately does not price. Very few models disclose their own omissions by name.
  2. The model is technically clean and genuinely live. 30 inputs on one tab, nothing hardcoded downstream, the 42-cell grid built from full formulas referencing Assumptions rather than pasted values, the break-even a closed-form solve. Every value reproduced to four decimal places from the inputs alone. Zero errors.
  3. The perimeter architecture is the right answer to the mandate and it is carried consistently. Four levels, named, with whose money each is, and an explicit refusal anywhere in the model to divide €25bn into an annual margin (tab 4!A13). The refutation is framed on scope, not on error.
  4. Two independent routes to the volume, reconciled (top-down 1.4586 TWh, bottom-up 84.3 GWh, 5.8%) with the primary estimate declared.
  5. The deck refuses the easy recommendation. Slide 13 says explicitly that WP1 must not rule out self-operation because WP2 owns the spec that decides it. Harder and more correct than a clean verdict.

Weaknesses, ranked by severity

  1. Slide 6's "Cost of delivery −40.5" is wrong by €29.6m against slide 12 of the same deck.
  2. The deck's headline prize (€7m) contradicts the model's own definition of the prize (€0.537m). The deck makes precisely the comparison the methodology named as the error to avoid.
  3. Deck and model disagree on which perimeter level €25bn occupies. This is the mandate question.
  4. Slide 13's title is contradicted by slide 13's chart.
  5. Step 5 of the methodology is undelivered: no bounded range on the headline number. €7.1m rests on three stacked hypotheses (4 bays × 15% share × 80 kWh).
  6. The confidence scale appears nowhere in the deck, despite being the client's explicit scoring criterion and applied rigorously in the model.
  7. Three of the five bars on slide 13 and both of slide 8's inner percentages have no cell behind them. The deck promises on slide 14 that "the grid is live, not a picture" — slide 13 is a picture.
  8. Slide 8's bullet credits IEA with the 30% public split the model says nobody publishes.
  9. Slide 14's kicker is contradicted by its own last column.
  10. FX error in F37: £3,000-5,000 → "€13-22m" implies £1 = €1.00; at €1.17 it is €15.4-25.7m, and the multiple on slide 11 is 2.3-3.9x, not "2-3x".
  11. Slide 2 carries six supports against an explicit "never six".
  12. Slides 15-16 sit under the wrong section eyebrow.
  13. Slides 5 and 16 are prose walls; slide 5 is a table pretending to be paragraphs.
  14. Break-even is DC-only and inconsistent with the grid beside it (159.8 vs the true 162.2).
  15. C24 = 0.19 is presented as the Eurostat figure (0.1837). Small, but exactly the kind of unstated rounding the client said it would penalise.

Delivery risks

Decisions needed from the consultant

  1. Which perimeter level does €25bn occupy — level 1 (cumulative capex, per slide 4 and tab 4!C5) or level 2 (annual plug revenue, per tab 1!A20)? The evidence supports either; the package must say one.
  2. What is the headline number of WP1 — €7.1m (the pool at Verdal's level) or €0.5m (the incremental prize over today's assumed lease)? Both defensible; they lead to different Board conversations.
  3. Keep, soften, or cut the McKinsey mobility-finance line on slide 5. The sharpest piece of research in the deck and the one most likely to cost the sponsor political capital.
  4. Present the Savills UK range as a live scenario, or hold the whole margin comparison until the two lease agreements arrive? Showing it means telling the Board that on the only published benchmark today's lease already wins. Holding it means shipping an interim whose central comparison is knowingly built on a placeholder. There is no third option.
  5. Does WP1 state a view on self-operation at all, given the result is decided by a charger spec WP2 owns? The current deck says "must not rule it out" — correct methodologically, and it may read to a Board as a refusal to answer.
  6. The house FX rate for GBP→EUR, so F37 and slide 11 can be corrected consistently.
  7. Whether to brief Katrin Sommer on the perimeter finding before 8 September. The finding is stable, does not depend on any data-room item, and reverses the premise of a Board paper her Board wrote. Six weeks is a long time to hold that.