One application: a new marketing site feeding a scored lead queue, a project Kanban, configured email updates on project-stage changes, and a social composer for the shop's own work photos. Every setting the business might outgrow, from pipeline stages to scoring rules to message templates, is editable in a settings screen. The owner can change these settings without a code edit; new features and integration changes can still require development.
HOT / WARM / COLD
Lead Intake & Scoring
A public intake form asks what a sign buyer actually knows: project type, timeline, budget range. Every submission is scored automatically and lands in the lead queue as HOT, WARM, or COLD, so the owner works the storefront job before the banner inquiry. A honeypot field silently drops form spam, and the questions and scoring weights are editable in Settings.
Stack: Next.js form routes, configurable scoring rules in Supabase, honeypot spam filtering.
Visual pipeline + $ total
Leads Board & Project Kanban
New leads queue in their own board; accepted jobs become cards on a drag-and-drop Kanban that follows the shop's real stages from design through install. The dashboard shows estimated pipeline value and a count of new leads. Pipeline value is a planning estimate, not booked revenue. Moving a card can trigger an enabled customer email for that stage.
Stack: Supabase (PostgreSQL) with row-level security, optimistic Kanban UI, live aggregate stats.
Status change → message
Automatic Client Updates
Email updates were running at handoff through a verified sending domain. The owner can edit templates and switch notifications off by stage. Invalid or previously bounced addresses are skipped, and a failed send is reported separately from the saved job status. The WhatsApp integration was built, but activation still required Meta account approval and an end-to-end test in the delivery record; it is not presented here as a verified live channel.
Stack: Resend with bounce-suppression webhook, Meta WhatsApp Cloud API, per-stage templates editable in Settings.
FB + IG from one pane
Social Composer
Finished signs are the shop's best marketing, so posting them had to be trivial: upload a photo, write a caption, publish to Facebook and Instagram from one screen. Every upload is re-encoded server-side to a format Instagram accepts, so phone photos post without mysterious failures. We staged the first twenty posts from the shop's own portfolio as ready-to-publish drafts.
Stack: Meta Graph API via OAuth, server-side image conversion with sharp, draft queue with one-click publish.
Replaced the template site
Marketing Website
A new site on the shop's own domain, built around a gallery of 29 real jobs pulled from their archive instead of stock photos, a process section that sets expectations for how a custom sign actually gets made, and LocalBusiness structured data for Atlanta local search. The intake form is the site's front door, so the website and the lead system are one thing, not two.
Stack: Next.js static marketing pages, LocalBusiness JSON-LD, same app and domain as the dashboard.
No developer after handoff
Owner-Editable Settings
Branding, pipeline stages, notification templates, lead-scoring rules, and the intake form's own options are all editable from a settings screen, and changes flow through to the public form immediately. The business can rename a stage, reword a message, or reweight its scoring without calling anyone. That is what made the full handoff honest.
Stack: Config layer in Supabase read by both the dashboard and the public site, per-table row-level security.