Machine Bureaucracy (WIP)

A simulation exploring how rate targets, organisational pressure, and measurement design shape worker behaviour in a non-robotic fulfilment centre.

Optimized for larger screens

Some simulations are best viewed on larger screens in landscape orientation, but they might work on your phone. I just don't optimise for them.

Work in Progress
Secret

WIP / CAS Note:This simulation recently moved from a static model to a dynamic Complex Adaptive System (CAS). Some of the documentation below may be out of date or incomplete while the new system stabilises. Formulas are pulled from the live codebase but UI labels and derived metrics are still catching up.

Why this exists

  • Workers in warehouses are evaluated by a single number: items stowed per hour.
  • When that number is the only thing that matters, breaking placement rules becomes the rational way to survive the shift [5] [6].
  • Goodhart’s Law (“when a measure becomes a target, it ceases to be a good measure”) is the formal name for what happens.
  • Algorithmic management research documents the same pattern in fulfilment centres: workers learn the score, game the score, and the system degrades [3] [4].
  • This simulation models a non-robotic fulfilment centre (based on Amazon PER4 FC). You set the targets. The warehouse responds. What emerges is a systems outcome, not a moral failing [11].
  • The framing is structural: when following the rules means missing your rate, most people will break the rules. That is a design problem, not a discipline problem.
  • This is a change-management question. The simulation surfaces when and why well-intentioned people start cutting corners, and what the organisation could do differently.

What you're looking at

Controls (left sidebar):

  • Scenario: preset floor states from orderly to saturated.
  • Stow/Pick TPH: hourly rate targets. Push these up and watch what happens.
  • Rule Support: organisational cover to follow placement rules under time pressure.
  • Picker Demand: how quickly downstream waves stress-test earlier stow decisions.

Tabs (below the canvas):

  • Metrics: live stow and pick rates, rule-breaking %, and ethics strain over time. Dashed “ghost” lines project current trends four virtual hours ahead.
  • Bin Complexity: heatmap of individual bin fullness. Click any bin to see its event history.
  • Oddities: systemic strategy tools. Operational debt accounting, causal feedback map, and a phase-shift plot mapping messiness against pick rate.

Scenarios

Each scenario is a mid-shift snapshot with different bin fullness, messiness, and target pressure.

Orderly floor

OHB: 3/12 - 6/12
  • Lightly stocked bins. Plenty of clean homes for incoming items.
  • No conflict between doing it right and doing it fast.
  • Low cognitive load. Rate target feels achievable without shortcuts.

Getting crowded

OHB: 10/12 - 11/12
  • Bins near the working limit. Looks controlled, but the margin is thin.
  • Finding a correct placement takes longer. The rate clock does not stop.
  • The trade-off first appears: speed or accuracy, because the target only measures speed.

Rushing and messy

condition: visually disorganised
  • Similar tightness to “getting crowded” but with more jumble and unreliable counts.
  • Workers choose between job security (hitting rate) and doing what they know is right (neat placement). Most choose survival [4].
  • Collaboration on bin hygiene stops. No reward for it, penalty for the time it takes.

Packed and struggling

condition: pick drag visible
  • Little easy space. Many bins maxed. Every placement inherits earlier shortcuts.
  • Pick pain is obvious: longer searches, more recounts, more flags. The stow team’s earlier speed is the pick team’s current delay.
  • Psychological safety is gone. Workers know the system is failing but raising it risks drawing attention to their own rate [7] [8].

Availability pressure means usable slots under fit rules and physical reach, not a nominal percentage of empty space. A bin can look half-empty and still have no legal home for the item in your hand [1] [2].

How the loop works

One causal chain, repeating every shift:

  • Targets set the frame. Stow and pick TPH define “good.” Rule support and problem-solve capacity determine how much cover workers have.
  • Pressure builds. As bins fill and scarcity rises, finding a correct placement takes longer. The target does not adjust. Workers experience this as cognitive load under surveillance [3].
  • Shortcuts appear. When doing it right means missing the rate, most people bend the rules. This is loss aversion: the penalty for a slow rate is immediate and personal, the penalty for a messy bin is delayed and lands on someone else [4] [11].
  • Bins degrade. Shortcut stows increase messiness, weaken counting confidence, and reduce clean homes for the next item. Each messy stow makes the next stow harder.
  • Picks slow down. Later pick waves hit longer paths, harder searches, and worse counts. Stow KPI looks fine because shortcuts are fast. Pick KPI drops because it inherits the damage.
  • The system absorbs, or it does not. Problem-solve capacity can clear flags and absorb exceptions. When overwhelmed, backlog grows and the feedback loop tightens.

What moves on screen

  • One moving shape = one inbound cart with 12 totes, each containing multiple item lines.
  • Stowers work tote lines down an aisle, either compliantly (slower, cleaner bins) or via shortcut (faster, dirtier bins).
  • Once all lines are placed the cart returns and a new one is claimed.
  • Pickers pull bin-to-bin in runs of 10-20 items across up to 2 totes.

Stow rules

  • Two bin types: library (less height) and library-deep (tall boi). Items must match bin type. This is done via hand scanner (rules are adjustable).
  • Configurable working limit controls how full a bin can get before stow logic treats it as past the reachable zone. Rule-following stows get small extra headroom.
  • Large-standard items load depth first, so surface occupancy can look fine while the bin is actually pinned.
  • Bad stows persist. No automatic relocation. A messy placement stays until a picker deals with it.

Under the hood - formulas

Core derived quantities. Inputs on the left, system behaviour on the right. They form a single feedback loop [5] [6].

1. Storage complexity

  • How hard it is to find a correct placement. Rises as clean bins thin out.
Complexity∝Deep Share+Scarcity+Messiness+Non-Neat Bins+Count Difficulty+Pick Target Bias\text{Complexity} \propto \text{Deep Share} + \text{Scarcity} + \text{Messiness} + \text{Non-Neat Bins} + \text{Count Difficulty} + \text{Pick Target Bias}
// Weighted floor-condition friction - model.ts:deriveOperationalState
const storageComplexity = clamp(
    0.12 +
    libraryDeepShare * 0.16 +
    slotScarcity * 0.32 + // biggest driver
    averageBinMessiness * 0.24 +
    nonNeatBinShare * 0.16 +
    countingDifficulty * 0.12 +
    Math.max(0, pickerTargetBias) * 0.08,
    0.04, 0.98
);
  • Past a threshold, complexity feeds into stow pressure and drags pick KPI.

2. Stow pressure

  • Live incentive to bend placement rules. Rises when hitting your rate and following the rules start to conflict.
Pressure∝Stow Target+Demand+Scarcity+Complexity+Non-Neat Bins+Count Difficulty\text{Pressure} \propto \text{Stow Target} + \text{Demand} + \text{Scarcity} + \text{Complexity} + \text{Non-Neat Bins} + \text{Count Difficulty}
// What pushes workers toward shortcuts - model.ts:deriveOperationalState
const stowPressure = clamp(
    0.16 +
    Math.max(0, stowTargetBias) * 0.42 +  // target above baseline
    pickerDemand * 0.16 +
    slotScarcity * 0.22 +
    storageComplexity * 0.18 +
    nonNeatBinShare * 0.1 +
    countingDifficulty * 0.08,
    0.04, 0.98
);
  • Complexity feeds pressure. Pressure feeds shortcuts. Shortcuts feed complexity.

3. Rule-following rate

  • Share of stows that use the compliant path. Erodes under pressure unless organisational support holds the line.
Rule Following∝Support−Pressure−Complexity−Scarcity−Pick Target Bias\text{Rule Following} \propto \text{Support} - \text{Pressure} - \text{Complexity} - \text{Scarcity} - \text{Pick Target Bias}
// Probability a stower follows placement rules - model.ts:deriveOperationalState
const ruleFollowingRate = clamp(
    0.42 +
    ruleSupport * 0.58 -              // organisational cover
    stowPressure * 0.32 -             // rate pressure erodes compliance
    storageComplexity * 0.16 -
    slotScarcity * 0.12 -
    Math.max(0, pickerTargetBias) * 0.08,
    0.05, 0.98
);
  • Rule support is the biggest positive lever. Without it, even well-intentioned workers break rules under time pressure.

4. Ethics strain

  • Lagging output. Measures how strongly the system rewards KPI-chasing over doing the right thing.
Ethics Strain∝Rule Breaking+Harm Rate+System Balance Gap\text{Ethics Strain} \propto \text{Rule Breaking} + \text{Harm Rate} + \text{System Balance Gap}
// Ethics strain - model.ts:computeMetricSnapshot
const ethicsStrain = casesProcessed === 0
    ? 0
    : clamp(
        ruleBreakingRate * 0.42 +      // how often rules are broken
        harmRate * 0.16 +              // downstream damage
        systemBalanceGap * 0.1,        // stow-pick KPI divergence
        0, 100
      );
  • Ethics strain is not an input dial. It emerges from the gap between what the system rewards and what it costs. A widening stow-pick KPI split is its signature.

What this means for organisations

This generalises beyond warehouses. Any operation where Team A’s speed becomes Team B’s rework has the same dynamics.

  • Siloed KPIs invite local shortcuts. When each role is scored against its own target, the rational move is to optimise your number and externalise the cost. The total cost still accrues; it just lands somewhere the dashboard does not show [5] [6].
  • Psychological safety determines whether problems surface early. When workers can flag issues without fear of rate-based consequences, the system self-corrects. When they cannot, small problems compound silently [7] [8]. The “Rule Support” slider is a proxy for this: how much organisational cover exists to do the right thing under pressure.
  • Joined-up handoff design is the intervention. Treating stow and pick as one loop, with balanced scorecard-style views that pair operational and people outcomes, is how you stop the pattern [9] [10]. The fix is not better monitoring of individuals. It is better design of the system they work inside.

Three things that happen to an item

  • Clean retrieval: stowed properly, found easily, picked without extra work. What happens when the system is well-designed.
  • Picker drag: stowed fast but messy. The picker does extra walking, searching, or recounting. The stow KPI hid this cost.
  • Ethics strain: following the rules no longer fits the clock. The failure mode is in the job design, not the person doing the job.

The question is not “how do we make workers follow the rules?” It is “why does the system make rule-following irrational?” That is a change-management question. The answer is in the measurement design, the target structure, and the cover that leadership provides [12].

Bin Complexity implementation

The bin complexity and heatmap system was built using a custom DOM-based renderer with specific modifications for the simulation.

  • Open source foundation: The visual pattern draws inspiration from open source contribution and activity heatmaps (like GitHub’s or Cal-Heatmap), adapted for real-time physics-driven data.
  • Modifications used: We shifted from static SVG rendering to a React-controlled DOM grid (using div and button primitives) for the BinFullnessHeatmap. This allows 60FPS fluid updates tied directly to the Matter.js simulation tick.
  • Colors dynamically map to availability pressure and individual item state.
  • Why this path? Using standard charting libraries (e.g., Recharts) for hundreds of individual bins during a high-frequency simulation loop proved computationally expensive. Raw DOM nodes controlled by the engine.ts derived state ensure performance holds up under heavy load.

(Note: If you were referring to a specific upstream open source library fork for the Bin Complexity logic, please let me know and I will name it exactly!)

Abbreviations

  • FC: fulfilment centre (PER4-style, non-robotic context for this lab).
  • KPI: key performance indicator; here, mainly hourly stow / pick targets (stow TPH, pick TPH).
  • PS cap: problem-solve capacity (how much flagged work review can clear).
  • ES: ethics strain (model output, not an input dial).
  • OHB: occupancy band (normalised fullness step on the 12-step scale used in copy).
  • SKU: stock-keeping unit (line items are grouped into totes and carts in the sim).
  • TPH: tasks per hour (stow or pick target rate).

References

  • [1]

    Amazon, “Inside Amazon’s fulfillment centers: What you can expect to see on a warehouse tour,” About Amazon, 11 Mar. 2019. aboutamazon.com

  • [2]

    Amazon Technologies, Inc., “System and method for stow management of similar items,” U.S. Patent US8341040B1, 1 Jan. 2013. patents.google.com

  • [3]

    A. Delfanti, “Machinic dispossession and augmented despotism: Digital work in an Amazon warehouse,” New Media & Society, vol. 23, no. 1, pp. 39-55, 2021.

  • [4]

    E. J. Cheon and I. Erickson, “Fulfillment of the work games: Warehouse workers’ experiences with algorithmic management,” Proc. ACM Hum.-Comput. Interact., vol. 9, no. CSCW, Art. no. 228, 2025.

  • [5]

    R. Mannion and J. Braithwaite, “When a measure becomes a target, it ceases to be a good measure,” BMJ Quality & Safety, vol. 30, no. 3, pp. 263-267, 2021.

  • [6]

    J. W. Treem, P. M. Leonardi, and B. van den Hooff, “Coping with Goodhart’s law in an era of digitisation and datafication,” Journal of Computer-Mediated Communication, vol. 28, no. 4, 2023.

  • [7]

    A. C. Edmondson, “Psychological safety and learning behavior in work teams,” Administrative Science Quarterly, vol. 44, no. 2, pp. 350-383, 1999.

  • [8]

    S. Kim, S. B. Choi, and K. Kim, “The influence of corporate social responsibility on safety behavior: The mediating role of psychological safety and organizational commitment,” Frontiers in Public Health, vol. 10, 2022.

  • [9]

    W. Qian, J. Horisch, and S. Schaltegger, “Using a balanced scorecard to manage corporate social responsibility,” International Journal of Management Reviews, vol. 22, no. 2, pp. 185-208, 2019.

  • [10]

    R. S. Kaplan and D. P. Norton, The Balanced Scorecard: Translating Strategy into Action. Boston, MA, USA: Harvard Business School Press, 1996.

  • [11]

    A. Kohn, Punished by Rewards: The Trouble with Gold Stars, Incentive Plans, A’s, Praise, and Other Bribes, 25th anniversary ed. Boston, MA, USA: Houghton Mifflin Harcourt, 2018.

  • [12]

    T. M. Jones, “Ethical decision making by individuals in organizations: An issue-contingent model,” Academy of Management Review, vol. 16, no. 2, pp. 366-395, 1991.