Shop Local. Give Local.
One campaign record produced every asset on this page — graphics for thirteen formats across three campaign moments, plus ready-to-post copy for seven channels.
The partnership goes live. Announce the product and the cause.
Posted to the business and cause channels.
Placed on ourtown.store and in campaign email.
Printed for the storefront and the counter.
Generated from the same record as the graphics, so the price, the goal and the disclosure can never disagree.
loading…
loading…
loading…
loading…
loading…
loading…
loading…
Social proof and urgency — the community is already behind it.
Posted to the business and cause channels.
Placed on ourtown.store and in campaign email.
Printed for the storefront and the counter.
Generated from the same record as the graphics, so the price, the goal and the disclosure can never disagree.
loading…
loading…
loading…
loading…
loading…
loading…
loading…
Celebration and thanks. Name the impact, not the ask.
Posted to the business and cause channels.
Placed on ourtown.store and in campaign email.
Printed for the storefront and the counter.
Generated from the same record as the graphics, so the price, the goal and the disclosure can never disagree.
loading…
loading…
loading…
loading…
loading…
loading…
loading…
Nothing on this page was designed by hand. A single campaign record — the two partners, their logos and brand colors, the product, the goal and the disclosure — was passed to the generator, which produced all 66 graphics and 21 copy files in about half a minute. Changing the partnership changes every asset.
Brand colors are checked for legibility before use: Vancouver Youth Basketball's
orange was automatically darkened where it would otherwise have been unreadable on the cream
background, and that adjustment is recorded in manifest.json rather than applied silently.
The disclosure appears on every asset — including the 300×600 web banner, where it is set at 9px rather than dropped. The generator refuses to run without one, so a campaign can't go out stating what it gives back without saying how much: $18 from the sale of each Volcanoes Community Hat is paid to Vancouver Youth Basketball, a 501(c)(3) nonprofit organization. Campaign runs through September 30, 2026.