Product Catalog Automation for a Supply Business
Every supplier sent price lists in a different spreadsheet format, so the team re-typed products into their catalog by hand. Updates lagged, duplicates crept in, and ordering sheets drifted out of date.
Industry
Wholesale supply and distribution business
Role
AI automation consultant — process mapping, workflow design, automation build, documentation and handover
Impact
Encoding a new price list went from an afternoon of copy-paste per supplier to a few minutes reviewing flagged items, and the ordering sheets now update the same day a price list arrives.
01 - Problem
The problem
A supply business I worked with carried thousands of products from a long list of suppliers, and every supplier sent price lists their own way — tidy Excel one week, merged header cells with prices three tabs deep the next, renamed columns every few months. None of it matched the team's own catalog, so every price list meant someone re-typing names, codes, prices, and categories by hand. Encoding one update could eat an afternoon, so updates got batched and delayed — and the ordering sheets the sales side quoted from often ran on last quarter's prices. Manual re-typing added its own errors: duplicates under slightly different names, items in the wrong category, descriptions skipped. Nobody trusted the catalog, so people cross-checked against supplier files anyway.
Before automating anything, I fixed the structure. The real problem wasn't typing speed — it was that there was no agreed schema for a product record and no defined source of truth. We set one canonical product schema, one catalog of record, and a rule that supplier files are inputs, never working documents. Only then did automating the flow into it make sense.
02 - System Flow
How the system moves
Price list arrives
Supplier file dropped to intake
Make picks it up
Scenario watches intake folder
Rows normalized
Per-supplier mapping to one schema
AI enrichment
OpenAI categorizes and drafts descriptions
Confidence check
Uncertain matches flagged automatically
Human review
Airtable review queue
Catalog synced
REST API to ordering sheets
03 - Build
What I built
Intake and normalization layer
A Make scenario watches a shared intake folder for new supplier files. Each supplier has a mapping profile — which columns hold name, code, unit, and price, plus rules for that supplier's quirks like currency notes or pack-size formats. Rows are reshaped into one canonical schema and landed in a Google Sheets staging area, so every supplier's data looks the same before it reaches the catalog logic. Structure before automation: this layer is what makes everything after it reliable.
AI categorization and description drafting
Each normalized row goes through OpenAI with a tightly scoped prompt: assign the product to an existing category (never invent new ones) and draft a short description in the catalog's house style. The model also matches incoming items against existing entries to catch the same product arriving under a different supplier name. Every output carries a confidence signal, because the next layer depends on it.
Human review queue in Airtable
Anything uncertain — a weak match, a category that could go two ways, a price that jumped sharply — lands in an Airtable review queue instead of the catalog. The team sees the flagged item, the AI's suggestion, and the original supplier row side by side, and approves or corrects with one status change. High-confidence rows pass through untouched. Automate the routine, surface the exceptions, keep a human on every uncertain call.
Catalog sync via API integration
Once a record is approved, Make pushes it from the Airtable catalog of record out to the ordering sheets sales and purchasing work from, using the Sheets API and REST calls. The sync is one-directional by design — the catalog is the source of truth, the ordering sheets are read-only outputs — which ended the old problem of three slightly different versions of the same list.
Documentation and handover
I documented the workflow automation in plain language: how to add a supplier mapping profile, what each review flag means, and what to do when a file fails intake. The team can onboard a new supplier or troubleshoot a stuck run without me, and they do.
04 - Impact
Business impact
Encoding a supplier price list dropped from an afternoon of copy-paste to a few minutes reviewing flagged exceptions.
Price updates reach the ordering sheets the same day a supplier file arrives, instead of waiting for someone to re-type them.
One catalog of record replaced several drifting copies, so the team stopped cross-checking against original supplier files.
Duplicate and mis-categorized products dropped noticeably, because matching and category rules apply consistently instead of depending on whoever typed fastest.
Product descriptions are now consistent in tone and format across the catalog, instead of varying by supplier and encoder.
Onboarding a new supplier became a configuration task — add a mapping profile — rather than inventing a manual process each time.
05 - Edge Cases
What had to be handled
A supplier renames or reorders columns: unmapped columns fail loudly into an intake error log with a notification, rather than silently mapping the wrong field into prices.
The same product arrives from two suppliers under different names: matches below the confidence threshold are flagged to the Airtable review queue instead of creating a duplicate.
A price jumps sharply from the last known value: the row is held for review even if everything else looks clean — a misplaced decimal is the error you can't afford to sync.
The AI can't confidently place a product in an existing category: it's constrained to the approved list and routed to review, never inventing a new category.
Files with merged cells or multi-row headers the parser can't safely read: the run stops and the file moves to a needs-manual-prep folder with an alert, so nothing half-parsed enters staging.
An API call fails mid-sync: the scenario retries, and if it still fails, the batch rolls back to pending and notifies the team, so the ordering sheets are never left partially updated.
06 - Improvements
What I would improve next
A supplier-facing upload form that validates files at entry, catching format problems before they reach the intake folder.
A small reporting dashboard on the catalog showing price-change history by supplier, so the team can spot cost creep and renegotiate with data in hand.
Stronger product matching using embeddings rather than name similarity alone, shrinking the review queue for near-identical items.
Moving the ordering sheets fully onto the API so downstream tools read the catalog directly, retiring the synced spreadsheets over time.
Related capabilities