You're at 10 steps. Most workflows this long benefit from splitting into two passes — sharper scoring, cleaner verdicts. You can carry on anyway.
Shadow
2 · Score each sub-task
#
Step (what happens)
Freq
Effort
Hrs / yr
Data
Value
Risk
Verify
VERDICT
▼1.FIX● 1 sub-task less blockedThis step's overall verdict is FIX, but 1 sub-task scored better (AUGMENT). There are easier wins hiding inside this step that are less blocked than the dominant verdict suggests.
1.a
9.0
1
2
3
1
2
3
1
2
3
AUGMENT
1.b
24
1
2
3
1
2
3
1
2
3
FIX
▼2.AUTOMATE
2.a
4.5
1
2
3
1
2
3
1
2
3
AUTOMATEIs the doing the developing?
▼3.AUGMENT
3.a
9.0
1
2
3
1
2
3
1
2
3
AUGMENT
▼4.AUGMENT
4.a
48
1
2
3
1
2
3
1
2
3
AUGMENT
4.b
—
1
2
3
1
2
3
1
2
3
—
▼5.AUGMENT
5.a
9.0
1
2
3
1
2
3
1
2
3
AUGMENT
5.b
—
1
2
3
1
2
3
1
2
3
—
▼6.AUGMENT ONLY
6.a
9.0
1
2
3
1
2
3
1
2
3
AUGMENT ONLY
The prize
Hours saved this year → what that time becomes → business outcome
Hours saved per year
Calculated from automate & augment steps
24
hours per year
What that time becomes
Specific. Not "strategic work."
Business outcome it serves
A goal the team is actually measured on.
+The questions that surface what's missing
Data1 scattered · 2 partial · 3 clean
Where does it live?
Could a new starter find it on day one?
Is it ready to use, or do you have to clean it?
Value1 legacy · 2 modest · 3 critical
What breaks if we delete this step?
Who downstream actually uses the output?
Is the original reason still relevant?
Risk1 low · 2 meaningful · 3 high
If it went wrong, who pays?
Could you defend the decision in three months?
Does it touch protected info or employment decisions?
Verifyeasy · hard
Can you check the output faster than producing it?
Would you spot it if the model got it wrong?
If verifying takes as long as doing, pick hard.
+How the scoring works
Steps · sub-tasks · shadow
Steps group the workflow. Sub-tasks are where scoring happens and where the hidden opportunities live. Most steps stay as a single sub-task. Break a step down only when the work inside it has different flavours, like an interview (must stay human) and the notes that follow (often fully available).
The shadow row up top captures what the official workflow won't admit happens — workarounds, skips, double-checks. It isn't scored. It's honesty capture.
The inputs — scored per sub-task
Data
How ready is the data this sub-task touches?
1Scattered — fix first
2Partial — some cleanup
3Clean — ready to use
Value
Is this sub-task worth doing?
1Legacy — outdated, question why
2Modest — useful but not urgent
3Critical — must be done right
Risk
What's the damage if this sub-task goes wrong?
1Low — easily reversed
2Meaningful — real consequence
3High — can't walk it back
Verify
Can you check the output faster than producing it?
EasyYou'd spot a wrong answer
HardChecking takes as long as doing
Sizing the prize
Frequency
How often does the sub-task happen?
Rareonce a quarter (~4/yr)
Regularonce a month (~12/yr)
High-volumemultiple times a week (~150/yr)
Effort per instance
How long does this sub-task take when it happens?
Micro15–30 min
Quick30 min to 1 hour
Chunky1–3 hours
Heavy3+ hours
The verdict cascade — first match wins, per sub-task
DEFERFacilitator override, or Risk = 3 and Verify = Hard — too risky to touch until verification is solved
FIXData = 1 (scattered) — the data isn't ready; fix the data before anything else
AUGMENT ONLYRisk = 3, Verify = Easy — judgement must stay human; AI drafts, human decides
AUTOMATEData = 3, Value = 3, Risk = 1, Verify = Easy — ideal candidate, run it end-to-end
AUGMENT*Would be Automate or Augment, but Verify = Hard — mandatory human review, verification eats some of the saving
The veto principle. A red score on Data triggers FIX — the data isn't ready. Risk = 3 blocks full automation (either AUGMENT ONLY if you can verify, or DEFER if you can't). Value = 1 flags the sub-task as LOW VALUE for discussion, but doesn't force a verdict on its own. You can't average past a fatal flaw.
The step aggregate. A step's headline verdict is the most common verdict across its sub-tasks; on ties, the worse verdict wins (DEFER > FIX > AUGMENT ONLY > AUGMENT* > AUGMENT > AUTOMATE). Scoring always happens at the sub-task — the step verdict is derived, never set directly.
Hidden-opportunity flag ● — fires on the Map when any sub-task scored a more AI-friendly verdict than the step's dominant one. Easier wins are hiding inside a heavier step.
Verify-hard flag ● — fires on the Map when any sub-task has Verify = Hard. Even when the verdict is AUGMENT or AUTOMATE, checking the output may take almost as long as doing the work, so savings are dialled down.
The prize math
annual hours × verdict multiplier = hours saved per year
annual hours = effort midpoint × instances per year, summed across every sub-task. Effort midpoints: Micro 22 min, Quick 45 min, Chunky 2 hr, Heavy 4 hr.
AUTOMATE× 0.7
AUGMENT× 0.4
AUGMENT ONLY× 0.4
AUGMENT*× 0.2 (verification eats the saving)
FIX× 0 — fix the data first
DEFER× 0 — not ready yet
The five non-negotiablesMap the as-is, not the should-be·Frontline person in the room·Score the step, not the workflow·Disagreement is the answer·The veto principle holds
Settings are restricted
Admin password required to view or change the app configuration.
Settings Admin
Connect this canvas to Claude and to your storage — or keep it fully local.
Claude API Configured
Workflow progressions are generated by Claude via your proxy. The browser never sees your API key.
Why a proxy? Calling Anthropic direct from a browser leaks your key to every visitor's network tab. A tiny proxy (Cloudflare Worker, Vercel edge function, Supabase Edge Function) keeps the key server-side. Paste the proxy URL below.
Expected: a POST endpoint that accepts { prompt, system, max_tokens } and returns { text }.
Sent as Authorization. Leave blank if your proxy is public or uses cookies.
The payload (step name, sub-tasks, scores, and the Draft/Summarise/Structure/Analyse/Check notes) is appended automatically as the user message. Tweak this to change tone, detail level, or output format.
Supabase storage Connected
Sessions sync to a Supabase table and become shareable via link. Without this, everything stays in this browser.
Expected columns: id uuid, title text, customer text, state jsonb, facilitator uuid, shared bool, updated_at timestamptz. The SQL the app ships with creates these automatically.
SQL: create the table
-- Run once in the Supabase SQL editor.create table honest_map_sessions (
id uuid primary key default gen_random_uuid(),
title text not null default'Untitled workshop',
state jsonb not null,
updated_at timestamptz not null default now(),
owner text,
shared boolean not null default false
);
-- RLS: allow the anon role to read shared rows and-- full CRUD for rows matching a client-supplied owner token.alter table honest_map_sessions enable row level security;
create policy"read shared"on honest_map_sessions
for select using (shared = true);
create policy"owner all"on honest_map_sessions
for all using (owner = current_setting('request.jwt.claim.owner', true))
with check (owner = current_setting('request.jwt.claim.owner', true));
Facilitator sign-in Signed in
Sign in as the facilitator to save, edit and share sessions. Shared links work for anyone (no login needed) as long as the session is marked shared.
Signed in as —
Accounts are managed in Supabase → Authentication → Users. Create new facilitators there.
Proxy reference implementation
Minimal Cloudflare Worker. Deploy, set the ANTHROPIC_API_KEY secret, paste URL above.