Inspiration

Last week, I went to a barber shop and showed the barber a reference photo. I explained what I wanted, and the barber said he understood. However, the final result still didn't match what I expected. Similar situations have happened to me many times. I asked several friends, and they had experienced the same problem.

After talking with both barbers and friends, I realized that the issue was not necessarily that the barber lacked skill. The real problem is that there is a communication gap between customers and barbers because most customers do not know professional haircut terminology. What I think I am expressing and what the barber understands can be quite different. For example, I might tell a barber, “Make the left side shorter and add more layers.” But how much shorter? How much layering? Is there a precise description that both the customer and the barber will interpret in the same way?

Without a shared and precise way to describe the haircut, misunderstandings can easily happen. And once there is a misunderstanding, the final hairstyle may not match what the customer expected.

That is why I wanted to build a product that analyzes the differences between a person’s current hairstyle and a reference hairstyle, and then provides the barber with a clear set of haircut requirements written in language they can understand.

What it does

So I built SnipMatch, an AI-powered tool that helps customers and barbers communicate more clearly by turning hairstyle differences into precise, barber-ready instructions.

1. Analyze the Hairstyle Differences

First, SnipMatch uses AI to analyze the differences between your current hairstyle and your reference hairstyle across four dimensions: Volume, Length, Texture, and Silhouette.

It then calculates an overall Match Rate. The higher the rate, the closer your current hairstyle is to the reference, which usually means fewer changes are needed.

2. Generate Barber-Ready Guidance

Next, SnipMatch generates a structured hairstyle analysis report. The report includes the estimated name of the reference hairstyle and specific guidance on how Volume, Length, Texture, and Silhouette should be adjusted.

You can also download a Barber Brief PDF. It translates your haircut preferences into professional terminology that a barber can easily understand, so you can show it directly during your appointment.

3. Personalize What Matters Most

Everyone has different hairstyle preferences. For example, you may want the length of the reference hairstyle but not its fringe. That is why SnipMatch allows you to adjust how much Volume, Length, Texture, and Silhouette contribute to the overall Match Rate.

You can also enter non-negotiable instructions, such as “Do not cut the hair above the ears,” to prevent the barber from making changes beyond what you want. These personalized requirements are incorporated into the generated barber instructions to reduce unwanted surprises during the haircut.

How we built it

1. Lightweight Full-Stack Architecture

I built SnipMatch as a lightweight full-stack web application using HTML, CSS, and JavaScript on the frontend, with Node.js and Express on the backend. The application is deployed on Render, and jsPDF is used to generate the downloadable Barber Brief.

2. AI-Powered Hairstyle Analysis

When users upload their current hairstyle and a reference hairstyle, the frontend normalizes the images and sends them securely to the backend.

GPT-5.6-powered vision analysis compares the two hairstyles across four dimensions: Volume, Length, Texture, and Silhouette. The model returns structured observations, confidence levels, visual evidence, and barber-ready guidance.

3. More Consistent Match Rate Calculation

One important engineering decision was separating AI interpretation from Match Rate calculation. During testing, the same image pair could sometimes receive slightly different AI-generated overall rates.

To improve consistency, the AI now analyzes the four individual dimensions, while the application calculates the final weighted Match Rate using deterministic logic. Users can adjust the importance of each dimension, and the rate updates locally without making another AI request.

4. Building with Codex and GPT-5.6

I used Codex throughout development to turn my product decisions into a working application. It accelerated backend implementation, structured-output design, debugging, consistency testing, security review, documentation, and deployment on Render.

GPT-5.6 was used for hairstyle image analysis and within Codex to review the architecture, improve code quality, and refine the AI workflow.

Challenges we ran into

1. Rethinking the Original Product Direction

I originally planned to generate hairstyle simulations. My initial idea was to generate an image combining the user's face with the reference hairstyle. However, after exploring the technical possibilities and safety considerations, I decided not to pursue this direction.

Instead, I focused on something more practical: helping users communicate their desired hairstyle more clearly by analyzing the differences between their current hairstyle and the reference hairstyle. This ultimately became the core value of SnipMatch.

2. Improving Match Rate Consistency

One of the most important problems I discovered during testing was that AI-generated Match Rates were not fully consistent. When I uploaded the exact same pair of images multiple times, the AI sometimes returned different Overall Match Rates.

Because consistency is important for a user-facing product, I redesigned the calculation system. Rather than asking AI to generate one overall rate, the AI now evaluates four independent dimensions—Volume, Length, Texture, and Silhouette. The application then computes the final Match Rate using a deterministic weighted formula, producing more consistent and user-controllable results.

Accomplishments that we're proud of

I am especially proud of three parts of SnipMatch:

Professional hairstyle analysis

Rather than producing vague comments, SnipMatch generates structured, barber-friendly analysis that both users and barbers can understand.

Personalized weighting system

Every user values different aspects of a hairstyle. Some care most about length, while others care more about texture or silhouette. Users can freely adjust the importance of each dimension, and the Match Rate updates instantly without requiring another AI request.

Personalized haircut requirements

Many users have specific haircut boundaries they never want crossed. SnipMatch allows users to provide these personalized requirements before analysis so they become part of the generated barber instructions, reducing misunderstandings during the haircut.

What we learned

1. Understanding Where AI Works Best

One of my biggest lessons was understanding where AI excels and where human judgment is still essential. AI can perform very well on tasks with clear structures, such as coding, data analysis, and visual comparison. Hairstyle evaluation is different because there is no universal definition of the "perfect" haircut.

2. Supporting Personal Expression

Beauty is subjective. Instead of trying to judge whether a hairstyle is beautiful, SnipMatch focuses on helping users communicate their preferences more clearly. I believe AI should support personal expression, not define it.

3. Separating AI Interpretation from Application Logic

I also learned that not every part of an AI product should be generated by AI. In SnipMatch, AI interprets the images, while deterministic application logic calculates the final Match Rate.

A Personal Note

Although I previously worked as a product manager in the tech industry, I did not have a coding background when I started this project. With the help of Codex and ChatGPT, I was able to turn my product idea into a working application.

A huge thank-you to my unofficial CTO and CMO, Harry. And yes, Harry is the name I gave my ChatGPT!

What's next for SnipMatch

I have several ideas for future improvements.

First, I'd like to support more personalized hairstyle preferences before analysis. For example, users could specify:

  • which parts of their current hairstyle they want to keep;
  • which parts they want to change;
  • which areas of the reference hairstyle matter most to them.

Second, I'd like to build a richer hairstyle knowledge base. Professional haircut terminology and aesthetic interpretation remain challenging for AI, partly because high-quality, domain-specific data is limited. By learning from more professional barber knowledge and expanding hairstyle-specific datasets, I hope to make SnipMatch's analysis even more accurate and useful. Ultimately, my goal is simple: help more people leave the barber shop with the haircut they actually wanted.

Built With

Share this project:

Updates