wand-decks-kit 0.9.0 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/PROMPT.md +42 -0
- package/SKILL.md +58 -12
- package/assets/divider-art.png +0 -0
- package/build.js +13 -2
- package/docs/LAYOUTS.md +7 -3
- package/examples/session.json +420 -0
- package/examples/template.json +100 -0
- package/lib/layouts_consult.js +1 -1
- package/lib/pdf.js +31 -0
- package/lib/render_pdf.js +64 -0
- package/lib/schema.js +51 -3
- package/lib/trace.js +9 -4
- package/package.json +1 -1
- package/preview/preview.css +2 -0
- package/preview/preview.js +49 -1
- package/qa_coverage.py +7 -0
- package/tools/brandlint.py +3 -1
- package/wand.js +116 -2
- package/wand_kit.js +238 -37
package/PROMPT.md
CHANGED
|
@@ -11,6 +11,48 @@ is the workflow and the design system; the skill is the source of truth for comm
|
|
|
11
11
|
---
|
|
12
12
|
|
|
13
13
|
|
|
14
|
+
|
|
15
|
+
## Session decks — the Kearney standard (0.10)
|
|
16
|
+
|
|
17
|
+
`Wand_x_Kearney_SF_Leadership_Session_29Sep2026_v2.pptx` is the reference for a
|
|
18
|
+
deck that is *run in a room*. What makes it that quality is not the slides
|
|
19
|
+
alone:
|
|
20
|
+
|
|
21
|
+
- **A spine.** Five Parts, each opened by a divider with a client-specific
|
|
22
|
+
*working question*, and a session slide that reads as a clock (minutes per
|
|
23
|
+
part). The kit: `divider` gains `part`, and uses the deck's own section art
|
|
24
|
+
(`divider-art.png`); `coDelivery` / `agenda` items gain `meta`.
|
|
25
|
+
- **A run-of-show in the notes.** Every content slide carries its time window,
|
|
26
|
+
CORE when it carries the argument, what to say, and who in the room will test
|
|
27
|
+
it; the session slide carries checkpoints and what to cut if late. The kit:
|
|
28
|
+
`notes` on any slide, written through pptxgenjs `addNotes`.
|
|
29
|
+
- **Backups behind the close**, hidden and uncounted. The kit: `backup: true`.
|
|
30
|
+
- **Two slides every Wand session uses**: the today-vs-with-Wand flow (the
|
|
31
|
+
agents' steps filled) and the transformation timeline. The kit:
|
|
32
|
+
`flowCompare`, `timeline`.
|
|
33
|
+
|
|
34
|
+
Where the reference is weaker than the kit, the kit wins: it embeds fonts
|
|
35
|
+
subsetted (`saveSubsetFonts="1"`, which garbles digits in exported PDFs), and
|
|
36
|
+
1,834 text runs are Calibri. `audit` flags both on it.
|
|
37
|
+
|
|
38
|
+
**Charts are native (0.11).** Kearney drew its two charts as pictures; the
|
|
39
|
+
kit's `chart` writes a real PowerPoint chart, so the data stays editable, and
|
|
40
|
+
the trace records what it shows so the PDF and preview draw the same thing. The
|
|
41
|
+
gridline step is fixed at a quarter of a round maximum — PowerPoint otherwise
|
|
42
|
+
picks its own and the two renderers disagree.
|
|
43
|
+
|
|
44
|
+
**No outline is `line: { type: "none" }`.** Rendering the real `.pptx` for the
|
|
45
|
+
first time showed every accent bar and column carrying a 1pt `#333333` border:
|
|
46
|
+
pptxgenjs reads `line.width || 1`, so `width: 0` became its default outline. The
|
|
47
|
+
kit's own PDF read zero as zero, so no gate ever saw it — it is in the RAK and
|
|
48
|
+
SOMPO decks and in the site's template. `inspect` now fails a file carrying the
|
|
49
|
+
default outline.
|
|
50
|
+
|
|
51
|
+
**Edits are commands, not rewrites.** `wand.js show` and `wand.js edit` exist
|
|
52
|
+
because a salesperson's changes are small and the old edit path cost two full
|
|
53
|
+
copies of the spec in the chat. A spec's `confidential` now reaches the footer
|
|
54
|
+
— it never did; every deck said STRICTLY CONFIDENTIAL.
|
|
55
|
+
|
|
14
56
|
## The guideline deck (0.9)
|
|
15
57
|
|
|
16
58
|
Since 2026-09-23 the design source of truth is a real deck —
|
package/SKILL.md
CHANGED
|
@@ -4,7 +4,7 @@ description: Rebrand, merge, edit or author a PowerPoint deck on the Wand design
|
|
|
4
4
|
compatibility: Requires Node.js 18+ and code execution enabled in claude.ai (Settings > Features). No network access needed - dependencies are bundled. Python 3 is used to read a source .pptx and to embed fonts; without it the kit can still author and check a deck, but the output will render in Arial on machines without Geist.
|
|
5
5
|
license: Proprietary - Wand AI
|
|
6
6
|
metadata:
|
|
7
|
-
version: "0.
|
|
7
|
+
version: "0.11.0"
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
|
|
@@ -34,16 +34,27 @@ output.
|
|
|
34
34
|
|
|
35
35
|
Every path below is relative to the kit folder.
|
|
36
36
|
|
|
37
|
-
A deck engine:
|
|
38
|
-
each catch something the others cannot.
|
|
37
|
+
A deck engine: 35 layouts, real font metrics, embedded Geist, speaker notes,
|
|
38
|
+
and gates that each catch something the others cannot.
|
|
39
39
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
40
|
+
## Read only what the job needs
|
|
41
|
+
|
|
42
|
+
Sales teams run this. Every file you read and every spec you write is paid for
|
|
43
|
+
in the chat, so the job decides the reading:
|
|
44
|
+
|
|
45
|
+
| Job | Read | Never |
|
|
46
|
+
|---|---|---|
|
|
47
|
+
| Edit a deck this kit built | `node wand.js show <deck>` (one line per slide), then `show <deck> <n>` for the slide you change | read or rewrite the whole spec; read `PROMPT.md` |
|
|
48
|
+
| Edit a deck built elsewhere | the slide you change, then `audit` | restyle anything unasked |
|
|
49
|
+
| Rebuild, merge, author | `PROMPT.md` once, `work/PLAN.md`, `node wand.js layouts` | re-read them per slide |
|
|
50
|
+
|
|
51
|
+
Look at the contact sheet once; open a single slide only where something looks
|
|
52
|
+
off. `PROMPT.md` is the source of truth on design — read it for design
|
|
53
|
+
decisions, not for edits.
|
|
43
54
|
|
|
44
55
|
## Available scripts
|
|
45
56
|
|
|
46
|
-
- **`wand.js`** — the front door - doctor, rebuild, layouts, glyphs, validate, check, preview, ship, spec, inspect
|
|
57
|
+
- **`wand.js`** — the front door - doctor, rebuild, layouts, glyphs, validate, check, preview, ship, show, edit, audit, spec, inspect
|
|
47
58
|
- **`build.js`** — spec -> .pptx, or --check, or --preview
|
|
48
59
|
- **`tools/extract.py`** — read a source deck: verbatim dump, geometry, analysis
|
|
49
60
|
- **`embed_fonts.py`** — embed Geist unsubsetted, and carry the spec inside the deck
|
|
@@ -70,7 +81,7 @@ thing, and paid a full second pass. This is not optional for a rebuild, a merge
|
|
|
70
81
|
or an adaptation; only "author from a brief" with fewer than eight slides may
|
|
71
82
|
go straight to the spec.
|
|
72
83
|
|
|
73
|
-
## The
|
|
84
|
+
## The seven jobs
|
|
74
85
|
|
|
75
86
|
### Rebrand a deck they attached
|
|
76
87
|
|
|
@@ -139,13 +150,46 @@ partner slide". They want *that*, and nothing else touched.
|
|
|
139
150
|
|
|
140
151
|
### Edit a deck this kit built
|
|
141
152
|
|
|
153
|
+
Decks built here carry their spec inside the file, so an edit is one command —
|
|
154
|
+
not reading the spec, not writing it back:
|
|
155
|
+
|
|
142
156
|
```bash
|
|
143
|
-
node wand.js
|
|
157
|
+
node wand.js show deck.pptx # one line per slide
|
|
158
|
+
node wand.js show deck.pptx 4 # slide 4's fields, only if you need them
|
|
159
|
+
node wand.js edit deck.pptx --set '1.tag=Presented to Acme · 6 October 2026' \
|
|
160
|
+
--set 2.items.4.meta='40 min' \
|
|
161
|
+
--set '7.notes.text=Lead with the Foundation phase.'
|
|
144
162
|
```
|
|
145
163
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
as
|
|
164
|
+
Paths are 1-based, the way the room counts: `2.items.4.meta` is slide 2, item 4.
|
|
165
|
+
Also `--del N`, `--move N M`, `--add N '<slide json>'`, `--dry` to preview. The
|
|
166
|
+
result is saved as the next version (`Deck_v2.pptx` → `Deck_v3.pptx`), every
|
|
167
|
+
gate runs, the original is never overwritten. If `show` says the deck carries
|
|
168
|
+
no spec, it was not built here — use the job above.
|
|
169
|
+
|
|
170
|
+
### Build a session deck
|
|
171
|
+
|
|
172
|
+
When the deck will be *run* in a room — a leadership session, a workshop, a
|
|
173
|
+
partner meeting — give it the shape of the Kearney example (the reference for
|
|
174
|
+
this kind of deck, `examples/session.json`):
|
|
175
|
+
|
|
176
|
+
- **Cover** with `presentedTo`. **Session slide** next: `coDelivery` with a
|
|
177
|
+
`meta` duration on every item ("15 min") — the room reads it as a clock.
|
|
178
|
+
- **Part dividers** (`divider` with `part: "Part II"` and `body: "Working
|
|
179
|
+
question: …"`) — one question per part, written for this client.
|
|
180
|
+
- **Speaker notes on every content slide**: `notes: { time: "00:21 to 00:25",
|
|
181
|
+
core: true, text, watch }`. `time` is the run-of-show window; `core` marks the
|
|
182
|
+
slides that carry the argument; `watch` names who in the room will push. The
|
|
183
|
+
session slide's notes carry the checkpoints and what to cut if late.
|
|
184
|
+
- **Backups after the closing**, `backup: true` — hidden, uncounted ("31 of 31",
|
|
185
|
+
not "of 34"), footer says BACKUP.
|
|
186
|
+
- **Charts are native** — `chart` with `kind` line / area / bar, `labels`,
|
|
187
|
+
`series: [{ name, values, emph }]`, and up to two argument blocks in `side`.
|
|
188
|
+
The seller can change a number in PowerPoint (right-click, Edit Data). Figures
|
|
189
|
+
come from the brief; if they are illustrative, say so in the notes.
|
|
190
|
+
|
|
191
|
+
Timings, attendee names and "watch for" lines come from the user or the brief.
|
|
192
|
+
Never invent them — leave `notes` out rather than guess.
|
|
149
193
|
|
|
150
194
|
## Spend tool calls like they are metered — they are
|
|
151
195
|
|
|
@@ -213,6 +257,8 @@ combined one covers it.
|
|
|
213
257
|
| `node wand.js check <spec>` | fit in real Geist, bounds, assets |
|
|
214
258
|
| `node wand.js preview <spec>` | writes `preview/trace.js` for the browser preview |
|
|
215
259
|
| `node wand.js inspect <deck>` | parts, relationships, embedded fonts |
|
|
260
|
+
| `node wand.js show <deck> [n]` | the deck in one line per slide, or one slide's fields |
|
|
261
|
+
| `node wand.js edit <deck> --set N.path=v` | change a kit-built deck in one command; saves `_vN+1`, runs every gate |
|
|
216
262
|
| `node wand.js audit <deck> [--dump f]` | every spec-free gate on any .pptx, including the **brand** gate (fonts, colours, canvas, footer) — use on decks edited outside the kit |
|
|
217
263
|
|
|
218
264
|
## Deliver
|
|
Binary file
|
package/build.js
CHANGED
|
@@ -30,16 +30,27 @@ function loadSpec(p) {
|
|
|
30
30
|
/** Build the .pptx. */
|
|
31
31
|
function build(spec, out) {
|
|
32
32
|
const pres = W.newDeck(pptxgen);
|
|
33
|
-
|
|
33
|
+
// Backups are hidden and uncounted: the room sees 31 of 31, not 31 of 34.
|
|
34
|
+
const total = spec.slides.filter((x) => !x.backup).length;
|
|
35
|
+
let n = 0;
|
|
34
36
|
spec.slides.forEach((sl, i) => {
|
|
35
37
|
const fn = W[sl.layout];
|
|
36
38
|
if (typeof fn !== "function") throw new Error(`slide ${i + 1}: unknown layout "${sl.layout}"`);
|
|
37
|
-
const args = { ...sl, n:
|
|
39
|
+
const args = { ...sl, n: sl.backup ? null : ++n, total };
|
|
38
40
|
if (!FULL_BLEED.has(sl.layout)) {
|
|
39
41
|
args.deck = sl.deck || spec.deck;
|
|
40
42
|
args.confidential = sl.confidential || spec.confidential;
|
|
41
43
|
}
|
|
44
|
+
W.context({ confidential: args.confidential || "STRICTLY CONFIDENTIAL" });
|
|
45
|
+
const before = pres.slides.length;
|
|
42
46
|
fn(pres, args);
|
|
47
|
+
// Not every layout returns its slide, so take the one it just added.
|
|
48
|
+
const slide = pres.slides.length > before ? pres.slides[pres.slides.length - 1] : null;
|
|
49
|
+
if (slide) {
|
|
50
|
+
const nt = W.notesText(sl.notes);
|
|
51
|
+
if (nt) slide.addNotes(nt);
|
|
52
|
+
if (sl.backup) slide.hidden = true;
|
|
53
|
+
}
|
|
43
54
|
});
|
|
44
55
|
return pres.writeFile({ fileName: out }).then(() => {
|
|
45
56
|
console.log(`wrote ${out} (${total} slides)`);
|
package/docs/LAYOUTS.md
CHANGED
|
@@ -17,18 +17,22 @@ full-bleed three) `deck` / `n` / `total` for the footer.
|
|
|
17
17
|
| Layout | Params | Use for |
|
|
18
18
|
|---|---|---|
|
|
19
19
|
| `cover` | `eyebrow, titleLines[], body, kickerPlain, kickerBold` | Slide 1. Dark, full bleed, no footer |
|
|
20
|
-
| `divider` | `eyebrow, titleText, body` | Section breaks and the agenda. Keeps the tag, drops the footer |
|
|
20
|
+
| `divider` | `eyebrow, titleText, body, part` | Section breaks and the agenda. Keeps the tag, drops the footer |
|
|
21
21
|
| `closing` | `eyebrow, line1, line2, body, url` | Last slide. Centred, full bleed |
|
|
22
22
|
|
|
23
23
|
## Content
|
|
24
24
|
|
|
25
25
|
| Layout | Params | Use for |
|
|
26
26
|
|---|---|---|
|
|
27
|
-
| `agenda` | `items[{title,body}]` | What we'll cover — 2–5 numbered cards (guideline S03) |
|
|
27
|
+
| `agenda` | `items[{title,body,meta}]` | What we'll cover — 2–5 numbered cards (guideline S03) |
|
|
28
28
|
| `team` | `items[{name,role,initials}]` | Who's in the room — headshot slot per person (guideline S02) |
|
|
29
29
|
| `fourCards` | `items[{title,body}]` | Demo objectives, pillars — four titled cards under a lede (S12) |
|
|
30
30
|
| `deliverColumns` | `columns[{heading,lead,body}]` | How we deliver — three flat columns with an accent bar (S14) |
|
|
31
|
-
| `coDelivery` | `items[{title,body}]` | Numbered rows in two columns, up to six (
|
|
31
|
+
| `coDelivery` | `items[{title,body,meta}]` | Numbered rows in two columns, up to six. With `meta: "15 min"` it is the session agenda (Kearney S02) |
|
|
32
|
+
| `flowCompare` | `lanes[{label,caption,steps[{who,step,human}]}]` | Today vs with Wand — two lanes of 3–5 steps; the machine steps are filled (Kearney S08) |
|
|
33
|
+
| `timeline` | `phases[{when,label,bullets}]` | A journey in 2–4 phases on a line (Kearney S16) |
|
|
34
|
+
| `chart` | `kind, labels, series[{name,values,emph}], yMax, yLabel, side[{title,body}], sidePlace` | A native, editable line / area / bar chart with its argument beside or below (Kearney S09, S25) |
|
|
35
|
+
| — every layout — | `notes`, `backup` | Speaker notes (`{time, core, text, watch}` or a string); `backup: true` hides the slide after the close |
|
|
32
36
|
| `threeUp` | `items[{eyebrow,title,pill,body,emph}], arrows` | 3 comparable things. `arrows: true` for a progression |
|
|
33
37
|
| `fourUpIcon` | `items[{icon,title,body}], kickerText` | 4 attributes or capabilities |
|
|
34
38
|
| `sixUpIcon` | `items[{icon,title,body}]` | 6 features. Don't use it three slides running |
|
|
@@ -0,0 +1,420 @@
|
|
|
1
|
+
{
|
|
2
|
+
"deck": "WAND × CLIENT · LEADERSHIP SESSION",
|
|
3
|
+
"confidential": "WAND · CONFIDENTIAL",
|
|
4
|
+
"slides": [
|
|
5
|
+
{
|
|
6
|
+
"layout": "cover",
|
|
7
|
+
"tag": "Presented to Client · 29 September 2026",
|
|
8
|
+
"titleLines": [
|
|
9
|
+
"Expand human possibility",
|
|
10
|
+
"beyond human capacity."
|
|
11
|
+
],
|
|
12
|
+
"body": "For all of history, what organizations could accomplish was constrained by the number of people available to do the work. AI labor changes that.",
|
|
13
|
+
"presentedTo": [
|
|
14
|
+
"First Last, Managing Partner",
|
|
15
|
+
"First Last, Head of Transformation"
|
|
16
|
+
],
|
|
17
|
+
"notes": {
|
|
18
|
+
"text": "On screen while the room settles. Frame it the way the client asked: a working conversation about a change in the nature of production, not a product pitch."
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"layout": "coDelivery",
|
|
23
|
+
"tag": "The session",
|
|
24
|
+
"titleText": "A working conversation, not a presentation.",
|
|
25
|
+
"items": [
|
|
26
|
+
{
|
|
27
|
+
"title": "When software becomes labor",
|
|
28
|
+
"body": "The threshold between a tool and a worker.",
|
|
29
|
+
"meta": "15 min"
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"title": "The organization has to change",
|
|
33
|
+
"body": "From the individual agent to the Hybrid Organization.",
|
|
34
|
+
"meta": "10 min"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"title": "Why transformations succeed, or die",
|
|
38
|
+
"body": "Resistance is operating-model design.",
|
|
39
|
+
"meta": "10 min"
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"title": "From architecture to production",
|
|
43
|
+
"body": "Inside an agent, then one real process, live.",
|
|
44
|
+
"meta": "35 min"
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"title": "When capacity decouples from labor",
|
|
48
|
+
"body": "From the firm to the economy.",
|
|
49
|
+
"meta": "5 min"
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"title": "Wand × Client",
|
|
53
|
+
"body": "Designing the Hybrid Organization together.",
|
|
54
|
+
"meta": "10 min"
|
|
55
|
+
}
|
|
56
|
+
],
|
|
57
|
+
"notes": {
|
|
58
|
+
"time": "00:00, under one minute",
|
|
59
|
+
"text": "Walk the spine, not the rows. 90 minutes core, then 30 minutes of open discussion. Checkpoints: 00:20 Part II, 00:40 Part IV, 01:15 Part V. If late, compress Part III and Part V — never the live walkthrough."
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"layout": "divider",
|
|
64
|
+
"titleText": "When software becomes labor",
|
|
65
|
+
"part": "Part I",
|
|
66
|
+
"body": "Working question: which of your problems are being treated as AI productivity when they are really a chance to add a new source of labor?",
|
|
67
|
+
"notes": {
|
|
68
|
+
"time": "00:01 to 00:03",
|
|
69
|
+
"text": "Read the working question aloud and leave it on screen. Do not answer it yet."
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"layout": "flowCompare",
|
|
74
|
+
"tag": "Why three years of AI spend has not moved the operating line",
|
|
75
|
+
"titleText": "Every AI tool you own ends at a person.",
|
|
76
|
+
"lanes": [
|
|
77
|
+
{
|
|
78
|
+
"label": "Today — AI as a tool",
|
|
79
|
+
"caption": "Capacity = your people. Four of five steps wait on a person; that person is the ceiling.",
|
|
80
|
+
"steps": [
|
|
81
|
+
{
|
|
82
|
+
"who": "Person",
|
|
83
|
+
"step": "Notices",
|
|
84
|
+
"human": true
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"who": "Person",
|
|
88
|
+
"step": "Gathers context",
|
|
89
|
+
"human": true
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
"who": "Person",
|
|
93
|
+
"step": "Instructs",
|
|
94
|
+
"human": true
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"who": "AI",
|
|
98
|
+
"step": "Drafts"
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"who": "Person",
|
|
102
|
+
"step": "Checks",
|
|
103
|
+
"human": true
|
|
104
|
+
}
|
|
105
|
+
]
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
"label": "With Wand — AI as labor",
|
|
109
|
+
"caption": "Capacity = people + agents. The person moves from every step to the one step that needs judgment.",
|
|
110
|
+
"steps": [
|
|
111
|
+
{
|
|
112
|
+
"who": "Agent",
|
|
113
|
+
"step": "Notices"
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
"who": "Agent",
|
|
117
|
+
"step": "Plans"
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
"who": "Agent",
|
|
121
|
+
"step": "Executes"
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
"who": "Agent",
|
|
125
|
+
"step": "Grades"
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
"who": "Manager",
|
|
129
|
+
"step": "Approves",
|
|
130
|
+
"human": true
|
|
131
|
+
}
|
|
132
|
+
]
|
|
133
|
+
}
|
|
134
|
+
],
|
|
135
|
+
"notes": {
|
|
136
|
+
"time": "00:11 to 00:14",
|
|
137
|
+
"core": true,
|
|
138
|
+
"text": "This is the difference between an efficiency programme and a capacity programme. Point at the top row: every step waits on a person.",
|
|
139
|
+
"watch": "whoever owns the current copilot rollout — expect them to defend adoption numbers."
|
|
140
|
+
}
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
"layout": "chart",
|
|
144
|
+
"tag": "The experience gap",
|
|
145
|
+
"titleText": "A year in, an agent isn't older, it's categorically better.",
|
|
146
|
+
"kind": "area",
|
|
147
|
+
"labels": [
|
|
148
|
+
"M1",
|
|
149
|
+
"M2",
|
|
150
|
+
"M3",
|
|
151
|
+
"M4",
|
|
152
|
+
"M5",
|
|
153
|
+
"M6",
|
|
154
|
+
"M7",
|
|
155
|
+
"M8"
|
|
156
|
+
],
|
|
157
|
+
"series": [
|
|
158
|
+
{
|
|
159
|
+
"name": "Started twelve months earlier",
|
|
160
|
+
"values": [
|
|
161
|
+
18,
|
|
162
|
+
26,
|
|
163
|
+
35,
|
|
164
|
+
44,
|
|
165
|
+
55,
|
|
166
|
+
66,
|
|
167
|
+
78,
|
|
168
|
+
90
|
|
169
|
+
],
|
|
170
|
+
"emph": true
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
"name": "Started later, same technology",
|
|
174
|
+
"values": [
|
|
175
|
+
2,
|
|
176
|
+
5,
|
|
177
|
+
9,
|
|
178
|
+
14,
|
|
179
|
+
20,
|
|
180
|
+
27,
|
|
181
|
+
35,
|
|
182
|
+
44
|
|
183
|
+
]
|
|
184
|
+
}
|
|
185
|
+
],
|
|
186
|
+
"sidePlace": "below",
|
|
187
|
+
"side": [
|
|
188
|
+
{
|
|
189
|
+
"title": "The asset",
|
|
190
|
+
"body": "Agents accumulate scored experience: what works in your business, which approach fails and why. It cannot be bought or copied, only run."
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
"title": "The arithmetic",
|
|
194
|
+
"body": "Starting in January rather than July is not six months — it is hundreds of improvement cycles, banked against starting from zero."
|
|
195
|
+
}
|
|
196
|
+
],
|
|
197
|
+
"notes": {
|
|
198
|
+
"time": "00:14 to 00:20",
|
|
199
|
+
"core": true,
|
|
200
|
+
"text": "Illustrative curve. The gap widens because the earlier agent keeps banking lessons the later one has not yet met."
|
|
201
|
+
}
|
|
202
|
+
},
|
|
203
|
+
{
|
|
204
|
+
"layout": "fourCards",
|
|
205
|
+
"tag": "Agent behavior",
|
|
206
|
+
"titleText": "A worker, not just a good tool.",
|
|
207
|
+
"subtitleText": "A tool responds to prompts. A worker pursues goals, decides what matters, acts within constraints, and is judged by outcomes.",
|
|
208
|
+
"items": [
|
|
209
|
+
{
|
|
210
|
+
"title": "Pursues goals",
|
|
211
|
+
"body": "Carries objectives and KPIs like any employee, and works toward them without being asked."
|
|
212
|
+
},
|
|
213
|
+
{
|
|
214
|
+
"title": "Decides what matters",
|
|
215
|
+
"body": "Notices, prioritizes and plans inside the boundaries policy sets."
|
|
216
|
+
},
|
|
217
|
+
{
|
|
218
|
+
"title": "Is graded",
|
|
219
|
+
"body": "Every output reviewed against a baseline agreed before it started."
|
|
220
|
+
},
|
|
221
|
+
{
|
|
222
|
+
"title": "Gets better",
|
|
223
|
+
"body": "Banks what it learns, so a year in it is categorically better, not older."
|
|
224
|
+
}
|
|
225
|
+
],
|
|
226
|
+
"notes": {
|
|
227
|
+
"time": "00:43 to 00:47",
|
|
228
|
+
"core": true,
|
|
229
|
+
"text": "Land the word 'worker'. Everything after this slide assumes the room accepts it."
|
|
230
|
+
}
|
|
231
|
+
},
|
|
232
|
+
{
|
|
233
|
+
"layout": "divider",
|
|
234
|
+
"titleText": "Why transformations die",
|
|
235
|
+
"part": "Part III",
|
|
236
|
+
"body": "Working question: what would your methodology look like if org redesign, workforce redesign and agent deployment were one program, not three?",
|
|
237
|
+
"notes": {
|
|
238
|
+
"time": "00:30 to 00:31"
|
|
239
|
+
}
|
|
240
|
+
},
|
|
241
|
+
{
|
|
242
|
+
"layout": "timeline",
|
|
243
|
+
"tag": "Transformation journey",
|
|
244
|
+
"titleText": "The transformation timeline.",
|
|
245
|
+
"subtitleText": "From the starting line, month over month, compounding.",
|
|
246
|
+
"phases": [
|
|
247
|
+
{
|
|
248
|
+
"when": "3–6 months",
|
|
249
|
+
"label": "Foundation",
|
|
250
|
+
"bullets": [
|
|
251
|
+
"A core transformation team of 7–10 people",
|
|
252
|
+
"One registry covering people and agents",
|
|
253
|
+
"5–10 core processes rebuilt for the dual workforce",
|
|
254
|
+
"Dozens of agents in production with named managers"
|
|
255
|
+
]
|
|
256
|
+
},
|
|
257
|
+
{
|
|
258
|
+
"when": "6–12 months",
|
|
259
|
+
"label": "Scale",
|
|
260
|
+
"bullets": [
|
|
261
|
+
"Agents across dozens of core functions",
|
|
262
|
+
"Management structure rebalanced; spans widened",
|
|
263
|
+
"Hundreds of agents in production"
|
|
264
|
+
]
|
|
265
|
+
},
|
|
266
|
+
{
|
|
267
|
+
"when": "12–24 months",
|
|
268
|
+
"label": "Accelerate",
|
|
269
|
+
"bullets": [
|
|
270
|
+
"Most processes designed for a dual workforce from the start",
|
|
271
|
+
"Whole functions run by agent teams",
|
|
272
|
+
"Cost per unit of work structurally below the market"
|
|
273
|
+
]
|
|
274
|
+
}
|
|
275
|
+
],
|
|
276
|
+
"notes": {
|
|
277
|
+
"time": "00:37 to 00:40",
|
|
278
|
+
"core": true,
|
|
279
|
+
"text": "Timelines are directional. The commitment is the Foundation phase; everything after it is earned by the telemetry."
|
|
280
|
+
}
|
|
281
|
+
},
|
|
282
|
+
{
|
|
283
|
+
"layout": "chart",
|
|
284
|
+
"tag": "The economics",
|
|
285
|
+
"titleText": "Labor stops being a cost that scales with output.",
|
|
286
|
+
"subtitleText": "Human capacity scales by adding people. Agent capacity scales by provisioning compute.",
|
|
287
|
+
"kind": "line",
|
|
288
|
+
"labels": [
|
|
289
|
+
"Now",
|
|
290
|
+
"Y1",
|
|
291
|
+
"Y2",
|
|
292
|
+
"Y3"
|
|
293
|
+
],
|
|
294
|
+
"yMax": 100,
|
|
295
|
+
"yLabel": "Cost per unit of work (indexed)",
|
|
296
|
+
"series": [
|
|
297
|
+
{
|
|
298
|
+
"name": "Human-capped operation",
|
|
299
|
+
"values": [
|
|
300
|
+
100,
|
|
301
|
+
97,
|
|
302
|
+
95,
|
|
303
|
+
94
|
|
304
|
+
]
|
|
305
|
+
},
|
|
306
|
+
{
|
|
307
|
+
"name": "Agent-capacity operation",
|
|
308
|
+
"values": [
|
|
309
|
+
100,
|
|
310
|
+
62,
|
|
311
|
+
38,
|
|
312
|
+
24
|
|
313
|
+
],
|
|
314
|
+
"emph": true
|
|
315
|
+
}
|
|
316
|
+
],
|
|
317
|
+
"side": [
|
|
318
|
+
{
|
|
319
|
+
"title": "A new factor in production",
|
|
320
|
+
"body": "The facilities that bolted machines onto the old operation got an efficiency gain and disappeared. The ones that won rebuilt the building and invented a new metric: output per machine-hour."
|
|
321
|
+
},
|
|
322
|
+
{
|
|
323
|
+
"title": "And it does not stay internal",
|
|
324
|
+
"body": "Lower cost becomes lower price and better service. That takes share, share brings data, data makes the agents better."
|
|
325
|
+
}
|
|
326
|
+
],
|
|
327
|
+
"notes": {
|
|
328
|
+
"time": "01:18 to 01:20",
|
|
329
|
+
"core": true,
|
|
330
|
+
"text": "Figures are illustrative — replace them with the client's baseline before the session. The shape is the argument: one line is capped by headcount, the other by compute."
|
|
331
|
+
}
|
|
332
|
+
},
|
|
333
|
+
{
|
|
334
|
+
"layout": "deliverColumns",
|
|
335
|
+
"tag": "The build",
|
|
336
|
+
"titleText": "The client designs the transformation. Wand operates it.",
|
|
337
|
+
"subtitleText": "Who does each part, and how it is governed.",
|
|
338
|
+
"columns": [
|
|
339
|
+
{
|
|
340
|
+
"heading": "1 · Change management",
|
|
341
|
+
"lead": "Led by your people, supported by ours",
|
|
342
|
+
"body": "A small core team who pick where to start and carry the early wins back."
|
|
343
|
+
},
|
|
344
|
+
{
|
|
345
|
+
"heading": "2 · Deployment",
|
|
346
|
+
"lead": "Led by our solution architect with your technical team",
|
|
347
|
+
"body": "Cloud, deployment model, security review, and reaching the systems you run."
|
|
348
|
+
},
|
|
349
|
+
{
|
|
350
|
+
"heading": "3 · Building the workforce",
|
|
351
|
+
"lead": "Led by our forward-deployed engineers",
|
|
352
|
+
"body": "Build the agents and processes with your team, then shift to supporting as your people take it on."
|
|
353
|
+
}
|
|
354
|
+
],
|
|
355
|
+
"notes": {
|
|
356
|
+
"time": "01:23 to 01:25",
|
|
357
|
+
"text": "Their methodology, our operating system. Say it in that order."
|
|
358
|
+
}
|
|
359
|
+
},
|
|
360
|
+
{
|
|
361
|
+
"layout": "fourCards",
|
|
362
|
+
"tag": "Next steps",
|
|
363
|
+
"titleText": "What happens next.",
|
|
364
|
+
"subtitleText": "This room builds the momentum. The partnership work happens in a smaller session, with named owners and dates.",
|
|
365
|
+
"items": [
|
|
366
|
+
{
|
|
367
|
+
"title": "Partnership session",
|
|
368
|
+
"body": "Named leads on both sides; one process chosen and its baseline written down."
|
|
369
|
+
},
|
|
370
|
+
{
|
|
371
|
+
"title": "Architecture deep-dive",
|
|
372
|
+
"body": "Under NDA, for your technology team: deployment posture, identity, audit."
|
|
373
|
+
},
|
|
374
|
+
{
|
|
375
|
+
"title": "Sandbox access",
|
|
376
|
+
"body": "A governed environment your team can build in, with our engineers alongside."
|
|
377
|
+
},
|
|
378
|
+
{
|
|
379
|
+
"title": "First client reunion",
|
|
380
|
+
"body": "Where the first agents in production are shown against the baseline."
|
|
381
|
+
}
|
|
382
|
+
],
|
|
383
|
+
"notes": {
|
|
384
|
+
"time": "01:29 to 01:30",
|
|
385
|
+
"text": "Leave the room with one date agreed. Anything else is a follow-up email."
|
|
386
|
+
}
|
|
387
|
+
},
|
|
388
|
+
{
|
|
389
|
+
"layout": "closing",
|
|
390
|
+
"line1": "Thank you.",
|
|
391
|
+
"body": "The operating system for the human + agent workforce.",
|
|
392
|
+
"url": "September 2026 | Strictly Confidential"
|
|
393
|
+
},
|
|
394
|
+
{
|
|
395
|
+
"layout": "fourCards",
|
|
396
|
+
"backup": true,
|
|
397
|
+
"tag": "Why this is a category",
|
|
398
|
+
"titleText": "Five advantages, not five features.",
|
|
399
|
+
"items": [
|
|
400
|
+
{
|
|
401
|
+
"title": "Governance & orchestration",
|
|
402
|
+
"body": "One policy, one identity, one audit trail across the whole estate."
|
|
403
|
+
},
|
|
404
|
+
{
|
|
405
|
+
"title": "Institutional IP",
|
|
406
|
+
"body": "Every lesson compounds inside your perimeter, not ours."
|
|
407
|
+
},
|
|
408
|
+
{
|
|
409
|
+
"title": "Model agnostic",
|
|
410
|
+
"body": "Any model, any cloud — no lock-in, sovereignty-friendly by design."
|
|
411
|
+
},
|
|
412
|
+
{
|
|
413
|
+
"title": "One registry",
|
|
414
|
+
"body": "People and agents managed in the same system, by the same managers."
|
|
415
|
+
}
|
|
416
|
+
],
|
|
417
|
+
"notes": "BACKUP. Use only if the room asks why this is not another agent platform."
|
|
418
|
+
}
|
|
419
|
+
]
|
|
420
|
+
}
|