HTML Refresher

Generate a brand-new email creative from a master prompt, or refresh an existing one — a fresh prompt every run, not the email itself.

Generate New Creative

Paste a complete master prompt — brand rules, structure, and variation instructions — and the LLM builds a brand-new email from scratch every time it runs. No reference HTML needed; the prompt itself tells the model how to vary colors, layout, and copy each run.

Generate preview

Refresh Existing Creative

Provide a reference creative and the AI will rebuild it visually — same look to a human, fresh HTML structure underneath.

No image selected
Options

Refresh preview

Saved prompts

Store campaigns you want Joe's mailer to pull by ID, revisit, or reload into the builder — both Generate New and Refresh Existing entries live here.

API settings

Keys and defaults are saved on the server.

API Access

Joe's mailing system uses this key to pull prompts from the library via /api/library — works for both Generate New and Refresh Existing campaigns. Full docs at /api-docs.html.

Pass this as the X-API-Key header on every API request. This key is auto-generated and stored on the server — it cannot be changed here.

How preview works

The app sends your saved key and the current refresh prompt to this server, which forwards the request to OpenAI or DeepSeek and returns the generated HTML so you can inspect it.

  • The saved prompt library is stored on the server (survives browser changes).
  • Export/import JSON from the Saved tab to migrate prompts between machines.

Keep the server running

To run the server in the background so it stays up after closing the terminal, install pm2 and run:

npm install -g pm2
pm2 start server.mjs --name html-refresher
pm2 save && pm2 startup