Over 4 years, Knya customers had uploaded more than 15,000 logos through our embroidery personalization flow.

Each custom upload cost them ₹250 extra. Operations had to digitize the artwork for embroidery, inspect it and sometimes send it back for corrections. Many of these logos had probably been processed before.

The solution seemed obvious: find the most frequently uploaded designs, prepare them in advance and place them inside a logo bank. This would remove a large part of the custom process.

But the data findings from the image archive ended up changing the feature.

The existing personalization screen with limited pre-designed logo options and the custom-upload path.

The existing personalization screen with limited pre-designed logo options and the custom-upload path.

A folder with 15,000 answers


The logos were hosted on a CDN. There were no useful filenames or categories attached to them. A hospital chain, a local dental clinic and a generic stethoscope symbol were all image URLs.

Before designing the feature, I needed to understand what customers had already uploaded.

<aside>

I started with four categories

The category alone would not make the bank searchable. The system also needed to read the text inside each image and identify the organization where possible.

That gave me the first version of the pipeline:

Send urls → extract text → classify → review

Giving AI the right job


My first instinct was to send every image to a vision model. But customers might have uploaded identical logos with different backgrounds, dimensions, crops and file formats. Duplicate detection was a conventional image-processing problem.

I used two methods.

Exact duplicates could be found using an MD5 hash. Near-duplicates could be grouped using perceptual hashing, which compares how images look rather than whether their underlying files are identical.

Two customers might upload the same hospital logo, but one file could be a JPEG on a white background while another was a cropped PNG. Their file hashes would differ, but perceptually they were still the same image.

Only after these duplicates were removed would the remaining images be sent to the model for OCR and classification.

<aside>

AI did not need to do every part of the job. The cheaper and more deterministic a task was, the less reason there was to involve it.

</aside>

Pilot with the first 100 images


I tested the approach on 100 URLs. The script downloaded the images, found 83 unique logos and submitted them as a batch. All 83 were tagged and written to a results file.