Ditto / Case studies / My National Park Neighbor
Passion project · Ditto + Studio DBC

Every ZIP code has a National Park neighbor. We made 100,000+ share cards to prove it.

A microsite, a ZIP-code lookup, and a script that turned a public-lands dataset into a personalized card for every visitor. Two weeks, end to end. Built as a passion project at a time America's National Parks needed the attention.

2 wks
Concept to live
100K+
Personalized assets
3 /ZIP
Share card formats
ZIP 15443·Story format
The brief

Proximity builds pride.

America's National Parks were under pressure. Funding fights, attention drift, the sense that the system was something people fly to once a decade rather than a place that lives in their backyard. The team had a tool that could change the framing. So we built one.

How do we help people feel a personal connection to the National Park site closest to them?

The question that started the build

Not the one they dream of visiting someday. The one already part of their regional story. The one they could photograph next weekend.

When somebody learns that a National Park site is close to them, the relationship changes. It stops being abstract. It becomes local. Personal. Shareable.

That meant the campaign had to do two things at once. Help every visitor discover their closest park, and give them something specific enough to that park that they would want to share it. Generic was the enemy. Specific was the entire point.

How it works

Four steps. No account. No friction.

The microsite was built around one user flow: type, find, get, share. No sign-ups, no apps, no education funnel. The shortest possible path from curiosity to a card you can post.

Enter your ZIP

Visitor types five characters into the homepage input. No account, no friction.

Find your park

The lookup matches that ZIP to its closest National Park site. Could be a famous one. Could be one you didn't know existed.

Get your cards

Three formats appear: Story, Portrait, Square. Same park, three social placements. Pre-rendered, served from cloud storage, ready in milliseconds.

Share

Download, copy, post. The visitor becomes the channel. The campaign reaches further than any ad budget could carry it.

The output

One campaign. 100,000 audiences.

Every U.S. ZIP code got its own set of share cards. Same campaign identity, different park, different copy, different feel. Built once. Rendered for everybody.

Share card for ZIP 16213
ZIP 16213
Share card for ZIP 15443
ZIP 15443
Share card for ZIP 70816
ZIP 70816
  • 100,000+
    personalized share cards generated end-to-end
  • 3
    format variants per ZIP: Story, Portrait, Square
  • 50
    states covered, every ZIP code in the U.S. mapped to its closest National Park site
  • 1
    microsite delivering the lookup, results, and download in milliseconds per visit
The work

Data on one side. Infrastructure on the other.

A campaign at this scale runs on two systems. The first matches a visitor to their park. The second delivers the asset. We built both, then wired them so that a single ZIP-code submission resolved to a finished card in milliseconds.

01 · The data

A lookup table from ZIP to park.

Every U.S. ZIP code mapped to its closest National Park site. Park type. State. Filename of the card it would resolve to. The microsite never had to compute. It just looked up.

Edge case caught early: ZIP codes with leading zeroes (Puerto Rico, parts of New England) were being parsed as integers, dropping the zero, breaking the lookup. We coerced every ZIP to a five-character string at the source.

// Lookup record schema
{
  "zip": "00601",
  "state_name": "Puerto Rico",
  "closest_park": "Juan Bautista de Anza",
  "park_type": "National Historic Trail",
  "expected_file_name": "00601-NPSNeighbor.png"
}
02 · The infrastructure

Cloud-rendered, statically served.

Asset hosting on Azure Blob Storage, served from assets.dittoditto.io. The microsite never bundled the 100,000+ images; it loaded only the three matching the visitor's ZIP.

Microsite hosting on Azure Static Web Apps, deployed continuously from GitHub. Custom subdomain, React Router for interior pages, static configuration so refreshing /results/00601 didn't 404.

Pre-rendered, not on-demand. Every card existed before any visitor asked for it. The user experience stayed fast because the system never made anyone wait on a render queue.

20K images
moved to Azure storage in 118 seconds. Transfer benchmark from a single production batch.
What it proved

Five things we learned.

The campaign was a test. Here is what the test returned.

01

Personalization turns a broad cause into a local story.

"Support National Parks" is broad. "This is your National Park Neighbor" is personal. The shift from cause to story is the unlock.

02

Data creates emotional entry points.

The data isn't the story. The data helps each person find their way into the story. ZIP code in, identity out.

03

Microsites are a Ditto delivery layer.

Ditto doesn't have to live as backend asset generation only. It can power complete campaign experiences: lookup, delivery, sharing, and amplification, in one place.

04

Pre-rendering keeps the experience fast.

Generating cards on demand would have meant render queues, spinners, and abandoned sessions. Pre-rendering them all up front meant the visitor saw their park instantly.

05

The same model works for any audience with structured data.

Grant recipients. Small business owners. Franchisees. Event attendees. Athletes. Donors. Members. Customers. Employees. Alumni. If you have a list and a record per row, you have a campaign.

What it argues

Two ideas. Both true. Neither optional.

The negative

Stop renting your audience.

Paid media buys reach you don't keep. The campaign ends. The audience disappears. Every dollar spent on borrowed attention is a dollar that didn't build something the audience would carry forward themselves.

The positive

Your audience is your distribution channel.

When an asset is made specifically for somebody, they don't just consume it. They share it. The campaign reaches further than the budget would have carried it, and the brand owns the work that got the reach.

Ready when you are

If you have a list, you have a campaign.

Tell us your audience and the data you already hold about them. We will show you what we would build, on what timeline, at what cost.

About this project. My National Park Neighbor was a passion project by Ditto and Studio DBC, built at a time America's public lands needed the attention. The microsite at parkneighbor.dittoditto.io is no longer live. The infrastructure, asset library, and data pipeline documented above were built and operated during the campaign run. Some metrics referenced (asset counts, ZIP coverage) are floor estimates pending final log verification.