How We Optimized a 1,000-Product Industrial Catalogue for AI Search
We built an industrial product catalogue with over 1,000 SKUs, then made it citable by ChatGPT, Gemini, and Google AI Overviews. Here is the full technical breakdown of what we implemented and what changed.
Dr. Eng. Bashir Fakih
Founder & CEO, DBF Nexus
Earlier this year DBF Nexus built a product catalogue website for an industrial distributor in the MENA region — over 1,000 SKUs, full-text search powered by MeiliSearch, Sanity CMS for content management, and a Next.js frontend. The build itself was straightforward. The GEO layer was more interesting.
This post is the technical breakdown of what we found in the GEO audit, what we implemented, and what changed in AI search results over the following weeks. The client has not been named at their request.
The project brief
The site needed to showcase an industrial product catalogue to B2B buyers in Lebanon and the Gulf. Key requirements: full-text search across 1,000+ products, filter by category and specification, product comparison, RFQ form, and a CMS that non-technical staff could operate. The tech stack was Next.js 15, Sanity CMS, MeiliSearch, and Vercel hosting.
GEO was not in the original brief. We added it as a recommendation after the build — specifically because B2B buyers in industrial sectors increasingly start product research in Perplexity and ChatGPT, asking questions like “best abrasive supplier in Lebanon” or “who distributes [product category] in the Gulf”.
The GEO audit — what we found
We ran the site through our standard GEO audit before making any changes:
- No structured data anywhere. No Organization schema on the homepage, no Product schema on product pages, no FAQPage schema on category pages. AI engines had no machine-readable information to extract.
- Product pages were not LLM-extractable. Each product page opened with the product name and a spec table. No introductory paragraph, no answer-first sentence, no context for what the product was or who it was for. AI engines skipping to the first readable sentence found a part number.
- No entity definition. The organization — its name, location, what it distributes, the regions it serves — was mentioned in the footer and About page in prose form only. No machine-readable version existed.
- No FAQ content. Category pages had no FAQ sections. Buyers searching for guidance on product selection (“what grade of abrasive for steel fabrication?”) found nothing on the site to extract as an answer.
- Prompt test results: Zero appearances across 40 test queries run across ChatGPT, Gemini, and Perplexity.
What we implemented
1. Organization and website schema
We added JSON-LD Organization schema to the site root, defining the company as a distinct entity with name, URL, address, founder, areaServed, and sameAs links to their Google Business Profile and LinkedIn. This is the anchor that tells AI engines who the business is.
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "[Company Name]",
"url": "https://[domain].com",
"address": {
"@type": "PostalAddress",
"addressLocality": "Beirut",
"addressCountry": "LB"
},
"areaServed": ["LB", "AE", "SA", "KW", "QA"],
"description": "Industrial product distributor in Lebanon and the Gulf, supplying [categories] to manufacturing and construction sectors."
}2. Product schema for every SKU
We generated Product schema for all 1,000+ products via a Sanity webhook that runs on publish. Each product page gets a JSON-LD block with name, description, brand, category, and offers. The description field was the key intervention: we rewrote it from a raw spec dump to a structured sentence that an AI engine could extract as a standalone answer.
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Flap Disc 115mm 40-Grit Zirconia",
"description": "A zirconia alumina flap disc for aggressive grinding on stainless steel and hard metals. 115mm diameter, 40-grit, suitable for angle grinder use at 13,300 RPM maximum.",
"brand": { "@type": "Brand", "name": "[Brand Name]" },
"category": "Abrasives",
"offers": {
"@type": "Offer",
"availability": "https://schema.org/InStock",
"priceCurrency": "USD",
"seller": { "@type": "Organization", "name": "[Company Name]" }
}
}3. Category FAQ pages
We added a FAQ section to the bottom of each product category page (12 categories total). Each FAQ was written in answer-first format — the question is what a B2B buyer would type into ChatGPT, and the answer is a complete, standalone paragraph. We then added FAQPage schema for each.
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "What abrasive grade is recommended for grinding stainless steel?",
"acceptedAnswer": {
"@type": "Answer",
"text": "For stainless steel grinding, zirconia alumina abrasives in 40\u201360 grit are recommended for material removal, and 80\u2013120 grit for finishing. Zirconia is preferred over aluminum oxide for stainless because it generates less heat, reducing the risk of surface discoloration and work hardening."
}
}
]
}4. Answer-first content restructure
Every category landing page had its opening paragraph rewritten. Before: a marketing sentence about the company’s commitment to quality. After: a direct, factual description of what the category contains and who it is for — the kind of sentence an AI engine extracts as a snippet.
Before: “We are proud to offer a comprehensive range of abrasive solutions for all your industrial needs.”
After: “This catalogue covers bonded and coated abrasives for metalworking, woodworking, and construction applications, including grinding wheels, flap discs, cutting discs, and sandpaper — stocked in Beirut with delivery across Lebanon and the Gulf.”
Results — 4 weeks after implementation
We re-ran the same 40 test queries across ChatGPT, Gemini, and Perplexity four weeks after deploying all changes.
- Google AI Overviews: The site appeared in AI Overview citations for 6 of the 40 queries — primarily category-level queries (“abrasive suppliers Lebanon”, “cutting disc distributor Gulf”). Before: zero.
- Perplexity: The site was cited in 4 queries, all product-category questions where the FAQ content was directly extractable. Before: zero.
- ChatGPT: No direct citations in the 4-week window — ChatGPT’s training data cycles are slower. However, the Bing index (which ChatGPT browsing uses) was picking up the structured data within 2 weeks of deployment.
- AI referral traffic: GA4 showed first sessions from Perplexity.ai and Google AI Overviews as referral sources in week 3. Small numbers — but the baseline was zero.
This is not a dramatic overnight transformation. GEO is a compounding process. The authority signals we implemented accumulate over months, not days. But the directional change was clear and measurable within the first month.
Takeaways for similar projects
- Schema on every product is non-negotiable. At 1,000+ SKUs, manual schema is not feasible — you need a pipeline. Sanity’s webhook system made this straightforward: schema is generated and injected at publish time, not maintained manually.
- FAQ content is the fastest win. Category FAQ pages with FAQPage schema were the first things to appear in AI citations. They are also low-effort to create if you know your product questions — which any specialist distributor does.
- The description field is the most important field on a product page. Not the title, not the specs table. AI engines extract the description first. If it reads like a spec dump, it will be skipped. If it reads like a clear, factual sentence about what the product does and who it is for, it gets extracted.
DBF Nexus runs this same GEO implementation process for client sites across Lebanon and the Gulf — starting with an audit.
Frequently Asked Questions
What is Product schema and why does it matter for GEO?
How do you generate schema for 1,000+ products without doing it manually?
How long does it take for product schema to appear in AI search results?
Want this for your product catalogue?
DBF Nexus applies this same GEO implementation process for e-commerce and catalogue sites. We start with an audit so you see the baseline before committing.
We run this same process for client sites — start with an audit