SOPs

How to run all of it, written for the VA rather than the developer. The tables are generated from the same constants the app runs on, so the documentation cannot drift.

How the whole thing fits together

There is one contact database. Everything else — the diagnostic, the events, the services, the mail — writes into it and reads back out of it. A person who takes the diagnostic, comes to two events and then buys the assessment is one row, not three.

Two ecosystems sit on top of that one database. Mrs. Brand Advisor is the advisory business. Get In the Room™ is the events and the Opportunity Directory. A contact can be in one, the other, or both, and what they receive follows from that plus the preferences they actually ticked.

The rule that keeps it clean: a new touch only ever adds. It can add an ecosystem, a tag, a preference, or move somebody forward a stage. It never removes a tag, never re-subscribes somebody who opted out, and never moves a client backwards.

The Journeys screen is the same explanation with live numbers under each stage. Open it when somebody asks what the system does.

How contacts enter the CRM

Five doors, all of which dedupe on the email address. If the address already exists, the existing record is updated; if it does not, one is created.

DoorSets source toEcosystem addedPreference added
The diagnosticDiagnosticMrs. Brand AdvisorConsulting updates
Event registrationEventGet In the Room™Event invites
Event form, consulting box tickedEventBothEvent invites + consulting updates
Booking a serviceContact formWhichever the service belongs toMatching preference
Added by handManualWhatever you chooseOnly what they asked for

Nothing else adds a contact. If a name appears that did not come through one of these, it was typed in by a person and should have a note saying why.

CRM structure — every field

These are the fields on a contact. The last two are derived: nobody types them, they are computed from the others every time the screen renders, and they can therefore never be out of date.

FieldWhat it holdsWhere it comes from
EmailThe identity of the recordThe form they filled in. Never edit it to a different person.
SourceOne of: Diagnostic, Contact form, Newsletter, Event, Referral, ManualSet once, at creation. It answers "where did they come from".
EcosystemsMrs. Brand Advisor, Get In the Room™, or bothAdded by whichever funnel they used.
StageLead → Engaged → Qualified → Client → Past clientMoves forward as she works them, or automatically on purchase.
TypeProspect, Event attendee, Community member, Directory member, Partner, SponsorAdditive tags. A person can be several at once.
Email opt-inYes or noYes at capture. No the moment they unsubscribe, and it stays no.
Email preferencesConsulting updates, Event invites, NewsletterWhat they actually asked for. This is the gate on every send.
EngagementThe name of what they boughtSet by the booking.
Onboarding statusPurchased → Intake sent → Intake complete → Kickoff booked → In delivery → CompleteSet by the booking, then moved on the Clients board.
Next action — derivedThe single next step for this personComputed from stage, onboarding status and opt-in. Never typed.
Would receive — derivedWhich tracks reach them, and why not if notComputed from ecosystem plus preferences.

Tags, stages and segments

Stage is where they are in the relationship, and there is exactly one at a time. Type is what they are to the business, and there can be several — somebody can be an event attendee, a directory member and a prospect simultaneously.

A segment is not stored. It is a live query built from those facets on the Segments screen: pick ecosystems, stages and types, and the matching contacts appear, along with which tracks each one would actually receive. Because it is a query and not a saved list, it cannot go stale.

An empty facet means “no opinion”, not “match nothing”. Ticking nothing shows everybody who is opted in.

Automations and what triggers them

Four automated tracks. Each has one trigger and one preference gate, and a contact is only ever enrolled once per track. Every email in every track, in order, is on the Sequences screen.

TrackFires whenOnly reaches people whoSteps
Diagnostic Follow-UpSomebody completes the diagnosticAre in Mrs. Brand Advisor and opted in to consulting updates3
Get In the Room™ NurtureSomebody joins the community listAre in Get In the Room™ and opted in to event invites3
Event Follow-UpSomebody registers for an eventAre in Get In the Room™ and opted in to event invites3
Client OnboardingSomebody books a serviceAre in Mrs. Brand Advisor and opted in to consulting updates3

If somebody is not eligible, the emails are still created — marked skipped, with the reason written on them. That is deliberate: it means the CRM can always tell you why a contact is receiving nothing, instead of silently doing nothing.

Internal notifications fire on the same events and land on the Notifications screen: new diagnostic lead, event registration, sponsorship enquiry, booking, intake returned.

How the diagnostic works

Six questions, four dimensions. Every answer carries points against one or more dimensions; the totals are normalised to 0–100, and the four scores decide a result category. All of that is arithmetic in code — the same answers always produce the same scores, and the table can be read by anybody who asks.

The written result is then composed from the person's actual answers: their choices are quoted back in the diagnosis, the weakest dimension becomes the “biggest gap”, and the recommended next step is the play for that dimension. In the production build this step can call a model instead; the scoring never does, so a model outage can never change somebody's score.

Submitting creates or matches the contact, tags them into Mrs. Brand Advisor, files the result against the record, starts the Diagnostic Follow-Up track, and raises a notification. The result screen then points at whichever service matches their category.

Sending the weekly email

Every fortnight, five minutes:

  1. 1Open the Broadcast screen.
  2. 2Pick a template. Three exist — event invitation, consulting insight, diagnostic push — and each one sets the audience for you.
  3. 3Edit the subject, body and call to action. The preview is what will actually arrive, in the right ecosystem colours.
  4. 4Read the "Not receiving it" list on the right. If somebody is on it who should not be, fix their preferences on their contact record, not here.
  5. 5Press Send. The send is written to every recipient's timeline, and the broadcast is logged under "Previously sent".

Broadcasts obey the same two gates as automated mail: opted in, and holding the preference that matches the audience. There is no way to send around them, and that is the point.

Making basic edits

To changeGo toThen
What somebody receivesTheir contact recordTick or untick the preference boxes. The "Would receive" panel updates immediately.
Unsubscribe somebodyTheir contact recordPress Unsubscribe. Preferences are cleared and scheduled mail is marked skipped, not deleted.
Move an engagement alongClients boardPress Advance on the card. The contact's next action changes with it.
Mark event attendanceEvents screenPress Check in next to their name. It also tags them as an event attendee.
Add an event or serviceThe seed data fileDeveloper change. Everything else on this list is a click.

Troubleshooting

SymptomAlmost always becauseFix
A contact is receiving nothingThey are opted out, or they hold no preference matching their ecosystemOpen their record and read the "Would receive" panel — every line states its own reason.
Somebody appears twiceTwo different email addresses. The dedupe is on email and nothing else.Decide which address is current, and keep the record with the history on it.
An event guest got consulting mailThey ticked the cross-promotion box on the event formTheir timeline records the moment the preference was added. Untick it on their record.
The Overview says somebody is "unreachable"They are opted in but match no track — usually newsletter-only in a single ecosystemEither add the matching preference or accept it. It is surfaced so it is a decision, not an accident.
A number looks wrong on a dashboardEvery figure on every screen is computed from the contact records at render timeFind the contacts it is counting and check those. There is no second copy to be out of sync.