This explains the automatic follow-up system so anyone can maintain it — not just whoever built it. It's plain English on purpose.
Every quote is valid for 14 days from the day it's sent. The customer sees “Valid until [date]” on their quote, a gentle “N days left” note in the last 3 days, and once it lapses the Accept button becomes “Ask us to refresh this quote” (with a note that prices move, so we can only hold it 14 days). To change 14 days: it's set server-side in the create_quote/revise_quote steps (interval '14 days'). Re-sending a quote restarts the 14 days fresh.
A robot checks once a day (8am) and sends one friendly nudge at the right moment — never a daily barrage:
Emails come from the same address as the quote itself. SMS will be added when the texting line is ready. To change the timing: the STAGES settings in the quote-reminders job.
The moment a customer asks us something, the ball is in our court: all reminders and the expiry clock freeze — it would be rude to chase them while they're waiting on us. When we reply, the ball goes back to them and the clock restarts fresh (a new 14 days + the cadence begins again from our answer).
On their quote (and in every nudge) the customer can:
Any of these stops the noise — the whole point is a clean yes / no / not-yet, not endless poking.
Each quote quietly tracks: when it was offered, its valid-until date, whether the ball's in our court, how far through the reminders it is, whether it's been opened, its outcome (accepted / declined / follow-up), and the customer's email. The robot only ever nudges a quote that is unanswered, not paused, not snoozed, and inside its window.