← Work

Reasonable Forge

A CAD engine that won't call a part done until the printer agrees. Three weeks in: two brand sites live and the first product line in production.

Status
Building
Year
2026
Built with
Python · build123d · Bambu Studio CLI · Claude Code
Links
forgedbyreason.com · reasonedpeace.com
Render of a card-deck caddy: the lid lifted off, a token module behind the deck, and a drawer pulled out underneath
The drawer caddy, rendered by the engine from the same model it slices. Lid, deck well, token module, drawer.

The problem

I bought a Bambu X2D in October to run a small shop: card-game accessories first, then home decor. I don't do CAD by hand. Claude writes the geometry in Python, and I direct it. That works until a model says a part is done and the printer disagrees: a wall too thin to hold, an overhang that sags, a lid that looks right on screen and stands proud on the table.

So I built it the way I build LLM systems. The model generates; something deterministic checks; nothing counts until reality confirms it.

How it works

You describe a part in Python with build123d. The engine checks it against printability rules and writes a Bambu project with the presets, filament slots and color-change pauses already set, plus renders and a notes.md with the rules report and every spec's verification status.

A rules gate runs before anything is sliced. It checks overhangs, islands that would start printing in mid-air, minimum feature size, watertight geometry, filament count, inlay stroke width, and whether each piece sits flat on the plate.

Coupons decide the numbers. A coupon is a small test print that settles one value: a snap's catch depth, a magnet pocket, a clearance. Until its coupon prints, that number is marked UNVERIFIED in the notes, and the docs say so.

Any snap, hinge, slide, magnet closure or insert pocket goes past an FDM-mechanisms reviewer agent before it prints. It returns a risk list, not a pass/fail. And there's a sell gate on top: nothing gets listed until its coupons have printed and a full sample passes.

3 of 3
known failures from my own past prints, flagged by the mechanisms reviewer in a blind backtest. It also overcalls.
2.5 mm → flush
a front pocket that printed 2.5 mm proud of the lid, redesigned, re-printed and confirmed flush
219
commits between 27 September and 20 October 2026

What the gate got wrong, and how it changed

The first plate-contact rule compared each piece's bounding box against the plate. It was strict in the wrong way: triangles, lattices and rings that print fine kept failing. I changed it to check each piece against its own shadow from above, and to require the center of mass to sit inside the contact area. The false failures went away, and I dropped two per-part overrides that had only existed to get around the old rule.

That's the same thing I'd do with an LLM eval that's too strict. A check that fails good work gets ignored, and an ignored check is worse than none.

Prints fail too, and they get written down. A click snap didn't hold, so a magnet closure replaced it. A set of dials didn't click at all and went back into the coupon queue. The caddy's front pocket came out clean but stood 2.5 mm proud of the lid; the redesign ends the cheeks at the lid face, and the next print sat flush with no snag.

Caddy render with numbered callouts on the deck well, token module and drawer
The same caddy as shown on forgedbyreason.com: the brand site explains the part with the engine's own render.

The ledger behind the pricing

Every finished plate gets one JSON entry in a print ledger: sliced time against real time, and why it failed if it did. Its summary shows the failure rate and the point where a second printer pays for itself. A retail cost layer sits next to it: Etsy and Offsite Ads fees, a USPS Ground Advantage label, packaging, and hands-on minutes. The goal is prices set from measured runs instead of guesses.

Kumiko, printed

The second brand, Reasoned Peace, is decor based on kumiko, the Japanese wooden lattice. Each insert is a small printed triangle that snaps into a frame. The pattern library is generated, and the catalog board marks which patterns have actually printed clean and which are still only designed.

Catalog board of 54 triangular kumiko insert patterns in rows: traditional, flow lines, motifs, scene textures and seasonal, each labeled printed or designed
The insert catalog. The small green labels mark the patterns that have printed clean; the rest are designed but unproven.
A kumiko panel design: a red sun, a snow-capped mountain and a cherry branch, built from thousands of triangular inserts in about twenty patterns
One panel design: sun, mountain and a cherry branch at 30 mm cells. More of the Reasoned Peace line goes up when the shop opens.
Nine rough renders of caddy lids: kumiko lattices, seigaiha waves, and sakura branches as raised inserts and flush inlays, each labeled with its colors and swaps
Caddy lid concepts, round 2: kumiko, sakura and neighbors, shown rough on purpose. Framed inserts print face up and swap out; the flush inlays print face down on the smooth plate side.

Measuring the launch

Where it stands

forgedbyreason.com and reasonedpeace.com went live on 19 October 2026. The Etsy shop is planned for November. The first caddy line is in production; the two-deck version is sliced (3h37m and 186 g for the core) and waiting on its first full print. The rest is prototypes, and the docs say which numbers are still unverified.