~/kenanalsarabi Boston · kenanalsarabi@proton.me

whoami

Hi, I’m Kenan.

Staff product designer and AI engineer. Ten years designing AI products, sole design ownership from zero to one.

ls work

01 · Visionary · Generative studio

One file is the whole studio.

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.

Role
Design engineer — sole designer & builder
Scope
Product · UX · Python · written with an AI pair
Stack
Modal · ComfyUI · vLLM · PyTorch · serverless GPU
Status
Deployed and running · open source

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 →

IThe stanceWhy it refuses both the prompt box and the node graph.
01 · The middle path

Two ways to make these pictures. Both cost the user.

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.

ApproachOptimizes forWhat it costs you
The prompt boxApproachabilityThe prompt is the state. Nothing accumulates and nothing is addressable. A small edit means rewriting the sentence and rerolling the whole picture.
The node graphTotal controlEngineering wearing an artist’s clothes. The graph is the medium and the picture is an afterthought two hundred nodes away.
VisionaryDirect manipulationIntent 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.

IIThe interfaceThree moves, each made on the canvas itself.

Enhancement is usually distrust.

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.

A box on the canvas is a character.

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.

Image and video are the same place.

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.

Among the first things it made were five clips from photographs of my father.
Take 01 / 05 Play

Direction

IIIThe engineWhy the interface is free to be this.
05 · Serverless as a design choice

The engineering is why the interface can be this.

Scale here isn’t requests per second. It’s model size and cost per job. The whole app scales to zero on Modal — no keep-alive, no idle bill, no lifecycle to manage. One command installs 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, and weights download on cheap CPU containers — never on a rented GPU idling next to a 26 GB pull.

One file. Four container images. Separate because the CUDA pins genuinely conflict — a compromise is paid forever.

ImageBaseWhy it’s separate
comfyCUDA 13Images and video share it. SageAttention is compiled from source for one GPU architecture.
trainerCUDA 12.4A different transformers era. Merging its pins would make every captioner bump re-litigate training.
caption · parseCUDA 12.8vLLM shells out to nvcc, so its CUDA pin is non-negotiable.
weights cachevolumeSplit by write pattern, not tidiness — committing weights next to captions was the whole cost below.
One captioning job. Two thirds of it was overhead.
023 min
8 min · writing 80 captions 15 min · committing 17 GB of unchanged weights

Fifteen of those minutes wrote nothing new. The model cache moved to its own volume and the overhead went to zero — storage boundaries follow write patterns, not tidiness. The same logic sends a bad file path back as a form error in milliseconds, not a cold start and 35 GB of loading.

Named, not drifted
Six surface steps, four radii.

Six steps replaced 34 white alphas of transcription drift. You can’t subtract consistently from 34 alphas. Named — it’s one line.

Copy is a last resort
Design first, then an icon, then words.

A bare number is not a value an icon can show. Every hyperparameter field carries its name.

The canvas gets the room
The console is capped at 30%.

Enforced in JS. The bar comes out of slack the picture wasn’t using. Only the prompt field yields.

IVThe betWhere it’s going, and the wager underneath.
06 · The bet

The canvas is where the work is done.

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 is written to kill one specific fix — the one proposed in month four, when something doesn’t fit cleanly and the cheapest answer is a panel.

Built for dreamers is not a taglineA prompt is copy-pasteable. A platform converges on a house style nobody chose. A conversation with a picture doesn’t transfer. A model trained on your own photographs learns what you meant. That is why training is Phase 1 here — and the intent stays yours.

Read the source on GitHub
02 · CloudZero

Scaling from a single user to thirty enterprise clients.

Cloud cost intelligence for engineering teams.

Role
Founding designer
Timeline
2018–2020 · Seed → Series B
Partner
Carbon Black · first design partner
Scope
Platform 0→1 · design system · research
The data layer

Structure over raw metadata.

Infrastructure tags carry no consistent owner or logic.

The model

Every resource against its own baseline.

A learned ML baseline detects cost anomalies in your environment in real time.

The instrument

Triage where engineers work.

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.

Signal over noise

Routine drift logs quietly. A departure from baseline pages the on-call in 33 minutes.

Routed by ownership

Every resource carries an owning team. The alert lands in that team's channel, not a company-wide feed.

Triage before the click

Rate against baseline, start time and projected impact travel with the alert.

Likely causes

Changes from the 24 hours before the spike, ranked by cost correlation. The deploy sits two minutes before the inflection.

Scoped to the actionable

My team's changes is the default view. AWS noise sits one tab away.

The loop closes

An acknowledgement here updates the channel. The team sees it is handled.

The outcome

The first FinOps platform powered by ML.

Competitors monitor cloud cost for finance. The platform maps spend to the engineers who create it.

I design systems, not screens.

03 · Cummins · Product, system, process

Accelerating enterprise product cycles.

Synchronizing software design systems with industrial manufacturing cadences.

Role
Senior product designer
Product
Guidanz — engine diagnostics
Scope
Design system · delivery process · one feature end to end
Design-to-ship
3 months → 2 weeks
Linear 3 months
Isolated specifications, sequential reviews, and rigid engineering handoffs.
Living 2 weeks
Design in context → comments → ship.
The receipt

Systemizing product design.

Aligning software component architecture with industrial manufacturing cadences.

Guidanz design system — color tokens leading, type scale, and button states with their token values

The system. Tokens — color, type, spacing, radius — and the components they generate. A design change is a change build already has the name for.

Cummins Guidanz commissioning flow — alternator setup surface

Design in the running product. Engineers build against the live screen, not a spec — what they see is what ships.

Export Wait Comment Revise Re-export The resubmit cycle days per round One living design one working session

The resubmit cycle, collapsed. Days of PDF round-trips become one working session on a living design.

Cummins Guidanz engine monitor — live parameter traces during commissioning

The pilot that shipped. One feature, run end to end on the new cadence — the cadence stuck.

04 · Concept · Sound landscape

An audio landscape shaped by emotion.

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 interface

No titles. No queue. No settings.

The geometry responds to you. There is nothing to operate.

This is not the negative.

Previously — creative direction, Belladonna Productions (L.I.E. · A Guide to Recognizing Your Saints · Transamerica) campaigns for Dodge & Keds · a decade behind a camera this site — hand-built in code with an AI pair