Case Study

Figma Reference Finder

Semantic search across ~40,000 design frames, conceived, designed, and built with AI.


The Problem

Designers were spending hours searching for their own work.

At a large enterprise with six design teams, hundreds of Figma files, and years of accumulated design work, there was no way to search across it. Finding a reference meant knowing where it was, or clicking through folders until you gave up.

6
design teams, zero shared search
800+
Figma files accumulated over years
~40K
design frames with no way to search them

The trigger: an urgent request from my design manager, references needed for an RFP, fast. Hours of manual searching later, I realized this wasn't a one-time problem. It was a system problem.

My role   Identified the problem · Designed the concept · Built the tool with AI · Rolled it out to the team


The Insight

Don't solve the request. Solve the class of problem.

What was asked

"Help me find references for this RFP."

One person. One deadline. One search.

What I heard

"Our design knowledge is unsearchable."

Six teams. Years of work. Every designer, every week.

The vision A search box for our entire design library, type what you need in plain language, get the best matching screens in seconds.


My Approach

I didn't use an AI tool. I built an AI team.

A multi-agent system inside Claude Code: one orchestrator directing five specialist subagents, each with a defined role.

You (Gili)
Direction and judgment
Main session, Leader
orchestrator
Developer
Writes code, runs tests
Sonnet
Tester
Runs tests, finds bugs
Sonnet
Reviewer
Security and quality review
Sonnet
Ops
Git, docs, summaries
Haiku
UX/UI
Design review against heuristics
Opus

The approach I direct the leader. The leader delegates. Each agent stays in its lane. Judgment stayed with me.


The Challenges

The data was unsearchable.

Most design frames have meaningless names like "Frame 42". Search them, and you get garbage.

Before
"Frame 42"
Vision AI looks at the screen
reads the actual content, not the name
After
"Billing Summary Screen"

The solution AI names the screens designers never did, so nothing is invisible to search.

People don't search with our words.

Someone searches "receipt," but the screen is named "Payment Confirmation." A miss, even though it's exactly right.

The screen
"Payment Confirmation"
AI generates the synonyms
"receipt" "transaction success" "checkout complete" "order paid" "payment done"

The solution AI gives every screen the words real people would actually search for.


What I Built

Semantic search for ~40,000 design frames.

Phase 1, Indexing (one time)

Design Library
~400 files, ~2,200 pages, ~40,000 frames
Vision AI Naming
names generic frames
Keyword Enrichment
adds synonyms
Vector Database
stores meaning

Phase 2, Searching (every query)

Plain-English query
"payment screen"
Same AI Model
understands intent
Ranked results
with links to Figma

Built with React · Node.js · vision AI · vector database · Figma API · deployed via Docker


The Product

Figma Reference Finder, empty search state with a plain-language search box.
The empty search state, running on the pilot index: 260 files across two teams, ahead of the full rollout.
Figma Reference Finder, ranked results view showing matching design screens.
Ranked results, each linking straight to the frame in Figma.

The Challenges

It lived on my laptop.

A tool only one person can run isn't a team tool. To matter, it had to be something anyone could open.

Before
Runs on my Mac
One machine. One user. Me.
deployed
After
Live on a server
Any designer, any browser, no install

The solution I shipped it, from a prototype on my desk to a live tool the whole team can use.


Impact

People used it before it was even a product.

It never left my laptop, yet teammates started coming to me to find their references through it. No deployment. No rollout. No announcement. Just a draft tool that solved a real problem, and word spread on its own.

Real demand

people sought it out unprompted

It worked

results were good enough for real deliverables

Worth shipping

clear signal to deploy for the whole team

The takeaway The best validation isn't a metric. It's people using your unfinished work because they need it.


The Evolution

Then I pushed it further. I gave it the whole document.

The search box stayed exactly where it was. The document upload sits underneath it, using the same index behind both.

Figma Reference Finder landing page, now with a requirements document upload area beneath the search box.

The addition Drop in a requirements document instead of typing one query at a time.


The Evolution

One question at a time wasn't the job.

Real design work does not arrive as a single question. It arrives as a requirements document with a dozen needs inside it. Answering one meant reading a need, turning it into a query, judging the results, then starting over.

The trigger: a requirements document landed for a project I was working on. I could search it need by need, or I could hand the tool the whole document.

Requirements doc
PDF or text
AI breakdown
splits it into needs
Vector search
same index, one per need
AI judging
ranks and explains
Reference brief
one compiled report

The approach I did not rebuild the engine. I built a new way into it. The AI handles understanding and judgment. Retrieval stays plain vector search.


The Evolution

The document breaks down before the first search runs.

Every need is extracted and listed up front, each reporting its own status as the searches complete.

A requirements document attached and ready to generate a brief.
Document attached.
Every need extracted from the document, each searching independently with its own status and priority.
Needs extracted, each searching.
  • Every need listed before the first search starts
  • Each need reports its own status independently
  • Reference counts appear as each one resolves

The detail A long job with no visible progress feels broken. Every need reports for itself.


The Evolution

One document in. A reference brief out.

Every need in the document comes back with its own ranked set of references.

A compiled reference brief, showing one need with three ranked references, match percentages, and written reasons.
  • The need, restated in plain language
  • Three ranked references
  • A match band: Strong 58%+, Good 51 to 57%, Possible below
  • A written reason for every pick, and a direct link into Figma

The takeaway A score tells you there is a match. A reason tells you whether to use it.


Leadership & Evangelism

I didn't just build it. I brought the team with me.

01

Taught the team

Ran a session for fellow designers, not on the tool, but on how to build with AI themselves. Demystified Cursor for non-developers.

02

Shared the method

Turned my workflow into something repeatable: how to set up, how to prompt, how to think about AI as a collaborator rather than a black box.

03

Improved team practice

Fed a lesson back to the team: naming design frames well isn't housekeeping, it directly determines whether work can be found.

Why it matters A lead multiplies their impact through others, not just through what they personally ship.


A design problem.
An AI team.
A shipped product.

← Back to all work