Real-time cost alerts in Slack and CLI. Anomalies surface where engineers already work.
›whoami
Staff product designer and AI engineer. Ten years designing AI products, sole design ownership from zero to one.
›ls work
›
A studio for training models and making stills and video. It installs with one command and runs on your own GPUs. I designed it, engineered it and deployed it.
Built for dreamersThe person here is a filmmaker, not a prompt engineer. Their job is to describe a picture they already see. The tool’s job is to speak whatever dialect each model needs.
The recent work moves in one direction — toward the canvas. The source is on GitHub.
The canvas is the largest thing on screen because the picture is the reason the page exists. A settings column would cost it 384 pixels of the one dimension it can’t get back, so the options sit in a bar underneath.
The app is deployed and live — it runs on Modal and scales to zero between sessions, so the first visit pays a cold start. Open the studio →
The interface landscape has settled into two failure modes. Visionary is a refusal of both — you argue with the picture, and the system owns the prompt.
| Approach | Optimizes for | What it costs you |
|---|---|---|
| The prompt box | Approachability | The prompt is the state. Nothing accumulates and nothing is addressable. A small edit means rewriting the sentence and rerolling the whole picture. |
| The node graph | Total control | Engineering wearing an artist’s clothes. The graph is the medium and the picture is an afterthought two hundred nodes away. |
| Visionary | Direct manipulation | Intent is expressed on the canvas, not in a settings column. |
The one standing ruleIf a gesture cannot say what it means without a label, the answer is a better gesture. Never a control panel.
Most enhance features run your sentence through a model and send the result on. The interpretation replaces your intent silently. A bare fragment reads as keywords — type the kitchen after the party and you get the party in progress.
Here empty diner, 3am grows into the prompt the model was trained to read. Written into the box you type in. The model’s own words sit over the top in grey — derived or invented, always visible. One ⌘Z and it is gone.
The hardest-won invariantYour prose is the source of truth. Everything the model adds is a disposable interpretation of it. Dropping it costs nothing.
The scoring apparatus it replaced reached 0% of renders. Judged by looking — real prose wins. You cannot measure intent with a diff.
Draw a box on the frame. It masks a LoRA to its own rectangle. Two characters hold one frame without bleeding into each other. Drop a photograph on the box and the rectangle pulls toward that face — a character with no training run behind it.
Touch a box and it opens where it sits. Dragging teaches the numbers. The numbers never taught the dragging.
Chrome disciplineNothing sits on top of a render. The boxes are reachable at all times and drawn at none.
There is no mode switch. Duration is the control. A still runs Krea 2. Any length routes to a video model. The two strips differ by a seconds picker — half the application behind a toggle that gated one field.
Duration starts at zeroA still is the default and time is something you add. Someone who wants one image should finish and leave without ever learning that motion exists.
Stills and clips land in one gallery in the order they were made. To the person who made them they are the same work.
Direction
Scale here isn’t requests per second. It’s model size and cost per job. The app scales to zero — no keep-alive, no idle bill, no lifecycle. One command puts the interface, the API and the GPU jobs at a single address on your own account.
›modal deploy app.py
✓four images built — comfy, trainer, captioner, parse
✓web endpoint, API and GPU classes registered
✓volume mounted at /workspace
https://<you>--visionary-web.modal.run
Zero-idle is a UX propertyCold starts are paid where you aren’t looking. The interpreter warms while you type. Weights download on cheap CPU containers, never on a rented GPU.
One file. Four container images. Separate because the CUDA pins genuinely conflict — a compromise is paid forever.
The console is capped at 30% of the screen, enforced in JS. The bar comes out of slack the picture wasn’t using.
Not where the result appears. Region prompts, LoRAs and every attachment become one gesture in one place. A photo on a box is that character; a photo on the frame is the scene. What you touch decides the mode. Nothing asks for confirmation, because undo is total.
A veto list, not a manifesto. Each sentence kills one specific fix — the one proposed in month four, when the cheapest answer is a panel.
Built for dreamers is not a taglineA prompt is copy-pasteable, so a platform converges on a house style nobody chose. A model trained on your own photographs learns what you meant. That is why training is Phase 1.
Read the source on GitHubCloud cost intelligence for engineering teams.
Real-time cost alerts in Slack and CLI. Anomalies surface where engineers already work.
Learning complex cloud architecture directly from backend engineers. Designing tools for the immediate technical team.
Accepting raw AWS tags as-is to build adjacent structures with minimal UI interference.
Adapting IBM Carbon for rapid engineering execution.
Research, interaction models, and execution from seed through two funding rounds. Scaling the platform to market.
Infrastructure tags carry no consistent owner or logic.
A learned ML baseline detects cost anomalies in your environment in real time.
The platform sends cost anomalies in Slack, routed to the relevant team by design, reducing dependency on dashboards.
The resource, opened on the anomaly. Causes ranked by cost correlation — the deploy on top. Acknowledge reports back to the channel.
Routine drift logs quietly. A departure from baseline pages the on-call in 33 minutes.
Every resource carries an owning team. The alert lands in that team's channel, not a company-wide feed.
Rate against baseline, start time and projected impact travel with the alert.
Changes from the 24 hours before the spike, ranked by cost correlation. The deploy sits two minutes before the inflection.
My team's changes is the default view. AWS noise sits one tab away.
An acknowledgement here updates the channel. The team sees it is handled.
Competitors monitor cloud cost for finance. The platform maps spend to the engineers who create it.
I design systems, not screens.
Synchronizing software design systems with industrial manufacturing cadences.
Aligning software component architecture with industrial manufacturing cadences.
The system. Tokens — color, type, spacing, radius — and the components they generate. A design change is a change build already has the name for.
Design in the running product. Engineers build against the live screen, not a spec — what they see is what ships.
The resubmit cycle, collapsed. Days of PDF round-trips become one working session on a living design.
The pilot that shipped. One feature, run end to end on the new cadence — the cadence stuck.
A minimalist audio terminal removing cognitive overload through responsive geometry.
An interactive appliance for psychological rest. Sound stripped of choice to match your mind.
The geometry responds to you. There is nothing to operate.
This is not the negative.