All cases Case 01 — Qonversion
No-Code Builder at Product startup
The No-Code Builder is the tool mobile teams use to assemble and publish their subscription screens without a developer — a product inside the product. I inherited its first version and rebuilt it. The same body of work produced two more things the product runs on — its design system and its onboarding — and both are chapters of this case.
- ~3 weeks — the full redesign of the editor, light and dark at the same time
- The redesign unblocked development — the team could ship features again
- AI image generation inside the builder, with its own prompt history, designed as part of it
- One product, three chapters — the editor redesign, the design system under it and the onboarding
- Product
- No-Code Builder — paywall builder inside Qonversion (B2B SaaS, subscription infrastructure for mobile apps)
- Role
- Product designer — lead interface designer on the product
- Team
- Head of Product, dev lead, CEO, frontend engineers
- Timeline
- Redesign delivered in ~3 weeks, then a year of feature flows
- Deliverables
- Editor redesign in light and dark, the builder's own UI kit, template gallery, multi-page editing, payments, AI image generation
- Result
- 26+ flows shipped within a year
Chapter 01
The editor redesign
The builder I inherited, and what three weeks of redesign changed.
The first version was dark, visually raw and clearly built under time pressure. Underneath, though, it carried a genuinely worked-out system of component states — action types, navigation, purchase and restore behaviour, all specified. The surface was not worth keeping. The logic was.
So the redesign was not a repaint. I rebuilt the editor end to end and drew the light and the dark theme at the same time, so every component was born with both appearances and engineers never had to guess at the second one. It took about three weeks.
AI inside the product: image generation
The image generation task came to me from the Head of Product, and I designed it: users generate artwork for a paywall from a prompt, and the builder keeps a history of those prompts so a result can be found again and iterated on. Designing a generative feature is mostly designing for uncertainty — waiting, failure, versions, and the moment a user wants the previous attempt back.
Who I worked with
- Head of Product — design reviews, marketing analytics behind the decisions
- Dev lead and frontend engineers — brainstorming how features would be built, weighing the better option
- CEO — brought in feature ideas
The file keeps the traces of that work: copy-checked sections, ready-for-dev pages, and dated update logs across the year.
Chapter 02
The design system underneath
The library the builder and the rest of the product are built from: semantic tokens, components in two themes, 275 icons.
- 2 themes — every component drawn light and dark at the same time
- Storybook — the library implemented by the engineering team
- Dated changelog pages — the system was maintained, not shipped once
- Product
- Qonversion — B2B SaaS, subscription infrastructure for mobile apps
- Role
- Product designer — owned the design system end to end
- Team
- Head of Product, dev lead, CEO, frontend engineers
- Deliverables
- Semantic colour tokens, component library in light and dark, typography kit, 275 icons, modal and navigation patterns
- Handoff
- Implemented by engineers in Storybook
- Longevity
- The team later migrated to shadcn/ui and the system carried the transition
A system starts at the colour layer, and the colour layer is not a palette. Every value in this library is a semantic token — Background, Surface, Content, Border, Action — and every token carries both a light and a dark value, so a component never has to know which theme it is standing in.
Action tokens go one step further and carry their states: initial, hover, pressed, disabled. That is the difference between a colour sheet and a system an engineer can implement without asking a follow-up question for every interaction.
Components are built on top of that layer, and each one ships with every variant and every state it will ever need in production. A button is not one rectangle: it is size, hierarchy, icon slots, loading, disabled — twice over, because light and dark were drawn together rather than ported afterwards.
A system that stayed alive
The file carries dated changelog pages — component and colour updates logged as they happened. That is the part that separates a design system from a UI kit: someone has to keep answering questions about it months later. When the engineering team later moved to shadcn/ui, the system had the token and component vocabulary to make that a migration rather than a restart.
Who I worked with
- Head of Product — design reviews, marketing analytics behind the decisions
- Dev lead and frontend engineers — putting the library into Storybook, brainstorming how it would be built, weighing the better option
- CEO — brought in feature ideas
The library was not designed in isolation and handed over: real dashboard pages were pulled back into the file to check the system against what shipped.
Chapter 03
Onboarding for the builder
The task was plain: build the onboarding for the product. What made it arguable was taking four competitors apart first.
- Sign-up and setup rebuilt — OAuth as a first-class way in, setup asking one thing at a time
- Every state drawn — errors, empty states, loading, verification waiting
- Handed over ready for development, in the same library as the rest of the product
- Product
- Qonversion sign-up and setup — B2B SaaS onboarding
- Role
- Product designer
- Team
- Head of Product, frontend engineers
- Deliverables
- Competitor research across 4 products, new sign-up and setup flows with full state coverage
- Method
- Competitor teardown first, design second
The task was to build the onboarding for the No-Code Builder: the path from a first sign-up to a product that is actually set up and connected. Two moments in that path do the damage — email verification, which quietly stops people before they ever start, and the setup itself, which asks for everything at once.
That set the design principles. Make OAuth a first-class way in, so the verification letter stops being a gate. Apply progressive disclosure, so setup asks for one thing at a time instead of presenting a wall of fields. And treat connecting an app and installing the SDK as the real goal of onboarding rather than a step someone might get to later.
In parallel I took apart four competing products — Adapty, RevenueCat, AppHud and Purchasely — using one consistent method for each: sign in, sign up, dashboard. Comparing the same three moments across four products makes the differences arguable instead of decorative.
The new sign-up puts OAuth next to the email form instead of behind it, keeps the form to the fields that are actually needed, and carries its error and validation states as designed screens rather than as a note for engineering.
Who I worked with
- Head of Product — design reviews, marketing analytics behind the decisions
- Frontend engineers — brainstorming the build: what the sign-up could actually do, and the states they needed from me
The analysis was written for the product team in the first place: the case exists because the argument was made in the company before it was made in a portfolio.
Get in touch
Open to product design roles — remote across Europe and Eurasia, or hybrid in Serbia. The quickest way to reach me is email or Telegram.