[{"data":1,"prerenderedAt":120},["ShallowReactive",2],{"work-multimodal-product-catalogue":3,"work-next-\u002Fwork\u002Fmultimodal-product-catalogue":95},{"id":4,"title":5,"accent":6,"body":7,"client":83,"cover":84,"coverAlt":85,"description":86,"duration":87,"extension":88,"featured":89,"industry":90,"meta":91,"navigation":92,"order":93,"path":94,"quote":95,"results":96,"seo":106,"services":107,"stack":108,"stem":117,"year":118,"__hash__":119},"work\u002Fwork\u002Fmultimodal-product-catalogue.md","Multimodal AI catalogue system for a home-and-garden retailer","#12305C",{"type":8,"value":9,"toc":75},"minimark",[10,19,24,27,31,58,62,68,72],[11,12,13,14,18],"p",{},"A home-and-garden retailer received supplier photos, PDFs and half-filled spreadsheets for tens of thousands of products and turned them into listings by hand. We built a ",[15,16,17],"code",{},"multimodal-ai"," catalogue pipeline that reads images and documents together, extracts attributes, writes consistent descriptions, tags images and powers visual search. New products now go live roughly ten times faster. ",[20,21,23],"h2",{"id":22},"challenge","Challenge",[11,25,26],{},"Merchandisers spent most of their time transcribing dimensions, materials and colours from photos and spec sheets, and still produced inconsistent listings, with the same shade of green filed under four names. Missing attributes broke filters, and customers who arrived with a photo of a garden chair had no way to find its equivalent. Suppliers were not going to improve their data, and previous text-only extraction had failed because the crucial details were in the images.",[20,28,30],{"id":29},"what-we-built","What we built",[32,33,34,38,41,48,55],"ul",{},[35,36,37],"li",{},"An ingestion service that pairs every SKU's images with its documents and runs a vision-language pass (GPT-4o, with Qwen2-VL evaluated as a self-hosted alternative) to extract dimensions, materials, colours, style and use-case attributes into the retailer's taxonomy.",[35,39,40],{},"Cross-checks between sources: when the spec sheet and the image disagree on colour or size, the item is flagged rather than guessed.",[35,42,43,44,47],{},"A description generator (",[15,45,46],{},"generative-ai-llm",") with tone and length rules per category and a mandatory review step for the first ninety days.",[35,49,50,51,54],{},"CLIP-based image embeddings in Qdrant for \"find similar\" on the storefront and for de-duplicating near-identical supplier photos (",[15,52,53],{},"computer-vision",").",[35,56,57],{},"A merchandiser workbench showing extracted attributes beside the source image, with one-click corrections that feed the evaluation set.",[20,59,61],{"id":60},"results","Results",[11,63,64,65,66,67],{},"Listing a new product fell from about two hours to roughly twelve minutes of merchandiser time ","; attribute accuracy on the weekly QA sample sits around 93% ",", with the flagged-disagreement queue catching most of the rest. Consistent attributes fixed the filters, and search-to-product-page click-through rose by around 9% after visual search launched. "," The retailer cleared its backlog of unlisted SKUs within a quarter.",[20,69,71],{"id":70},"what-made-the-difference","What made the difference",[11,73,74],{},"We built the disagreement flag before the description generator. Merchandisers stopped fearing the automation the moment they saw it admit uncertainty, and the review workbench turned their corrections into training signal instead of lost work.",{"title":76,"searchDepth":77,"depth":77,"links":78},"",2,[79,80,81,82],{"id":22,"depth":77,"text":23},{"id":29,"depth":77,"text":30},{"id":60,"depth":77,"text":61},{"id":70,"depth":77,"text":71},"Home & garden retailer · 40k SKUs (Nordics)","\u002Fcovers\u002Fwork\u002Fmultimodal-product-catalogue.svg","Abstract navy cover with a rising cyan course line","Vision-language models that turn supplier photos and spec sheets into structured, searchable product listings, with attribute extraction, image tagging and visual search.","13 weeks","md",false,"Retail & E-commerce",{},true,18,"\u002Fwork\u002Fmultimodal-product-catalogue",null,[97,100,103],{"value":98,"label":99},"~10×","faster new-product listing",{"value":101,"label":102},"~93%","attribute accuracy on the QA sample",{"value":104,"label":105},"+9%","search-to-product-page click-through",{"title":5,"description":86},[17,53,46],[109,110,111,112,113,114,115,116],"OpenAI GPT-4o","CLIP","Qwen2-VL","Python","FastAPI","Qdrant","PostgreSQL","AWS","work\u002Fmultimodal-product-catalogue","2026","yCRs1y9aE0V6Jp4LDWIaH_WEiHRRqgm2MRtXf3yO6jM",1792973684283]