Staple

Plans a repair fleet's next day: who takes each call, what each truck carries, and what people do before 08:00.

Build 31 · 2 Nov 2026 · 1d18e26 · results last changed 2 Nov 2026

  1. 1. Claude codes every booking.It reads the customer's own words and picks the problem, asking one question when unsure.
  2. 2. Staple plans the trucks.Which technician takes each call, in what order, and what each truck loads tonight.
  3. 3. People act before 08:00.The parts room loads, the call center and dispatch ring customers, the buyer chases back-orders.
Dayevery name and figure is invented; the method is real

The plan · one invented week, on Claude's codes

The plan for Wed 28 Oct invented

Booked calls?

150

on 30 trucks; 0 rolled

Fixed on the first visit?

85.1%

against 71.0% the current way

Second visits avoided?

21

at a made-up $165 each

Parts moved tonight?

280

put on or taken off at the centers

AI at booking: Claude coded all 150 bookings?

139 read 70% sure or more were coded at once. 11 were unsure, so Claude asked each customer one question: 11 answers settled the code, and 0 go to the call center. Each unsure call is below, and wears a yellow corner on the board.

Dishwasher: “The dishwasher has no lights at all since yesterday”

Claude read Will not start 60%

It asked: “Since yesterday, what happens when you press the start button?”

  • Nothing happens at all
  • Water leaks out
  • Water stays in the tub

Coded Will not start · T04 at 10:10

Furnace: “My furnace is acting up and not working right since yesterday”

Claude read No heat 20%

It asked: “What is the furnace doing wrong right now?”

  • No heat is coming out
  • Only the fan runs
  • Making a loud noise
  • Won't turn on at all

Coded Loud noise · T01 at 10:58

First guess would load hot surface igniter, flame sensor, main control board
Now loads inducer motor, blower motor, run capacitor

Range: “The range bake doesn't work since yesterday”

Claude read Oven not heating 60%

It asked: “Since yesterday, when you select bake on the range, what happens?”

  • Burner won't light
  • Range stays cold
  • Food cooks at the wrong temperature

Coded Oven not heating · T16 at 13:34

Dishwasher: “My dishwasher is acting up and not working right since yesterday”

Claude read Will not start 20%

It asked: “Since yesterday, what is the main problem with the dishwasher?”

  • Water is leaking
  • Dishes are not getting clean
  • Water will not drain
  • Dishes are not drying

Coded Dishes not drying · T12 at 13:08

First guess would load main control board, door latch, thermal fuse
Now loads heating element, main control board, high-limit thermostat

Range: “The range takes forever to bake since yesterday”

Claude read Temperature off 55%

It asked: “Since yesterday, does the range heat up but cook slowly?”

  • Heats up but very slowly
  • Barely heats at all
  • Burner takes ages to light

Coded Temperature off · T19 at 13:54

Washer: “The washing machine is acting up and not working right”

Claude read Will not start 20%

It asked: “What is the washing machine doing wrong?”

  • Water is leaking out
  • It is loud or shaking
  • Water stays in the drum
  • It will not start at all

Coded Leaking water · T23 at 14:44

First guess would load door lock, main control board, pressure switch
Now loads door boot seal, drain pump, water inlet valve

Dishwasher: “My dishwasher is broken and making a strange noise since yesterday”

Claude read Will not drain 20%

It asked: “Since yesterday, besides the noise, what else do you notice?”

  • Water is leaking
  • Water stays in the tub
  • Dishes are still dirty
  • Nothing happens when I press start

Coded Not cleaning · T04 at 12:06

First guess would load drain pump, main control board, check valve
Now loads water inlet valve, circulation pump, spray arm

Range: “The range is broken and making a strange noise since yesterday”

Claude read No power 15%

It asked: “Since yesterday, where is the strange noise coming from on the range?”

  • Near the door
  • Under the burners
  • The range won't turn on at all

Coded Door problem · T18 at 09:13

First guess would load main control board, surface burner switch, touch control panel
Now loads door hinge, oven door gasket, door latch assembly

Dishwasher: “The dishwasher is acting up and not working right”

Claude read Will not start 20%

It asked: “What is the main problem you are seeing with the dishwasher?”

  • Water is leaking
  • Dishes are not getting clean
  • Water will not drain
  • Dishes are not drying

Coded Leaking water · T02 at 08:12

First guess would load main control board, door latch, thermal fuse
Now loads door gasket, float switch, water inlet valve

Dryer: “My dryer stopped working properly”

Claude read Will not start 20%

It asked: “What exactly is the dryer doing wrong?”

  • It makes a loud noise
  • It runs but produces no heat
  • It won't start at all
  • It takes too long to dry clothes

Coded Takes too long to dry · T17 at 14:40

First guess would load thermal fuse, door switch, main control board
Now loads cycling thermostat, heating element, gas valve coils

Furnace: “The heating system starts then stops since yesterday”

Claude read Short cycling 60%

It asked: “When it turns on, what happens next?”

  • Shuts off after a few minutes
  • Blows air but no heat
  • Loud banging or grinding

Coded Short cycling · T02 at 11:21

To do before 08:00

Parts room · tonight · 18

  • Truck V09 (T09): put on 11, take off 10
  • Truck V16 (T16): put on 14, take off 18
  • Truck V07 (T07): put on 17, take off 16
  • Truck V03 (T03): put on 10, take off 15
  • Truck V05 (T05): put on 19, take off 18
  • Truck V01 (T01): put on 7, take off 7
  • Truck V23 (T23): put on 11, take off 16
  • Truck V21 (T21): put on 12, take off 14
  • Truck V08 (T08): put on 7, take off 3
  • Truck V12 (T12): put on 4, take off 7
  • Truck V02 (T02): put on 4, take off 3
  • Truck V18 (T18): put on 6, take off 1
  • Truck V29 (T29): put on 4, take off 2
  • Truck V17 (T17): put on 6, take off 5
  • Truck V13 (T13): put on 2, take off 2
  • Truck V25 (T25): put on 4, take off 0
  • Truck V11 (T11): put on 2, take off 2
  • Truck V22 (T22): put on 1, take off 0

Dispatch · before 08:00 · 2

  • Warn the customer on call 33999: a likely part is back-ordered
  • Warn the customer on call 46709: a likely part is back-ordered

Buyer · this week · 3

  • Expedite main control board: 10.5 calls expected before it ships
  • Expedite blower wheel: 7.4 calls expected before it ships
  • Expedite tub spider arm: 1.6 calls expected before it ships

07:00 and after: what changed

  • T12 called out sick at 07:00: 8 calls moved
    • call 23917 → T25, first-visit chance 77% → 78%
    • call 46397 → T25, first-visit chance 82% → 66%
    • call 52105 → T25, first-visit chance 90% → 78%
    • call 77541 → T25, first-visit chance 80% → 64%
    • call 85694 → T27, first-visit chance 94% → 85%
    • call 91135 → T27, first-visit chance 94% → 85%
    • call 101499 → T27, first-visit chance 94% → 85%
    • call 150268 → T27, first-visit chance 86% → 77%
  • Truck V07 (T07) broke down at 10:09: 64 parts stranded, 6 calls moved
    • call 8173 → T11, first-visit chance 89% → 76%
    • call 35791 → T30, first-visit chance 77% → 70%
    • call 46709 → T28, first-visit chance 76% → 84%
    • call 73732 → T24, first-visit chance 89% → 72%
    • call 81309 → T11, first-visit chance 92% → 83%
    • call 126501 → T28, first-visit chance 83% → 84%
  • Truck V20 (T20) broke down at 10:45: 54 parts stranded, 0 calls moved
    • 20 calls changed priority on the day, 11 of them escalated to urgent (▲ on the board).

    Routes and the board

    zone 1zone 2zone 3zone 4zone 5zone 6zone 7zone 8zone 9zone 10zone 11zone 12⚠⚠
    08091011121314151617
    T01
    T02
    T03
    T04
    T05
    T06
    T07
    T08
    T09
    T10
    T11
    T12
    T13
    T14
    T15
    T16
    T17
    T18
    T19
    T20
    T21
    T22
    T23
    T24
    T25
    T26
    T27
    T28
    T29
    T30
    08091011121314151617
    T01
    T02
    T03
    T04
    T05
    T06
    T07⚠ broke down 10:09 · 6 moved
    T08
    T09
    T10
    T11from T07from T07
    T12called out sick at 07:00 · 8 calls moved
    T13
    T14
    T15
    T16
    T17
    T18
    T19
    T20⚠ broke down 10:45 · 0 moved
    T21
    T22
    T23
    T24from T07
    T25from T12from T12from T12from T12
    T26
    T27from T12from T12from T12from T12
    T28from T07from T07
    T29
    T30from T07

    First-visit chance: under 50% 50% 70% 80% 90%+ · Claude asked · moved · added on the day · part missing · ▲ escalated

    Load sheet?

    Truck V25 · T25, junior specialist

    89 of 90 space units · $2,686 of stock aboard · put on 4, take off 0, keep 53

    DoPartWorthWhy
    put oncounterweight bolts ($12.00)$5.84spare for unplanned calls
    put onsuspension springs ($21.00)$4.80spare for unplanned calls
    put onshift actuator ($64.00)$0.24spare for unplanned calls
    put onelement terminal kit ($11.00)$0.19spare for unplanned calls

    Keep aboard: 53 parts. For tomorrow's calls: idler pulley, drum rollers, shock absorbers, tub bearing kit, drive belt, drive belt, thermal fuse. Stock for unplanned calls: dishwasher 17, dryer 15, washer 14.

    3 calls tomorrow; the board and the map show the route.

    The proof · why it beats the current way

    Wed 28 Oct, against the current way

    Both on Claude's codes, with the same surprises.

    MeasureStapleCurrent wayDifference
    Fixed on the first visit85.1%71.0%+14.1 points
    Second visits2243−21
    Drive minutes a call17.314.0+3.3
    Cost a call$94.91$119−$24.32
    Calls rolled to tomorrow00+0

    What it means: on this invented day the plan avoids 21 second visits. That is the method's gain on invented data, not a result: the same comparison on real history is the first thing to run.

    T25 · junior specialist, truck V25

    ApplianceFixes first timeSpeed
    dishwasher83%0.95
    dryer81%0.98
    washer80%0.97

    Why it matters: each call goes to the technician with the lowest expected cost, so a specialist fast and sure on one appliance draws those calls even from farther away.

    Across all 92 held-back days, on the booked codes

    Fixed on the first visit?

    86.4%

    from 69.6% sending the nearest technician on today's stock

    Cost a call?

    $93.21

    from $122.08: minutes at $1, second visits at $165, both made up

    Jobs the truck covers?

    90.3%

    from 78.6%, at $109 a truck-day against $180

    Customer's words read right?

    92.6%

    agreement with the booked code, against 48.2% for keyword rules

    Who takes the call

    Every held-back day replayed with the same made-up sick calls, breakdowns and priority changes. Staple sends each call to the technician with the lowest expected cost: drive and repair minutes, plus a second visit times the chance that technician's skill or truck fails it, placing first the call with most to lose?. Shuffling the technicians' skills drops it to 83.3%, below the parts-only rule's 84.1%, so the gain comes from knowing who is good at what. Calls moved by a sick day or a breakdown were fixed first time 77.3% of the time, against 71.2% for the current way. A rolled call? counts as not fixed.

    Calls fixed on the first visit, with a rolled call counted as not fixed made-up data
    nearest technician, today's stock69.6% · $122 a call
    nearest technician, balanced loads79.3% · $106 a call
    skills only, balanced loads84.4% · $96 a call
    parts only, balanced loads84.1% · $98 a call
    Staple: skills and parts, balanced loads86.4% · $93 a call
    Staple with shuffled skills (control)83.3% · $105 a call
    Staple with shuffled-history parts odds (control)86.1% · $94 a call
    Show the numbers
    policycallsrolledfirst_visit_fix_pctparts_missing_pctdrive_minutesmovedmoved_fix_pctcost_per_call
    nearest technician, today's stock13587969.620.413.743871.2122.08
    nearest technician, balanced loads13587979.39.113.743869.2106.06
    skills only, balanced loads13587184.47.216.644064.595.59
    parts only, balanced loads13587484.14.314.946184.297.74
    Staple: skills and parts, balanced loads13587286.44.717.643377.393.21
    Staple with shuffled skills (control)135871383.33.718.644384.0104.66
    Staple with shuffled-history parts odds (control)13587086.15.117.745576.793.87

    What a fleet does with this: keep the routing system dispatch already owns, and hand it this expected-cost score for each technician and call, so its routes carry the skill and parts judgment.

    What to load tonight

    Each night the balanced truck ranks every part by its worth? per unit of space. It covers 90.3% of jobs for $109 a truck-day?, against 78.6% and $180 for today's fixed stock, while holding $3,068 against $3,162.

    Cost a truck-day: repeat visits, parts moved overnight, and money tied up made-up data
    balanced truck$109 · covers 90.3%
    today's stock plus the day's lists, 6 per job$136 · covers 85.8%
    every part that fits for the day's types$136 · covers 86.1%
    today's trucks$180 · covers 78.6%
    the day's lists only, 8 per job$227 · covers 81.7%
    Show the numbers
    policyparts_per_jobcovered_pctparts_aboardpermanent_partsmoves_a_nightstock_valuerepeat_costhandling_costholding_costcost_a_truck_dayroi
    the day's lists only136.44.00.07.3238.0529.6314.610.16544.4464.65
    the day's lists only256.87.60.012.4507.0359.3624.760.35384.47340.85
    the day's lists only365.710.90.016.9744.0285.6233.820.51319.96268.42
    the day's lists only470.914.30.021.8960.0242.5443.60.66286.79224.47
    the day's lists only574.917.70.026.91096.0209.3153.880.75263.95207.56
    the day's lists only677.721.00.031.31232.0185.4762.590.84248.9191.83
    the day's lists only780.024.10.034.51377.0166.7269.00.94236.66176.6
    the day's lists only881.726.90.036.91516.0152.0173.721.04226.77163.87
    balanced truck090.366.337.613.43068.080.4226.882.1109.489.5
    today's stock plus the day's lists685.853.048.77.63335.0118.3615.142.28135.7878.19
    today's stock plus the day's lists785.853.248.77.83340.0117.8715.652.29135.878.13
    today's stock plus the day's lists885.953.348.78.03342.0117.5615.972.29135.8178.12
    today's stock plus the day's lists585.352.648.76.83324.0122.1613.682.28138.1178.04
    today's stock plus the day's lists484.251.648.75.03295.0131.7210.022.26144.077.66
    every part that fits for the day's types2586.154.548.79.13373.0115.5418.262.31136.1177.61
    today's stock plus the day's lists382.350.148.72.33240.0147.474.652.22154.3477.21
    today's stock plus the day's lists280.449.148.70.73179.0163.281.322.18166.7876.88
    today's stock plus the day's lists179.548.948.70.33167.0170.820.512.17173.576.28
    today's trucks078.648.848.70.03162.0177.990.02.17180.1675.59

    What a fleet does with this: switch the overnight load from a fixed stock list to tomorrow's booked calls, so the parts room works from a load sheet per truck like the one on the left.

    Claude coding the bookings

    Claude Haiku 5.5 (claude-haiku-5-5) reads the customer's own words and picks a problem code with a confidence. Asking one question when it is unsure, its 3-part list covers 69.9% of jobs, against 71.6% for the booked code? and 50.4% for keyword rules. So Claude codes a booking about as well as a call-taker, and far better than keyword rules. Random replies to its question drop it to 66.2%, and shuffling its answers between bookings to 32.7%. The answers are saved with the code, so these pages rebuild without a key.

    Jobs whose every needed part is on the 3-part list, by how the words were read made-up data
    Claudelist covers 68.2% · agrees 92.6%
    Claude, asking when unsurelist covers 69.9% · agrees 96.1%
    booked codelist covers 71.6% · agrees 100.0%
    keyword ruleslist covers 50.4% · agrees 48.2%
    Claude answers shuffled (control)list covers 32.7% · agrees 18.9%
    Show the numbers
    methodjobsagrees_booked_pctagrees_true_pctcoverage_pct
    booked code13587100.090.471.6
    Claude1358792.683.868.2
    Claude, top guess only1358792.683.867.5
    Claude, asking when unsure1358796.186.969.9
    Claude, asking when unsure, random replies (control)1358790.281.766.2
    keyword rules1358748.244.450.4
    no code135870.00.040.3
    Claude answers shuffled (control)1358718.919.232.7

    What a fleet does with this: let Claude code the bookings and ask its one question at the moment of booking, and keep a person on the few calls its question cannot settle.

    Back-orders to chase first

    For each back-ordered part?, the list forecasts the calls that will need it before it arrives, from training history only, and how many have no truck nearby holding one. Over the held-back months it expected 84 calls and 14 stuck; the days then brought 90 and 20.

    Back-ordered parts, by repeat-visit dollars at risk before arrival made-up data
    Show the numbers
    parteta_daystrucks_holdingopen_zonesexpected_callsexpected_stuckdollars_at_riskactual_callsactual_stuck
    dryer/main control board132511.24.4721.0115
    dryer/blower wheel14257.83.1503.0107
    washer/tub spider arm80121.91.9316.044
    dishwasher/thermal fuse13444.21.2202.061
    dryer/moisture sensor8252.61.0168.000
    refrigerator/overload protector7171.81.0165.011
    washer/tub seal4261.20.695.032
    furnace/gas valve6421.70.342.010
    dryer/thermal fuse523024.40.00.0280
    range/burner cap set7602.30.00.000
    refrigerator/ice maker assembly524014.90.00.0130
    washer/water inlet valve325010.50.00.0130

    What a fleet does with this: expedite from the top of this list, and move spares toward the zones where no truck holds one.

    Which parts to carry

    The predictor ranks parts by how often they fixed the same model family and problem, and leans? on the wider appliance group when a family's history is thin. Three parts on the carry list? cover 71.6% of held-back jobs; the national top three cover 40.3%. Shuffling the history drops the predictor to 38.5%.

    Held-back jobs whose every needed part is on the list made-up data
    PredictorNational top partsShuffled history (control)
    0%25%50%75%100%12345678parts on the carry listtoday's trucks: 78.6%predictor, 8 parts: 89.7%
    Show the numbers
    kpredictor_pctnational_pctshuffled_pcttodays_trucks_pct
    137.519.519.578.6
    260.530.028.878.6
    371.640.338.578.6
    477.949.047.778.6
    582.557.057.878.6
    685.764.463.878.6
    788.070.470.478.6
    889.775.875.878.6

    What a fleet does with this: rank each booked call's parts by model family and problem rather than by national usage, and feed those lists to the overnight load.

    Where repeat visits come from

    On today's trucks, a missing part causes 67% of repeat visits?. Washers are worst: 29 of every 100 washer jobs need a second visit because a part was not on board.

    Repeat visits caused by a missing part, per 100 jobs made-up data
    washer29.1 per 100 jobs
    dryer22.5 per 100 jobs
    refrigerator22.4 per 100 jobs
    range20.7 per 100 jobs
    furnace18.2 per 100 jobs
    dishwasher18.1 per 100 jobs
    Show the numbers
    appliancejobsrepeat_visitsparts_causedparts_caused_per_100_jobsparts_share_of_repeats_pct
    washer255509900743429.175.1
    dryer255258641574322.566.5
    refrigerator254648605570822.466.3
    range252647850522220.766.5
    furnace329559462600218.263.4
    dishwasher252427296457918.162.8

    What a fleet does with this: start the pilot on washers, where a missing part costs the most second visits.

    How a fleet would adopt it

    1. Back-test on its own history. The same replay on real calls, parts and technicians, before any truck changes. If the gains vanish there, it stops here.
    2. Pilot one region. Load and dispatch one region by this plan for six weeks against a matched region left as it is, and compare first-visit fix, parts-caused repeat visits and stock value.
    3. Roll out region by region. Each region goes live only after the one before it beat its match.

    What this shows, and what it does not

    The plan on the left runs on Claude's codes for one invented week. The evidence above runs on the call-taker's booked codes for all 92 held-back days, so it measures the planning apart from the reading. Every result reproduces from one seed, and each gain has a shuffled control that falls back when the history's links are broken. None of it shows the gains on a real fleet, because the history is invented. Three corners are cut on purpose: counting instead of a trained model, zone-to-zone drive times instead of road routing, and a call-by-call night plan instead of a solver.