A product page that is a photo and a link to the manufacturer's PDF is invisible to all three readers who matter: the engineer, the crawler and the assistant. One structured record serves all of them.

A building-systems catalogue has three readers. The procurement engineer wants to compare a specification and send the page to a colleague. The search engine wants text it can index and a structure it can trust. The AI assistant, whether it is the one answering questions inside a search engine or the one you build to draft quotations, wants a record with fields it can match against. A product page that is a photograph and a link to the manufacturer's PDF fails all three. One structured product record, in both languages, serves all three at once. This article is that record, the schema around it, and the workflow that lets the business publish it without a developer.

Three readers, one record

ReaderWhat it needs from the pageWhat breaks it
Procurement engineerThe key specifications as text, the standard the product meets, the brand, the datasheet as a download, a way to request a quotation for this exact itemA photo, a marketing paragraph, a generic "contact us" button
Search engineUnique title and description, a body with real words, a canonical URL per language, hreflang pairs, Product and Brand schema in one graph, internal links from category and application pagesDuplicate routes for the same product, four pages with metadata out of four hundred, zero words in the body
AI assistantFields with stable names and units, a specification table it can parse, a standard it can filter on, an identifier it can returnSpecifications locked inside a PDF image, values written three different ways across products

The content void, with numbers

When we audited our own 2024 build for Progress Horizon Trading, a distributor with 144 products across 22 manufacturer brands and 53 subcategories, the product pages had a median of zero words of body copy. One product in 144 had an Arabic description. Metadata existed on four routes. Parallel route trees served the same product at two or three addresses. Search engines had already stopped bothering, and no assistant could have matched a request to a page with nothing on it.

The rebuild moved every product into a content API with twelve bilingual document models, each text field a required English and Arabic pair, generated a 478-URL bilingual sitemap from the catalogue, and put the organisation, the parent group and each of the 22 brands into one structured-data graph under stable identifiers. The site went from four routes with metadata to all of them. Indexing outcomes are measured against an archived baseline at a checkpoint that has not yet closed, so no ranking number appears here.

The product record

This is the field list. Required fields are required in both languages at the data layer, so nobody can publish an English-only product by accident.

FieldRequiredNotes
Name (EN, AR)YesProduct names, brand names and model codes stay in Latin script in the Arabic field
BrandYesA reference to one Brand record, never free text
Family, category, subcategoryYesElectrical, mechanical, architectural, then the tree; one product lives in one place
Short description (EN, AR)YesTwo sentences: what it is and where it is used
Applications (EN, AR)YesA list, because engineers search by application as often as by product
StandardsYesA list of standard identifiers (for example IEC, BS EN, ASTM, UL) as structured values, not prose
SpecificationsYesName, value, unit as structured pairs; the same specification name spelled the same way across every product in the subcategory
DocumentsRecommendedDatasheet, installation guide, certificates, each with a language tag
ImagesYesOne product image at least; generated in AVIF, WebP and JPEG at layout widths, never upscaled
Availability note (EN, AR)Optional"Stocked", "Made to order", "Subject to availability"; written by a rule if an ERP is connected
Related productsOptionalAccessories, alternatives, the same product in another size
IdentifierYesA stable id that survives renames; the URL slug is derived from it once and never changes

Two rules make this work. The specification names are a controlled vocabulary per subcategory, so "Rated current" is never also "Current rating". And the record is validated on save: a missing required field blocks publishing, and the editor sees exactly which one.

The schema graph

Structured data is one graph, not a block per page.

  • Organization once, with a stable identifier, referenced from every page.
  • Brand once per manufacturer, with its own identifier; the product references it.
  • BreadcrumbList on every page, following the category tree.
  • Product on every product page: name, image, brand reference, description, and the specifications as additional properties.
  • No Offer without a price. A price-less Offer fails validation and the search engine ignores the block. If prices are not public, leave the Offer out and let the quotation form do its job.

On the catalogue site above the merged graph carries nine node types; validation runs in the build so a broken block never reaches production.

Search: one URL per product per language

  • English at the root, Arabic under /ar/, the same slug in both, derived from the identifier. Slugs stay in English; Arabic slugs break sharing and analytics.
  • Every product page has a self-referencing canonical, a unique title and description, and hreflang pairs including x-default. The implementation and its validation are in hreflang for bilingual sites.
  • Locale detection and cookies are switched off, so the crawler and the engineer see the same document at the same address.
  • Category and application pages link to products in body copy, not only from menus. The information architecture, one URL per intent, is in Bilingual site information architecture.
  • The sitemap is generated from the catalogue at build time, split by language, with lastModified only where a real change happened.

AI assistants, yours and the search engine's

The share of searches that trigger an AI answer keeps rising; one industry estimate puts it at a quarter of searches in early 2026, and AI answers have been live in Arabic since May 2025. What those answers cite is well studied: pages that already rank in the top ten, content with tables and specific values, dated pages, and pages with statistics and quotations in the body. A product page built on the record above is exactly that shape, in both languages. Google's own guidance adds no extra requirement: crawlability, helpful content and internal links are the whole list.

Your own assistant has the same appetite. A quotation assistant that matches a customer's line item to a product does it against the specification pairs and standards in the record; without them it guesses. The seven-step build is in An AI quotation assistant for building-materials distributors. Build the record first; the assistant is a week of work on top of good data and a demo on top of bad data.

Who publishes it

The reason the catalogue was empty was that saying anything required an engineer. The fix is an admin dashboard where a specification table is a form field: staff add a product, fill the required pairs, upload the datasheet, and publish. Publishing triggers a production deploy that bakes the content into the site, so there is no live database to slow the page or to secure. Uploads are converted to WebP on the way in. The manufacturer's engineers validate specifications against the datasheet before they go live, and the record's validation catches the missing fields before they do.

The ten-point check before launch

  1. Every product has a body with real words in both languages.
  2. Every specification name in a subcategory is spelled one way.
  3. Standards are structured values, not sentences.
  4. One URL per product per language, canonical to itself.
  5. hreflang pairs are reciprocal and include x-default.
  6. Product, Brand, Organization and BreadcrumbList are one validated graph.
  7. No Offer without a price.
  8. The sitemap comes from the catalogue, not from a plugin's guess.
  9. Category and application pages link to products in the body.
  10. Publishing is a form, not a ticket.

Sources

Questions

Is a PDF spec sheet enough for the product page?

No. A PDF is for the engineer who has already found the product. The page itself needs the key specifications as text in a table, in both languages, with the standard the product meets, so that the crawler can index it, the engineer can compare it without opening a file, and an assistant can match a request to it. Keep the PDF as a download beneath the table.

Should the catalogue have Arabic pages if the engineers read English spec sheets?

Yes, if any of the buyers, consultants or procurement teams search or read in Arabic. The specification values stay identical; product names, standards and units stay in Latin script; the descriptive text, applications and page furniture are written in Arabic, not translated by machine. Each Arabic page gets its own URL and hreflang pair with the English page.

Do we need Product schema on every product page?

Yes, as part of one graph: Organization once, each Brand once, BreadcrumbList on every page, and Product on every product page referencing its brand by a stable identifier. Do not add an Offer without a price; a price-less Offer is invalid and gets the whole block ignored.

Related pages

Related reading