Quote Lifecycle Desk
n8n follows quotes across scheduled emails, replies, reviews and failure paths without duplicating a milestone
The lifecycle risks a reviewer can trigger
The public console states the expected policy result before every run, then shows structured classification, confidence, guardrail, Sydney business-hours routing, idempotency, retries, audit ID, execution trace and the stored synthetic state. The public parser is deterministic and makes no model call. The 64-case and 8-case figures both come from the hash-locked release evidence measured on 1 August 2026; the accepted delivery run later that day wrote its own live results to the current-run path and left the published figures untouched.
A milestone is not sent twice
A unique database key, transactional lease and stored action receipt suppress repeated scheduler and webhook effects.
VERIFY: Run Duplicate milestone and inspect the two calls in the raw responseA reply resolves to one quote or none
Automatic processing requires the stored Gmail thread and visible quote reference to agree on one record.
VERIFY: The source suite covers exact, missing, wrong, multiple and conflicting referencesA promised date moves the next action
A valid deferred decision schedules one check at 09:00 Australia/Sydney and cancels the previous pending check.
VERIFY: The acceptance suite verifies the deterministic deferred_check stateUncertainty cannot become a sales outcome
Low confidence, ambiguity, malformed schema and contradictory evidence leave the quote open and create review.
VERIFY: Run Low-confidence reply and inspect state.reviewsThe report is replayable
Totals and loss reasons come from stored events and an event watermark; the same input produces byte-identical JSON and hash.
VERIFY: Download the measured evidence summaryFailures are bounded
Retryable mail and carrier errors stop after three total attempts and create one dead letter per source key.
VERIFY: Run Provider failure and inspect retry count, fallback and stored dead letterThe installed instance must match the build
Delivery compares every installed n8n workflow node for node with the versioned builders and requires the four named credentials to resolve. A drifted workflow, or a credential a test run left behind, fails the release check instead of passing behind green tests.
VERIFY: Compare delivery verification and independent review in the measured evidence summaryPublished claims stay tied to one accepted release
The accepted evidence locks four source hashes and all six must-prove mappings. Both live suites now move only through an explicit snapshot selection, so a routine provider run cannot age a published figure, and the replaced matrix stays committed next to it. A separate export gate compares the sanitized 11-workflow set and its 97 nodes with the versioned builders.
VERIFY: Download the measured evidence summary from the proof console- Public proof console validates a synthetic reply and calls one internal n8n webhook
- n8n returns structured lifecycle category, priority, confidence and Sydney business-hours state
- A deterministic gate chooses state change, human review or dead-letter fallback
- The maintained public workflow executes versioned PostgreSQL transaction functions
- PostgreSQL stores quote state, idempotency receipt, audit events, reviews and dead letters
- Private acceptance profiles test Google Sheets, Gmail threading and model output without exposing credentials
Synthetic data only in the public demo. The browser can reach the proof console, not n8n, PostgreSQL or provider credentials.
- The public custom-input path uses a deterministic sandbox parser and does not call a model provider.
- Live acceptance used private Gmail, Sheets and model profiles; those credentials are absent from the demo stack.
- Provider processing region and retention were not configured or measured.
- Workflow executions omit success and error payload storage; synthetic state resets nightly.
- No client data, client tenant, revenue result, conversion result or saved-time claim is part of this project.
Long-running quotes create a coordination problem: the follow-up date lives in one place, the email thread in another and the eventual decision often arrives as unstructured text. Quote Lifecycle Desk treats the lifecycle as stored events instead of a set of editable status cells.
A real Google Sheets acceptance profile reads and writes synthetic quote rows. n8n schedules day-10 follow-up and day-21 escalation, then Gmail replies must match both the stored thread and the visible quote reference before a record can change. PostgreSQL owns the state machine, unique milestone claims, outbox, review queue, audit trail and dead letters.
Reply classification uses a strict versioned schema and a deterministic gate. Confidence below 0.85, malformed output, contradictory evidence or an invalid decision date leaves the quote unchanged and creates human review. Weekly reporting is replayed from stored events and an event watermark, so the same event set produces the same content hash.
This is a self-directed spec project with synthetic data, not client work. The public console runs the real n8n sandbox workflow and PostgreSQL transactions. Live Gmail, Sheets and model credentials stay outside the public stack; their results are reported only from the versioned acceptance evidence.
What it does
- Day-10 follow-up and day-21 escalation with unique milestone claims under concurrent scheduler runs
- Reply matching requires one Gmail thread and the same visible quote reference before any state change
- Won, deferred and four loss outcomes behind schema, evidence, confidence and date guardrails
- Ambiguous or malformed replies create review records without changing the sales outcome
- Weekly summary reproduced from stored events, event watermark and SHA-256 content hash
- Mail and carrier failures stop after three attempts and end in an auditable dead letter



Want something like this for your business?