( Independent Practice / August 2026 )
Bluedash AI Conversion
Converted the platform's development from a manual design-then-handoff process to an AI-based workflow in which design and frontend happen simultaneously, removing the specification, the handoff, the interpretation gap and the review-and-correction round trip entirely
- My role
- Freelance UI/UX Designer
- Timeline
- August 2026
- Category
- AI Workflow / Design Process
- Status
- New design, delivered
Tools Claude Code, Claude Skills, Claude subagents, Next.js 16, React 19, TypeScript, Nest.js 11, Figma, Figma MCP, Hugeicons Pro, npm workspaces, pnpm
Generated schematic, not a screenshot. Real imagery to follow.
( The account )
Context
Bluedash is an AI-native business operations platform whose Version 1.0 interface I designed end to end as a separate engagement, 190 or more screens across a multi-module workspace where autonomous agents run marketing work under a conversational command layer. That design was finished. None of it existed in code.
The conventional next step is the handoff. The Figma goes to an engineering team, they interpret it, they build something close, and the designer spends the following months reviewing what came back and writing up the differences. Everyone in the industry has normalised that loop, and it is where the schedule goes.
On this project it never happened, because the way the work gets made was converted. Design and frontend stopped being two sequential activities separated by a handoff and became one activity, performed by one person with Claude Code. There is no specification, no handoff meeting, no interpretation gap and no correction round trip, because the person making the design decision implements it in the same session. In ten days, between 2026-08-10 and 2026-08-19, the design became a running application: a fifteen-module Next.js frontend, a Nest.js api and a documented design system, around 651 source files and 106,000 lines, with more than 45 logged decisions and 128 change entries recording why each part is the way it is.
This case study is about that conversion. What it changed, what it made possible, and what had to be built to keep it safe on a product whose design was ahead of its documentation.
The problem
The handoff exists to solve a real problem, which is that the person implementing does not know what the designer knows. It solves it badly. A designer produces an artefact that is not the product, a developer reconstructs the product from that artefact, and the difference between the two is discovered afterwards. Every project pays the tax twice, once in the reconstruction and once in the correction rounds, and the correction rounds are the ones cut when the deadline arrives. The product ships slightly worse than the design because the last round never happens.
Removing the loop is straightforward in principle now, since one person can decide and implement in a single motion. In practice it introduces a different failure, and this is the part that makes the conversion hard rather than automatic. An assistant that can build a screen in twenty minutes will also invent one in twenty minutes, and once both are committed they are indistinguishable. It gets worse rather than better when the design is good, because a plausible screen sitting beside fourteen real ones reads as real.
Bluedash made that concrete in three ways.
The design was ahead of the documentation. Figma canvases existed for some modules and not others, Business Brain had been supplied with zero screenshots, and the information architecture was an unsigned deliverable. A build that filled those gaps with reasonable guesses would demo beautifully and be wrong in ways nobody could find later, because a guess written into a component looks exactly like a decision once it is committed.
Speed removes the reviewer who used to catch drift. When one person designs and builds at pace, every screen is an opportunity to write a value rather than use one. Nobody is reading the diff. The drift is invisible per screen and fatal in aggregate, and a padding written into a screen is not a small mistake, it is a design question answered by nobody and now shipped.
And real supplied frames contain inconsistencies: a gap that is 20px on one screen and 24px on the next, a control drawn at two heights, a label capitalised two ways. An assistant tidies them up helpfully. Every one of those tidyings is a design decision made by a machine, in silence, against a document the product owner signed.
What I did
The conversion has two halves, and the second is what makes the first safe.
The first half is collapsing design and implementation into one activity. There is no Figma-to-code handoff on this project because there is nothing to hand off. A design decision is made and implemented in the same session, in the real components, in the real product, against real data, real breakpoints and both themes. The Figma stays the source for the screens that were drawn, read directly through the Figma MCP at the moment of building rather than re-expressed as a specification for somebody else. Everything the frames do not cover, and there is a lot of it, is designed in running code: the empty state for every surface that can hold nothing, the dark theme, the motion, the exit animations, the toast that confirms a committing action. The design system reference ships as a live route inside the application rather than as a document, so what a component does and what the reference says it does cannot drift apart, because they are the same build.
The second half is the machinery that keeps that pace honest, and on this project it is built around one rule: nothing enters the product that cannot name its source.
Provenance is carried in the artefact rather than in memory. Each of the design system's 126 catalogued components names the frame or export it came from, and a component extracted from a product screen is flagged in the documentation as a step weaker in provenance than one taken from a component sheet, because the first is a reading and the second is a specification. Every screen file opens by naming its Figma canvas, its frame numbers, the module research it was read through, and what those frames leave unanswered.
Where the source says nothing, the product says nothing, visibly. A module with no supplied screens got a deliberately blank route: no title, no description, no empty state artwork, because each of those would assert something about a module nobody had agreed, and the only control is the way back. Business Brain sat behind that placeholder for nine days with an owned open question against it, and was built the day its Figma canvas arrived, not before. Controls whose effect nothing evidences are drawn and left inert rather than given an invented behaviour.
Defects in the supplied frames are transcribed and catalogued rather than repaired, because repairing a drawn inconsistency is a product decision and not a build one. The exception is written down too: a defect a module's own research already calls a defect gets fixed, and where the fix would be a product decision it ships as drawn and goes on the list.
Research and code are bound by a single seam. The module registry is taken from the research folder names, the workspace navigation is generated from it, and the api throws at boot if its feature module count disagrees, so there is no path where the product and its documentation drift apart about what exists.
Around that sit the working rules, fifteen documents with the design rulebook as the one to read before building any screen. A screen never invents a visual element, and the test for whether something is a component is not whether it has been used twice but whether a second screen would want it. Every surface that can hold nothing gets an empty state in the same pass. Motion is a token chosen by what the motion does rather than by the nearest number, and a close is not the open played backwards.
Outcomes
- Converted the platform's development from a manual design-then-handoff process to an AI-based workflow in which design and frontend happen simultaneously, removing the specification, the handoff, the interpretation gap and the review-and-correction round trip entirely
- Took a finished Figma design to a running Next.js 16 and Nest.js 11 application in ten days through that workflow, around 651 source files and 106,000 lines, fifteen modules each built from its own supplied Figma source, across five dated releases to version 0.5.0
- Moved design judgement onto working interfaces rather than static frames, so empty states, dark theme defects, overlay exits and confirmation patterns were designed at the moment of the decision instead of deferred, including three defects that only exist in a running thing and nineteen committing actions that needed a confirmation nothing in the Figma drew
- Extracted a design system out of the Figma and shipped its reference as a live route inside the product, 126 catalogued components in 29 families plus token families for colour, typography, spacing, effects and motion, so the reference and the components it describes cannot drift apart
- Made speed safe through provenance rather than review, with every component naming its source frame, every screen file naming its Figma canvas and frame numbers, and screen-derived components flagged as weaker provenance than sheet-derived ones
- Kept generated product design out of the build entirely, shipping deliberately blank routes for modules with no supplied screens, leaving inert every control whose effect nothing evidenced, and logging each gap as an owned open question
- Kept design authority with the product owner by transcribing the defects in supplied frames and cataloguing them rather than silently repairing them, repairing only what a module's own research already called a defect
- Bound research and code through a module registry generated from the research folder names and asserted at api boot, so the product's documentation and its navigation cannot disagree about what modules exist
- Held drift out of the screens with a design-system-first rule triggered by whether a second screen would want a thing, visible as eight design system objects arriving with Sales, five with Marketing, and five plus six extensions with Agents
- Produced an auditable record alongside the build, more than 45 decisions with their rejected alternatives, 128 change entries, fifteen rule documents and a research tree of 159 documents behind three phase gates with named sign-offs
What I learned
Removing the handoff does not remove the work it was doing, and the second pair of eyes is the half nobody accounts for. The specification and the review round compensated for the implementer not knowing what the designer knew, and merging the roles solves that cleanly. What it also removes is the developer who gets stuck: on the module with no screens, on the empty state nobody drew, on the two values that disagree. Getting stuck is a quality mechanism, and an assistant never does it. It proceeds. Every safeguard in this project is a manufactured version of getting stuck, and they cost very little next to what they prevent.
Speed makes restraint the expensive skill. Building a screen is now the cheap part, so the judgement that matters moved entirely to deciding what not to build, and the tooling gives no help with that at all. The temptation never looks like a mistake, because a generated screen is prettier than a blank one and a tidied inconsistency is tidier than a transcribed one. Writing the restraint down as rules is what made it survive: a rule with a judgement call attached becomes a judgement call, and under time pressure that resolves the same way every time.
The biggest gain was not the time saved, it was where design decisions get made. Judging a screen as a running interface rather than a frame changes what you notice, and most of what this project designed was invisible in the Figma: every empty state, the whole dark theme, the exits that no static file draws, the confirmation nineteen actions needed. In a handoff those either become correction rounds or they never happen, which is the specific way products ship slightly worse than their design.
The honest caveats are real. The frontend has no test suite, and while strict types, the boot assertion and two purpose-written check scripts catch the failures this workflow actually produces, that is a narrower net than tests and I would not run a project with a data layer this way. This workflow also suits one person who can hold both roles, and I do not know how it behaves with two designers and three engineers, where the handoff is also a coordination mechanism rather than pure overhead. Nothing here has been in front of a user: the conversion changed how the product gets made, not how it gets validated, and the supervision patterns the design proposes still need testing with real operators. And the information architecture is still unsigned, which is the phase gate working as designed and also a reminder that this workflow makes building fast without making agreement fast.
( Tags )
- AI Workflow
- Design Process
- Design Operations
- DesignOps
- Design to Code
- No Handoff
- Design Automation
- Design Systems
- Design Tokens
- Knowledge Management
- Product Knowledge
- Information Architecture
- Claude Code
- Claude Skills
- Next.js
- React
- TypeScript
- Nest.js
- Figma
- AI Product Design
- Full-Stack
- Freelance