Case study · DevTools · 2023

Figma + Chrome Plugin Suitedesign · engineering · less friction

Internal-tooling plugins that automate the hand-off between design and engineering — used across three design teams, saving a few hours a week per engineer, quietly.

3
Plugins shipped
Figma + Chrome
3
Teams using
product · growth · platform
~4 hrs
Time saved
per engineer / week
380
Design tokens synced
across 4 apps
Figma and Chrome plugin suite architecture — two Figma plugins (token exporter and drift flagger) on the left, a design-tokens git repo with a Zod schema as the shared contract in the middle, and a Chrome extension plus the engineering codebase on the right, with CI validating every commit.
Figma plugins ↔ tokens repo (Zod) ↔ Chrome extension · CI-validated at every commit
How it works · step by step

The diagram, walked through in plain language

  1. 1
    Designers work in Figma, like always

    No new tool, no training course. The first plugin sits inside Figma and exports the colours, fonts, and spacing of the selected design as a structured file.

  2. 2
    A shared 'tokens' git repo holds the truth

    That exported file is committed to a small repo on GitHub. It is the single source of truth for which colours, fonts, and spacings the apps may use.

  3. 3
    A second Figma plugin polices drift

    If a designer reaches for a custom colour that isn't in the shared tokens file, the plugin highlights it and suggests the closest official one — preventing a thousand slightly-different shades of grey from creeping into the apps.

  4. 4
    Engineers get a Chrome extension

    Pointed at any design URL, the extension fetches the matching tokens, overlays component boundaries on the design, and produces ready-to-paste code snippets in the right framework (JSX for one app, Vue for two).

  5. 5
    A schema check guards everything

    A Zod schema validates the tokens file at every commit. A typo in the design tokens fails CI on the design-tokens repo before it can break an engineer's build.

  6. 6
    Adopted by three teams, voluntarily

    Each plugin does one thing well. Engineers report ~4 hours a week saved — not on heroic tasks, but on hundreds of fifteen-second interruptions that used to add up.

The brief

A product org with three designers, fifteen engineers, and a velocity problem that was not where anyone was looking. The designers were producing great specs; the engineers were implementing great components; and every week a few hours per engineer were being spent on the transition between the two — eyedroppering hex codes, transcribing spacing, exporting assets by hand.

The ask wasn't a big design system project. It was the boring work in between.

The constraints

  • Adopted, not mandated. Nobody was going to install three plugins if the first one felt like a training course.
  • Consistent design-token schema across Figma and the codebase, versioned, with zero ambiguity at the boundary.
  • Work in the browsers and Figma versions engineers actually run — no VPN-only internal tooling.
  • Keep the plugin surface small. Do two things well, not ten things poorly.

The shape we built

Three plugins, each tightly scoped. One Figma plugin exports a selected frame's tokens (color, type, spacing, radii) into a versioned JSON file committed to the design-tokens repo. A second Figma plugin rides alongside it to flag tokens that drift from the committed set — if a designer reaches for a custom hex that isn't in the token library, the plugin highlights it.

The Chrome extension is for the engineer's side of the wall. Point it at a design spec URL and it fetches the corresponding token snapshot, overlays component boundaries, and produces clipboard-ready snippets in the codebase's component language (JSX for one app, Vue for two). No copy-paste from Figma's sidebar, ever.

Every plugin validates against a shared Zod schema. A token file that doesn't parse fails CI at the design-tokens repo, long before it reaches the engineering side.

What was hard

  • Figma's plugin API surfaces selected nodes asynchronously and inconsistently across file types. Dealing with that required a small adapter layer that the UI code never sees.
  • Chrome MV3 service-worker lifetimes. A plugin that silently dies every five minutes is one support ticket away from being uninstalled. We moved state to extension storage and accepted slightly slower cold starts.
  • Adoption. The tooling was built against one team's specific pain points; rolling it to two other teams required a week of shadowing them and watching what they did differently.

What it does today

Three teams are on the full suite. The design-tokens repo has 380 tokens under version control across four apps. Engineers report roughly four hours a week saved per person — not on any single heroic task, but on hundreds of fifteen-second interruptions that used to add up.

What I'd do differently

I'd have instrumented adoption from day one. We had anecdotes for six months before we had numbers, which meant prioritization discussions about the plugins were vibes-based arguments. A tiny telemetry line — opt-in, anonymous, counting invocations — would have changed the conversation in week two.

Stack
  • TypeScript
  • Figma Plugin API
  • Chrome Extensions MV3
  • Vite
  • Zod (token schema)
More work

Continue the tour

Algo Trading · 2025

Order Router & Execution Engine

$80M routed · 38ms p99 · zero downtime

A trading desk's chart fires a buy or sell signal; this system safely turns each signal into a real order at the right brokerage in milliseconds — while quietly making sure they never trade more than they meant to or place an order they can't afford.

Read case study
AI / LLM · 2024

AI Content Platform

10K daily users · 12 models · 35% lower cost

A SaaS that generates marketing-style writing (articles, ads, product copy) for thousands of paying users — intelligently picking the cheapest AI model that can do each job well, and switching providers in seconds when one of them goes down.

Read case study
Fintech · 2024

Fintech Reporting Dashboard

200M rows · 60% faster · sub-second queries

A financial dashboard that used to take seven seconds to show 'this month's profit and loss' now takes half a second — because we moved the heavy reports off the live database without changing a single number the customer's accountant sees.

Read case study
SaaS · 2024

JobbyAI

resume scoring · job match · interview prep

A free web app that helps job seekers in three ways: it scores their resume, ranks how well they match a job posting, and prepares them for the interview — all using a single AI model behind the scenes, with no signup required to try it.

Read case study
Algo Trading · 2023

Quant Backtest Harness

50K parameter combos · 3 engines · one CLI

A single command-line tool that lets a quant team test trading strategies on three different simulation engines without rewriting any strategy code — and then compares the results in one shared format, so 'which strategy is actually better' becomes a question with a real answer.

Read case study
Fintech · 2023

Accounting API Sync

4 providers · one trait · zero drift

A behind-the-scenes service that keeps an accounting SaaS in sync with QuickBooks, Xero, Wave, and AccountEdge — when a customer edits an invoice in either place, the change shows up on the other side within 30 seconds, without ever silently overwriting work.

Read case study
AI / LLM · 2025

Multi-LLM Agent Runtime

OpenAI · Claude · Gemini · Grok

A small, stateless service that lets non-engineers wire up AI 'agents' (which can call tools, look things up, and reply) — running across four AI providers so a single outage never takes a customer offline, and replay-able to the byte for debugging.

Read case study
Algo Trading · 2024

TradingView ↔ Plaid Bridge

webhook in · broker-native out · 4 signal types

A bridge that takes 'buy' or 'sell' alerts from TradingView charts, checks the user actually has the cash via their bank link (Plaid), then sends the order to their brokerage — all in under a fifth of a second, so the price they wanted is still the price they get.

Read case study

Have a similar problem?

If this shape of engagement fits what you're working on, I'd be happy to scope it.