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.
| Door | Sets source to | Ecosystem added | Preference added |
|---|---|---|---|
| The diagnostic | Diagnostic | Mrs. Brand Advisor | Consulting updates |
| Event registration | Event | Get In the Room™ | Event invites |
| Event form, consulting box ticked | Event | Both | Event invites + consulting updates |
| Booking a service | Contact form | Whichever the service belongs to | Matching preference |
| Added by hand | Manual | Whatever you choose | Only 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.
| Field | What it holds | Where it comes from |
|---|---|---|
| The identity of the record | The form they filled in. Never edit it to a different person. | |
| Source | One of: Diagnostic, Contact form, Newsletter, Event, Referral, Manual | Set once, at creation. It answers "where did they come from". |
| Ecosystems | Mrs. Brand Advisor, Get In the Room™, or both | Added by whichever funnel they used. |
| Stage | Lead → Engaged → Qualified → Client → Past client | Moves forward as she works them, or automatically on purchase. |
| Type | Prospect, Event attendee, Community member, Directory member, Partner, Sponsor | Additive tags. A person can be several at once. |
| Email opt-in | Yes or no | Yes at capture. No the moment they unsubscribe, and it stays no. |
| Email preferences | Consulting updates, Event invites, Newsletter | What they actually asked for. This is the gate on every send. |
| Engagement | The name of what they bought | Set by the booking. |
| Onboarding status | Purchased → Intake sent → Intake complete → Kickoff booked → In delivery → Complete | Set by the booking, then moved on the Clients board. |
| Next action — derived | The single next step for this person | Computed from stage, onboarding status and opt-in. Never typed. |
| Would receive — derived | Which tracks reach them, and why not if not | Computed 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.
| Track | Fires when | Only reaches people who | Steps |
|---|---|---|---|
| Diagnostic Follow-Up | Somebody completes the diagnostic | Are in Mrs. Brand Advisor and opted in to consulting updates | 3 |
| Get In the Room™ Nurture | Somebody joins the community list | Are in Get In the Room™ and opted in to event invites | 3 |
| Event Follow-Up | Somebody registers for an event | Are in Get In the Room™ and opted in to event invites | 3 |
| Client Onboarding | Somebody books a service | Are in Mrs. Brand Advisor and opted in to consulting updates | 3 |
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:
- 1Open the Broadcast screen.
- 2Pick a template. Three exist — event invitation, consulting insight, diagnostic push — and each one sets the audience for you.
- 3Edit the subject, body and call to action. The preview is what will actually arrive, in the right ecosystem colours.
- 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.
- 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 change | Go to | Then |
|---|---|---|
| What somebody receives | Their contact record | Tick or untick the preference boxes. The "Would receive" panel updates immediately. |
| Unsubscribe somebody | Their contact record | Press Unsubscribe. Preferences are cleared and scheduled mail is marked skipped, not deleted. |
| Move an engagement along | Clients board | Press Advance on the card. The contact's next action changes with it. |
| Mark event attendance | Events screen | Press Check in next to their name. It also tags them as an event attendee. |
| Add an event or service | The seed data file | Developer change. Everything else on this list is a click. |
Troubleshooting
| Symptom | Almost always because | Fix |
|---|---|---|
| A contact is receiving nothing | They are opted out, or they hold no preference matching their ecosystem | Open their record and read the "Would receive" panel — every line states its own reason. |
| Somebody appears twice | Two 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 mail | They ticked the cross-promotion box on the event form | Their 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 ecosystem | Either add the matching preference or accept it. It is surfaced so it is a decision, not an accident. |
| A number looks wrong on a dashboard | Every figure on every screen is computed from the contact records at render time | Find the contacts it is counting and check those. There is no second copy to be out of sync. |