Jason Fetzer

optimization · automation · AI engineering — Chicago

I like puzzles, math, and algorithms. For eleven years, most of mine have been 110 inches wide.

I build optimization solvers, automation, and AI agents for the plant floor — scheduling, packing, cutting, routing — and write about how they work.

Focus

Combinatorial optimization. Scheduling, packing, cutting stock, network flow. Exact where it's tractable, heuristic where it isn't, honest about which is which.

AI for operations. Agents and retrieval on top of deterministic solvers — the model explains and proposes; the solver decides feasibility.

Trustworthy interfaces. Decision tools people will use on a plant floor: constrained inputs, visible assumptions, auditable outputs.

Security and systems. Local-first deployments and least-privilege tooling — the plumbing that makes AI safe to run near production.

Work

Industrial AI

In development · private
Talk to My Machineoptimization + agent layers

An industrial AI and optimization platform for corrugator and paper mill operations. A deterministic layer handles scheduling and feasibility; an agent layer lets operators ask questions and get grounded answers. Core app is private while it matures; landing site and architecture notes are public.

Public · runnable

A bounded investigation agent for a corrugator line. A superintendent asks why a shift was bad; the model chooses which validated tools to call, application code owns every calculation, and the output is an evidence-linked report with charts. Synthetic data, seeded and reproducible. Write-up →

Security

elite-labPython · cyber range

A terminal cyber range that teaches offensive and defensive security by making you do it: missions with real artifacts, flags, and checkers, in break-then-fix pairs. Includes live-lab, a fictional paper company you host and attack — an intentionally vulnerable customer portal with a simulated paper-machine moisture scanner on the front page, so the same domain as the industrial work gets exploited, then fixed.

Scheduling & load planning

multi-machine-interval-schedulingJava · Python · OR-Tools

Assign fixed-interval jobs across parallel machines. Three runnable solvers with sample CSV inputs and outputs so results are reproducible. Grew out of an n-machine / m-jobs course project at IIT.

Load-building by cube and weight. Heuristic and optimization variants, built for the way dispatchers actually think about a load.

Transport planning under network capacity constraints — which lanes, which trucks, within what the network can carry.

transportation-and-transshipment-modelsJava · Python · OR-Tools

Network-flow formulations for moving goods through intermediate nodes at minimum cost — a hand-rolled solver beside a solver-backed one.

Heuristic and solver-based cutting stock with tests. The problem a corrugator faces every shift: minimize trim loss across a roll.

The hub: OR, optimization, and algorithm implementations across the other repos, including knapsack, greedy, and DP examples.

Personal

Beat the Schedulerdaily puzzle

Eight orders, the paper that's actually on the floor, three knives, seven inches of chute. Build the patterns, run the machine, beat the solver on trim, hours and on-time delivery. Same puzzle for everyone each day.

Every one of Allen Iverson's 985 NBA games drawn as a basketball — seasons left to right, months top to bottom, size is points, filled is a win. Hover for the box score. Comparisons against other greats, the fourteen 50-point nights, all-time ranks. One page, no build step; the game logs reconcile to the official career line. Source →

Felix AugustJavaScript · RAG

Feedback loops and retrieval-augmented generation over a personal investment journal — RAG grounded in a single trusted corpus. Source →

Writing

The US containerboard business as a minimum-cost network flow, built from free public data: 63 mills from the 10-Ks, 441 box markets from the Census and the EPA registry, freight from distance and diesel, and the dual prices that say what a ton of capacity is worth, who would switch supplier for how much, which outage hurts most and when to take maintenance. Page by page, source by source, with the code, an animated solver, and a chat that shows its lookups. Open the app →

Gilbert's finite permutation groups doing work: the order of a riffle shuffle, Burnside counting the box designs that are really different (24 under rotation, 21 if you may flip), and Verhoeff's check digit, which uses the dihedral group D₅ to catch every transposition that mod-10 schemes miss. Every claim brute-forced.

Papadimitriou & Steiglitz ch. 14 on one picture. The LP says 7.57 truckloads; rounding breaks a constraint. Two Gomory cuts, each read straight off the simplex tableau and drawn in the plane, land on the integer optimum. Exact-fraction Python, checked against brute force on 290 instances.

Korte & Vygen §16.1 on a map of 69 US metros: greedy says 20 plants, the optimum is 18, Chvátal's bound promised 54. The instance that makes greedy look bad, the LP that proved the optimum for free, and the five plants that building a network one acquisition at a time costs you.

Korte & Vygen §11.1 in a box plant: the morning's orders-to-machines question solved as a min-cost flow by successive shortest paths. Step through the augmenting paths that re-route work greedy would strand, then read the dual prices that certify 686 minutes. Python engine checked against brute force.

Narrative to numbers, Damodaran-style: capacity out, price in, assets that are expensive to run — a DCF, a sum of the parts, and a Monte Carlo that turns the stock into one question about the containerboard cycle. Model and code included.

From an Excel Solver to a solver of my own: the floor, the mill, the math as I understand it now, and what I'd tell a data engineer who wants in. With a live search-space explorer and a real branch-and-bound trace.

A live performance dashboard for two 110" corrugators running 7 MMSF a day each — trim, shear, dry-end, speed with and without stops, downtime Pareto — and why a report of numbers finds nothing until someone converts the gaps to dollars.

Dijkstra, Bellman-Ford, and Floyd-Warshall on the same nine nodes — including the negative backhaul edge that makes Dijkstra confidently wrong, and the all-pairs matrix filling in.

Topological sort as the scheduler, critical path as the wall-clock bound, DFS cycle detection as the guardrail — and Kruskal's MST for the graph-theory nod. All animated.

LP, MILP, and CP-SAT — when each fits and when none does. A product-mix LP with shadow prices, and an OR-Tools job shop scheduled to proven optimality, with the Gantt.

Corrugated units, forklift-loaded through the rear door, stacked under footprint, roof, and weight rules — in 3D, with a heuristic that plans the stacks before anything moves.

Naive recursion → memoization → bottom-up → the cut plan, animated — then real cutting stock with trim loss and why column generation was invented at a paper company.

Greedy, DP, backtracking, and branch and bound on one instance, animated in d3 — then the same idea loading a 53-foot trailer. Java at the bottom.

An autograd engine built from scratch with every gradient checked by hand, then notes on each video in Karpathy's Zero to Hero series.

Bounded tools, application-owned numbers, evidence over narrative: how the corrugator shift investigator is built and what it refuses to claim.

One-to-one, onto, and the affine map f(x) = ax + b mod 26 — with and without the key, and where the same math shows up in production code.

PowerShell pipes objects, not text — why that's an advantage for AI coding agents, plus the full cmdlet reference.

Why the Unix philosophy turned out to be the ideal interface for machines that think in language, plus the full shell reference.

About

I build algorithmic systems, operations research tools, data platforms, and AI software for real-world operations.

Most of my work starts with a constraint someone on a floor already knows about and a spreadsheet that can't hold it anymore. I care about feasibility first, interfaces people trust, and decisions that hold up under real limits on time, capacity, and information.

Father, husband, veteran, student. Off the clock: basketball and guitar.