anêmona
PTEN

A product catalog built from 188 PDF spec sheets.

We took the catalog out of the spec sheets, gave each product a code and handed the Sterilex team an admin panel to maintain it.

Client
Sterilex Científica
Scope
site, admin panel and catalog

sterilex.com.br (in Portuguese)

188
PDF spec sheets read
87
products with a code where there was none
398
product URLs

Sterilex sells supplies for cleanrooms, sterilization and bioprocessing. Its catalog existed in two places: the site published products with no code, and the spec sheets lived in PDF.

The home page of the new Sterilex site, live since October 13, 2026 (in Portuguese)
back to top01The problem

Two inventories that did not talk to each other

The site ran on WordPress with WooCommerce and Elementor and had 398 published products, with no price and no code.

Of those, 111 had no main photo. Two in every three titles were in all caps, with no standard format.

The real catalog was somewhere else: 188 technical spec sheets in PDF, from about 30 manufacturers, each with its own layout.

With no product codes, products could only be matched by name. And names mislead: BOBINA SMS AZUL 50GRSand Bobina SMS Azul Sterilex 60g are almost the same text, and they are different products.

The product page of the old site, in August 2026
Before: the cookie banner open, reCAPTCHA on the quote form and the WhatsApp button over the content.
The same product on the new site, already in the quote basket
Now: the same product, with the spec sheet on the page and already in the quote basket.
back to top02The sequence

The catalog before the site

The new site could only be designed once we knew what it would publish.

  1. month 1the contractmigrate the site
  2. month 2spec sheet extraction and reconciliation188 PDFs
  3. month 3the move to Cloudflare and the new design191 URLs redirected
  4. Deliverysite livesterilex.com.br
back to top03What we did

An extractor, a reconciliation, a site and an admin panel

We wrote the extractor that reads the 188 spec sheets and returns text, a candidate photo and a structured record. Then the reconciliation between the site and the catalog, decided item by item by the Sterilex product team.

The reconciliation ended with a decision for the 398 product URLs of the old site: 212 migrated, 134 waiting for a spec sheet and 52 redirected.

The new site kept the WordPress URLs. When the new site went live, none of the discontinued products produced an error page: every redirect was handled.

Sterilex got a new custom admin panel, separate from the site and password-protected. The four forms (quote on the spec sheet, quote basket, contact and catalog request) save the request to the database before sending the email.

The quote basket on the new site, with three products
The quote basket: the customer collects products from different pages, sets the quantities and sends a single request.
back to top04The mechanisms

1 Knowing which image is the product

The spec sheets carry the manufacturer's logo, seals, icons, frames and tables drawn as images, and only one of them actually shows the product.

The selection works in layers, with specific rules for dimensions (px) and file size (bytes). Among the images that pass those rules, the one that repeats in two different categories is selected as the product image.

The first extraction yielded 273 products: 167 from spec sheets and 106 from 7 multi-product catalogs. 87 of them with a code that appeared nowhere on the old site.

2 Where contextual reading comes in, and where it does not

90% of the files were product spec sheets, and extraction followed set rules.

The other 10% are multi-product catalogs, described in prose and in scattered tables, with the layout changing from one manufacturer to the next. In those cases the rule breaks and contextual reading comes in, checked by the Sterilex team.

3 Reconciliation in three queues

For the migration, we designed a reconciliation game in which the Sterilex team made decisions case by case.

The options were: confirm the match suggested by the automatic comparison, or route the cases where the product existed only on the site or only in a spec sheet.

The No spec sheet queue of the reconciliation screen, in August 2026
The screen for validating matches, with the old site on the left and the possible candidates on the right.

4 The admin panel that keeps it true

The admin panel keeps the catalog right after reconciliation, in four screens: Products, Spec sheet, Publishing and History.

Products: the whole catalog, with search by name or code. Screenshot with demo data.

In the Spec sheet, we now have what the old site did not show: trade name, descriptive name, code and category.

The Spec sheet of a product. Screenshot with demo data.

Publishing shows what has changed and is not on the site yet, and what is live now.

Publishing, with what is live and the previous releases. Screenshot with demo data.

In History, every change has an author, date and action, recorded on the server in the same operation as the write.

History, grouped by day. People and addresses in this screenshot are demo data.
back to top05Performance

The product page, then and now

product pagethennowdifference
page weight5.37 MB1.24 MB4.3x lighter
requests18535from 185 to 35
third-party code3.64 MB1.04 MB3.5x less

Two thirds of the old page's weight was third-party code.

Today's third-party code includes the Turnstile on the form and Google's measurement code.

back to top06Technology

Behind the scenes

application
  • Astro
  • React
  • TypeScript
cloud
  • Cloudflare
  • Workers
  • D1
  • R2
extraction
  • Python
protection
  • Turnstile
delivery
  • Terraform

The site runs on the Cloudflare account of Sterilex itself, on Workers, with the catalog in D1 and the photos in R2. React only in the admin panel. Python only in the spec sheet extraction.

back to top07The result

The catalog left the files

The catalog now has codes, categories and checked photos. The product team got the tool to keep it that way.