The estimate is a state machine, not a PDF.
The useful automation starts before the first reminder. A contractor needs one record that can answer four questions without opening an inbox: Was the estimate delivered? What state is it in? Who owns the next action? When is that action due? If any answer lives only in somebody's memory, a message sequence will hide the problem instead of fixing it.
Use a small set of estimate states that describe reality: draft, sent, viewed if the estimating tool can prove it, customer question, revision requested, awaiting decision, accepted, declined, expired, and closed-lost. Do not create a state for every conversation. The state should change the next action.
| Estimate state | System action | Human action |
|---|---|---|
| Sent | Confirm delivery and set the first follow-up date | Verify contact details on high-value work |
| Customer question | Pause reminders and put the reply in the estimate record | Answer scope, price, or scheduling questions |
| Revision requested | Replace the follow-up date with a revision due date | Update scope and resend the correct version |
| Awaiting decision | Continue the approved cadence | Call when value, age, or customer history crosses your threshold |
| Accepted, declined, or expired | Stop the sequence | Schedule, record a reason, or close the record |
Build the stop condition before the next message.
The most damaging failure is not a late follow-up. It is a reminder that keeps going after the customer replied, declined, booked, or asked for a change. Every channel that can receive a response must update the same estimate state or create a visible exception for staff.
A stop condition should fire on acceptance, decline, expiration, a detected reply, a scheduled call, a revision request, or a manual pause. A vague reply such as "let me talk to my spouse" should not be treated as a win or a loss. It should pause the generic cadence and create a dated next action for the estimator.
Field test: Pick ten recent estimates and reconstruct the timeline from delivery to final outcome. If you need to search texts, email, voicemail, and the estimating tool to understand one quote, the integration problem comes before the copy problem.
A useful first version has five parts.
- One estimate ID. The quote, customer, job type, value, version, owner, and current state stay attached to the same record.
- One approved cadence per meaningful segment. Residential repair, commercial bid, emergency work, and a large replacement project may need different timing. Start with the few segments that actually change staff behavior.
- Plain messages with context. Reference the work and the next decision. Do not manufacture urgency or pretend an automated message is a personal check-in.
- An exception queue. Replies, high-value estimates, bounced messages, missing contact information, and overdue revisions need a named owner and due date.
- A closed-lost reason. Price, timing, no response, chose another contractor, project cancelled, and out of service area are more useful than one generic "lost" bucket.
If text messages are part of the workflow, capture the permission basis your business relies on, make opt-out easy, and have the system honor a request across future automated texts. The FCC recognizes several reasonable ways a recipient can revoke consent, not only one exact keyword. Review the current rules and your own use case before launch. Read the FCC order on revocation and opt-out methods.
Measure leakage, not message activity.
Open rates and message counts can look healthy while valuable estimates still sit untouched. Review the number and dollar value of sent estimates with no next action, median time from sent to first response, accepted work by estimate age, overdue human follow-ups, and closed-lost reasons. Compare results by job type and lead source only when there is enough volume to make the comparison useful.
The owner view should end in a work list: five estimates need a call, two revisions are late, three customers replied, and one accepted job has not been scheduled. That is the difference between reporting and another chart.