An internal web tool, built with Cursor AI, that cross-references digital colors, paints and materials across five manufacturer systems in one search.
At a Glance
- Systems cross-referenced: PMS (Pantone) v4 Coated, Sherwin-Williams Paint, Matthews Paint, Gerber/3M Vinyl, Oracal Vinyl
- Accepted input types: color name, product code, RGB value, or HEX code
- Stack: Cursor AI-assisted development, vanilla HTML/CSS/JS, Python for local hosting, CSV-based color matrices
- Result: improved department color-matching accuracy by 25%
- Used for: material selection, quality control reference, vendor communication, and cost estimation
The Problem
As a specifications writer in signage and exhibit fabrication, I had to make sure an approved color survived translation across materials that don't share a numbering system. A client-approved Pantone spec had to become a specific Sherwin-Williams paint code for a painted element and a specific Gerber or Oracal vinyl code for a cut-vinyl element, and none of those manufacturers reference each other. Finding the right equivalent meant manually cross-checking swatch books and spec sheets across systems, and a wrong match meant wasted material and a rejected part.
The harder part wasn't looking up one code. It was that color doesn't behave the same way across materials. A white vinyl and a white paint can read identically to the eye and still be built from different underlying values, and metallics and grays break the color-matching math that works fine for ordinary hues. Any tool that just measured raw color distance and called it a match would get those cases wrong.
Requirements
- Accept whatever the user actually has on hand: a color name, a manufacturer product code, an RGB value, or a HEX code.
- Cross-reference a single input against five separate manufacturer datasets at once.
- Handle whites, grays, and metallics with their own logic instead of generic distance matching.
- Return results fast enough to use during an active design or production conversation, not as a lookup task to do later.
- Work on a phone on a shop floor as well as it works at a desk.
Building the System
1. Data layer. Sourced color matrices for each manufacturer, PMS, Sherwin-Williams, Matthews, Gerber/3M, and Oracal, into CSV files, then converted them into structured data the app could search against instantly instead of querying a live database.
2. Matching engine. Built a parser that normalizes whatever format the user enters, name, code, RGB, or HEX, into a common comparison format, then calculates color distance across every dataset to surface the closest cross-system matches. Whites, grays, and metallics get dedicated handling rather than the standard distance formula, since a generic approach misreads exactly those cases.
3. Modular architecture. Split the codebase into separate modules for color parsing and matching, data loading and storage, the search engine, and the UI, instead of one monolithic script. Each piece can be maintained or extended without the others breaking.
4. Interface. A single search box returns a results table with color swatches, cross-referenced matches indented under the primary result, and click-to-copy on every name and HEX value, so a match can go straight into a spec sheet or a vendor email without retyping it. Search "Primrose Yellow" under Gerber vinyl, for example, and the tool instantly returns the equivalent Sherwin-Williams and Matthews paint matches, the exact cross-material lookup that used to mean pulling multiple swatch books off a shelf.
5. Built with Cursor AI. Used Cursor AI for iterative development, real-time debugging, and code suggestions throughout.
Built for Accuracy, Not Just Speed
A tool that returns a fast wrong answer is worse than no tool. Search input gets validated before it runs, overly broad terms are restricted so the tool doesn't return a meaningless flood of results, and empty or invalid searches fail with a clear message instead of a blank screen. Combined with the dedicated logic for whites, grays, and metallics, the goal throughout was a tool people would actually trust enough to base a decision on before reaching for color books.
Results
The tool improved department color-matching accuracy by 25%. In many cases, design and production staff could resolve a cross-material color question in one search instead of a manual lookup across separate swatch books and spec sheets, with results formatted to drop straight into vendor communication or a spec sheet.
Why This Generalizes
Strip away the color-specific logic and the pattern is: normalize inconsistent inputs, cross-reference them against multiple authoritative but incompatible datasets, apply domain-specific exceptions where a generic matching rule would get it wrong, and return results in a format someone can act on immediately. That's the same shape as reconciling part numbers across suppliers, mapping terminology between departments, or cross-referencing SKUs across systems that were never designed to talk to each other.
Lessons Learned
- Modular structure pays for itself. Separating search, data, matching, and UI into their own modules made the tool easy to extend without breaking what already worked.
- Generic matching logic breaks on the edge cases that matter most. Whites, grays, and metallics needed their own rules from the start, not as a patch after the fact.
- AI-assisted development speeds up implementation, not judgment. Cursor AI made iteration faster; it didn't decide what counted as a correct match.
- Output format is part of the product. Click-to-copy results and vendor-ready formatting were as important to adoption as the matching accuracy itself.