Customer Comms PREVIEW
Read-only preview of the comms engine. The editable UI ships in Phase 1.
What you're looking at
  • This page shows what got built in Phase 0 -- the rules engine for sending automated customer messages (SMS + email).
  • You can't send messages yet. Phase 0 is the brain; Phase 1 is the screens that let you and Jesy actually use it.
  • Three things on this page: the 10 templates that will eventually drive automated comms, the guardrails that keep us from spamming customers, and a simulator that shows what the system would decide in different scenarios.
  • Bodies say [PLACEHOLDER] -- that's intentional. Real wording gets written in the Phase 1 editor (with you reviewing) so I don't freelance customer-facing copy in your voice.
Templates (10)
The 10 canonical messages. Each one defines: who it goes to (role), how it's sent (SMS/email/both), and the message body with merge fields like {{ customer_first_name }}.
Template Who it goes to How Auto-fire?
Lead welcome / consult booking
First-touch SMS + email when a new lead is created. Includes consult-booking link.
Primary smsemail No (manual / approval)
Preview rendered with sample data
SMS:
Hi Jordan, this is Charlie at Closet Maestro. Thanks for reaching out about your project. I'll be in touch within a day to set up a free consult. Call 509-213-3000 anytime. - Charlie
EMAIL:
Closet Maestro - thanks for reaching out

Hi Jordan,

Thanks for reaching out about your project. I'm Charlie, the owner of Closet Maestro.

I'll be in touch within a day to set up a free in-home consult. We'll walk through your space, talk through what you're picturing, and I'll put together a proposal with everything spelled out so you know what you're getting.

If you've got photos of the space or any inspiration, feel free to send them along ahead of the consult. Otherwise no prep needed.

Questions in the meantime? Call us at 509-213-3000.

Talk soon,
Charlie

Required merge fields: customer_first_name
Consult confirmation
Sent when a consultation is scheduled.
Primary smsemail No (manual / approval)
Preview rendered with sample data
SMS:
Hi Jordan, confirming your Closet Maestro consult on Tue Mar 12, 10:00 AM at 123 Maple Ave, Springfield. Please call 509-213-3000 with any questions or to reschedule. - Closet Maestro
EMAIL:
Your Closet Maestro consult is confirmed

Hi Jordan,

Confirming your consult:

When: Tue Mar 12, 10:00 AM
Where: 123 Maple Ave, Springfield

We'll bring samples and a tape measure. We'll walk the space, talk through what you want, and take notes so we can put together a clear proposal afterward. Plan on about an hour.

If anything comes up and you need to move it, call us at 509-213-3000 and we'll find a new time.

See you then,
Closet Maestro

Required merge fields: customer_first_name, consult_datetime, consult_location
Consult T-1 reminder
24-hour reminder before consultation.
Primary sms No (manual / approval)
Preview rendered with sample data
SMS:
Hi Jordan, quick reminder your Closet Maestro consult is tomorrow at Tue Mar 12, 10:00 AM, 123 Maple Ave, Springfield. Call 509-213-3000 with any questions or to reschedule. - Closet Maestro
Required merge fields: customer_first_name, consult_datetime, consult_location
Design ready for review
Sent when design drawings are ready for customer/builder review.
Primary email No (manual / approval)
Preview rendered with sample data
EMAIL:
Your Closet Maestro design is ready to look at

Hi Jordan,

Drawings are ready for your project. Take a look:

View Proposal

Take your time with it. When you've looked it over, head into your project portal to leave notes or approve. If anything needs to change before we move forward (dimensions, finish, hardware, layout), drop a comment in JobTread or call us at 509-213-3000 and we'll get it updated.

Once you've approved, we'll send the formal contract for signature and can start scheduling production.

Thanks,
Closet Maestro

Required merge fields: customer_first_name, proposal_pdf_url
Proposal nudge
Manual follow-up when a proposal has been sitting unreviewed. OFF by default; never auto-fires.
Primary email No (manual / approval)
Preview rendered with sample data
EMAIL:
Following up on your Closet Maestro proposal

Hi Jordan,

Wanted to see if you've had a chance to look at the proposal. No pressure on timing.

If you have questions or want to change something, give us a call at 509-213-3000. If you've decided to go a different direction, that's fine too - just let us know so we can close out the file.

Thanks,
Closet Maestro

Required merge fields: customer_first_name
Install confirmation
Sent when an install date is committed (post-design, pre-production).
Primary smsemail No (manual / approval)
Preview rendered with sample data
SMS:
Hi Jordan, confirming your Closet Maestro install on Wed Mar 13, 8:00 AM arrival window. Please call 509-213-3000 with any questions or to reschedule. - Closet Maestro
EMAIL:
Your Closet Maestro install is scheduled

Hi Jordan,

Your install is on the calendar:

Date: Wed Mar 13
Arrival window: 8:00 AM

A few things that help us get it done quickly:

  • Clear out the closet or space we're working in. Anything left in there needs to be moved.
  • Make sure we can park near the entrance with a truck.
  • If you have pets, plan to keep them in another part of the house while we're working.

We'll text when we're 15-20 minutes out so you're not waiting around. If anything comes up before then, call us at 509-213-3000.

Thanks,
Closet Maestro

Required merge fields: customer_first_name, install_date, arrival_window
Install reminder (T-7 / T-1)
Reminder before install. Same template fires at T-7 and T-1; render uses {{days_until_install}}.
Primary sms No (manual / approval)
Preview rendered with sample data
SMS:
Hi Jordan, your Closet Maestro install is in 7 days (Wed Mar 13). Please have the space cleared before we arrive. Call 509-213-3000 with any questions. - Closet Maestro
Required merge fields: customer_first_name, days_until_install, install_date
Job complete / review request
Sent after install completion. Asks for a Google review. Direct review link is baked in.
Primary smsemail No (manual / approval)
Preview rendered with sample data
SMS:
Hi Jordan, thanks for letting Closet Maestro build for you. If you've got a minute, a Google review really helps a small shop like ours: https://g.page/r/Cd9tLJIB9OtmEAI/review. Call 509-213-3000 with any questions. - Charlie
EMAIL:
Thanks from Closet Maestro - mind leaving a review?

Hi Jordan,

Thanks for letting us build for you. It was a good project to work on, and we appreciate the trust.

If you've got a minute, a Google review goes a long way for a small shop like ours. It's the main way new customers find us. Even a sentence or two helps:

Leave a Review

If anything's not working right, or a hinge or drawer needs adjusting in the next few weeks, call us at 509-213-3000 or send a note in JobTread and we'll come take care of it.

Thanks again,
Charlie

Required merge fields: customer_first_name
Warranty / care instructions
Post-install care guide. Sent shortly after job_complete_review.
Primary email No (manual / approval)
Preview rendered with sample data
EMAIL:
Closet Maestro - caring for your new build

Hi Jordan,

Now that everything's installed, here's the care guide so it stays looking right:

View Care Guide

The short version:

  • Wipe surfaces with a damp microfiber cloth. No spray cleaners, no abrasives.
  • Don't overload shelves past their rated capacity (specs are in the guide).
  • If a drawer or door drifts out of alignment in the first few months, that's normal as the wood settles. Call 509-213-3000 and we'll come tune it up at no cost.

Full warranty terms are in the guide. Hold onto this email so you have it when you need it.

Thanks,
Closet Maestro

Required merge fields: customer_first_name, care_link
Internal: new JT customer message INTERNAL
Internal-only notification to Jesy/Charlie when a customer comments on a JT job. NOT sent to customer.
Internal email No (manual / approval)
Preview rendered with sample data
EMAIL:
[CM] New customer message on Avery Master Closet

Customer commented on Avery Master Closet:

Quick question about the hanging rod height...
Open in JobTread
Required merge fields: job_name, message_excerpt, job_link
Guardrails (current settings)
These rules apply to every send. Editable in the Phase 1 settings page; for now the values come from tools/maestro-dashboard/data/comms_settings.json.
  • Quiet hours: SMS only sends between 8:00 and 22:00 in the customer's local time. Outside that window, the system holds the message and reschedules to the next morning.
  • Daily cap: max 5 SMS and 1 email per customer per 24 hours. If we'd exceed, the message holds for review.
  • Default timezone: America/Boise (used when a contact doesn't have one set).
  • STOP keywords: STOP, UNSUBSCRIBE, CANCEL, END, QUIT -- if a customer texts any of these, we permanently stop sending SMS until they text START.
  • First-touch SMS opt-in: a contact's first SMS gets prepended with "Hi, this is Closet Maestro. Reply Y to receive updates by text, STOP to opt out.". Until they reply Y/YES/OK, automated SMS is blocked.
  • Approval gate: ON by default -- nothing sends without Jesy/Charlie clicking "Approve."
"What would happen if..." (Compliance)
Each row is a real scenario run through the rules engine. Green = system would send. Yellow = system would hold or reschedule. Red = system would block.
ScenarioResultWhy
Sandy is opted in. Send her an SMS at 10 AM her local time. No recent sends. Send All checks passed.
Same as above, but it's 7 AM her local time (before quiet hours start). Hold quiet_hours: outside 8:00-22:00 America/Los_Angeles
Reschedule to: Fri May 8, 8:00 AM PT
Sandy is opted in, but she already got an SMS an hour ago. Try to send another. Send All checks passed.
First-touch SMS to Sandy (she hasn't confirmed opt-in yet). Send (with opt-in prefix) sms_opt_in=none: prepend confirmation phrase
Sandy texted STOP yesterday. Try to send her an SMS. Block sms_opt_out: contact has opted out of SMS
Send Sandy an EMAIL at 7 AM. (Quiet hours don't apply to email.) Send All checks passed.
"Who would it go to..." (Routing)
The routing engine picks recipients based on three layers: template default → per-customer override → per-job override. Each row is a different scenario.
ScenarioResultRecipients & channels
Default: send 'install confirmation' to Sandy (Primary contact). No overrides. Send To: Sandy Smith via sms + email (matched layer: template default)
Same job has both Sandy (homeowner) and Jared (builder). Default routes to Primary. Send To: Sandy Smith via sms + email (matched layer: template default)
Customer override: this account ('acct1') wants install confirmations to go to Builder via email only. Send To: Jared Builder via email (matched layer: customer override)
Job override: this specific job has install confirmation suppressed (e.g. you already sent it manually). Suppressed Send blocked: duplicate send caught manually
Builder-only job (no homeowner contact). Default template wants Primary -- nobody matches. No Recipient no contact with role=Primary reachable on channels=['sms', 'email']
What's next (Phase 1)
  • Template editor at /comms/templates/<id> -- side-by-side preview, you and Jesy write the real wording.
  • Per-job comms tab at /production/<job>/comms -- one click sends a templated message to the right contact.
  • Communications log at /comms/log -- everything sent + every reply, filterable.
  • Settings editor (replaces "edit JSON" with real form fields).
  • Phase 1 ends with: Jesy gets templated one-click sends with full history. No automation yet -- she clicks every send.