§ 03 — MEMORY & INFRASTRUCTURE

A campaign on Day 60 is smarter than the same campaign on Day 1 — because the memory underneath it grew.

Where the voice and relationship layer decides how Cadence drafts, the memory and infrastructure layer decides what it knows when it drafts, what it’s allowed to send, and where every email actually lands. Five mechanisms, in order:

  • 01  Per-campaign memory architecture
  • 02  Three-tier compression
  • 03  Settings-only guardrails
  • 04  Three-second review loop
  • 05  39-type classification taxonomy
Memory architecture · the Agency Brain

Two brains stacked. One per agency. One per campaign.

The agency brain — Cadence's institutional memory — is the structured layer it reads before every reply. It's the stable record of who you know, who you're talking to, how you write, how you handle a situation, and what you'll never auto-send. It carries your contacts and their 12-dimension relationship scores across five clusters, your brands with mandatories and exclusivity rules, your voice profile encoded across four axes, your playbooks for recurring situations, your vocabulary of deliverable types and house terms, the seven hard-stop guardrails and eight-item pre-send checklist that the AI cannot edit, your eight email templates synthesised from your own sent mail, your routing thresholds, and the cron schedule that keeps it all fresh. Week one it's helpful. Week twelve it knows your brands, your rates, your voice and your rules — and no two agencies' brains are alike.

The campaign brain is built fresh each time. Ten memory files plus a navigation index — the index tells the AI which file to read for which question. If a creator writes asking about call times, Cadence reads shoot.md. If they push back on a rate, it reads negotiation.md and cross-checks investment.md. It never loads the brief when the question is about logistics. Token-efficient. Context-precise. Memory that grows, then gracefully forgets via three tiers of compression.

Click any file to peek inside →

Agency brain
/tenants/{agency}/
One per tenant. Shared by every coordinator on the team.
scopes into  ↓
Campaign brain
/campaigns/{id}/memory_docs/
One per campaign. Built incrementally as work happens.
/campaigns/BWS-26/memory_docs/index.md updated 14m ago · 1.3 kB

          
Every Save in the campaign hub writes to its matching file.
Every email arrival appends to the relevant file and refreshes the index.
The AI reads the index first. Then it loads only the files it needs.
Per person

One rolling narrative.

Each contact has a single narrative file with nine sections. Cadence loads the active-memory section by default — and reaches deeper into long memory or relationship timeline only when the question demands it.

identity current state long memory relationship timeline active memory · last 20 scoring history behavioural notes campaigns worked on do-not / must-do flags
The Fact Ledger · temporal memory

Never lose a number again.

Most tools remember the latest value. Cadence remembers every value over time — each one stamped with its source email and the moment it landed. Ask what you agreed three months ago and get the real answer, not just the current one. Captured from inbound emails and manual hub edits, in one unified history.

Negotiation history @forkandflora · Greenfield Foods "Char-Crisp"
  1. $9,500initial quoteLyric Talent Co · 15 Mar
  2. $7,500your counter16 Mar
  3. $8,200their counterLyric Talent Co · 17 Mar
  4. $8,000your final17 Mar
  5. $8,000agreedLyric Talent Co · 18 Mar
CadenceThey moved $1,300 down; you moved $500 up. First rate quoted was $9,500.
Ask in plain English
  • What was the first rate they quoted?
  • Show me the full negotiation chronology.
  • Who moved more in the negotiation?
What it tracks · per deal
base rate usage weeks usage platforms exclusivity weeks exclusivity category deliverable format posting model production model cutdowns travel coverage performance bonus whitelisting rate final investment contract status go-live date

Every value, timestamped

Not just the current number — the whole sequence, each entry tied to the email or hub edit it came from.

One unified history

Rates quoted over email and rates you edit by hand in the campaign hub land in the same ledger.

A paper trail on every number

A field-level audit log records who set it, when, and from which email — whoever or whatever changed it.

Memory that grows, then gracefully forgets

Three tiers of compression. The AI never reads stale weight.

Tier 01

Last 20 verbatim. Then a sentence.

Every memory file keeps the last 20 events verbatim. When event 21 arrives, the oldest event compresses to a single sentence and moves into the file's compressed zone. No AI call. Regex-based.

Tier 02

Sundays — paragraphs from heaps of sentences.

Every Sunday, an agent reads the compressed zone of every active file. If there are more than 50 compressed entries, the oldest 30 get batch-summarised into a single narrative paragraph. The agent replaces those 30 with the paragraph.

Tier 03

90 days quiet — cold storage.

Every 90 days, contacts with no activity in 60+ days have their compressed zone moved to cold storage. The AI doesn't auto-read archive. Coordinator can request a specific memory back any time via chat: "Remind me about Maya from BlueWave."

The point isn't to remember everything forever. It's to remember the right thing at the right depth.

Guardrails

Rules the AI cannot change. Only you can.

Cadence is allowed to draft. Cadence is allowed to send — but only when seven hard-stop checks and an eight-item pre-send checklist all pass. Those checks live in your settings. The AI cannot edit them, cannot disable them, cannot bypass them. If any hard-stop trips, the draft moves to the queue with a GUARDRAIL badge and a one-line reason.

Hard-stops · block auto-send entirely
  • Rate not pre-approved for this campaign's budget
  • Age compliance — adult-targeted brand + contact age unverified
  • Competitor mention — flagged against the brand's exclusivity list
  • Contract amendment inbound — any markup goes to you, never auto-sent
  • Legal / dispute language detected — "lawyer," "complaint," "breach," "refund," "cease and desist"
  • First contact from an unknown domain — soft 2-hour delay
  • Confidentiality breach risk — confidential brief content to a non-approved recipient
Pre-send checklist · must all pass before Send
  • Rate within campaign budget envelope
  • Confidentiality clause present (if required by brand)
  • Brand mandatories included (per brands.yaml)
  • Age statement included (alcohol or adult-targeted)
  • AU English spelling (or your configured locale)
  • No emojis if the contact's profile says emoji_ok: false
  • Signature present and matches your configured signoff
  • Reply-to-self check — never auto-reply when you're CC'd, not To'd
Edit any rule in Settings → Guardrails. The change applies to every draft from the next email forward.
Voice blueprint · learning curve

Day 1, every draft needs a review. Day 90, approval is a three-second glance.

Every time a coordinator edits a Cadence draft before sending, the system registers a micro-correction. Over a 30-day cycle, the feedback loops narrow the gap between the AI draft and the coordinator's actual voice. By day 30 we hit the three-second-review threshold; by day 90 most coordinators approve drafts without touching the wording.

DAY 1
58%
every draft needs review
DAY 7
72%
most need minor edits
DAY 14
80%
occasional wording tweaks
DAY 30
88%
30 nightly updates · DSPy
DAY 60
93%
rare edits
DAY 90
95%+
approve, rarely touch
Communication classification matrix

Every email scored on six dimensions. Routed to one of four bands. No exceptions.

Every email Cadence receives is scored on topic category, sentiment, relationship status, financial exposure, temporal urgency, and prior thread context. A confidence score is assigned. The score determines the action band — and the action band determines whether a human ever sees it.

ESCALATEaccount director alerted
GREYreassess
QUEUEmorning briefing
AUTOsend + log
0% 55% 65% 75% 100%
< 55%

Escalate

Processing stops. Account director alerted. No draft generated. Rate negotiations, legal disputes, brand-safety incidents, PR enquiries.

55–65%

Grey zone

Unclear intent. Re-scored against thread context and supplier memory. Routed to the highest-applicable band on resolution.

65–75%

Queue

Draft prepared, presented in the morning briefing. One-click approve, edit, or escalate. No "Approve All" — deliberately.

≥ 75%

Auto-send

Cadence sends and logs transparently in the sent view. Confined to logistical, binary, zero-judgement workflow gates.

The 39-type taxonomy · v3

39 email types across 8 lifecycle stages. 3 routing bands. The matrix that runs the inbox.

v3 added 18 new types — bundled rate cards, axis-targeted counters, archetype-stack proposals, concept submissions and more — to the original 21. Filter by routing band, direction, or lifecycle stage. The taxonomy is the production system: every email is classified by this same grid before you open the inbox.

Risk flag inventory · v3

24 risk flags can override any routing decision.

The default routing for each type is the floor. Risk flags raise the band — never lower it. The highest level always wins. v3 added 13 commercial- and compliance-aware flags to the original 11.

The original 11
High dollar amount> $5k mentioned → escalate
Compliance concernNARTD, age, exclusivity
Brand safetyCrisis, sensitivity, reputation
Legal terms unresolvedConditional language pending
Platform limitationTech restriction → queue
External crisisWeather, supply chain
Scope creepAsset request expands brief
Last-minute change< 48h shift → flag urgent
First interactionInitial contact → queue
Financial clarificationRate / budget question
Multi-intent2+ distinct intents in one email
New in v3 · 13 more
Scope / timeline negotiationNon-price flexibility ask → queue
Amendment attachment presentRedlined .docx / .pdf → escalate
Confidentiality required"Strictly confidential" → escalate
First interaction with talentDirect-to-creator, no agent thread → queue
Bulk BCC recipientOne of 50+ outreach → suppress / queue
Automated sender patternDocuSign / Calendly domain → log, never reply
Financial data in attachmentRate card as PDF / sheet → escalate
Deliverable model changePosting / production model shifts → queue
Exclusivity conflict detectedOverlapping category commitment → escalate
BM access required pendingWhitelisting w/o Business Manager access → queue
Equity / long-term commitmentAmbassadorship, equity, co-brand → escalate (legal)
Performance KPI unclearBonus with no measurable threshold → queue
Seeding · no contractProduct gifting w/o agreement → escalate (legal)
+ customper-tenant rulebook