Summary
Company profile pages currently use the generic site-wide OG image for social sharing. Blog posts already have dynamic per-post OG images generated via an SVG → JPEG pipeline. We should extend this to company profiles.
Current System (Blog Posts)
src/common/og-images.njk generates an SVG per blog post using Eleventy pagination
src/_config/events/svg-to-jpeg.js converts SVGs to JPEGs using Sharp (via @11ty/eleventy-img)
- JPEGs are committed to
src/assets/og-images/ — the converter skips files that already exist
- Only runs in serve mode, not production builds
Considerations
- 850+ company profiles — this is a much larger scale than ~10 blog posts
- ~30MB of images in git if we commit them all (~35KB each) — not ideal
- Build time — 850 extra SVG files generated per build adds overhead
- Font dependency — the SVG-to-JPEG conversion requires fonts to be installed locally (Red Hat Display, Atkinson Hyperlegible)
Suggested Approach
Rather than committing images to the repo like blog posts do:
- Generate at deploy time — run the SVG-to-JPEG conversion in the
eleventy.after event for production builds (not just serve mode), outputting directly to dist/
- Keep it simple — company name + remote policy/region on the branded background
- Cache on Netlify — use
netlify-plugin-cache (already a dependency) to cache generated images between deploys so only new/changed companies trigger regeneration
- Incremental — skip conversion if the output file already exists (the current blog pipeline already does this)
This avoids bloating the git repo while still giving each company a unique social card.
Alternative
If deploy-time generation proves too slow or complex, an external OG image service (e.g. Vercel OG, Cloudinary) could generate images on-demand via URL parameters. This would add an external dependency but remove all build-time overhead.
Summary
Company profile pages currently use the generic site-wide OG image for social sharing. Blog posts already have dynamic per-post OG images generated via an SVG → JPEG pipeline. We should extend this to company profiles.
Current System (Blog Posts)
src/common/og-images.njkgenerates an SVG per blog post using Eleventy paginationsrc/_config/events/svg-to-jpeg.jsconverts SVGs to JPEGs using Sharp (via@11ty/eleventy-img)src/assets/og-images/— the converter skips files that already existConsiderations
Suggested Approach
Rather than committing images to the repo like blog posts do:
eleventy.afterevent for production builds (not just serve mode), outputting directly todist/netlify-plugin-cache(already a dependency) to cache generated images between deploys so only new/changed companies trigger regenerationThis avoids bloating the git repo while still giving each company a unique social card.
Alternative
If deploy-time generation proves too slow or complex, an external OG image service (e.g. Vercel OG, Cloudinary) could generate images on-demand via URL parameters. This would add an external dependency but remove all build-time overhead.