A quote can sit unanswered while your team works out who last contacted the customer and whether the terms still apply. This kit checks those supplied facts before offering a draft for review.
Free, stateless starter kit. Real connections and actions require a separately agreed implementation.
The job
When this check is useful
Review a quote when its agreed follow-up interval has elapsed. The free kit checks one supplied record; it does not watch your inbox, read a CRM or run a reminder schedule.
Start with these source facts
quoteId
A short source identifier so your reviewer can locate the original quote. The kit does not use it as instructions or put it in the draft.
status, currency, amountCents
Whether the quote is open, accepted or declined, plus its stated currency and total in integer cents. An unknown amount needs review.
lastContactAt, validUntil, followupAfterDays
Last recorded contact, quote expiry and your explicit interval of 1–30 days. The fictional example uses three days; that is a sample policy, not a CRM setting.
asOf, observedAt
When to evaluate the record and when its source facts were observed, as UTC timestamps. A future snapshot or one older than seven days needs review.
Supported currencies: USD, EUR, GBP, CAD, AUD. Amounts are integer cents; no exchange-rate conversion is performed.
Computed examples
See what passes and what needs review
These are fictional records evaluated at their stated asOf time, not live business data. Results below come from the same rules as the free kit. A ready state permits preparing an unsent draft; it does not authorize an action.
Known source facts
Result: ready
An open, unexpired quote is due for a reviewable follow-up draft.
Follow-up timing
Applied the supplied 3-day sample follow-up policy; this is not a CRM setting or a promise.Source: lastContactAt / followupAfterDays
Evaluated at 2026-10-12T12:00:00Z. Simulation: true. No draft requested; nothing sent or saved.
Expired terms: confirm a current quote before following up.
Contact recorded after the snapshot, or expiry before contact: resolve the conflicting dates.
Accepted or declined quote: no follow-up draft. Interval not yet elapsed: no action.
What a useful result must do
An open, unexpired quote with known facts and an elapsed interval produces a ready result.
Missing amounts and impossible calendar dates produce needs_review and no draft.
A reviewer confirms the recipient, last correspondence and current terms before any sending in a separately implemented system.
Check what you already have
Your existing tool may cover this
Can your CRM filter open quotes by last contact and expiry without a new integration?
Does an existing reminder stop when a quote is accepted or declined?
Can the sales owner review a template and record the decision in the current tool?
A scoped implementation would first map the quote record, contact history, ownership and stop conditions. Only then would we decide whether to configure an existing reminder, connect tools or build a small extension.
Run the free kit yourself
Use an AI client that supports local MCP tools and Node.js 20 or later. This pinned command starts the quote-followup kit over standard input/output:
npx -y mainstreet-mcp@0.1.4 kit quote-followup
The two tools analyze a supplied record and prepare an unsent draft. The kit makes no provider calls and does not persist the input. Review your chosen AI client’s data handling before supplying business records; that client may require its own subscription or model charges.
Start with the workflow, current tools and the person who reviews exceptions. We agree the scope and fee in writing before paid work. Connections, sending, record updates, ongoing monitoring and maintenance are outside the free kit and must be scoped explicitly.