Case studies/Flagship engagements
Manufacturing · 17 years

Electro-Mech Scoreboard Company

2008 - now

Content, CRM and funnel platform for a US manufacturer of LED scoreboards, run for 17 years.

Overview

Electro-Mech Scoreboard Company is a family-owned US manufacturer of LED scoreboards, founded in 1963 in Wrightsville, Georgia. Over 17 years the engagement took it from a static website to a content, CRM and funnel platform: a catalogue of scoreboard models with a color configurator, quote and literature requests routed to the right sales rep, documentation and installation data, and web leads posted straight into Sage 100 CRM.

In 2026 the platform was rebuilt in stages. The PHP and WordPress site was ported to Next.js with its catalogue in Supabase, then to Astro on Cloudflare Pages, with catalogue data moved into JSON snapshots at build time and form submissions into Cloudflare D1. Alongside it, the C#/.NET app that fed leads to Sage 100 became a Java service, and an AI sales and support assistant and an image pipeline for the configurator were added.

The site is built to be found by search engines and AI assistants: web versions of every documentation PDF, buyer and state guides published through AEO Content, sitemaps and llms.txt generated on each build, and lead attribution that records when a visitor first arrived from ChatGPT, Perplexity or another assistant. The engagement became one of AEO Content's first case studies, with the AI-visibility score going from 33 to 90.

What was built

Stack

Frontend

Astro (hybrid SSR)
Current site: prerendered catalogue, guide and documentation pages, server routes through the Cloudflare adapter.
React
Interactive islands: color configurator, manuals browser, contact tabs, photo gallery and embeddable widgets.
Next.js 14
Intermediate 2026 port of the PHP site, statically generated with incremental revalidation from Supabase data.
Next.js 16 + Tailwind 4
Admin and support applications: the configurator batch console and the assistant with its admin dashboard.

Backend

Java 17 / Spring Boot 3.4
Lead-posting service for Sage 100 CRM, using Apache HttpClient 5, JAXB and scheduled polling.
Astro API routes on Cloudflare
Contact form processing, ESPN data proxy for widgets and the lead feed consumed by the Sage service.
PHP / WordPress
The earlier site replaced in 2026; its legacy URLs are still redirected to the new pages.

Data

Supabase / Postgres
Catalogue, installations and page content for the Next.js version, snapshotted to JSON for the Astro build.
Cloudflare D1
Form submissions with the assigned sales rep and a flag recording whether Sage 100 accepted the lead.
MySQL
Source archive of support email that the assistant's ingestion pipeline reads from.

AI

Claude
Streams assistant answers and extracts knowledge and illustrations from product PDFs during ingestion.
Voyage AI
Embeddings and reranking for the assistant's hybrid search over email, PDFs and web pages.
pgvector, then Turbopuffer
Vector storage: started on Supabase pgvector and migrated to Turbopuffer in January 2026.
AWS Bedrock (Nova Lite)
Vision model that analyzes scoreboard images to identify colorable areas and layout for the configurator.

Infrastructure & DevOps

Cloudflare Pages
Hosts the production site, a staging site and a separate host for images and documents.
Modal
Serverless Python jobs for PDF processing and for batch rendering of configurator color variants.
AWS S3
Storage for pre-rendered configurator images produced by the batch jobs.
Vercel
Hosts the admin and assistant apps, with cron jobs for ingestion, categorization and re-embedding.
GitHub Actions
Builds the Astro site and deploys the dev branch to the staging site on every push.

Integrations & Payments

Sage 100 CRM
Receives web leads from electro-mech.com and scoreboards.net through the polling service.
ESPN data
League schedules and team data behind the embeddable countdown banner and scoreboard widgets.
GA4 via Google Tag Manager
Lead key events, phone, email and chat clicks, and first-touch attribution including AI-assistant referrals.
Gmail API
Syncs support mail into the assistant's index alongside the historical email archive.

Tooling & QA

Vitest
Unit tests for configurator color rules, URL rewriting, email categorization, search preprocessing and cron utilities.
NSIS + WinSW
Windows installer with a bundled Java runtime and a service wrapper for the Sage 100 service.

Engineering highlights

AI-visibility score from 33 to 90 after implementing AEO Content's optimization playbook, making the engagement one of AEO Content's first case studies. Guides are now published into the site repository by the AEO Content publisher, and sitemaps and llms.txt regenerate from that corpus on every build.

Worked within Cloudflare Pages' 100-rule routing limit by rewriting the routes file after each build with sport-level globs, so hundreds of prerendered model pages are served as static files instead of through the Worker.

Moved catalogue, installations and search data from a live Supabase database to JSON snapshots read at build time, and form submissions to Cloudflare D1, as a series of small, separately committed phases.

Ported the Sage 100 lead bridge from a C#/.NET 4.0 desktop app to a Java service that runs unattended as a Windows service, ships with its own runtime and shows recent cycles and submissions on a status dashboard.