Case study

Scaling design-to-code pipelines beyond custom solutions

How we shifted Pipelines from a developer-centric feature into a configurable product experience.

Role
Product Designer
Team
Head of Product, Engineering
Timeline
2025
Context

The challenge

Design-to-code pipelines were highly flexible, but even simple export customizations required users to fork and maintain custom exporters.

Changes like naming conventions or color formats could require custom code and ongoing maintenance.

What should have been configuration had become a developer workflow, increasing onboarding friction and long-term maintenance for both customers and Supernova.

Users were unable to easily customize exports without technical work.
The legacy workflow.

The key insight

Most users weren’t creating entirely new exporters. They were making small adjustments to existing ones.

This led to a shift in the product model:

Configuration instead of customization.

The goal was to make common tasks easier without taking away the flexibility of the underlying system.

Key design decisions

1. Simplifying pipeline creation

The original workflow reflected the underlying system architecture more than the user’s mental model.

I made the following changes through several iterations:

  • Removed the artificial “Install Exporter” step
  • Reordered the flow around selecting an exporter first
  • Moved “Event” step later in the journey
  • Surfaced guidance directly in the interface
  • Automatically generated pipeline names
( v1 ) The original pipeline creation flow.
( v2 ) Interim design improvements.
( v3 ) The final redesigned pipeline flow.

2. Making customization configurable

The most common exporter modifications became configurable product features rather than requiring custom code.

This reduced maintenance for most customers, while preserving custom exporters for advanced use cases.

Configuration of exporter during pipeline creation.

3. Building confidence with previews

I also designed preview functionality for exporters, allowing users to inspect generated code or assets before ever running a pipeline.

4. Making pipelines editable

Past UX decisions (selecting the exporter during pipeline creation) combined with external platform constraints previously required us to block users from editing a pipeline once it was created.

During this transition, we reworked the delivery step to allow for editing a previously added repository in the event that it can no longer be fetched.

This was long overdue, but it was also crucial to allow users to tweak configuration without having to create and configure a new pipeline each time.

Editing a pipeline.
Editing delivery destination and fallback.

5. Supporting platform evolution

As newer exporters were introduced, I designed the migration experience for legacy exporters. Existing pipelines continued working while new pipelines adopted the improved architecture.

Informing the user of deprecated exporters.

The result

The redesign shifted design-to-code pipelines toward a more approachable product experience.

Users could configure common exports without writing code, preview outputs before exporting, and benefit from improvements to shared exporters instead of maintaining custom forks.

This configuration model created a scalable foundation for future exporters through reusable interaction patterns.

Example of pipeline configuration in action.