The problem
Landscape-lighting contractors sell an effect their prospects can't see until after installation, making it hard to close on-site.
Hand-mocking a nighttime lighting design in Photoshop is slow, skilled work that doesn't scale to every lead.
The approach
Wrapped an image-generation model in a contractor-facing web tool: one upload in, a rendered nighttime-lit version out.
Kept the stack fully serverless and edge-native so a small contractor could run it at near-zero fixed cost.
Instrumented the flow with a before/after comparison and lightweight feedback capture to tune render quality.
What I built
- A Cloudflare Worker API that accepts a daytime photo, calls an OpenAI image model, and returns the lit render
- A React + Vite frontend with a drag-and-drop uploader and an interactive before/after slider component
- R2 object storage for source and generated images, KV for feedback, and a D1 database for lead/usage records
- SQL migrations, a typed API client, and unit tests plus a Playwright end-to-end smoke test
- A staged product plan (foundation, auth, wizard, embeddable widget, dashboard, integrations) driving delivery
- Cloudflare Workers
- Cloudflare Pages
- R2
- KV
- D1
- OpenAI image generation
- React
- Vite
- TypeScript
- Playwright