Change History

Requested Emma updates, implementation timing, version references, and testing focus.

Current production reference

Use PRO team handoff language

Updated the booking/handoff drafting instructions, the default handoff prompt seed, and the shared lead-facing email renderer. Older generated drafts that still say Emma is cc'ing Tori or that Tori runs partner consultations are now normalized to PRO-team language before preview/send, and [BOOK_CALENDLY] continues rendering to the configured Bambu Earth PRO booking link.

Version
2026.06.15.1
Jun 15, 2026, 3:25 PM UTC
Jun 15, 2026, 3:25 PM UTC
Testing
Communications

Use PRO team handoff language

Lead-facing Send to PRO drafts should reference the Bambu Earth PRO team and the round-robin Sales Team booking link, not make the next step sound like Tori's individual calendar or consultation.

Updated the booking/handoff drafting instructions, the default handoff prompt seed, and the shared lead-facing email renderer. Older generated drafts that still say Emma is cc'ing Tori or that Tori runs partner consultations are now normalized to PRO-team language before preview/send, and [BOOK_CALENDLY] continues rendering to the configured Bambu Earth PRO booking link.

  • Regenerate a Send to PRO draft and confirm it says our Bambu Earth PRO team.
  • Confirm draft preview/send renders [BOOK_CALENDLY] to the configured Sales Team booking link.
  • Confirm stale drafts containing cc'ing Tori language are sanitized before lead-facing send.
  • Confirm internal Tori handoff notes are still protected from being sent to leads.
2026.06.15.1
Jun 12, 2026, 7:00 AM UTC
Testing
Human Queue

Surface Sales-owned replies to Emma

If a lead replies to Emma after Sales owns the relationship, show a notification for the team, but do not let Emma send more outbound communication. Include a mute button for handled notifications.

Inbox polling now stores replies from handed-off, claimed, or Sales Takeover leads, then immediately stops before classification, drafting, resource replies, or outbound send logic. Human Queue now includes a read-only Sales-Owned Replies lane and sidebar H count for these messages. Each notification can be opened for context or muted after the team handles it.

  • Confirm a reply after Sales Takeover appears in Human Queue without creating a draft.
  • Confirm a reply after handoff appears in the read-only Sales-Owned Replies lane and does not send an auto response.
  • Confirm muting a notification hides only that message and does not change the lead's Sales-owned status.
  • Confirm normal active Emma replies still route through Main Emma / Contacting / Instagram moderation as before.
2026.06.12.1
Jun 11, 2026, 4:35 PM UTC
Testing
HubSpot Sync

Treat HubSpot manual movement as Emma offboarding

Ensure any Sales movement of a HubSpot Lead out of Emma-owned stages fully stops Emma, prevents future communication, and moves the local Emma record into the Sales-owned / Deals Sent lane.

Emma now runs a generalized HubSpot ownership preflight before stage syncs and before any email send. If Emma previously owned a lead and HubSpot now shows a non-Emma stage like Contacting, Connected, Sales Takeover, Qualified, Disqualified, or another Sales-owned stage, Emma rejects open drafts, stamps the Sales Takeover stop marker locally, and stops writing the HubSpot Lead back into Emma stages. If Emma already reverted a Sales move, the next sync can restore the Sales-owned HubSpot stage from history before stopping. If the HubSpot Lead object disappears after Emma ownership, Emma stops locally instead of leaving the row stranded in Waiting for Tori. Contacting-batch sends and cleanup now also stop when HubSpot shows the row moved outside Contacting.

  • Move a lead from any Emma-owned HubSpot stage to Contacting or Connected and confirm Emma stops instead of reverting it.
  • Confirm open drafts are rejected and the lead appears in Deals Sent / Sales-owned locally.
  • Confirm actual HubSpot deals still use the claimed-deal path, not the Sales Takeover marker.
  • Confirm a missing/deleted HubSpot Lead object after handoff leaves Waiting for Tori and stops Emma.
  • Confirm normal Emma-owned sync still works for New, Emma Contacting, Emma Handoff, Future Partners, Faire Deal, and Emma Disqualified.
  • Confirm Contacting-batch rows moved out of Contacting in HubSpot cannot send more Contacting emails.
2026.06.11.4
Jun 11, 2026, 4:05 PM UTC
Testing
HubSpot Sync

Honor Sales moves out of Emma Handoff

Fix a bug where Tori could not move a lead from Emma Handoff into HubSpot Contacting or Connected because Emma's sync would revert it back to Emma Handoff.

HubSpot sync now detects when a lead that was already in Emma Handoff is manually moved by Sales into the non-Emma Contacting or Connected stages. Emma treats that as a Sales-owned exit, rejects pending drafts, stamps the local Sales Takeover stop, and does not move the HubSpot Lead back. If Emma had already reverted the move, the next sync can restore the Sales-owned stage from HubSpot history and then stop.

  • Move a handoff lead from Emma Handoff to HubSpot Contacting and confirm Emma does not revert it.
  • Move a handoff lead from Emma Handoff to HubSpot Connected and confirm Emma does not revert it.
  • Confirm a true first handoff can still move an eligible lead into Emma Handoff.
  • Confirm Qualified, Sales Takeover, active deal, DQ, Future Partner, and Faire Deal protections still work.
2026.06.11.3
Jun 11, 2026, 3:45 PM UTC
Testing
Contacting

Acknowledge closed-business Contacting replies

When a Contacting lead says they are closing or have closed their spa/business, Emma should draft an empathetic closeout that acknowledges that specific reply and then DQ after send.

Contacting smart regenerate and the manual decline-closeout button now detect closed-business language like closed spa room, closing studio, shut down, or no longer operating. The resulting closeout draft acknowledges the closure directly, wishes them well, keeps the door open if they reopen or start something new, and avoids sending resource links when the business is closed.

  • Regenerate Daphne Smock and confirm the draft mentions the closed spa room instead of generic timing copy.
  • Send the closeout and confirm the Contacting row moves to Disqualified.
  • Confirm ordinary decline and not-ready closeouts still use their existing copy.
2026.06.11.2
Jun 11, 2026, 1:35 PM UTC
Testing
Contacting

Reconcile Contacting records already owned by Sales

Clean up Contacting records that HubSpot already shows as Sales-owned, like contacts with active deals, Qualified Lead stage, or Sales Takeover, so they do not remain in Emma's Contacting queue.

Added a Contacting reconciliation pass that scans active Contacting rows against HubSpot, rejects pending Contacting drafts, and marks matching rows as moved / sales owned locally. The pass does not email prospects and does not move HubSpot records; it only brings Emma's Contacting queue back in line with existing HubSpot ownership.

  • Run a dry-run and confirm candidates include records with active deals, Qualified Lead stage, or Sales Takeover.
  • Run the live cleanup and confirm candidates leave Needs Qualification/Active Contacting without sending email.
  • Confirm pending Contacting drafts for reconciled records are rejected so they cannot be sent later.
  • Confirm Contacting still allows normal manual review for records that are not Sales-owned in HubSpot.
2026.06.11.1
Jun 10, 2026, 6:35 PM UTC
Testing
Copy Quality

Recognize student applicants and lock in-flight sends

Diagnose Samantha Vargas, who applied as a student at Entourage but received generic qualification copy, and prevent the same draft from being sent twice when auto-send and human send overlap.

First-touch drafting now reads key HubSpot form answers like industry detail and form-provided Instagram, and student/emerging-professional applicants receive a warmer pathing email that asks about graduation/license timing and whether the $500 opener is something they can plan for. The shared send path now claims a draft as 'sending' immediately before Gmail send, so a scheduled auto-send and a human click cannot both send the same draft.

  • Generate a first-touch draft for a Student at Entourage applicant and confirm Emma uses student-aware copy.
  • Confirm form-provided Instagram context prevents Emma from treating Instagram as completely unknown in ordinary first-touch prompts.
  • Confirm drafts in the sending state cannot be sent again until the first send resolves.
  • Confirm normal draft approval, scheduled first-touch, and handoff sends still go through the shared send path.
2026.06.10.7
Jun 10, 2026, 4:45 PM UTC
Testing
Cadence

Add sample request follow-up cadence

After Emma sends the sample application form, move the lead back into Attempting and send reminders 2 days later, 2 days after that, and 3 days after the second reminder if the form is still incomplete.

Sample application sends now move replied leads back to the active Attempting/Contacting bucket. The cadence cron has a separate sample-request branch that checks HubSpot sample-form submissions before every reminder, sends up to three sample-form reminders on a 2/2/3 day schedule, and keeps open sample requests out of the normal no-reply DQ path. If completion is detected before a reminder, Emma sends the sample-qualified handoff instead.

  • Confirm a sample application reply moves a REPLIED lead back to SENT/Attempting after send.
  • Confirm no reminder sends before two days have passed from the sample-form email.
  • Confirm completion detected before a reminder triggers one sample-qualified handoff instead of a reminder.
  • Confirm sample-request leads are not DQ'd by the normal no-reply cadence while the sample form is pending.
2026.06.10.6
Jun 10, 2026, 3:45 PM UTC
Testing
Routing

Add sample application route

When a lead asks for samples, have Emma send the sample application form automatically, detect HubSpot sample-form completion, then hand off to Tori/PRO and stop outreach.

Sample asks now use a dedicated sample application response instead of deferring samples to a call. Emma stamps the lead only after the sample link is actually sent, checks the configured HubSpot sample form for matching email submissions, and treats link-sent plus form-completed as a sample-qualified handoff trigger. The route keeps existing Sales Takeover, claimed deal, duplicate, and active-deal protections.

  • Ask for samples and confirm Emma sends the configured sample application resource link automatically.
  • Confirm missing sample resource or sample form ID blocks auto-send and appears in System Health.
  • Complete the sample form after the link was sent and confirm Emma sends one handoff, stamps sample handoff sent, and stops future outreach.
  • Confirm ordinary PRO handoffs still require license/business credential and $500 confirmation.
2026.06.10.5
Jun 10, 2026, 7:25 AM UTC
Testing
Copy Quality

Render booking CTA and clean price-sheet labels

Fix lead-facing Emma copy where the booking placeholder appeared without a visible link and remove the retail parenthetical from Wholesale Price Sheet copy.

Emma now renders the booking placeholder as the current Meet with Bambu Earth PRO link in draft previews, single-draft views, sent message persistence, and final Gmail sends. Lead-facing resource labels now display 'Wholesale Price Sheet' while keeping the existing resource key intact internally.

  • Open a draft containing [BOOK_CALENDLY] and confirm the preview shows the actual Meet with Bambu Earth PRO link.
  • Send a draft with booking copy and confirm the stored sent draft and outbound message include the actual link.
  • Generate resource/pricing copy and confirm lead-facing text says Wholesale Price Sheet without the retail parenthetical.
2026.06.10.4
Jun 10, 2026, 6:40 AM UTC
Testing
Operator UX

Fix stale follow-up regenerate fallback

Fix manual Regenerate for leads like Renee Langiotti where Emma had already replied to an older inbound, but regenerate kept producing a generic 'let me regroup' holding message.

Emma now only treats an inbound as reply-needed when it is newer than Emma's latest outbound. If the lead has not replied since Emma's last message, manual Regenerate creates a short no-reply follow-up and moves the lead back into active Attempting/Contacting. The defensive fallback copy was also replaced with a real thread-aware nudge so empty model output never becomes a holding reply.

  • Regenerate Renee Langiotti and confirm Emma does not write 'let me regroup' or 'thanks for the reply' when there is no unanswered inbound.
  • Confirm stale leads with prior outbound messages move into Attempting/Contacting after a manual no-reply regenerate.
  • Confirm fresh unanswered replies still use the resource/reply path and do not get downgraded into no-reply bumps.
2026.06.10.3
Jun 10, 2026, 4:55 AM UTC
Testing
Reliability

Prevent duplicate first-touch sends

Patch the main Emma automation path so duplicate scoring/enrichment runs cannot send multiple first-touch emails to the same lead.

Emma now checks for an existing first-touch draft before auto-creating one in the scoring pipeline, inside the first-touch draft generator itself, and again before scheduling auto-send. The send path also blocks and rejects any first-touch draft if another first-touch has already been sent for that lead.

  • Confirm existing duplicate audit still shows no currently queued duplicate first-touch sends.
  • Confirm a second first-touch generation request for the same lead reuses or skips the existing draft instead of creating a new one.
  • Confirm a scheduled duplicate first-touch draft is rejected before Gmail send if a first-touch was already sent.
2026.06.10.2
Jun 10, 2026, 4:12 AM UTC
Testing
Qualification

Tighten qualification copy before booking

Update Emma's qualification wording so leads are asked plainly about the $500 minimum opening order and current license/business credentials, without the back-bar/retail-set parenthetical.

First-touch and no-reply cadence drafts now keep the booking link behind the same qualification gate Emma uses for handoff. Public license evidence is used as context, but Emma still asks the lead to confirm the credential is current. Draft sanitization removes the old '$500 covers a back-bar fill plus a small retail set' sentence if a model tries to produce it.

  • Generate a first-touch draft for a lead with public licensed-esthetician evidence and confirm Emma still asks for current credential confirmation.
  • Confirm $500 questions do not include a back-bar/retail-set parenthetical.
  • Confirm high-score cadence follow-ups do not include the booking link until $500 and license/business credential confirmations are present.
2026.06.10.1
Jun 9, 2026, 4:55 PM UTC
Parked
Routing

Park Edu Discovery route

Remove the active Edu Discovery route for now, keep a record of what was built, and return Emma to the version before that feature was available.

Edu Discovery has been removed from active routing, dashboards, Human Queue, lead-detail actions, DQ moderation actions, Customize settings, HubSpot sync, inbox classification, draft sending, and draft generation. The parked work included an EDU_DISCOVERY status, Aimee booking link, HubSpot stage configuration, Aimee redirect drafts, guardrails, and a dry-run audit, but it is no longer active in production.

  • Confirm Edu Discovery no longer appears in dashboard buckets, lead detail route buttons, DQ Moderation, Human Queue, Customize, System Health, or HubSpot sync settings.
  • Confirm replies that would have gone to Edu Discovery remain in the existing human-review/resource-reply paths.
  • Confirm existing Future Partner, Faire Deal, DQ, Sales Takeover, and PRO handoff routes still work.
2026.06.09.4
Jun 9, 2026, 12:30 PM UTC
Testing
Dashboard

Split closed DQs from unresponsive DQs

Keep DQ Unresponsive limited to contacts who never replied, and create a separate dashboard bucket for disqualified contacts that did respond and were closed out.

Emma now routes no-reply DQs only into DQ Unresponsive. Responded contacts closed through manual review move into a new DQ Closed bucket, which is filterable from the dashboard and excluded from the default active pipeline view.

  • Confirm DQ Unresponsive contains only DQ leads with zero inbound replies.
  • Confirm manual_review_closed DQ leads with inbound replies appear in DQ Closed.
  • Confirm DQ Moderation still contains replied DQs that need human review.
  • Confirm active dashboard defaults do not show DQ Closed, DQ Moderation, DQ Unresponsive, or Deals Sent unless selected.
2026.06.09.3
Jun 9, 2026, 7:30 AM UTC
Testing
Sales Guard

Add manual Sales Takeover route

Add a Sales Takeover box available across lead stages so a human can bypass the PRO intro and move a contact to Sales Takeover with Emma context, without sending any lead-facing email.

Lead detail pages now include a Sales Takeover box. The action moves the HubSpot Lead Board row to Sales Takeover, rejects pending Emma drafts, stamps Emma's local hard-stop marker, appends an internal takeover audit block, and attempts to add the same context as a HubSpot note. The action never calls Emma's email sender.

  • Open any lead detail page and confirm the Sales Takeover box is visible regardless of status.
  • Move a test lead to Sales Takeover and confirm no outbound email is created or sent.
  • Confirm the HubSpot Lead Board row moves to Sales Takeover and Emma stops future drafts/sends.
  • Confirm pending drafts are rejected and the research notes include the takeover context.
2026.06.09.1
Jun 8, 2026, 3:10 PM UTC
Testing
Customize

Make booking link editable

Add a Customize control so the Bambu Earth PRO booking link can be updated inside Emma without editing server environment variables.

Customize > Booking & Safe Mode now includes an editable booking URL saved on the Emma account. Main Emma sends, Contacting sends, booking-link technical issue replies, and System Health link checks all read the saved value, with the current Bambu Earth PRO link as the safe default.

  • Save a new booking link under Customize > Booking & Safe Mode and confirm the effective link updates.
  • Send or preview a draft containing [BOOK_CALENDLY] and confirm it resolves to the saved link.
  • Confirm blank booking link falls back to the default Bambu Earth PRO booking URL.
2026.06.08.8
Jun 8, 2026, 2:22 PM UTC
Testing
Operator UX

Detect try-brand material requests

Fix Recommended Next Action regeneration for leads who say they want to try the brand or line before bringing it to ownership, so Emma drafts useful materials instead of a generic holding reply.

Resource request detection now treats 'try your brand', 'try the line', and similar experience/test phrasing as sample/material requests. Manual Regenerate creates a reviewed resource draft with product catalog, brand materials, and sample-call guidance while keeping the lead in the current stage until a human approves it.

  • Regenerate Kathryn Connors / Esthetica and confirm the draft includes materials instead of 'let me regroup'.
  • Confirm try-brand requests remain human-reviewed and are not auto-sent.
  • Confirm normal catalog, pricing, and ingredient asks still generate the expected resource links.
2026.06.08.7
Jun 8, 2026, 2:22 PM UTC
Testing
Operator UX

Route manual regenerate to resource replies

Fix Recommended Next Action regeneration so Reply / follow-up drafts answer the lead's actual request for more information, product materials, pricing, or samples instead of producing a generic holding reply.

Manual lead-detail Regenerate now checks the latest inbound message for resource, pricing, catalog, ingredient, or sample requests before using the LLM follow-up path. When a resource ask is detected, Emma creates the deterministic resource reply draft with the appropriate materials and sample-call guidance, while leaving the lead in the current stage until a human approves/sends.

  • Regenerate a Reply / follow-up draft for a lead asking for more information and confirm the draft includes relevant materials.
  • Regenerate a sample/try-before-buying reply and confirm Emma shares materials while deferring sample options to the partnership call.
  • Confirm the draft is not sent automatically from manual regenerate.
2026.06.08.6
Jun 8, 2026, 2:08 PM UTC
Testing
Operator UX

Fix checkbox action sorter

Debug the checkbox-area filter/sort control so clicking it can bring unchecked/actionable contacts to the top or bottom instead of only doing a one-way sort.

The checkbox column sort now has three states: actionable first, actionable last, and clear. Reply-needed rows are prioritized ahead of ordinary pending-draft rows when sorting actionable contacts to the top, and the small sorter now has clearer active styling.

  • Open Attempting or Engaged and click the checkbox-column sort once to bring reply/actionable rows to the top.
  • Click it again and confirm those rows move to the bottom.
  • Click it a third time and confirm the table returns to the normal filtered order.
2026.06.08.5
Jun 8, 2026, 11:14 AM UTC
Testing
Operator UX

Calculate idle from communication timing

Fix Attempting/Engaged idle days so a prospect reply from several days ago does not show 0D simply because the lead record was recently synced or updated.

Dashboard idle now uses the email timeline first: if the latest message is inbound and Emma has not replied after it, idle counts from that prospect reply; otherwise it counts from Emma's latest outbound communication. Lead status updated_at is only a fallback when no message timestamp exists. Idle uses calendar-day counting so 6/5 to 6/8 displays as 3D.

  • Open Attempting or Engaged and confirm older unanswered replies no longer show 0D after sync updates.
  • Confirm leads without inbound replies still count idle from Emma's latest outbound touch.
  • Confirm claimed, Sales Takeover, DQ, and external HubSpot-stage rows still suppress or replace idle as before.
2026.06.08.4
Jun 8, 2026, 11:02 AM UTC
Testing
Operator UX

Add unchecked reply filter in Attempting

In the Attempting dashboard view, make unchecked contacts filterable/sortable so the team can quickly find contacts where a reply came in and Emma needs a human response.

The main lead table now includes an Action filter chip called Unchecked replies for rows whose latest inbound message still needs a response. The checkbox column also has a small sort control that puts reply-needed rows first while keeping the select-all checkbox for sendable drafts.

  • Open Dashboard, click Attempting, and confirm Unchecked replies appears when reply-needed rows exist.
  • Click Unchecked replies and confirm the table narrows to reply-needed contacts.
  • Click the small sort control beside the select-all checkbox and confirm reply-needed rows move to the top without changing selected rows.
2026.06.08.3
Jun 8, 2026, 10:27 AM UTC
Testing
Operator UX

Add lead review action panel

Keep Human Queue work inside the existing Dashboard and lead detail flow instead of launching the separate operator-console prototype. Make the lead review actions clearer when a human opens a lead from Human Queue.

Lead detail pages now show a Recommended Next Action panel above the draft. The primary action is a large Approve and send button, followed by a route-aware Regenerate button. Human reviewers can select Send to PRO, Faire Deal, Future Partner, or DQ with note; Regenerate rebuilds the draft for the selected route, and the draft itself remains directly editable without a separate Edit draft button.

  • Open Human Queue and click a lead that needs reply or moderation.
  • Confirm the lead detail page shows Approve and send first, Regenerate second, then the route choices.
  • Select Future Partner or Faire Deal and regenerate to confirm Emma creates the matching draft path.
  • Confirm the old operator-console prototype route is not used for live workflow.
2026.06.08.2
Jun 8, 2026, 9:55 AM UTC
Testing
Operator UX

Simplify dashboard for human operators

Remove lower-value dashboard summary cards, move total spend into the action header, and make human review indicators easier to scan.

Dashboard no longer shows Match Rate, Leads in Pipe, Showing, or the large Total Spend metric card. Total spend now appears as a compact header control beside Poll Inbox. Sidebar human indicators now use separate green H and count chips so human review work is visible without the older amber H-number pill.

  • Open Dashboard and confirm Match Rate, Leads in Pipe, and Showing are gone.
  • Confirm Total Spend appears compactly beside Poll Inbox.
  • Confirm sidebar Human Queue indicators render as green H plus green count chips.
2026.06.08.1
Jun 5, 2026, 5:12 PM UTC
Testing
Sales Guard

Harden claimed-deal moderation guard

Recheck moderation for contacts already in Sales communication or marked as deals, and prevent Emma from double-sending or pulling deals back into lead work.

Emma's HubSpot deal sweep now matches associated contacts by primary and secondary HubSpot emails, so deals are detected even when the lead email differs from the contact's primary email. Human Queue, badge counts, System Health review lists, DQ automation, and cadence sends now also exclude records with a claimed HubSpot deal ID.

  • Run the moderation-to-HubSpot audit and confirm no unstopped moderation records have active deals.
  • Confirm claimed or Sales Takeover records do not appear in Human Queue or badge counts.
  • Confirm cadence and DQ automation skip records with claimed deal IDs.
2026.06.05.5
Jun 5, 2026, 11:35 AM UTC
Testing
Routing

Add FAIRE DEAL downsell route

Rename the $500 minimum-order communication playbook to Min Order Decline Downsell and route prospects who cannot commit to the direct $500 opening order into a separate FAIRE DEAL stage.

Emma now creates the sales-approved Faire downsell draft, keeps it editable/reviewable, labels the lead as Faire Deal, surfaces it in Human Queue for human approve/edit/deny moderation, and can sync the status to a configurable HubSpot FAIRE DEAL stage. The automatic detector drafts and routes the lead for review; it does not silently send the Faire option.

  • Draft the Faire option from DQ Moderation and confirm the lead tag changes to Faire Deal.
  • Edit, approve/send, or deny/reject the Faire draft from Human Queue and confirm the lead stays out of DQ and Deals Sent unless a human chooses that route.
  • Add the HubSpot FAIRE DEAL stage ID in Customize > HubSpot Sync, then run Sync now to confirm the HubSpot Lead moves to the FAIRE DEAL stage.
2026.06.05.4
Jun 5, 2026, 10:45 AM UTC
Testing
Operator UX

Add Human Queue and split Customize

Make Emma easier to hand off to a sales teammate by marking where human review is needed and separating communication settings from scoring/sync logic.

Moderation is now Human Queue with H review indicators across Main Emma, Contacting, Instagram, and System Review. Customize now separates Communications from Logic & Data, with a communication playbook map for handoff, order minimum, questions, future partner, technical issues, and closeout paths.

  • Confirm amber H badges appear only where human review exists.
  • Open Human Queue and confirm Main Emma, Contacting, Instagram, and System Review counts make sense.
  • Open Customize and confirm communication settings are visually separate from scoring, HubSpot sync, and backfill logic.
2026.06.05.3
df86d8d
Jun 5, 2026, 10:10 AM UTC
Testing
HubSpot Sync

Protect Sales-owned HubSpot leads

Prevent Emma from continuing to touch records after Sales has taken over, especially when a HubSpot Lead is moved to Sales Takeover, Qualified, or an active deal exists.

Emma now runs a live HubSpot ownership preflight before sending drafts or writing HubSpot Lead stages. Active deals, Sales Takeover, and Qualified Lead stage stop Emma and reject pending drafts instead of moving the Lead back into Emma Contacting.

  • Move a HubSpot Lead to Sales Takeover and confirm Emma does not send or move it back.
  • Create or associate an active deal and confirm Emma stamps the lead as claimed before any stage write.
  • Confirm normal Emma-owned stages still sync for New, Emma Contacting, Emma Handoff, Future Partner, and Emma Disqualified.
2026.06.05.2
e034873
Jun 5, 2026, 5:09 AM UTC
Shipped
Release Readiness

Add Emma change history

Create a simple version history in Emma so requested updates are logged with implementation timing and testing notes.

Emma now has a Change History tab with shipped updates, version references, commit links, implementation summaries, and focused checks for future testing.

  • Open Change History from the left navigation.
  • Confirm the latest release is shown as the current production reference.
  • Add future shipped updates to the history source before deployment.
2026.06.05.1
e1e06c9
Jun 1, 2026, 8:53 PM UTC
Shipped
Handoff

Keep handed-off leads out of reply status

Make sure leads already handed to the team do not drift back into Emma follow-up when they reply.

Inbound replies on leads with a handoff timestamp no longer transition the lead into REPLIED. They remain in the handoff/deal lane unless HubSpot claim or Sales Takeover changes ownership.

  • Reply to a handed-off lead and confirm it stays out of Needs Reply.
  • Confirm no new follow-up draft is generated for a handed-off lead.
  • Confirm Waiting for Tori and HubSpot Emma Handoff counts stay aligned.
2026.06.01.2
2feeedc
Jun 1, 2026, 8:41 PM UTC
Monitoring
Handoff

Protect internal Tori handoff notes

Diagnose and prevent private Tori handoff notes from being exposed to leads.

Emma now detects internal Tori brief language and routes those drafts to Tori only. Normal lead-facing booking intros can still go to the lead with the team copied.

  • Generate an internal Tori brief and confirm the lead is not a recipient.
  • Send a normal booking-link intro and confirm it remains lead-facing.
  • Audit sent handoffs for any body that opens as an internal note to Tori.
2026.06.01.1
f440320
May 29, 2026, 10:16 PM UTC
Shipped
Deals Sent

Treat qualified booking sends as deals sent

When Emma sends a qualified booking call email, count it as a deal handoff instead of leaving the lead behind.

Qualified non-handoff emails that include the Bambu Earth PRO booking link now stamp the handoff marker, move the lead into Deals Sent, and sync the HubSpot handoff note.

  • Send a qualified booking-link email and confirm the lead enters Deals Sent.
  • Confirm HubSpot receives or updates the Emma handoff note.
  • Confirm unqualified booking-link drafts do not bypass the qualification gate.
2026.05.30.1
c9b85f0
May 29, 2026, 9:10 PM UTC
Shipped
Booking

Update booking CTA to Bambu Earth PRO

Replace Tori-only scheduling language with Meet with Bambu Earth PRO and the broader team booking link.

Booking CTA copy and calendar replacement now point to the Bambu Earth PRO partnership call instead of positioning the call as only with Tori.

  • Regenerate booking-link replies and confirm they use Meet with Bambu Earth PRO.
  • Confirm replies about limited calendar availability mention new booking time is available.
  • Confirm the call length language says 30 minute call.
2026.05.29.2
7ed35d1
May 29, 2026, 8:35 AM UTC
Testing
Instagram

Add Instagram DM pipeline

Create a separate Instagram lead source flow that can be visually consolidated in Emma without polluting the main flow.

Added the Instagram workspace, source badges, triage copy, not-lead feedback loop, and conversion path into the main Emma lead workflow.

  • Create or import an Instagram lead and confirm the source badge is visible.
  • Convert a qualified Instagram lead into the main flow.
  • Mark a non-lead and confirm it exits the active Instagram queue.
2026.05.29.1
238ba579cb3a6e80218f17f1bda0
May 27, 2026, 1:39 PM UTC
Shipped
Contacting

Improve Contacting review actions

Make Contacting replies easier to review and add simple regenerate/decline/closeout behavior.

Contacting now supports collapsed sequence editing, larger reply review, decline closeout drafts, and smart draft regeneration for resource or qualification replies.

  • Open Contacting and confirm the sequence editor is collapsed by default.
  • Regenerate a draft for a resource request and confirm it includes the right materials.
  • Draft a decline closeout and confirm the lead moves to Contacting Disqualified after send.
2026.05.27.1
b375818a679246a0e80fb
May 26, 2026, 9:04 PM UTC
Monitoring
DQ Moderation

Automate DQ moderation final touches

Move DQ moderation toward automatic final-touch replies while avoiding claimed deals and already-contacted edge cases.

DQ moderation can auto-create and send final-touch notes for appropriate declined or not-ready leads, while skipping handoffs, claimed deals, and Sales Takeover.

  • Confirm declined leads receive a warm closing note before leaving review.
  • Confirm claimed deals are skipped.
  • Confirm future partner routing remains available when not-yet-qualified leads respond.
2026.05.26.2
818520b05c8886
May 26, 2026, 8:43 PM UTC
Shipped
Replies

Auto-handle resource reply requests

Identify replies asking for catalog, pricing, product information, or materials and let Emma respond with the right resources.

Emma detects resource-request replies and creates or sends the appropriate resource response without forcing every case through manual moderation.

  • Reply asking for catalog and confirm Emma selects catalog materials.
  • Reply asking for samples and confirm Emma does not promise samples directly.
  • Confirm product/resource replies do not create duplicate handoffs.
2026.05.26.1
4a134eb
May 26, 2026, 2:26 PM UTC
Shipped
Drafting

Prevent founder wording for Tori

Make sure Emma never refers to Tori as the founder.

Draft sanitization and prompt guardrails replace founder/owner language with Tori's approved Spa Partnership Specialist + Licensed Esthetician positioning.

  • Regenerate a Tori intro draft and confirm no founder wording appears.
  • Search draft output for founder/CEO/owner language before sending.
2026.05.26.0
1d1071e