Fund the AI work that pays back, not the best demo.

workflow-radar turns discovery-interview estimates into a ranked AI roadmap: explainable friction and AI-suitability scores, a delivery pattern with guardrails for each step, and ROI as a P10/P50/P90 range from a seeded Monte Carlo simulation.

23human steps assessed across 4 workflows
21steps with a recommended AI pattern; 8 parked by value or payback
1,968hours / month freed by the 6 Now + Next items (sum of P50s)
1.2 momedian payback for the top quick win: Customer support triage, draft first response
Value versus effort for 21 recommended AI opportunities Quick wins Big bets Fill-ins Deprioritize 0 0 25 25 50 50 75 75 100 100 Effort score (higher = harder) Value score (P50 annual net savings vs cap) AI opportunities: value vs effort #1 Customer support triage: Draft first response 1 #2 Customer support triage: Read new ticket and tag product area and intent 2 #3 Sales proposal drafting: Draft proposal narrative and scope 3 #4 Invoice processing: Key invoice header and line items into the ERP 4 #5 Customer support triage: Escalate to Tier 2 with a case summary 5 #6 Customer support triage: Look up customer account and order history 6 #7 Sales proposal drafting: Answer customer security questionnaire 7 #8 Customer support triage: Set priority and route to the right queue 8 #9 Sales proposal drafting: Map customer requirements to product capabilities 9 #10 Invoice processing: Resolve three-way match exceptions 10 #11 Sales proposal drafting: Build pricing and approve discounts 11 #12 Customer support triage: Decide on refund or goodwill credit 12 #13 Invoice processing: Assign GL codes and cost centers 13 #14 Invoice processing: Approve invoices above the $5,000 threshold (parked: payback) 14 #15 Employee onboarding: Collect and verify new-hire documents (parked: payback) 15 #16 Employee onboarding: Enter new hire into payroll (parked: payback) 16 #17 Invoice processing: Download invoice attachments from the AP inbox (parked: payback) 17 #18 Employee onboarding: Answer policy and benefits questions (parked: payback) 18 #19 Sales proposal drafting: Summarize discovery call notes (parked: payback) 19 #20 Employee onboarding: Draft a personalized first-week plan (parked: payback) 20 #21 Employee onboarding: Request accounts and access for each system (parked: payback) 21 Pattern Copilot Automation with review Agent Size = P50 hours saved per month Hollow = parked, P50 payback > 18 mo Rank 1. Draft first response 2. Read new ticket and tag product area an… 3. Draft proposal narrative and scope 4. Key invoice header and line items into… 5. Escalate to Tier 2 with a case summary 6. Look up customer account and order hist… 7. Answer customer security questionnaire 8. Set priority and route to the right que… 9. Map customer requirements to product ca… 10. Resolve three-way match exceptions 11. Build pricing and approve discounts 12. Decide on refund or goodwill credit 13. Assign GL codes and cost centers 14. Approve invoices above the $5,000 thres… 15. Collect and verify new-hire documents 16. Enter new hire into payroll 17. Download invoice attachments from the A… 18. Answer policy and benefits questions 19. Summarize discovery call notes 20. Draft a personalized first-week plan 21. Request accounts and access for each sy…
Value versus effort for every recommended opportunity. Marker size is P50 hours saved per month; hollow markers are parked because their median payback exceeds the 18-month horizon.

Quickstart

Requires Node.js 20 or later. No API keys, no network access after npm ci.

git clone https://github.com/seanmcrae/workflow-radar.git
cd workflow-radar
npm ci
npm run demo   # build, then audit examples/*.yaml into report/

Or run the commands directly after npm run build:

node dist/cli.js score examples/invoice.yaml --explain
node dist/cli.js report examples/*.yaml --out report
node dist/cli.js parse examples/notes/invoice-interview.txt --out draft.yaml

Features

Results on the bundled synthetic workflows

Default config, 5,000 Monte Carlo iterations per opportunity, seed 42. Regenerated on every site build from examples/*.yaml.

#PhaseOpportunityPatternHours/mo P50First-year net P10 / P50 / P90Payback P50P(net > 0)
1NowCustomer support triage: Draft first responseAutomation with review837$225,482 / $333,756 / $480,5201.2 mo100%
2NowCustomer support triage: Read new ticket and tag product area and intentAutomation with review359$64,345 / $114,925 / $179,4873.0 mo100%
3NowSales proposal drafting: Draft proposal narrative and scopeAutomation with review105$32,811 / $72,012 / $121,1764.2 mo100%
4NowInvoice processing: Key invoice header and line items into the ERPAutomation with review176$34,643 / $66,135 / $102,9804.5 mo100%
5NowCustomer support triage: Escalate to Tier 2 with a case summaryAutomation with review208$13,766 / $46,037 / $87,3525.4 mo97%
6NextCustomer support triage: Look up customer account and order historyAutomation with review283$41,518 / $80,893 / $129,1563.9 mo100%
First-year net, P10 to P90 (dot = P50) -$100,000 $0 $100,000 $200,000 $300,000 $400,000 $500,000 1. Customer support triage: Draft first response1. Customer support triage: Draft first response Automation with review: P10 $225,482, P50 $333,756, P90 $480,520 2. Customer support triage: Read new ticket and tag product area and intent2. Customer support triage: Read new ticket and… Automation with review: P10 $64,345, P50 $114,925, P90 $179,487 3. Sales proposal drafting: Draft proposal narrative and scope3. Sales proposal drafting: Draft proposal narr… Automation with review: P10 $32,811, P50 $72,012, P90 $121,176 4. Invoice processing: Key invoice header and line items into the ERP4. Invoice processing: Key invoice header and l… Automation with review: P10 $34,643, P50 $66,135, P90 $102,980 5. Customer support triage: Escalate to Tier 2 with a case summary5. Customer support triage: Escalate to Tier 2… Automation with review: P10 $13,766, P50 $46,037, P90 $87,352 6. Customer support triage: Look up customer account and order history6. Customer support triage: Look up customer ac… Automation with review: P10 $41,518, P50 $80,893, P90 $129,156 7. Sales proposal drafting: Answer customer security questionnaire7. Sales proposal drafting: Answer customer sec… Copilot: P10 $3,404, P50 $18,327, P90 $39,254 8. Customer support triage: Set priority and route to the right queue8. Customer support triage: Set priority and ro… Automation with review: P10 -$10,005, P50 $10,437, P90 $29,776 9. Sales proposal drafting: Map customer requirements to product capabilities9. Sales proposal drafting: Map customer requir… Automation with review: P10 -$14,922, P50 $8,549, P90 $35,472 10. Invoice processing: Resolve three-way match exceptions10. Invoice processing: Resolve three-way match… Copilot: P10 -$3,257, P50 $7,480, P90 $21,956
First-year net for the ten highest-ranked opportunities. Wide lines crossing the dashed break-even rule are fragile bets even when their median looks good.
CLI output: workflow-radar report examples/*.yaml
Assessed 23 human steps across 4 workflows (4 synthetic); 21 recommended, 2 not recommended.

Phase   #  Opportunity                                                                 Hours/mo P50  1st-yr net P50  Payback P50
-----  --  --------------------------------------------------------------------------  ------------  --------------  -----------
Now     1  Customer support triage: Draft first response                                        837        $333,756       1.2 mo
Now     2  Customer support triage: Read new ticket and tag product area and intent             359        $114,925       3.0 mo
Now     3  Sales proposal drafting: Draft proposal narrative and scope                          105         $72,012       4.2 mo
Now     4  Invoice processing: Key invoice header and line items into the ERP                   176         $66,135       4.5 mo
Now     5  Customer support triage: Escalate to Tier 2 with a case summary                      208         $46,037       5.4 mo
Next    6  Customer support triage: Look up customer account and order history                  283         $80,893       3.9 mo
Later   7  Sales proposal drafting: Answer customer security questionnaire                       31         $18,327       5.1 mo
Later   8  Customer support triage: Set priority and route to the right queue                   131         $10,437       9.4 mo
Later   9  Sales proposal drafting: Map customer requirements to product capabilities            50          $8,549       9.8 mo
Later  10  Invoice processing: Resolve three-way match exceptions                                37          $7,480       7.7 mo
Later  11  Sales proposal drafting: Build pricing and approve discounts                          14            -$31      12.0 mo
Later  12  Customer support triage: Decide on refund or goodwill credit                          32         -$2,138      14.2 mo
Later  13  Invoice processing: Assign GL codes and cost centers                                  64         -$6,822      14.6 mo
Park   14  Invoice processing: Approve invoices above the $5,000 threshold                       15         -$7,202      26.0 mo
Park   15  Employee onboarding: Collect and verify new-hire documents                             9        -$11,339      76.2 mo
Park   16  Employee onboarding: Enter new hire into payroll                                       4        -$14,436   no payback
Park   17  Invoice processing: Download invoice attachments from the AP inbox                    37        -$24,875      33.9 mo
Park   18  Employee onboarding: Answer policy and benefits questions                             30        -$30,957      58.5 mo
Park   19  Sales proposal drafting: Summarize discovery call notes                               12        -$35,001     116.7 mo
Park   20  Employee onboarding: Draft a personalized first-week plan                             19        -$37,344     > 120 mo
Park   21  Employee onboarding: Request accounts and access for each system                      22       -$114,258   no payback

Wrote site/report/report.md, site/report/report.html, site/report/quadrant.svg, site/report/audit.json
CLI output: workflow-radar score examples/invoice.yaml
Invoice processing (Accounts Payable) [synthetic data]
Volume 1,800 (1,500–2,200) / month · workflow friction 16.8

#  Step                                            Task type       Friction  Suitability  Pattern                 Hours/mo P50  Payback P50
-  ----------------------------------------------  --------------  --------  -----------  ----------------------  ------------  -----------
1  Download invoice attachments from the AP inbox  extraction             3           87  Automation with review            37      33.9 mo
2  Key invoice header and line items into the ERP  extraction            17           84  Automation with review           176       4.5 mo
3  Assign GL codes and cost centers                classification        10           84  Automation with review            64      14.6 mo
4  Resolve three-way match exceptions              decision              35           55  Copilot                           37       7.7 mo
5  Approve invoices above the $5,000 threshold     decision              30           50  Copilot                           15      26.0 mo
6  Scheduled payment run                           -                      -            -  system step (skipped)              -            -

Sample report

The full self-contained HTML report the report command writes for the synthetic examples, including per-factor score breakdowns, ROI tables, and tornado sensitivity for every opportunity. Open it on its own page, or get the Markdown and machine-readable audit.json.

How evaluation works

Each human step is scored independently, then ranked:

  1. Friction (0-100) is a weighted average of hands-on minutes, rework rate, handoffs, and wait time, each normalized against a saturation point (60 minutes, 25% rework, 4 handoffs, 1,440 minutes by default).
  2. AI suitability (0-100) is a weighted average of task-type fit (extraction and classification high, decisions low), data readiness, judgment (inverted), and regulatory sensitivity (inverted).
  3. Pattern comes from ordered hard rules first (no AI-shaped task, or suitability below the minimum, means not recommended; high regulation, high judgment, or a decision task caps the step at copilot), then suitability thresholds.
  4. ROI samples every three-point input from a triangular distribution: hours saved = volume x share of runs x minutes x (1 + rework rate) / 60 x automation fraction, and first-year net = 12 x (hours saved x loaded hourly cost - monthly run cost) - implementation cost. Each opportunity gets its own seeded stream, so adding a workflow never changes another's numbers.
  5. Prioritization maps P50 annual net savings to a value score, combines pattern, data readiness, regulation, and system count into an effort score, places each step in a quadrant, and parks anything whose median payback exceeds the horizon.

How the tool checks itself, in this repository:

How a team would measure it in use (estimate accuracy, interval calibration, draft acceptance rate) is defined in docs/PRODUCT.md.

Architecture

Interview notes (.txt) parse: NotesProvider mock | anthropic | openai Draft workflow YAML Workflow YAML / JSON zod schema validation config/default.yaml (weights, thresholds, cost bands) Scoring friction + AI suitability Pattern rules + guardrails ROI model Monte Carlo P10/P50/P90 tornado sensitivity Value vs effort quadrant payback gate, ranking Report Markdown, HTML, SVG, JSON
Module Responsibility
src/domain zod schemas for workflows and steps, three-point estimates, YAML/JSON loading with path-qualified errors
src/config.ts Config schema, defaults (mirrored in config/default.yaml), deep-merge of partial overrides
src/scoring Friction score, task-type classifier, AI suitability score; each returns per-factor contributions
src/roi ROI equations, mulberry32 PRNG, triangular sampling, Monte Carlo summary, one-at-a-time tornado analysis
src/prioritize Pattern recommendation, guardrail notes, effort score, quadrant placement, audit orchestration
src/parse NotesProvider interface, deterministic heuristic parser, Anthropic and OpenAI adapters over fetch
src/report Markdown and HTML renderers, inline SVG quadrant chart, JSON serialization
src/cli commander program; run() returns an exit code so the CLI is tested in-process

Design decisions

Data

All bundled data is synthetic and labelled as such in each file (synthetic: true plus a header comment):

No external datasets are downloaded or required. The data and code are MIT-licensed.

Limitations