Case study · Product Development · Atmosfy

128K restaurants. Every image personalized.

Atmosfy needed personalized outreach for 128,000+ restaurants, but manual image creation doesn't scale. We built an engine that auto-generates marketing images from real restaurant data.

OpenGraphImage.comAtmosfy REST APITailwind CSS + Alpine.jsApollo · BrazeMD5 signed URLs

128K+

Restaurants covered

0

Manual image work

3

Channels served

<2s

Render time

Service

Product Development

Engagement

Project

Platforms

OpenGraphImage.com · Braze · Apollo

Scale

Personalization, automated.

Restaurants covered

128K+

Every image personalized

Every restaurant in Atmosfy's database gets unique marketing images auto-generated from real customer data — across email, social, and print, in under 2 seconds per render.

Generic marketing doesn't scale

The problem & the shape of the solution.

The problem

  • Restaurant owners need personalized outreach
  • Diners expect engaging social content
  • Manual image creation doesn't scale to 128,000+ venues
  • Generic templates get ignored

The solution

  • Auto-generated images per restaurant
  • Real customer data from Atmosfy
  • Works for email, social, and print
  • Powered by OpenGraphImage.com

Connecting to Atmosfy's data

Three signals per venue.

Atmosfy's API surfaces rich, real-time data for every venue. We pull three primary signals and merge them into the template at render time.

Restaurant details

Name, location, cuisine, hours, contact info.

{
  name: "Berkeley Social Club",
  address: "2050 University Ave",
  rating: 4.25,
  cuisine: ["American", "Korean"]
}

Video content

Customer-created videos, thumbnails, engagement metrics.

{
  videos: [
    { thumbnail: "...", views: 15234 },
    { thumbnail: "...", views: 9821 }
  ]
}

Social proof

Ratings, reviews, follower counts, sentiment.

{
  rating: 4.25,
  followers: 44154,
  posts: 9
}

How we built dynamic images

Template → data → snapshot → signed URL.

01

HTML template

Built responsive HTML with Tailwind CSS + Alpine.js — every block driven by URL parameters.

02

Dynamic data

Pass restaurant data (name, address, rating, video thumbnails) via query string parameters.

03

Snapshot

OpenGraphImage.com captures a 1200×630 PNG snapshot of the rendered template.

04

Secure URL

Server-side MD5 signature prevents unauthorized image generation. Each URL is signed.

  • Connected to Atmosfy’s REST API to pull restaurant details, customer videos, ratings, and social proof data
  • Built responsive HTML templates with Tailwind CSS and Alpine.js for dynamic rendering
  • Integrated OpenGraphImage.com for server-side screenshot capture and CDN delivery
  • MD5 signature security preventing unauthorized image generation requests
  • Multi-channel output: Apollo email campaigns, Braze customer messaging, print-ready PDFs with QR codes
  • Automated cold outbound emails showing each restaurant’s actual reviews, photos, and ratings

Personalized content for every channel

One render. Three outputs.

01

Apollo email campaigns

Automated ‘claim your business’ emails showing restaurant owners their real customer sentiment.

  • Personalized image per restaurant
  • Real video thumbnails from customer posts
  • Actual ratings and review counts
  • Sent via Apollo for outbound sales

02

Braze customer messaging

Push notifications and in-app messages featuring restaurants users have engaged with.

  • Dynamic OG images for social sharing
  • Auto-updates when restaurants add new content
  • Triggered via Braze on user behavior
  • Renders on Facebook, Instagram, X

03

Print-ready PDFs + QR

High-res images for direct-mail campaigns with QR codes that link to personalized claim pages.

  • Print-resolution variant of the OG render
  • QR code per restaurant deep-links to its claim page
  • Same template, different output channel
  • Zero manual layout work per piece

Sample renders

Same template. Different restaurant.

Each one is generated on demand from Atmosfy's API — restaurant name, brand colours, signature dish, hours, and a curated review block.

Berkeley Social Club — Bay-Area neighborhood spot — auto-pulled signature dish, hours, and ratings.

Berkeley Social Club

Bay-Area neighborhood spot — auto-pulled signature dish, hours, and ratings.

Gordon Ramsay Steak — Las Vegas fine-dining — brand-led hero with reservations CTA.

Gordon Ramsay Steak

Las Vegas fine-dining — brand-led hero with reservations CTA.

Mandarin Oriental · Tokyo — International luxury — same template, different geography.

Mandarin Oriental · Tokyo

International luxury — same template, different geography.

Technologies & platforms

The stack we ran.

OpenGraphImage.comAtmosfy REST APITailwind CSS templatesAlpine.jsMD5 signature securityApollo.io (outbound)Braze (customer messaging)OpenGraph protocol

The result

128K+ restaurants. Zero manual work.

Every restaurant in Atmosfy's database now gets personalized marketing images generated automatically from real data. The system serves three channels: email outbound, in-app messaging, and print. Images render in under 2 seconds per restaurant.

128K+

Restaurants covered

0

Manual image work

3

Channels served

<2s

Render time

What the team said

In their words.

We needed personalized outreach for 128,000 restaurants and nobody had a solution. BRCG built the engine that auto-generates marketing images from our own data — across email, social, and print, in under two seconds per render.

VP Marketing

Atmosfy

Atmosfy · Product Development

Want results like this?

Book a call and we'll create a free audit to tell you what's working, what's not, and what we'd change first.

Book a growth call