Skip to content
02
Web App · 2025–26

The email builder

A multi-property email builder with one-click approval

The approval is the product. The editor just earns it.

Client
A luxury Australian property developerSole designer and developer · 2025–26, in production
Problem
On-brand emails for many developments were hand-coded HTML, and client sign-off lived in screenshots.
Built
A React app with an internal editor, a public no-login approval page, and 2-way GoHighLevel sync.
Result
1-clickclient approval with a full audit trail, from a public no-login link
02aThe problem

Building on-brand emails for many separate developments was manual HTML work. Client sign-off was a slow back-and-forth over email and screenshots, with no record of what was approved. And the CRM held a separate, drifting copy of everything.

sign-off lived in screenshots and reply-alls

02bThe build

A React app on Base44 that serves 2 audiences from a single codebase: an authenticated internal workspace for the marketing team, and public, no-login approval pages for clients. The highest-value feature is approval, not the editor.

structured fields in, on-brand HTML out

02cThe proof

1-click

client approval with a full audit trail, from a public no-login link

2audiences served from a single codebase, one authenticated, one public
2-wayGoHighLevel sync, so the app and the CRM hold the same truth

HandoverThe marketing team runs it day to day: versioned saves, a preflight panel before every send, and no raw HTML in sight.

every approval logged, timestamped, notified

Evidence · fig. 01–03

fig. 01Edit with AI: describe the change, the live preview updates. Creativity, strictness and scope set how far it goes. The live app, with the client's name and property imagery blurred.
fig. 02Projects: every development as a card, with its email count, last activity and a recently visited strip
fig. 03One development's campaigns: built in the app or synced from the CRM, filtered by draft, pending and approved

Discuss your system

Book a 30-minute discovery call