Nunchux

At a glance

Role
Design engineering intern
Team
Bosung Hwang
Jun Yan
Kuan Wang
Timeline
May to July 2026
Platform
Web

I designed Nunchux’s B2B platform 0→1: the place where teams discover generative models, test them, and ship them through the API.

Every screen started as a blank file, from onboarding and the Playground to analytics and billing. I also made its brand from scratch, built its design system, and designed and coded the marketing site.

The platform is shipped and live, and now powers $1M+ ARR.

Context

One platform and one API for 60+ generative models

Nunchux (formerly Nunchaku AI) builds the infrastructure that optimizes generative models, in the same space as fal and Together AI. Teams get image and video models like FLUX.2 and Kling through one platform and one API: 60+ models across 8 types, from text-to-image to multishot video and avatars.

The people using the dashboard are developers and product teams at other companies. They come in with a job to do: find the right model, see if it’s good enough, wire it into their product, and keep an eye on cost.

Problem

Customers had to message the team to change anything

When I joined there was nothing to redesign: no dashboard, no design system, no brand to build on. The team had the model infrastructure, but customers could only get set up or change a setting by messaging the team directly.

The tension

Someone exploring wants output fast. Someone integrating wants keys, logs, and numbers they can trust. Most platforms pick one and bolt on the other.

Two goals

  1. Website: win customers at first glance

    Show right away that Nunchux is high craft and serious about what it does.

  2. Dashboard: let customers serve themselves

    Everything they need without messaging us, plus proof, in their own numbers, of how much more effective Nunchux has made their work.

Home

Home answers one question: what should I do next?

A three-step checklist (create an account, add a payment method, generate your first media) crosses steps off as you go and can be dismissed once you know your way around. It walks new teams to the two moments that turn a sign-up into a customer, topping up and trying a model, and gives them one clear path through a dashboard with a lot going on.

  1. Quickstart cards split the paths right away

    Get an API key if you’re here to build, open the Playground if you’re here to try, read the docs if you’re here to learn.

  2. Home stays useful after onboarding

    Models sit below the fold in Featured, Bookmarks, and Recently Used tabs, and the bottom carries research posts and a path to dedicated GPU endpoints for bigger teams. Each model card turns per-megapixel pricing into something you can picture, like about 15,800 images for $10.

  3. Credits are always in the top bar

    On a pay-per-use platform, cost should never be something people have to hunt for.

  4. The sidebar follows the three jobs people arrive with

    Modelverse, Developer, and Organization. A solo developer can ignore the admin tools until their team grows.

The Home screen: the three-step checklist, quickstart cards, and models below the fold
Home for a new team: the checklist on top, the three paths under it.

Playground

Complex inputs that feel simple, and a price you can see

The Playground is where teams decide if a model is worth integrating. It has its own nav (Create, API, Examples, Readme, Pricing, Library), so everything about one model lives in one place, including the code to call it once the output looks right.

  1. Image references live inside the prompt

    Uploads become @Image chips with a tiny thumbnail, dropped right into the sentence, so you can see which image you mean instead of matching filenames in your head.

  2. One input pattern for every model

    Switching models keeps the same layout, and a type badge (T2I, I2I, OMNI) makes clear why the inputs on screen fit the model you picked.

  3. Settings are chips

    Quality, duration, and audio sit in one row under the prompt, with Single and Multishot as a toggle at the top.

  4. Limits show before anything fails

    Character count, file types, size limit, and image slots used (4 of 7) are visible upfront.

  5. The price sits next to the result

    Every output shows its per-second price and where it ran, so testing a model doubles as estimating what it will cost.

Type @ to pick an uploaded image; it lands in the prompt as a chip.

Kling V3 Omni

The most complex model, in the same Playground as every other

Kling V3 Omni was the hardest model to bring onto the platform: Single and Multishot modes, a stack of image references, several shots in one generation, plus duration, quality, and audio.

My first explorations put all of it on screen at once. The mode sat in a row of tabs beside Auto and Customize. Every shot had its own 3s duration while a 5s chip under the prompt set another, so the screen showed two durations that disagreed. References lived in an upload box, and to use one you had to remember to type @image1. One version printed “@Image 1” on the thumbnail, but the link between picture and sentence still lived in your head.

Each round removed one of those doubts. The mode became a single Single/Multishot toggle. Duration moved into each shot, so there’s one number to trust. References moved into the prompt as chips with a thumbnail, so you see which image a sentence points to. The chips under the prompt kept only what applies to every shot.

  1. Multishot turns the prompt into a stack of shot cards

    Each shot has its own prompt (up to 512 characters) and its own duration (3 to 10 seconds). Counters like 3 of 6 shots and 11 of 30 seconds show the limits before they bite.

  2. References are shared across every shot

    So the same character and the same cat stay consistent from shot to shot.

  3. Rare inputs sit lower down

    An end frame and images from a URL sit below the prompt, and Advanced Settings stay collapsed until you need them.

Multishot: a prompt and duration per shot, one set of references for all of them.

Explorations

  • Kling V3 Omni in the Playground, exploration 1 of 5

Frame 1 of 5: Kling V3 Omni in the Playground, exploration 1 of 5

Exploration 1 Multishot as a toggle, with a 3s shot card, but a 5s chip under the prompt sets a second duration. References sit in an upload box you call by typing @image1.

Developer tools

Numbers developers can trust

Once a team is building, the dashboard shifts from exploring to monitoring. Analytics also had a bigger job: showing customers, in their own numbers, how much more effective Nunchux has made their work.

  1. Three tabs for the three morning checks

    Usage, Performance, and Errors: am I spending, is it fast, is anything broken. Performance shows P50 to P99 latency, and Errors splits success into server, client, and total, with a count for every status code from 400 to 503.

  2. Spend split by source

    Total Usage breaks into Playground and API Key, so teams can tell testing costs apart from production costs.

  3. Context around every number

    Monthly usage against last month, a date range, and breakdowns by model and by API key.

  4. The receipts behind the charts

    Request History filters every call by status, model, tier, member, latency, date, and timezone. Open any output and glide straight through the rest, instead of clicking out to hunt for the next request. API Keys shows how many of the 10 allowed keys are in use.

The key move

Model latency sits next to total latency everywhere, so customers see how fast the model itself ran on Nunchux: the proof of value analytics was built to show.

Request History

  • Request History: every call in a table with its status code, model, tier, latencies, and timestamp

Frame 1 of 3: Request History: every call in a table with its status code, model, tier, latencies, and timestamp

Brand and design system

One brand from the first visit to the dashboard

Nunchux had no logo, so I made its brand and built its design system from scratch, so the marketing site and the product feel like one company. The system covers both, with 1,000+ component variants.

  1. Quiet surfaces, loud content

    A near-monochrome UI with black primary buttons lets the generated images and videos be the color on the page.

  2. Monospace for machine things

    Model names, @Image references, and type badges use a mono face, so anything you might copy into code reads as code.

  3. Color-coded model types

    T2I, I2I, and OMNI badges each get their own tint, so a grid of models scans by capability at a glance.

The Nunchux wordmark in white on the Nunchux gradient

A tiny detail I love. Developer dashboards usually hand you a gray circle with your initial in it. I wanted the first thing you personalize on Nunchux to show what Nunchux can do. So every avatar you can pick is from a set we generated ourselves, with our models on our infrastructure. Before you write a single line of code, you’ve already held something the platform made.

Landing page

If we can show it, we don’t say it

Nunchux sells image and video models, so a wall of text was the fastest way to lose people. Visuals carry the story, and small interactions give people a reason to keep scrolling.

  1. A before and after you can watch

    The same workload runs side by side: without Nunchux, generations time out and fail; with it, they finish in 0.08s with no errors. The difference is something you watch, not a number you read.

  2. Hover to play

    Model showcases come alive as you hover, so visitors browse real outputs instead of static thumbnails.

Without Nunchux on the left, with it on the right.
Each model card plays its output on hover.

I designed and built the site myself in React and Next.js, and it went live during my internship. Owning it from Figma to production meant the site and the dashboard share one visual language, so someone who signs up lands somewhere that already feels familiar.

Outcome

Live, and powering $1M+ ARR

On the dashboard, I coded part of the front end and the engineers built the rest from my designs. The product couldn’t be shown outside the company before launch, so we tested internally with the whole team.

The website brought in 2,000+ signups and 5+ business customers within 3 months, and the platform launched right after.

ARR the platform now powers
$1M+
Signups in the first 3 months
2,000+
Business customers onboarded through the site
5+
Retained users
300+
Website visits in the first 3 months
20K+
Page views
60K+
Models in the Playground
20+

Reflection

How much one designer can shape a company when they’re trusted with the whole thing.

Nunchux was a seed-stage startup in stealth when I joined, and I got to watch it launch. There was no PM, so I worked directly with engineers and owned my whole area, from what to design next to what shipped.

  1. Start from the business goal, then question every screen

    With no roadmap, I started each design from what it had to do for the business: the checklist exists because topping up and trying a model turn a sign-up into a customer. Then I asked of every control: who needs this, how often, and what breaks if we hide it? That’s how Kling V3 Omni became one toggle, a row of chips, and a collapsed Advanced Settings.

  2. Make confident calls with less data

    In stealth, the product couldn’t leave the building, so every round of testing was with the team. I explained the reasoning behind each decision so engineers could push back, and shipped knowing real customers would teach us more after launch.

  3. Bring engineers the why, not just the screen

    Building the website and parts of the dashboard myself taught me what a design costs to build, so I can tell a team which details are worth the extra week and which aren’t.