One application: a new marketing site feeding a scored lead queue, a project Kanban, automatic client updates on every status change, 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. No developer needed after handoff.
๐ฏ
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 a live dollar total for the pipeline and a live count of new leads. Moving a card is what triggers the client update, so keeping the board current and keeping clients informed became the same action.
Stack: Supabase (PostgreSQL) with row-level security, optimistic Kanban UI, live aggregate stats.
๐ฌ
Status change โ message
Automatic Client Updates
When a job changes stage, the client gets told without anyone typing a message: email through a verified sending domain, and WhatsApp through six Meta-approved message templates, including a review request that links straight to the shop's Google listing when a job completes. Bounced addresses are suppressed automatically so the shop's sending reputation stays clean.
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.