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.
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