Engineering
Building an AI-Native Design System for Forward-Deployed Teams
Obin UX
•

Forward-deployed teams have to turn customer-specific requirements into working product experiences quickly. Each client introduces differences, but rebuilding the interface around those differences makes delivery harder to scale or sustain.
At Obin, a team rethinking a new AI native review workflow for a large enterprise client needs to focus on what the customer needs are, what evidence they need, and which actions need to happen.
If, instead, they spend time defining page layouts, button behavior, and loading states for every workflow they are not going to be able to move at the velocity needed in these forward deployed environments. The difficulty is deciding which parts of the experience are shared and which parts are customer-specific.
That is the problem we’re designing our system around at Obin.
Faster prototypes still need a path into the product
AI-assisted tools make it easier to put an idea in front of a customer. The team can explore a workflow, get feedback, and change direction before investing in the full implementation.
To ensure we’ve set our teams up with the right starting point, we aligned on an approach very similar to Vercel. Use shared tokens, composable components, and registries to bring a product’s design system into AI-assisted prototyping. This gives teams approved building blocks to work with.
For a forward-deployed team, the prototype is one step in delivery. The work still needs to fit the application, accommodate the customer’s requirements, and remain maintainable as the product changes.
If a prototype introduces its own styling, components, and interaction conventions, the team inherits another implementation to reconcile. Our design-system work is about reducing that reconciliation.

The practice that makes this workable is a clear order of reach. When a team builds, whether by hand or through an AI-assisted tool, they reach for the highest layer available. First, the design system's own components: built, tested, and documented, with the platform's decisions baked in. Where a component does not exist yet, the fallback is a base primitive already wired to the shared tokens, so it renders on brand by default. And where something genuinely new is needed, it is built from the tokens directly, never from raw values, which makes it a candidate for promotion into the system later.
The point of the layers is that there is no dead end. A team never has to choose between staying on brand and continuing delivery, and the system does not need to anticipate every component a customer engagement will require; it needs to guarantee that whatever gets built starts from approved material.
Give teams a starting point at each level
At Obin, we organize product experiences around solutions—workflows such as loan origination and claims processing. These sit between the shared platform and an individual customer deployment.
That gives us three places to support reuse.
The platform supplies foundations and components. Typography, semantic colors, spacing, buttons, and layouts belong in shared packages. Our component work captures behavior alongside appearance: how a card grid responds to available width, how button sizes coordinate padding and text, and how interaction states behave.
Solutions assemble those components around a particular kind of work. A case-handling experience and a memo-writing experience need different compositions. Existing solution screens provide a starting point; making their reusable patterns discoverable as individual components is a next step for the system.
Customer deployments adapt the solution. Customer and solution themes already support scoped visual differences. Requirements specific to a customer’s process can be implemented within the relevant workflow without immediately becoming platform-wide behavior.
Consider a customer who needs an additional review step. The team can start with the solution’s existing review experience and build the new step using shared controls. The customer’s review rules stay scoped to that implementation.
If the interaction later proves useful across engagements, it becomes a candidate for a shared solution pattern. If the work improves a general-purpose control, that improvement can move into the platform.
The scope of reuse follows the scope of the need.
Make the building blocks usable in delivery
The fallback layer above only works because of deliberate implementation plumbing.
Our implementation work connects the visual foundation to the product through token mappings, theme integration, component packages, and consistency checks. This is especially important where different UI libraries coexist.
For example, connecting shadcn variables to the shared tokens allows those components to consume the platform’s visual foundation. Theme integration must also account for MUI surfaces so a mode change works across the application.
These connections need verification. In one implementation, dark mode changed some surfaces while MUI components remained light. Synchronizing the theme mechanisms addressed the mismatch.
Adoption rules need the same attention. A check requiring shared loading components initially applied to packages that could not import the approved replacement. The check was reduced to a warning until the dependency path was available.

Enforcement goes below the component level too. The rules that hold the system together live in the codebase as lint checks, not in a guidelines doc: no raw color values, no off-system typography, no arbitrary pixel values where a named token exists. Whether it's a teammate or an AI tool reaching for a hex code, the check stops it before review instead of someone catching it after. Tests do the same for the facts the system depends on, like control heights and hardcoded colors in shared components, so a regression fails the build rather than shipping quietly. Consistency shouldn't depend on anyone remembering the rules, especially in the era of minimal human intervention.
The lesson for our system is: distribute the component, document its use, make it reachable from consuming applications, and then enforce adoption. Forward-deployed teams should have a clear way to satisfy a standard while continuing their delivery work.
Show Forward Deployed Pods what to use—and reviewers what changed
Pods need to see the components that are available for them to use. They need working examples that show the available sizes, states, and compositions.
Storybook provides that reference for shared components. It gives a team a place to inspect behavior before using it and gives UX a place to review changes independently of a customer workflow.

The assembled experience needs a second level of review and current examples serve another purpose. They give teams concrete material to use with their tools. Keeping those examples aligned with the shared packages reduces the chance that a prototype starts from an outdated implementation.
Bring useful customer work back into the system

Forward-deployed pods encounter requirements the shared system of solutions, platform and design system does not yet cover. They need room to build and validate those experiences.
We want promotion into the design system to be a deliberate step after that learning:
Identify the behavior that helped the customer.
Separate it from the customer’s terminology and business rules.
Decide whether it belongs in a solution pattern or a platform component.
Add an example and appropriate checks so another team can adopt it.
Leveraging our integration to storybook we plan to enable which components are used more frequently across solutions so that agents can learn to pick the right components through a weighted metric as early as the prototyping phase.
It lets immediate customer work proceed while creating a route for proven improvements to reach other teams.
Measure the work left after the prototype
The first prototype shows how quickly a team can express an idea. The actual implementation shows whether the design system is helping delivery.
We want to measure how much of the prototype survives into the application, how often teams recreate existing components, and how much review time goes to recurring visual corrections. We also want to understand whether an improvement from one deployment becomes easier to use in the next.
Our foundations, shared components, themes, and review tooling provide parts of that system today. The next task is connecting them into a dependable workflow for forward-deployed teams.

Success is a team starting with an existing solution, adapting it to a customer’s needs, and reaching a working experience with less rebuilding.

News
Aug 25, 2026
Obin AI Brings Production-Grade Financial Agents to Google Cloud's Gemini Enterprise for Financial Services
The Obin Financial Agent is now available in Gemini Enterprise for Financial Services. Here is what it already runs in production at one of the largest U.S. life insurers and at a private credit fund with more than $500 billion in assets.

Engineering
Aug 20, 2026
Optimizing AI-Generated Content
Traditional A/B testing breaks down when you don’t know which characteristics actually make content perform better. Optimizing to the Eval solves this by generating competing outputs, choosing winners through human judgment, an evaluator, or real-world outcomes, and using those preferences to tune the model with DPO. The model never needs to learn why one style wins—it simply learns to produce more of what the evaluation rewards. The catch is that your evaluator becomes the product specification: if it reflects the outcome you actually care about, preference tuning can continuously improve quality; if it rewards the wrong proxy, the model will learn to game it.