Learnings

77 active rules the fleet reads at session start. This table wins on conflict.

CorrectionActiveCriticalHome, May 26
Calendar writes: create new blocks freely, never modify existing meetings without approval

April CAN create new calendar blocks freely on Christi's Crimson Outlook calendar without per-block approval. This includes: focus blocks, drive time, prep blocks, EOD wraps, daily lunch, weekly briefing prep, recurring standing items per CLAUDE.md, deep work sessions, and event-specific work blocks (like the SCHARP MFA chase pattern from 5/13). April CANNOT modify, move, delete, or reschedule any meeting created by someone else without explicit per-meeting approval from Christi. The Priority Hierarchy from rec9IuwVM4MBaG2yI applies: Anzor > Pete > External meetings > Christi-organized client meetings > Focus Time (moveable) > CW task blocks (freely moveable). When in doubt about whether something is 'new block' or 'modification', ask. New block = the time slot was empty or only had a moveable Focus block. Modification = there's an existing meeting with attendees. How to apply: - Default behavior at EOD wrap: block tomorrow's calendar with everything that has to be done (per CLAUDE.md doctrine) - Default behavior at Sunday weekly briefing: block advance time across all 3 work cals - When a Claude instance tells April 'don't touch the calendar' or similar ambiguous directive, April should clarify: 'Do you mean don't move existing meetings, or also no new blocks?' Default assumption when ambiguous: still create new blocks (this is core doctrine), surface any existing-meeting modifications for per-item approval. - Voice-to-text often garbles 'calendar' — see the autocorrect handling learning.

Applies toAllAgentsApril
ProcessActiveCriticalPasadena - SCHARP office, Apr 30
Christi's standing onsite pattern: Mon+Wed = SCHARP, Tue+Thu = AF (starts week of 2026-05-04)

Christi's standing weekly onsite pattern. **Effective starting week of 2026-05-04 (NEXT WEEK from declaration date 4/30).** Supersedes the old 'AF every Tuesday' rule which was only a partial truth. - **Monday: SCHARP** - **Tuesday: Ability First** - **Wednesday: SCHARP** - **Thursday: Ability First** - Friday: variable (not a fixed onsite day) ROUTING IMPLICATIONS: - Default time entries on Mondays and Wednesdays route to SCHARP (agreement 470). - Default time entries on Tuesdays and Thursdays route to AF (agreement 449 for CIO/strategic, 313 for hands-on Managed IT). - Scheduling agents (April) default to assuming Christi is at the corresponding client site on those days unless she says otherwise. - Briefing agents (Cron) label the day with the client expectation in the morning brief. - Dewey uses this for time backfill ONLY for days from 5/4/2026 forward. For days BEFORE 5/4/2026, use the actual calendar / transcripts because the prior pattern was different (e.g. last week 4/20-4/24 was AF Mon+Tue, SCHARP Wed+Thu). DEVIATIONS: Christi can deviate any time — client meeting, OOO, one-off swap. The pattern is the default, not a hard rule. Always check calendar first; only fall back to the pattern when the calendar is silent. ANNOUNCEMENT: Christi is sending three external/internal emails to announce this pattern — SCHARP all-staff, AF all-staff, Crimson all-staff. See related Task.

Applies toAllAgentsAprilDeweyCronAll
ProcessActiveCriticalPasadena - SCHARP office, Apr 30
STOP surfacing KnowBe4 training reminder emails (any of them)

KnowBe4 training overdue email reminders ('Please finish your past due training' from do-not-reply@training.knowbe4.com) are NOT to be surfaced as inbox triage items, daily briefing items, or actionable flags. They are training nag emails. Christi will complete the training when she chooses. The emails themselves are noise. Specific senders to filter: - do-not-reply@training.knowbe4.com - training.knowbe4.com KnowBe4 Tasks in Airtable that Christi creates herself (e.g., 'Complete KnowBe4 training: QR Codes – Safe Scanning') ARE valid and should be tracked. The auto-reminder emails from KnowBe4 are not.

Applies toAllAgentsAprilCron
ToneActiveCriticalPasadena - SCHARP office, Apr 30
Trust-building principle: client should walk away thinking 'they understand me and my business, and value us'

Every piece of client-facing communication Christi sends, agents draft, or anyone produces under her name has TWO trust-building goals operating at the same time. Both have to be present. One alone is not enough. **Goal 1: Confidence in what Crimson IT can do.** The technical posture, the structured plan, the named tools, the realistic timelines, the right specialists in the room. This is the competence layer. Most IT firms get this part right. **Goal 2: The client comes away thinking 'they understand me and my business, and value us.'** The mission-level acknowledgment, the specific-to-them framing, the recognition of THEIR people and constraints, the why-this-matters-in-your-context paragraph that no template could have produced. This is the relationship layer. Most IT firms miss it. The second is what separates Crimson IT from a vendor. The client should never feel like a generic engagement. They should feel like Christi (or whoever is writing in her voice) actually gets their mission, their stakeholders, their pressure points. === HOW TO APPLY === In every client email, recap, deliverable framing, recommendation, or status update, ask both: 1. Did I demonstrate competence? (Right plan, right specifics, right confidence.) 2. Did I demonstrate that I understand and value THIS client specifically? (Their mission, their people, their constraints, their wins.) If the answer to #2 is 'eh, sort of,' rewrite. Concrete signals that #2 is present: - Naming a specific person by name and their role on the team in a way that shows I know what they actually do - Acknowledging a constraint or deadline that is theirs, not generic ('your May 15 board prep,' 'your Phase 3 audit priority,' 'your Three Commitments framing') - Tying a recommendation back to their stated mission or values, not just industry best practice - Picking up a phrase or framing they used and reflecting it back so they know they were heard - Acknowledging a smart structural decision they made and naming WHY it's smart in their context (not generic 'good idea') === WHAT KILLS GOAL 2 === - Generic boilerplate: 'we provide enterprise-grade IT solutions tailored to your needs' - Vendor-speak: 'leverage,' 'synergies,' 'partner with you to drive outcomes' - Treating their specific people as interchangeable roles ('your IT team,' 'your leadership') - Skipping over the why-this-matters-to-you paragraph in favor of pure deliverable-listing - Missing the emotional or mission stakes when those are what's actually driving the conversation === EXAMPLES FROM CHRISTI'S OWN WORK === Cotsen Kamyab response 4/30: 'glad to hear program staff will be included. That perspective matters because the program team works most directly with the people the Foundation serves, and they will catch equity and language issues administrators might miss.' — names WHY a smart structural decision is smart in Cotsen's specific equity-focused context. DTLA Alliance tabletop recap 4/30: 'You jumped in with real answers, called out the gaps you saw, and treated it like the live drill it was meant to be... honestly, this was one of the cleaner runs I have facilitated.' — acknowledges what THEY specifically did well, distinct from praise that could apply to any tabletop attendee. === APPLIES TO === Every client-facing agent and any client-facing draft, in every formality register. The casual register doesn't get a pass on the relationship layer — a casual email can still say 'I get you' through a single specific sentence acknowledging context. The formal register requires explicit, named acknowledgment. This principle outranks any other drafting rule when there is tension. If a 'tighten the bullets' rule would strip out the trust-building paragraph that actually makes the client feel valued, leave the paragraph in.

Applies toAllAgentsAgnesAprilMONTIOttoStuart+6
ProcessActiveCriticalWork - Laptop, Apr 13
Email hard rules: CIO (never vCIO), Outlook COM, saved signature, verify addresses, match tone

Absolute rules for every outbound email Christi sends. (1) Title is always 'CIO' - never 'vCIO' even on contracts that say vCIO. (2) Use the official Outlook-saved signature, do not hand-type a signature block in the body. (3) Default send tool is Outlook COM via PowerShell, NOT the Outlook MCP connector. COM uses the real profile so signature, HTML rendering, From address, sent-items tracking all work. GAM is the tool for SCHARP (christi.brown@scharpca.org). (4) Always verify recipient email from ConnectWise, Hudu, Airtable Contacts, or recent email history before sending - never guess a firstname@company format. (5) Match tone to context - same-day meeting follow-ups are casual and conversational, not formal restarts. SCHARP signature has NO Crimson IT mention. Billing emails to SCHARP always cc Darva Coleman + ap.corp@scharpca.org.

Applies toAllAgentsAllApril
ProcessActiveCriticalWork - Laptop, Apr 13
Social Media Matrix is SSOT for where content gets posted - check before drafting any social content

All content and strategy agents (Stuart, Dave, Phil, Kevin, Bob, Otto, Warren, April, Agnes) must consult the Social Media Matrix table (tbl05iTzLuOnBssEL in NEST base appYVXneddw1eKZEu) before drafting, suggesting, or routing any social media content. The matrix maps 9 accounts/pages across 5 brands (AdaptoIT, Counted Doors, ChoreSteps, Crimson IT, My Imperfect Life) with three possible values: Post (full content here), Link only (share a link, no full post), No (do not post). Key current-state decisions captured: - LinkedIn personal profile: primary for AdaptoIT posts, links only for ChoreSteps and Crimson IT - LinkedIn AdaptoIT company page: legitimacy only, link-only posting - Facebook personal: My Imperfect Life primary, Counted Doors links - Facebook Counted Doors page: full posts for Counted Doors, MIL links - Facebook ChoreSteps page: full posts for ChoreSteps, MIL links - Substack AdaptoIT newsletter: AdaptoIT posts only (she owns the list) - X/Twitter, Instagram, YouTube: Build Later priority Do NOT suggest posting AdaptoIT content to Facebook, foster content to LinkedIn, or cross-pollinate brands against the matrix. When proposing social distribution for any new blog or content, cite the matrix row that supports the recommendation.

Applies toAllAgentsStuartDaveKevinBobOtto+3
ProcessActiveCriticalWork - Laptop, Apr 9
Irongate VIP: Grant and Reuben handled ONLY by Monti or Christi

Grant Herlitz and Reuben Davidsohn (Irongate) can ONLY be handled by Monti (everything) or Christi (high-level Microsoft and AI). If both are unavailable, Christi gets pulled from ANY meeting. No one else touches these two. When routing Irongate tickets, ONLY assign to Monti or Christi. CW tickets for Irongate VIP items always set owner to Christi (247). Flag any Irongate request that lands in general queue immediately.

Applies toIrongateAgentsMONTIAprilAll
ProcessActiveCriticalWork - Laptop, Apr 8
Meeting scheduling: never reschedule others' meetings, priority hierarchy

NEVER reschedule a meeting created by someone else without asking Christi first. Anzor meetings = highest priority, everything else moves around Anzor. Christi's own calendar blocks (CW task blocks) ARE moveable. Focus Time blocks (Viva/Microsoft) can be MOVED but never DELETED. External organizer meetings (MeetingStatus=3) are commitments, do not touch. Priority hierarchy: 1) Anzor (CEO), 2) Pete (staffing), 3) External meetings, 4) Client meetings Christi organized, 5) Focus Time (moveable), 6) CW task blocks (freely moveable). When in doubt, ask.

Applies toAllAgentsAprilAll
ProcessActiveCriticalWork - Laptop, Apr 7
Always track CW Projects alongside service tickets

Always track CW Projects alongside service tickets. CW Projects are at a separate API endpoint (/project/projects) and were never queried until 4/7/2026 when we discovered 77 open projects were invisible, including 6 where Christi is manager (2 over budget). Briefing should pull open projects. April should check emails against active projects. Segrid tracks in NEST Projects table. Christi's key projects: #2626 (Karney), #2673 (Cotsen), #2599 (SmartDispatch), #2445 (Irongate), #2638 (SCHARP), #2441 (Automation Roadmap).

Applies toAllAgentsSegridCronAprilAll
CorrectionActiveJul 8
KLUE / Huntress security incident alerts are FYI-only — never create a task or flag them

KLUE security incident notifications from Huntress (info@huntress.com) are FYI-only for Christi. She is on the distribution list as an observer; the Crimson Security team owns and works these incidents. This is NOT a vCIO action item. HARD RULES: - April inbox sweep: do NOT create a Task from a KLUE/Huntress security alert. Do not categorize it into anything that generates a follow-up. Treat as FYI-only and drop. - Chip midday check: do NOT surface KLUE/Huntress tasks as URGENT/overdue flags. - Same pattern as other security-alert noise Christi is merely CC'd on (suspended-line alerts, LumifiCyber/ShieldVision incident notices). History: this task kept getting recreated (June, then again July 2) and re-flagged by Chip on 7/6, 7/7, 7/8. Christi deleted it 7/8 and asked that it stop recurring.

Applies toCrimson ITAgentsAprilChip
WorkflowActiveHome, May 26
Calendar conflict detection rules

April flags these conflicts immediately as they appear (do not wait for EOD wrap): 1. Any 3pm+ Tuesday or Thursday invite landing on Crimson Outlook → conflicts with the Drive Pasadena to Home block. Flag with: 'Drive block conflict — Tue/Thu at 3pm. Suggest moving the new meeting to <next available slot> or moving the drive.' 2. Double-booked across her 3 work calendars (Crimson, AF, SCHARP) — same time slot, different events. Surface both and let Christi decide which wins. 3. Invites during a category-blocked focus block (e.g., 'Cotsen Block', 'AOP V3 Thinking') — focus time is moveable per priority hierarchy but Christi has to decide. 4. New invites that land in EOD Wrap time (4-4:30pm Mon/Wed, 2:30-3pm Tue/Thu) — protect the wrap; offer alternative. 5. Lunch overlaps (12-1pm) — surface but don't auto-decline; Christi sometimes skips lunch. 6. Camp Paivika days, Christi out-of-town days, foster care court dates — these are sacred. Auto-decline conflicting invites with a polite reply offering 3 alternative times pulled from her availability.

Applies toAllAgentsApril
WorkflowActiveHome, May 26
EOD Wrap procedure (April-driven)

During the EOD Wrap calendar block (4:00-4:30pm SCHARP onsite days Mon/Wed, 2:30-3:00pm AF onsite days Tue/Thu), April executes the following 6 steps: 1. Block tomorrow's calendar with everything that has to be done (deep work, drive time, prep blocks, focus sessions, EOD wrap, lunch, recurring standing items per the auto-create table). 2. Add prep blocks BEFORE meetings that need them: 15 min default, 30 min for complex meetings (e.g., new client kickoff, board prep, leadership 1:1). 3. Categorize tomorrow's items using Outlook categories (Client, Internal Ops, Focus/Deep Work, SCHARP, Personal, CW Task Block, Leadership/Strategy, Vendor/Partner). 4. Mirror busy blocks to AF + SCHARP calendars via the CalendarMirror n8n workflow (runs every 20 min automatically; manual trigger available if urgent). 5. Confirm what slipped today, what's done — update CW ticket statuses, surface anything that didn't get touched. 6. Update Airtable Tasks: mark complete, defer with new due date, or escalate to Agent Queue if blocked. Output format: brief status report to Christi at end of wrap session. Don't ask for approval on routine blocking — only surface decisions (e.g., 'I see Thu has a triple-overlap from 1-3pm, here's what's colliding').

Applies toAllAgentsApril
TechnicalActiveHome, May 26
Outlook COM calendar event creation recipe (PowerShell)

To create a calendar appointment via Outlook COM (the only supported method — never use MCP Outlook tools, never use Graph API for Christi's calendar): ```powershell $outlook = New-Object -ComObject Outlook.Application $ns = $outlook.GetNamespace("MAPI") function New-CalBlock { param( [string]$Subject, [datetime]$Start, [datetime]$End, [string]$Body, [string]$Categories, [int]$BusyStatus = 2, [int]$ReminderMinutes = 10 ) $appt = $outlook.CreateItem(1) # 1 = olAppointmentItem $appt.Subject = $Subject $appt.Start = $Start $appt.End = $End $appt.Body = $Body $appt.Categories = $Categories $appt.BusyStatus = $BusyStatus $appt.ReminderSet = $true $appt.ReminderMinutesBeforeStart = $ReminderMinutes $appt.Save() # NEVER call .Send() — appointments don't send like emails Write-Host "CREATED: [$($Start.ToString('h:mm tt')) - $($End.ToString('h:mm tt'))] $Subject" } ``` BusyStatus values: 0=Free, 1=Tentative, 2=Busy, 3=OutOfOffice, 4=WorkingElsewhere. Default to 2 for focus/work blocks, 3 for OOO replies. Always write to a .ps1 file and execute with `pwsh -File <path>`. Never run COM code inline in bash — backticks and `!` characters break. Calendar appointments do NOT have a 'Send' method like emails. .Save() is the final step. If you call .Send() on an appointment, it tries to send a meeting invite to attendees that don't exist. Reference scripts (working examples on disk): 2 - Internal Operations/_agent-workspace/april-block-wed.ps1, april-lay-thu-fri-blocks.ps1, create-focus-blocks-may18.ps1, create-week-may18-blocks.ps1.

Applies toAllAgentsApril
WorkflowActiveHome, May 26
Standing recurring calendar blocks April auto-creates

These blocks must exist on Christi's Crimson Outlook calendar every week unless Christi says otherwise. April creates them proactively (at Sunday weekly briefing or at EOD wrap) and re-creates if she sees them missing. | Day | Time PDT | Block | Outlook Category | |-----|----------|-------|------------------| | Tue + Thu | 3:00-4:00 PM | Drive Pasadena to Home (Christi continues from home after) | Internal Ops | | Mon + Wed | 4:00-4:30 PM | EOD Wrap (SCHARP onsite days) | Internal Ops | | Tue + Thu | 2:30-3:00 PM | EOD Wrap (AF onsite days, BEFORE drive) | Internal Ops | | Sunday | 6:00 PM | Weekly Briefing | Internal Ops | | Daily | 12:00-1:00 PM | Lunch | Personal | Exceptions: If Christi is at Camp Paivika or other multi-site travel day, drive blocks may shift or extend. If she's working from home all week, drive blocks pause. April surfaces exceptions to Christi before suppressing a standing block. Use the New-CalBlock pattern from april-block-wed.ps1 as the canonical PowerShell recipe (see the Outlook COM calendar event creation recipe learning).

Applies toAllAgentsApril
WorkflowActiveHome, May 26
Sunday Weekly Briefing actions (April-driven)

At the Sunday 6:00 PM PDT Weekly Briefing block (per CLAUDE.md), April walks the upcoming week and stages it: 1. Walk the upcoming week's calendar across all 3 work calendars (Crimson Outlook, AF, SCHARP). 2. Identify top 3-5 priorities using these criteria: due date (closest first), client tier (Emerald/MSSP first), open CW tickets touching the work, and any Anzor or Pete escalation. 3. Block advance time across all 3 work cals: - Deep work blocks for the top priorities - Drive time for any onsite days (Tue/Thu AF Pasadena, Mon/Wed SCHARP Pasadena) - Prep blocks for meetings that need them - The standing recurring blocks if not already present (see separate learning) 4. Cross-calendar sync — confirm the n8n CalendarMirror workflow is running and busy blocks are mirroring correctly. 5. Surface for Christi: top priorities, any blocked items, any conflicts she needs to resolve. Output: a one-screen weekly summary delivered to AdaptoBriefing feed Sunday evening so it's waiting Monday morning.

Applies toAllAgentsApril
PatternActiveHome, May 26
Voice-to-text autocorrect handling (Christi's dictation patterns)

Christi frequently dictates messages via voice-to-text. Common autocorrects to watch for: | Spoken | Often Autocorrects To | Real meaning | |--------|----------------------|--------------| | 'calendar' | 'cop' or 'calends' or 'calanders' | calendar (always) | | 'calendars' | 'calls' or 'cans' | calendars | | 'Brivo' | 'bravo' or 'breeze' or 'brio' | the Brivo access control system | | 'SCHARP' | 'shark' or 'sharp' | the SCHARP client | | 'Camp Paivika' | 'camp pavica' or 'camp papika' | Camp Paivika | | 'AbilityFirst' | 'ability first' (with space) | the AbilityFirst client (always one word) | | 'Michuan' | 'Michoacan' or 'Michoacán' | Michuan Fleming (CPO) | | 'Cotsen' | 'cotton' or 'cosen' or 'cousin' | Cotsen Foundation | | 'Anzor' | 'answer' or 'anchor' | Anzor (Crimson CEO) | | 'Lynwood' | 'Linwood' | Lynwood (LA city) | How to apply: - When Christi's instruction contains a word that doesn't fit context (e.g., 'put blocks in the cop'), assume voice-to-text typo first, then ask for clarification only if the corrected word still doesn't fit. - Common test: replace the suspect word with the most likely intended word ('cop' → 'calendar'), re-read the sentence. If it now makes sense, use the corrected interpretation. - If still ambiguous after correction attempt, ask Christi: 'Did you mean X or Y here?' Don't silently choose. - Build the autocorrect map over time — every new dictation typo Christi catches gets added to this learning.

Applies toAllAgentsApril
ProcessProposedApr 30
April Standing Rule 1: Three-strike rule on recurring inbox items

If same alert, task, or thread appears in 3 consecutive inbox summaries without action, STOP listing it and instead present a one-time decision prompt: 'This has appeared 3 days running. Proposed disposition: [specific action]. Approve?' If Christi says ignore it, file as Recurring-Ignored in Calibration Log and never surface it again. Triggered by 9x BrightGauge / 11x Beta Bionics / 14x Asana wallpaper pattern.

Applies toAllAgentsApril
ProcessProposedApr 30
April Standing Rule 2: Draft first, flag second

For any 'Christi to Respond' item, attempt to produce a ready-to-send draft in Christi's voice BEFORE falling back to a flag. If can't draft because of context gap or decision-only-Christi-can-make, state explicitly what's needed: 'I need X to draft this reply. Can you give me X?'

Applies toAllAgentsApril
ProcessProposedApr 30
April Standing Rule 3: Check Sent before flagging any thread

Before marking any thread 'Christi to Respond,' search Sent folder and recent conversation history for matching reply. Existing rule 7c that April was failing - UKG duplicate forward proves it.

Applies toAllAgentsApril
ProcessProposedApr 30
April Standing Rule 4: Audience-check every draft (TO/FROM/surface)

Before saving any draft, explicitly state who draft is TO, who it is FROM, and what send surface (Outlook vs SCHARP Gmail vs AF account). Anderson and Badge Update drafts both had audience or surface ambiguity that created friction.

Applies toAllAgentsApril
ProcessProposedApr 30
April Standing Rule 5: Track dispositions, not just flags

Every item April surfaces gets a status: Open, Sent, Killed, Delegated, or Recurring-Ignored. If disposition unknown, ask at next session. Goal is closing loops not keeping them open in morning summaries indefinitely.

Applies toAllAgentsApril
ProcessActivePasadena - SCHARP office, Apr 30
CW board selection rule: HelpDesk = reactive user issues, Implementation = project work, vCIO = Christi's strategic work

Board selection for new CW tickets is based on the WORK TYPE, not the owner. Default routing: - **Board 53 HelpDesk (MS)** — reactive end-user issues. Sign-in problems, app access, account lockouts, password resets, software not working, etc. This is where Crimson helpdesk dispatches client user-facing tickets. Default status: Pre-Process #874 (lets dispatch route). - **Board 58 Implementation (MS)** — project work, deployments, scheduled migrations, planned configuration changes. Status flow: Pre-Process (default), Working Issue Now, Scheduled Remote/Onsite, Closed - Silent (#955) or Closed* (#956). - **Board 80 vCIO** — Christi's own strategic/advisory work for clients she's CIO of (SCHARP, AF). Roadmap conversations, board prep, strategic decisions, vendor reviews. NOT for end-user tickets she's coordinating. - **Board 48 Client Projects** — multi-phase project tickets (different from Implementation single-engagement work). **Critical correction for an earlier learning:** The memory rule 'ALL Christi's tickets go to Board 80' was wrong as written. It applies to her STRATEGIC vCIO work, not to every ticket she happens to own. When Christi is owning a ticket because the issue routed through her (e.g., a client exec told her about a user issue), the ticket still goes to the appropriate work-type board (HelpDesk for user issues, Implementation for project work). Owner = Christi for accountability/visibility; board = the actual work type. Decision tree: - Is this a user reporting a problem with their stuff? → HelpDesk (53) - Is this planned project work or a deployment? → Implementation (58) - Is this Christi advising on strategy, roadmap, or vendor decisions? → vCIO (80) - Is this an internal Crimson admin task? → Crimson IT client ticket (per separate rule, NOT Board 71) Violation pattern: Bestie #2 created ticket #938957 for a DTLA helpdesk user issue (Kevin Thomas's M365 sign-in error) on Board 58 Implementation. Wrong board. Christi caught it. Recreated as #938966 on Board 53 HelpDesk (MS).

Applies toAllAgentsHectorAprilAll
ToneActivePasadena - SCHARP office, Apr 30
Drafting rule: combine related questions into one reply, don't split with 'I'll come back separately'

Christi adjusts formality by audience and situation. There is no single 'Christi voice.' This learning captures TWO things: the universal rules that apply to every draft, and the situational rules that applied to the Cotsen Kamyab response (which was MORE formal than her usual tone). DO NOT pull the formal-context patterns into casual threads. === UNIVERSAL RULES (apply to every draft) === 1. **Don't split with 'I'll come back separately.'** When a thread contains two or more related questions, answer all of them in one reply unless there is a genuine reason to defer (one needs research lasting more than a day, or needs Christi's offline review). The 'come back separately' reflex wastes a thread turn and signals reluctance. Combine related answers. 2. **Drop leading verbs in bullets.** 'Review of admin role assignments...' becomes 'Admin role assignments...'. Go straight to the noun phrase. 3. **Use specific Microsoft / vendor product names, not generic concepts.** 'Microsoft Purview sensitivity labels' beats 'sensitivity labels.' Reader can search and verify. 4. **When asked 'should we change X,' offer A/B/C with tradeoffs, not a single recommendation.** Respects client decision authority. 5. **No em dashes ever** (per separate rule). === SITUATIONAL RULES (use ONLY when context calls for higher formality) === The Cotsen Kamyab 4/30 response was deliberately more formal than Christi's usual tone. She said: 'That email was more formal than my normal ones. But I felt like it called for it.' These patterns belong in higher-formality contexts: - Multi-stakeholder client emails CC'd to a leadership team or committee - Initial substantive responses on a project deliverable, scope, or timeline question - Foundation board, nonprofit committee, or executive-team threads - Anything that's going to be archived as project record / used to set client expectations When those signals are present, draft with: - Self-aware meta opening for long responses ('apologize in advance for the lengthy response, I wanted to cover everything') - Single availability slot offered, not multiple - Trust-building paragraph that names WHY a structural decision the client made is smart in their context - Slightly more measured prose, longer paragraphs, more careful structure === CASUAL/NORMAL TONE (default for most of Christi's threads) === For 1:1 follow-ups with someone she has rapport with, internal Crimson messages, quick replies, operational threads, and the bulk of her daily email: Christi's default voice is more conversational, shorter, direct. Drop the meta openings, drop the trust-building paragraphs, drop the option lists. Just answer. === HOW TO READ THE CONTEXT === Formality signals to watch for: - Number of recipients (1 = casual; 3+ stakeholders CC'd = more formal) - Subject matter (operational ticket = casual; project scope or timeline = more formal) - Sender's tone in the prompting message (terse/casual = match it; structured/formal = match that) - Stage of engagement (deep into a relationship = casual; setting expectations on a new deliverable = more formal) When in doubt, lean conversational. Christi can always add formality on review; she rarely strips it off.

Applies toAllAgentsAprilAgnesOttoStuartBob+3
ProcessActiveApr 30
STOP surfacing Teams notification emails (no-reply@teams.mail.microsoft)

Teams message notification emails ('X sent a message' from no-reply@teams.mail.microsoft and similar Microsoft Teams notification senders) are NOT to be surfaced as inbox triage items. Christi handles real Teams content inside Teams itself, not via these email digests. Specific senders to filter: - no-reply@teams.mail.microsoft - noreply@teams.microsoft.com - Any Microsoft Teams notification automated email Ignore in inbox triage. Don't include in daily briefing. Don't surface as 'Christi to Respond.'

Applies toAllAgentsAprilCron
ProcessActiveWork - Desktop, Apr 22
Offboarding tickets: Christi is CC'd for visibility only, not action

Christi is CC'd on offboarding tickets across ALL clients (SCHARP, AbilityFirst, etc.) for visibility only. She does NOT action them, does NOT need to reply, and does NOT need to be surfaced as a decision-maker on them. This applies universally: - SCHARP offboarding (Bridget Grisby, HR Rep) — Ron Discaya, any future offboardings - AbilityFirst offboarding (Jorge Lopez, Kaleab escalations, etc.) - Any other client offboarding tickets where she's on the thread Do NOT flag offboarding tickets as: - Christi-response-needed in inbox triage (April, stop it) - Carryover action items in session handoffs (Bestie2, stop it) - Active tickets in director status reports (Charl, Bekker, stop it) - Queue items requiring her decision Correct handling: - Summarize offboarding status IF directly asked - Flag if an offboarding ticket is blocked/stuck/missing steps that only she can unblock (rare) - Otherwise treat as informational noise and move on EXCEPTION: If an offboarding involves an elevated-risk departure (insider threat, litigation hold, executive, or someone with privileged access), surface it. Use judgment — most offboardings are routine HR workflow and she's just on the CC for awareness.

Applies toAllAgentsAprilHectorCharlBekkerAll
ProcessActiveWork - Laptop, Apr 13
Outlook COM send recipe: Display() + 800ms sleep + prepend body before signature

Working pattern for sending email via Outlook COM with the saved signature intact. $outlook = New-Object -ComObject Outlook.Application; $mail = $outlook.CreateItem(0); $mail.To = 'address'; $mail.Subject = 'subj'; $mail.Display() | Out-Null; Start-Sleep -Milliseconds 800; $sig = $mail.HTMLBody; $body = '<p>content</p>'; $mail.HTMLBody = $body + $sig. Key points: (1) Display() is what triggers Outlook to pull the default signature into HTMLBody - setting HTMLBody directly without Display() yields no signature. (2) The 800ms sleep is required because signature insertion is async. (3) Prepend new body to existing $sig to preserve the saved signature at the bottom. (4) Do NOT call $mail.Send() programmatically - it has thrown 'Value does not fall within the expected range' in same-session COM calls and it bypasses Christi's review. Leave the window open for her to click Send.

Applies toAllAgentsAllApril
ProcessActiveWork - Laptop, Apr 9
All client emails must be logged as internal notes on CW tickets

ALL client emails sent via Outlook COM or any other method MUST be logged as an internal note on the corresponding CW ticket (service or project). POST to /service/tickets/{id}/notes or /project/tickets/{id}/notes with: text (summary of what was sent), internalAnalysisFlag: true, member: { identifier: 'Christi' }. Applies to Agnes drafts, April auto-responses, and any agent that sends email.

Applies toAllAgentsAgnesAprilAll
ProcessActiveWork - Laptop, Apr 9
All emails must be HTML with correct Outlook signature

ALL emails sent by agents must use HTMLBody (not Body) with the correct signature appended. Signature files at env:APPDATA\Microsoft\Signatures\. SCHARP contacts (@scharpca.org) use Main (christi.brown@scharpca.org).htm. AF contacts (@abilityfirst.org) use Main (ckbrown@abilityfirst.org).htm. All others use Main (christi@crimsonit.com).htm. Use Outlook COM: New-Object -ComObject Outlook.Application, CreateItem(0), set HTMLBody with message + signature HTML.

Applies toAllAgentsAgnesAprilAll
ProcessActiveWork - Laptop, Apr 9
Blog pipeline: Stuart pushes to WordPress, all agents track in Blog Pipeline table

Stuart ALWAYS pushes finished drafts to WordPress (adaptoit.com) in draft status. All blog agents track work in Blog Pipeline table (NEST). Stuart=adaptoit.com, Otto=crimsonit.com, Bob=my imperfect life, Kevin=counteddoors.com, Dave=brainstorms (status Idea), Phil=SEO audit. AdaptoIT flow: Idea > Stuart drafts > Phil SEO audit > fix loop until pass > Stuart pushes to WP > updates Blog Pipeline with WP Post ID. Stuart owns the full loop for AdaptoIT. When a post has a Target Publish Date, April creates an Outlook calendar block for Christi to review and publish.

Applies toAllAgentsStuartDavePhilOttoBob+2
ProcessActiveWork - Laptop, Apr 8
April must track sent/received email state to avoid re-flagging handled items

April MUST keep notes on what Christi has sent and received so she doesn't re-surface items already handled. After each inbox check, update knowledge base with current state. Track: what was sent, to whom, what is waiting for response, what is resolved. Before flagging a waiting-for-response item, check if a response has already come in. Use Contacts table Last Meeting Context and Email Thread Topics fields. Knowledge Base table can store thread-level status.

Applies toAllAgentsApril
WorkflowProposedChristi's workstation (Claude Code), Jun 19
April: blanket-ignore all security-tool email notifications

During inbox triage (Section 3 — System Notifications), April marks-read-and-ignores ALL email from security tooling, including detection/incident alerts — NOT just routine reports. Senders include ShieldVision/Lumificy, Huntress, CrowdStrike, Barracuda + AppRiver, Sophos, Microsoft Defender, SentinelOne, and any other endpoint/email/EDR/MDR/SOC tool. April does not surface these even when they name one of Christi's clients or read as urgent (e.g. 'account compromise', 'active exfiltration').

Applies toCrimson ITSCHARPAbilityFirstAgentsApril
ProcessActiveApr 30
Lunch/personal FYI items don't get surfaced as actionable

Lunch coordination, personal calendar items, and FYI-only social meetings (e.g., Dr. Barbour lunch coordination with Michuan offering June 11/18) are NOT to be surfaced as actionable inbox items. They are FYI for Christi only. If the email contains specific dates someone is offering, treat it as informational. Do not draft a 'pick a date' reply, do not flag it as 'Christi to Respond.' Christi handles these directly when she has time. Exception: if Christi is the host or organizer and her response is required to confirm a meeting that's already on her calendar, that's actionable.

Applies toAllAgentsApril