The quote follow-up engine: win the jobs you lost to silence
Every quote chases itself — in your words, with your approval — until it's a yes, a no, or expired
Version history
Most quotes you never hear back on were winnable. A system that watches every quote and nudges — in your words, with your approval — until it ends in a clean yes, no, or expired.
The problem
You do the site visit, build the numbers, send the quote. Then silence. It is easy to assume you lost on price. Usually you did not. The customer got three quotes, got busy, and yours slipped down the inbox — and nobody reminded them. The sales-training figures you will see quoted (roughly 80% of deals need five contacts, about half of people never follow up once) are the caveat-worthy kind, so treat them as direction, not gospel. The direction is not controversial: a quote that goes quiet is not automatically a lost quote, it is an un-chased one. That is revenue you already spent time and diesel to create, leaking out of a process gap.
The reason it does not get chased is not laziness. It is that nobody can see the quotes by age and status, nobody owns the follow-up, and writing a fourth polite-but-not-pushy message from scratch is friction at exactly the moment you are tired. Fix the visibility and the drafting, and the follow-up happens on its own.
The architecture
▼
[ Invoice Ninja (self-hosted) — the quote book ]
│ status per quote: sent · viewed · accepted · expired
│ valid-until date, one-click accept for the client
▼ checked daily via API (accept = instant webhook)
[ n8n (self-hosted) — the follow-up engine ]
├─ day 3: gentle nudge · day 7: value + question
├─ day 14: last check · day 21: close as lost
▼
[ Local model (Ollama) drafts the message in your voice ]
▼
[ You approve ] → sends · accepted or replied → reminders stop. No nagging a client who already said yes.
Three parts on one box. The quote tool owns the truth about each quote. n8n owns the timing. The local model turns "quote 5 days old, €8,500 roof, viewed twice, no reply" into a two-line message that sounds like you, not like a debt collector. Nothing sends without your tap — this is a drafting assistant with a schedule, not an autopilot that emails your customers behind your back. If you already run the late-invoice chaser from this library, this is the same box doing the pre-sale half: one is chasing a yes, the other is chasing a payment.
Tool choices — and why
Invoice Ninja (Elastic License 2.0, 9.9k stars, active — release v5.13.26, 25/06/2026) is the quote book. It is built for exactly this: quotes with line items and a valid-until date, a client portal where the customer opens and accepts with one click, a status on every quote (sent, viewed, accepted, expired), and an accepted quote converts straight to an invoice. It records whether the client has opened the quote, which is a signal a plain spreadsheet cannot give you. The licence permits running it for your own business self-hosted; you keep the small "Invoice Ninja" mark on client-facing pages unless you buy the €40/year white-label. That is the only cost that is not €0.
n8n (fair-code Sustainable Use License — free for internal business use, 180k+ stars, actively maintained through 2026) is the follow-up engine. Once a day it reads your open quotes from Invoice Ninja, works out which ones are due for a day-3, day-7, day-14 or day-21 action, and runs each one. The instant an accept webhook arrives, it cancels the pending nudges for that quote. The same n8n instance can run your invoice chasing and inbox triage too — one automation box, several jobs.
A small local model via Ollama (MIT, 177k stars, release v0.32.1, 16/07/2026) drafts the message. A two-line, non-pushy follow-up is a small job — a Llama 3.1 8B or Qwen2.5 7B class model handles it well, and keeping it local means your customer names and prices never leave your hardware. This step is optional: skip it and n8n sends from fixed templates for €0 and zero extra RAM. The AI version just makes each nudge sound specific instead of stamped.
Monthly cost. Software: €0 for all three (plus the optional €40/year white-label). Hosting: Invoice Ninja and n8n run together on one small VPS at ~€5–12/month for a solo or small operation. The local model wants a machine with 8GB+ RAM to be comfortable — run it on your office PC or your own laptop rather than paying for a bigger VPS, or drop it and use templates. Email goes out through your existing mailbox's SMTP. No per-seat, no per-quote, no per-envelope fee.
Setup outline
1. Deploy Invoice Ninja (official Docker image) behind HTTPS on your domain — quotes.yourbusiness.example. Set your company details, tax, and a default "valid for 30 days" on quotes so every quote has an expiry the engine can act on.
2. Send your next few real quotes through it instead of a PDF by email. This is the habit change; the automation is worthless if quotes still leave as attachments it cannot see.
3. Deploy n8n on the same box. Build one workflow on a daily schedule: read open quotes → for each, compute days since sent and current status → branch to the day-3 / day-7 / day-14 / day-21 action.
4. Add the accept webhook so a quote marked accepted immediately stops its pending nudges. Test this path first — it is the one that embarrasses you if it is wrong.
5. Wire the drafting step: n8n sends the quote's context (amount, what was quoted, days since sent, viewed or not) to your local model with a short instruction, gets back a two-line message.
6. Route every draft to you for approval — a message in Telegram or email with Approve / Edit / Skip — before anything sends. Never let day-1 of this system auto-send to a live customer.
7. Set up SPF, DKIM and DMARC on your sending domain before the first real follow-up, or your nudges land in spam and you will swear the system is broken when it is your DNS.
8. Run it in "draft only, I send manually" mode for two weeks. Once the drafts are consistently good, let approved ones send automatically. Keep the day-21 "close as lost" — a clean pipeline is the point.
Pitfalls — the real ones
Persistence is not pestering, but the line is real. Confirmation-free spam trains a customer to ignore you. Day 3, 7, 14, one final at 21, then stop. A quote chased eight times does not convert better than one chased three times; it converts worse, because now you look desperate.
Close as lost, out loud. The discipline that makes this work is marking dead quotes dead at day 21. "I think they are still interested" three weeks later is how a pipeline rots. Won, lost, or expired — no maybe pile.
Do not let the AI invent. A local model asked for a nudge will sometimes invent a discount, a deadline, or a detail you never offered. That is why every draft is held for your approval, and why the prompt must say "do not offer anything not in the quote." Read before you tap send.
The quote has to leave through the tool. If half your quotes still go out as a PDF attachment from your phone, the engine is blind to them. One box, one path, or it does not work.
Reminders to an existing prospect are fine; marketing is not. A follow-up on a quote they asked for is legitimate. Bolting a newsletter sign-up or an unrelated offer onto it is a different, consented conversation — keep them apart.
Verified repos
Invoice Ninja — Elastic License 2.0 (self-host for your own business), 9.9k stars, active (release 25/06/2026)
n8n — Sustainable Use License (free self-hosted internal use), 180k+ stars, active (2026)
Ollama — MIT, 177k stars, active (release 16/07/2026)
Get the next blueprint as it publishes — free, practical, verified tooling only.
Subscribe · Want this audited or extended for your business? DM @RXed_EU
Get this blueprint tailored to your business — free
Tell us what you run and where. We research your sector's specifics — rules, tools, customer habits — and send you a version of this blueprint rebuilt for your situation, usually within 24 hours.