Case study
The studio tool bench
A private bench of ten small apps that make the client work faster: a proofing bench for social slides, eight brand-wired design apps, and a 3D scrub builder. None of it deploys anywhere. The files it produces are what ship.

Most weeks the client work asks for something no product quite does: prove a slide will survive Instagram's crop before it posts, or stage a 3D model for a scroll hero. When the same fussy step comes up three times, I build a small tool for it. Ten of them now live on a private bench on my desk machine, served by the same local stack I develop on. Nothing on the bench deploys anywhere. The finished files it produces are what ship.
A bench that explains itself
The front door is one page that describes every tool in plain words, per brand: which scrim MindMorph slides take, why Lauren Rose gets guides only until her deck type locks, what the export spec wants for each platform. It checks which tools are actually running before it offers them, so it never hands me a dead link.
Slide Proof
The last check before a slide leaves Photoshop. Drop a render on it and it draws exactly where each platform will crop or cover the image: the 4:5 feed safe zone, the story UI bands, and for Google Business posts a five-by-five grid that enforces the 20 percent text rule. It can lay a brand's locked production scrim over the art to preview how the copy will read, and it exports the proofed version at 2K, 4K, or 8K. The screenshot in the gallery shows it checking a slide that actually shipped.
The design lab
Eight small apps, one effect each, wired to the four brands I work in daily (Ulric, MindMorph, MycoMuse, Lauren Rose). They share one shape: pick a brand, turn a few knobs, export a real PNG or JPG at up to 8K. Studio photos are bundled in, so there is always a one-click source image.
- Liquid Metal sets a wordmark as true 3D chrome: extruded, beveled type in a mirror studio built from softbox strips, with procedural scratches in the finish and a lighting rig you drag around the model.
- Orbit is the model stager. Load a library model or drop your own file, swap its materials for studio metal or clay, place each lamp on a ring around it, and export the exact on-screen pose.
- Post Maker holds one-click campaign presets: a bundled photo, the locked deck scrim, and finished copy land together, and custom mode frees every field.
- ASCII turns a photo into a halftone dot matrix in brand color pairs, from Bayer dither to scan lines.
- Bricks rebuilds a photo as a running-bond mosaic with adjustable bevel and shine, plus a switch that snaps every brick to brand colors.
- Glass lays reeded refraction over a photo, with a frost slider and a brand tint. Leave the pane empty and it refracts the brand's gradient instead.
- Gradient pours brand backdrops in four moods per brand, with grain to kill banding.
- Watercolor paints brand pigments on paper grain, and the strokes pool and layer like real washes. It is the one tool missing from the gallery: a wash only reads once a person has painted it, and my robot strokes did not deserve the wall.
Scrubforge
The motion half of the 3D pair. It authors a camera move over any model on a keyframe timeline, six preset moves included and every edit undoable, then exports the move four ways: an MP4 where every frame is a keyframe (which is what scroll scrubbing demands), a PNG sequence, a live three.js embed that scrubs from scroll position, and the move as plain JSON. For model-based scrubs it replaced a whole ffmpeg re-encoding step. It reads lights and cameras straight out of a Blender GLB, so a scene arrives lit the way it was built.
Why they stay local
These are not products. No accounts, no hosting, no updates to babysit, no client ever touches them. A tool that takes an evening to build starts paying for itself the same week, and because each one runs in the browser on my own machine, I can rebuild any of them around the work instead of the other way round. Screenframe, the recorder that framed half the demo clips on this site, sits beside them in the same local stack.