The product deck generator
42 measured minutes per product, across a 27-product queue, replaced by pasting a URL and approving what comes back.
Paste a product URL. Get the deck.
This is the generator, not a video of it. Give it any CambiumPak product page or SKU, check the fields it pulls back, correct anything you want, and build the nine slides in front of you.
Paste a URL, or pick one below.
Eleven products. Click one to load it, or open the CambiumPak catalog in a new tab and copy any product URL.
Every field below is editable. Change anything that is wrong, then build. The badge row is the one thing you cannot type: it is computed from the codes in the family, because a mark held by one size is not a claim the family can make.
checks run on the generated file
Nine slides, 1280 × 720. Print to PDF gives nine 16:9 pages, because the page declares its own size. Nothing on a slide has to be typed by hand.
The employer tool this stands in for fetched the product page, found the spec-sheet PDF in its markup and passed it to a model for structured extraction. A browser cannot fetch cambiumpak.com directly, so this resolves the same URL against a bundled copy of the product record instead. Everything after the lookup is the real generator, running here. Source.
overview
Sales needed a slide deck per product, for launches and for distributor presentations. What existed was a fifty-three slide quarterly training deck covering a whole release — so anyone who needed one product presented all fifty-three or rebuilt it by hand: pulling the spec sheet, retyping technical values, hunting photography across a shared drive, placing certification badges, applying brand typography, generating a QR code, proofreading.
I timed that build rather than estimating it. 42 minutes a product, across a 27-product queue.
What replaced it is one field. Paste the product page URL and the tool fetches the page, finds and reads the spec sheet, resolves badge artwork from a library of 411 assets, and hands the extraction back as a filled-in form. Check it, correct anything wrong, build. Nothing on a slide has to be typed by hand, and anything the sheet doesn’t state comes back empty rather than invented.
what it cost, measured42 min
42 minutes across 27 products is roughly 19 hours per cycle — and that’s the improved figure, after the template. The generator is measured against that rather than against the flattering original.
the first decision was not to build the generatortemplate first
The template shipped first — a nine-layout slide master with correct brand typography, plus a mapping document showing which slide element draws from which spec sheet field. Usable immediately, and it validated the data model before any application code existed. The generator came after, once the template had been tested against real products.
inside the generator5 parts
One field in: the product page URL. Everything else is extracted and handed back as a form to check, which is where a first draft with a much larger input form ended up. The output is a downloadable, correctly named, brand-compliant presentation file.
- Data extraction. A serverless endpoint fetches the product page, finds the spec sheet PDF link in the markup, downloads it, size-checks it, and passes it to an LLM API for structured extraction. Manual upload as fallback.
- Extraction contract. A tightly specified JSON schema: short name, category, description, five named features, six accessory slots, six performance figures, rated life, and an ordered certification list.
- Asset resolution. A manifest endpoint reads the repository file tree to populate certification badges and category imagery from a library of 411 badge assets across six categories.
- Image processing. A browser canvas pipeline handling alpha compositing, trim-to-content, padding and fit-inside placement.
- Document generation. A tokenised donor template manipulated at the XML level inside the Office Open XML package.
the prompt is the artifactthe contract
The extraction prompt isn’t "summarise this PDF." It encodes domain rules: metric values compacted for small display cards with ranges compressed rather than enumerated; certification tags limited to those with matching badge artwork, excluding test report standards that look like certifications but aren’t; ordering matched to the spec sheet so output is checkable against source; available badge filenames passed in as context so extracted names resolve to real assets.
And the rule that matters most: anything not stated on the sheet returns an empty string, never an invented value. A generator that invents a performance figure onto a sales deck is worse than no generator.
the parts that were hard5 bugs
- A gray box behind every product image. Several hypotheses eliminated. Root cause was alpha channel handling in canvas compositing.
- Files that triggered the repair prompt on open. Duplicate bold attributes injected into slide XML, fixed by stripping before writing. Only surfaced through hands-on testing with real files — the automated checks passed.
- Cover typography that broke on long names. A hard-coded font size that happened to work for a three-character product name, replaced with a measure-and-fit helper.
- Badges assigned to the wrong products. Naive string containment, replaced with word-level scoring.
- Squashed badge strips. Fixed by passing true computed dimensions so the frame adapts to the content.
the rules, and why4 rules
- Absent equals gone. Missing assets are removed, never replaced with placeholder or donor content. A visible gap beats a wrong image on a customer-facing deck.
- Convention over configuration. Images map to slide positions by filename suffix, so correct naming produces correct output with no user decisions.
- Spec sheet order preserved, uncapped, so output is checkable against source.
- Ship the skeleton. The ordering matrix slide ships as a styled empty frame for manual completion rather than delaying release — a known limitation, scheduled for the next version.
outcome
- The nine-layout template shipped first and roughly halved the manual build on its own — from an estimated one to two hours down to a measured 42 minutes.
- The generator replaces those 42 minutes with a URL and a review. Usage went under instrumentation this month, so the saving is being measured rather than claimed.
- 411 badge assets resolve automatically, in spec-sheet order, so any slide can be checked against its source.
- Anything the sheet doesn’t state comes back empty. The generator has no path to inventing a figure.
what I’d do differently
I should have instrumented it on day one. I built the tool and then went back to measure the thing it replaced. A usage counter and a per-run timer went in this month, but the first months of evidence are gone. On the next build the counter ships with version one.
open to marketing operations, analytics and martech roles
Let’s talk.
Remote, or Albuquerque and hybrid. Happy to walk through the architecture behind any of this.