Use case · Figma → Flutter
The only Figma→Flutter pipeline that
measures its own output.
Every other tool in this space generates code and stops — you find out whether it actually matches the design by running it, eyeballing it, and patching by hand. InkPal closes the loop. It runs your app, pixel-diffs the rendered output against the Figma source, and keeps refining until the gap closes.


inkpal_figma_converge, typical runs close to 92%+. Real numbers from our benchmark/, not marketing claims.Architecture
Six stages. One loop.
Deterministic pipeline. No LLM calls from inside the engine — every ambiguous decision is surfaced as structured data for your AI agent to reason over.
Import & audit
A–F grade before you generate
Fetches the Figma file, scores it on 7 dimensions (auto-layout coverage, named components, text styles, Variables, prototype links, breakpoints). Returns grade + structured fix list. Gate conversions on require_grade='B' in CI.
IR pipeline
5 passes over the node tree
Figma JSON → IR tree → visibility-filter, icon-flatten, wrapper-collapse, autolayout-synthesis, semantic-detect. Auto-escalates between DEFAULT_PASSES and FULL_PASSES based on absolute-positioning ratio.
Semantic detection
Heuristic + name-hint cross-validation
Dimensional heuristic classifies buttons/chips/textfields/cards by geometry + fills. A second pass matches layer names (/btn|cta|input|card/i) and boosts confidence on agreement, flags disagreement in ambiguous_nodes[] for the caller's LLM to resolve.
Theme + chrome + routes
One-shot project scaffolding
Emits lib/theme/app_colors.dart + app_typography.dart from the design tokens. Wraps screen-sized output in Scaffold + SafeArea. Writes lib/router/app_routes.dart from Figma prototype links. Detects your state framework (Riverpod/BLoC/Provider/GetX) and returns a wrapper_hint for the caller.
Emit
All 157 MCP tools share the same engine
CSS-to-Flutter emitter with feature flags for Tailwind class hinting, Google Fonts resolution, RichText spans, trig-based gradient alignment, Material widget semantic emission. Deduplicates repeated components. Returns the Dart file + a polish_hints[] block so your agent can extract sub-widgets, consolidate decorations, reference theme colors.
Converge (the moat)
Nobody else has this
Runs your Flutter app, screenshots via inkpal_bridge, pixel-diffs against the Figma PNG, identifies worst regions, tries alternate IR strategies, reloads sources via VM Service, re-measures. Stops on convergence, stuck detection, or iteration cap. Safety caps keep runs under 2 min.
Generate. Measure. Refine. Repeat.
Most Figma→Flutter tools are one-shot. They emit code, you pray it renders. InkPal runs a convergent loop through inkpal_bridge so the pipeline can see what it actually produced — pixel by pixel — and correct course.
loop 1..5: regenerate Dart with strategy[n] # default/flex → full/flex → …/stack → full/stack VM-service reloadSources # Flutter hot-reloads bridge.screenshot() # live render, PNG regional-diff vs Figma PNG (8×6 grid) # per-cell Δ if Δ < target or stuck: break # converged, or <0.5pp improvement over 2 iters else: next strategy report: iterations[], best_match_pct, worst_regions, worst_figma_nodes
Every competitor could copy the deterministic pipeline. None can copy this loop without shipping their own runtime plugin with pub.dev adoption — and we have a two-year head start.
How it compares
Feature parity matters less than capability parity. Here's what the market actually offers today.
| Capability | Locofy | Anima | Claude/GPT | InkPal |
|---|---|---|---|---|
| Paste Figma URL → runnable screen | ||||
| Audit file quality before converting | ||||
| A–F grade + fix suggestions | ||||
| IR-optimized widget tree | ||||
| Theme extraction (AppColors + AppTypography) | ||||
| State framework detection + wiring hint | ||||
| Route stubs from prototype links | ||||
| Runtime pixel-diff vs Figma source | ||||
| Iterative refinement (convergence) | ||||
| Prototype flow verification | ||||
| Structured output for caller's LLM | ||||
| Published Dart bridge (pub.dev) |
Methodology: based on publicly documented features as of 2026-04-24. Each tool's published docs + a hands-on test on the same Figma file. We'll publish the shared-file leaderboard once the benchmarks finish running.
Run it on your Figma file.
Free Dev tier gives you a starter tool set and 2 FABRICATE screens a month. No credit card required.