~/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.

Training, images, video and datasets in a single application that 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 · PyTorch · serverless GPU
Status
Deployed and running · open source

Four phases shipped: LoRA training, image inference, datasets and captioning, and video across two model families. The source is on GitHub.

Why it exists
Old photographs in motion.

Two years of diffusion research. The first thing it made was a gift for my father.

Take 01 / 05 Play

Direction

The problem
Three subscriptions and a terminal window to make one video.

Weights in one service, the interface in another, datasets in a third. Each one a login, a bill and a format. Making the thing is the smallest part of the day.

Install
Nothing to configure.

No secrets, no CLI setup, no account. The one token it needs is pasted into the UI and stored where the app can reach it.

Deploy
One command, one URL.

modal deploy app.py builds the images and returns an address that is the entire application — interface, API and GPU jobs.

Run
Your compute, your storage.

Weights land on your own volume, chosen explicitly. Nothing downloads on its own, and the folder layout is the contract — datasets are images with text beside them.

The console · try it
The controls rebuild themselves.

Two families of video model that genuinely differ. Rather than one panel with half its controls quietly inert, the composer is rebuilt from what the chosen model says it reads. Change the model, or change the medium on the chip inside the field — the prompt survives both.

Model

a red paper boat drifting across rain-flooded pavement, slow push in, overcast daylight

Wan 2.2 A14B 16:9 720p 5s random H100 + LoRA Two experts · silent Generate
Negative prompt
euler simple 20 3.5 shift 8.0 high noise → low noise

A control that is present but ignored is worse than one that is absent — it is the interface making a promise the model will not keep. Below, the real bar in the deployed app.

Before the GPU hours
Most training runs fail in the dataset.

Not in the trainer. A caption set that repeats itself teaches the repetition, and you find that out eight hours and a GPU bill later. So the dataset screen counts what the trainer is actually going to read.

80 of 80 carry the trigger word, 80 of 80 are captioned, median seventy words. The list on the right is every clause appearing more than once — even lighting five times, with soft five times. That is the overfitting warning, delivered before the run instead of after it.

Captions are written by a vision model as prose, not tags, because the text encoders these models use parse grammar.

The decision nobody sees
Image and video were never two places.

The decisions that matter most leave no trace. There is no video mode to enter, no project type to choose at the start, and nothing announcing that two systems were joined — one canvas, one prompt, one gallery. Done properly it is unremarkable, which is why it has to be claimed here and nowhere in the product.

The switch lives inside the prompt field rather than in the chrome, because which one you get is a property of what you're making, not an address you navigate to. What differs between them is only the options. The canvas holds the screen either way — options sit in a bar under the picture, never a rail beside it, since a settings column costs the image 384 pixels of the one dimension it cannot get back.

Concept · not built
When the latency goes, the panel should go with it.

Where this goes once the models are fast enough: a gesture-driven canvas for iPad. Nothing is labelled and everything is live — you touch her face to change her. What the machine invented is marked differently from what you actually said, and rerolling it costs nothing.

Speculative, and deliberately labelled as such. What makes it a design rather than a mood board is the list underneath it.

How it stays empty
A veto list, not a manifesto.

Eleven sentences, each written to kill a specific thing when the cheap fix gets proposed. If a sentence has never vetoed anything, it isn't earning its place — cut it.

The failure to guard against isn't the model, or latency, or scope. It's month four, when something doesn't fit cleanly and the cheapest fix is a panel.

Under the surface
Never rent a GPU to do CPU work.

Scale here isn't requests per second. It's dataset size, model size and cost per job — so the decisions that matter are about what runs where.

1file
interface, API and GPU jobs
50%
less weight memory, quantized to FP8
0
accounts, secrets or CLI setup
One captioning job, before the storage was split: 23 minutes.
023 min
8 min · writing 80 captions 15 min · committing 17 GB of unchanged weights

The model cache moved onto its own volume and the job went back to eight minutes. Storage boundaries follow write patterns, not tidiness. The same logic puts downloads, thumbnails and validation on cheap CPU containers — pulling 26 GB while an A100 sits idle is money burned, and a bad file path should be a form error in milliseconds rather than a cold start and 35 GB of loading before it fails.

Design philosophy
The best design leaves no trace.

The work I’m proudest of here is the work nobody will notice — two systems joined so completely that no one thinks to ask when they were separate. Good design is unobtrusive — Dieter Rams. Underneath sit three words that settle the arguments, in priority order when they conflict.

Antifragile
Errors diagnose themselves.

A missing model prints the volume, the exact path it wanted and what is actually there — the three facts that separate a wrong profile from a typo. Any error you can hit twice should have explained itself the first time.

Scalable
Keep the polled thing small.

Job records carry filenames; bytes are served off the volume by their own route. A dictionary polled every two seconds must never grow with the size of the result.

Future-proof
Don't build a second way to do the first thing.

Adding a second family of video model added no backend — it reuses the container, the warm process and the same job contract. What is per-family is a graph builder and a row in a table.

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.
03 · Cummins
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.

PILOT PROPOSAL — DESIGN → SHIP Two paths from design to ship. Today — 3 months SpecReviewHandoffBuildQAShip Proposed — 2 weeks design in context → comments → ship Proposed: prove it on one feature.

An ask sized to a yes. Months of meetings across teams, managers, and directors — distilled to one pilot feature.

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