runbookify
← All plans
Sales & CRM / Quotes & Proposals

Quote Acceptance & Sign-Off Portal

A customer-facing portal where a prospect opens a unique link to view a quote, ask a question, and accept it with a typed signature and agreement checkbox - turning 'they said yes somewhere in email' into a clean, timestamped acceptance record you can hand to finance.

IntermediateA weekendBuilds onNext.js (App Router) on VercelSupabase (Postgres + Storage + Auth with RLS)Resend (email notifications)
What you'll build

A rep issues a unique quote link, the customer views and accepts it with a signature and checkbox, the acceptance is captured with a timestamp and IP, the rep is notified, the quote is locked, and a clean CSV/handoff is exported for order entry.

Gated download

Enter your email — the plan downloads instantly and a copy lands in your inbox.

By submitting your email you'll also receive the weekly runbookify newsletter. You can unsubscribe at any time.

Before you start

  • An approved quote you can copy in: line items, totals, terms, and a validity date
  • The customer's name and email
  • Free accounts on Vercel, Supabase, and Resend (the plan walks you through them)
  • Optional: your brand colors and logo for the customer view page

The problem this kills

Right now, a "yes" lives somewhere terrible. It's a line buried in an email thread, a thumbs-up in a text, a "go ahead" said on a call that nobody wrote down. When finance or onboarding asks "where did the customer agree to this exact quote, with these terms, on what date?" - you go digging, and what you hand them is a screenshot and a shrug.

That gap costs you. Quotes get fulfilled against the wrong version. Terms get disputed. Onboarding stalls while someone hunts for proof. And the validity date everyone agreed to has quietly expired, so now you're honoring a price you shouldn't.

This tool replaces "they said yes by email somewhere" with a real artifact: a signed, dated, locked acceptance record tied to one specific quote.

What you'll build

A small, branded web portal with two sides:

  • The customer side: a clean page they reach through a unique, private link. They see the quote exactly as you approved it - line items, totals, terms, the validity date. They can ask a question, then accept by typing their name as a signature and ticking an agreement checkbox.
  • Your side: a private, login-only dashboard where reps issue links, watch their status (sent, viewed, accepted, expired), get notified the moment a customer accepts, and export a clean handoff record for order entry.

The moment a customer accepts, the system stamps the acceptance with the exact time and the customer's IP address, stores the terms text they agreed to, locks the quote so it can't be quietly changed or re-accepted, and emails the rep.

What's inside the Implementation Plan

The plan is a single file you paste into an AI coding agent (Claude Code), and it builds the tool with you step by step - no coding on your part.

It opens by interviewing you about your business. Before it writes a line of code, the plan has the agent ask about your real quote process: how your quote numbers look, what your line items and totals contain, where your quotes live today, your validity windows, your approval rules, and the messy exceptions (revised quotes, partial acceptances, the customer who forwards the link to their boss). It reflects a short tailored spec back to you, you confirm it, and only then does it build. The result fits how you actually sell - it is not a generic template you have to bend yourself around.

Inside you'll find:

  • The full discovery interview that tailors the data model to your quotes.
  • A step-by-step build, where every step ends with a ready-to-paste prompt.
  • A branded, mobile-friendly customer view page.
  • Unique link tokens that expire on the quote's validity date.
  • Typed-signature + agreement-checkbox acceptance, with the consent text stored alongside it.
  • Timestamp and IP capture on acceptance.
  • Email notifications to the rep via Resend.
  • A locked, one-time-accept rule so a superseded quote can't be accepted.
  • A clean CSV / handoff export in the exact columns your order entry expects.
  • A "No API yet?" fallback so you can build this today, even with zero integration to your existing system.

The governance it includes (this is the point)

This is not a toy form. The plan builds in the controls that make the record trustworthy:

  • Login so only your team can issue links and see the dashboard.
  • Row-level security so each rep (and each organization) only ever sees their own quotes and customers.
  • A complete audit trail - who issued the link, when the customer viewed it, when they accepted, from what IP, against which terms.
  • A hard human approval gate, twice: a rep confirms a quote is final and approved before a link is ever issued, and a rep or ops confirms the acceptance is valid and complete before it's converted to an order or handoff. The system drafts; a person commits.
  • Duplicate and replay guards: the dedupe key is quote number plus link token, acceptance is one-time only, and expired or superseded quotes are blocked from being accepted at all.

Who it's for

Reps and sales ops who close on verbal or email approvals and have nothing clean to hand to finance or onboarding. If you've ever had to prove "yes, they agreed to this exact quote, on this date" and come up empty, this is for you. No developer required.

You've got this - paste the first prompt and let the plan interview you.

Gated download

Enter your email — the plan downloads instantly and a copy lands in your inbox.

By submitting your email you'll also receive the weekly runbookify newsletter. You can unsubscribe at any time.