Back to Blog

Blog

From MVP to Production: Hardening the Estimator

What happened after launch: adding persistence, notifications, and an admin dashboard.

10 January 20262 min read
Next.jsOperationsProduct

Shipping an estimator is the easy part. Keeping every request safe, traceable, and easy to follow up on is the real work.

What changed after the MVP

Once the estimator was live, I focused on three upgrades:

  • Persistence so every conversation is saved
  • Notifications so new requests are actioned quickly
  • Visibility so I can track status and outcomes

Data capture and storage

I moved messages into a lightweight database and created a single lead record that ties together contact details, estimates, and any screenshots.

The stack:

  • Vercel Blob for persistent message storage
  • Vercel Postgres for lead records and request metadata
  • Each screenshot is stored as a blob with a unique ID, referenced from the lead record

Admin tooling

The admin dashboard keeps follow ups simple. It supports:

  • status updates (New → In Review → Contacted → Qualified → Closed)
  • transcript review with the full chat history
  • quick contact actions (email client integration, copy lead data)

Admin dashboard with request list and detail view

Notifications

New requests trigger an email via Resend with:

  • Lead name and project summary
  • Link to the full conversation
  • Quick-action buttons to update status

This ensures nothing falls through the cracks, even if I'm away from the dashboard.

What I'd do differently

The MVP was intentionally lightweight, but in hindsight I would add:

  • Request tagging from the start (e.g., "e-commerce", "SaaS", "marketing site")
  • A quick-notes field for context that doesn't fit in chat
  • Automated status updates based on user actions

These improvements turned a useful MVP into a reliable lead pipeline.