Inspiration

We built Cold Open at Cloudflare HQ, surrounded by independent cafés and shops that have no website or an outdated one. The U.S. has 36.2M small businesses, and 28% of those surveyed said they had no website. Agencies pitch first and build later, which asks busy owners to imagine the result and trust a stranger. We reversed the order: do the work before the sale.

What it does

A team of AI agents walks the block and builds each business a website before anyone says hello:

  • Scout finds independent businesses near us on OpenStreetMap and skips chains.
  • Archivist reads the business's own site and pulls out its real colors, fonts, voice and story.
  • Builder writes the site, and the Critic scores it. Below 85, it goes back for another version.
  • Director makes a hero image, and Closer writes an honest pitch with a $49 Stripe checkout.
  • CFO tracks model spend against revenue, live.

The owner can buy the site in one tap or remove it in one tap. It all plays out live in Mission Control, a map of the block with an agent chat channel.

How we built it

The whole product is one Cloudflare Worker and one Durable Object, built on the Agents SDK. HQ holds all state in its SQLite storage, runs the pipeline and pushes updates over WebSocket. Model calls try Claude → OpenAI → Workers AI, and the first valid JSON wins. Hero images go in KV, and payments use Stripe test-mode Payment Links with verified webhooks. With zero API keys it still runs end to end on Workers AI.

The Critic answers 14 weighted pass/fail checks, and the score is computed in code:

$$ \text{score} = \operatorname{clamp}\Big(\sum_{c \in \text{passed}} w_c - 6h - D,\ 0,\ 100\Big) $$

Here $h$ is the number of banned stock phrases found and $D$ is the total of the structural deductions. The loop repeats until $\text{score} \ge 85$ or $n = 3$ versions.

Challenges we ran into

  • Flaky map APIs. We hedge across 3 Overpass mirrors, starting the next one after 4.5 s of silence, and fall back to a bundled snapshot.
  • Workers AI quota ran out mid-demo. A circuit breaker now skips Workers AI and falls through to other providers.
  • Durable Object restarts killed builds partway through. HQ now resumes them on start.
  • Ethics. Every preview is labeled unofficial, is noindex, and has one-click removal. Nothing is invented and nothing is sent automatically.

Accomplishments that we're proud of

  • The taste gate works on real businesses. Momo's went 64 → 96. El Porteño shipped openly flagged at 72.
  • The full loop is real, from an OpenStreetMap pin to a live site to a Stripe checkout.
  • It never falls over. Every dependency has a fallback.

What we learned

  • Binary checks are far more consistent than free-form scores.
  • Deterministic guards belong next to the model.
  • One Durable Object can replace a database, a queue and pub/sub.
  • For an unsolicited product, trust is the product.

What's next for coldopen

Custom domains through Cloudflare Registrar, compliant email outreach, Stripe Connect payouts for local designers, agent evals, and more cities.

Built With

Share this project:

Updates

Submission history