TL;DR
- A CDP optimizes identity, activation, and consent at scale—not every agent workflow needs one on day one.
- Commerce and marketing agents need governed read paths (segments, offers, consent) more than another platform seat.
- Lake → optional CDP → folder contract → agent matches composable best practice: swap components, keep the read interface stable.
What agents need from a CDP
A Customer Data Platform (CDP) promises one profile per customer across channels. Agent teams want the same outcome: consistent facts an assistant can read before it drafts email, scores a lead, or routes a support ticket. The usual gap is missing agreement on where truth lives and who may change it, not missing another platform seat.
Who it is for: Marketing ops leads, martech owners, and program directors standing up agent workflows on top of an existing stack. You may already pay for Segment, Salesforce Data Cloud, or a warehouse. You still need a contract agents can follow without guessing.
What you will learn: what CDPs optimize, composable-stack best practice, commerce and marketing workflows that fit a folder contract, lake vs CDP vs hybrid, and Path A.
Composable systems: best practice and where agents fit
Composable architecture (MACH-style: API-first services, headless commerce, best-of-breed activation) won because monolithic suites could not keep pace with channel count. Marketing stacks became warehouse + identity + reverse ETL + ESP + CMS + onsite engine + ads—each swappable if interfaces stay stable.
A composable CDP layers audience building and activation on the warehouse instead of buying a packaged black box. I wrote earlier about warehouse-as-CDP tradeoffs: batch and analytics lean composable; millisecond onsite personalization often still needs a purpose-built activation plane or hybrid federation (e.g. warehouse queries + retained profile attributes for real-time segments).
Agent workflows add a fourth interface layer the composable playbook rarely names:
| Plane | Role | Composable best practice |
|---|---|---|
| Storage | Lake / warehouse — system of record for events and tables | One governed schema; dbt tests; lineage |
| Activation | CDP, reverse ETL, journey tools — audiences to channels | Marketer UI or governed SQL; consent enforced here |
| Experience | CMS, commerce, ESP, onsite — customer-facing delivery | Headless APIs; no copy hard-coded in code |
| Agent read surface | Folder contract — SSOT paths agents and humans share | Versioned files; owners; promotion rules |
Composable maturity is not “we bought six SaaS tools.” It is documented contracts between planes. APIs for services; folder contract for LLM-era consumers that read files before they draft.
Composable best practices that transfer directly
These show up in every serious martech architecture review—and they map cleanly to agent governance:
| Best practice | Composable stack | Folder contract equivalent |
|---|---|---|
| One system of record per data type | Warehouse owns events; CDP owns activation profiles | One path per segment definition; no duplicate segments-v2-final.csv |
| Interface over implementation | Swap Braze for Klaviyo if API contract holds | Swap CDP export job; agent still reads segments/active.yaml |
| Schema versioning | dbt contracts, event spec in Avro/JSON Schema | schema_version: in YAML; breaking changes need owner sign-off |
| Consent as infrastructure | CMP + CDP suppression lists | consent/ snapshot with as_of date; agent prompt cites it |
| Latency tiering | Real-time vs batch journeys documented | Contract files label freshness: nightly vs streamed |
| TCO honesty | Composable saves license, costs engineering | Contract saves RFP time, costs promotion discipline |
Anti-patterns (from composable CDP programs and agent pilots alike):
- Buying composable for cost alone — hidden integration tax; same as “we’ll just use ChatGPT” without SSOT.
- Two truths — warehouse segment and CDP segment diverge; agent reads an outdated export.
- SQL as “self-serve” — IT queue replaces marketer agility; files without owners replace IT queue with shadow exports.
- Rip-and-replace before use-case map — no inventory of which journeys need sub-second data vs weekly campaign copy.
Packaged, composable, hybrid—and agents
| Architecture | When it wins | Agent implication |
|---|---|---|
| Packaged CDP | Fast connectors, identity out of the box, regulated industries | Export snapshots into contract; do not point agents at vendor UI |
| Composable (warehouse-centric) | Data team strong; custom identity; cost control | dbt → data/segments/; contract is the stable read API |
| Hybrid / federated | Real-time onsite + warehouse depth (federated audience models) | Hot attributes in CDP; narrative and policy in contract files |
| No CDP (CRM + shop + ESP) | SMB; few channels; batch campaigns | CRM/Klaviyo exports promoted weekly; contract still required |
The folder contract is architecture-agnostic. It is how you keep agents composable: tomorrow’s CDP vendor change should not rewrite every prompt—only the export job into customer-context/.
Parametric SSOT (how I wire composable reads)
Composable systems fail when numbers and prose drift. Best practice on my builds: interdependent params live in data/*.yaml (thresholds, segment caps, offer limits); narrative and RACI live in markdown. Agents read YAML before citing metrics in copy or code—the same discipline as deliberate file memory and enterprise AI readiness: define SSOT before you scale automation.
Example shape (illustrative):
# data/segments/enterprise-q3.yaml — owner: marketing ops; freshness: nightlyschema_version: 1as_of: 2026-07-28segment_id: enterprise-q3criteria: min_ltv_hkd: 50000 regions: [HK, SG]consent_channels: [email]max_discount_pct: 15The CDP or warehouse produces the audience; the contract file states what agents may claim and which offers are in bounds.
What a CDP is actually for (and what it efficiently buys you)
A Customer Data Platform is not a database. It is an activation layer on top of customer data: ingest events and profiles from web, app, CRM, POS, and ads; resolve identity (same person, many IDs); build audiences; enforce consent; and push segments to email, SMS, paid media, onsite personalization, and support tools—often with near-real-time triggers.
Where a CDP creates real efficiency:
| Capability | What it saves | Typical owner |
|---|---|---|
| Identity stitching | Manual joins across email hash, device ID, loyalty ID, CRM account | Data + martech |
| Audience sync | Rebuilding segment exports for Meta, Google, Braze, SFMC each campaign | Marketing ops |
| Consent & suppression | Legal exposure from “we emailed someone who opted out” | Privacy / compliance |
| Event fan-out | One instrumentation stream → many destinations | Engineering |
| Marketer self-serve | SQL tickets for every “customers who bought X in 30 days” | Marketing |
Those efficiencies matter when volume, channels, and compliance scale together: multi-brand retail, subscription commerce, global CRM, always-on paid media. They matter less when the bottleneck is “our agent does not know which segment or offer is live this week.” That is a read-surface and ownership problem—a folder contract fixes it whether or not you pay for Segment, mParticle, Tealium, Salesforce Data Cloud, or Adobe Real-Time CDP.
Commerce, marketing, and personalization: cases that fit a folder contract
Agents in GTM rarely need the full identity graph on every turn. They need governed slices: who we target, what we may say, what is true about the product, and what changed since last campaign. These workflows work well with contracted files (YAML + markdown) synced from warehouse, CDP, or ops tools.
Marketing and lifecycle
| Workflow | Folder contract paths (examples) | CDP still involved? |
|---|---|---|
| Campaign brief → email/SMS draft | segments/active.yaml, offers/current.md, voice/tone.md | Optional: CDP exports segment counts nightly |
| Lead scoring narrative | scoring/rules.yaml, icp/firmographics.yaml | CRM or CDP feeds scores; agent reads promoted file |
| ABM one-pager for sales | accounts/tier-1.yaml, plays/q3-enterprise.md | Often CRM-only; no CDP required |
| Consent-aware copy | consent/channels.yaml, suppression/do-not-contact.csv | CDP or CMP is source; agent reads promoted snapshot |
Commerce and merchandising
| Workflow | Folder contract paths | Notes |
|---|---|---|
| Onsite promo copy | catalog/hero-skus.yaml, promo/stacking-rules.md | Shopify metafields or PIM export → data/ |
| Category landing narrative | taxonomy/categories.yaml, seo/keyword-clusters.yaml | Personalization rules in files; execution still on CMS/CDP |
| Cart-abandon agent assist | journeys/abandon-v2.md, incentives/max-discount.yaml | Real-time send still via ESP; agent drafts variants from contract |
| Marketplace seller comms | policies/fees.yaml, segments/seller-tiers.yaml | Multi-sided; contract beats asking the model to “remember policy” |
Personalization (what agents can and cannot do)
Agents personalize language, not millisecond onsite experiences. A folder contract holds:
- Eligibility rules — “Show offer X only if LTV tier ≥ 2 and not in
suppression/holiday-2026” - Variant facts — price, shipping regions, loyalty earn rate, bundle components
- Fallback copy — when the data file has no row for this segment, use default paragraph B
Real-time 1:1 product grids and decisioning APIs still belong on the CDP, CMS, or edge layer. The contract tells the content agent which facts are in bounds so it does not invent discounts or misstate eligibility.
CDP vs data lake vs folder contract: who does what
| Layer | Primary job | Best for | Weak for |
|---|---|---|---|
| Data lake / warehouse | Store all events and tables; SQL at scale | Analytics, ML features, finance | Marketer self-serve; consent-aware activation |
| CDP | Identity, audiences, consent, connector sync | Paid media, ESP triggers, cross-channel journeys | Agent-readable governance without export discipline |
| Folder contract | Named SSOT paths + owners for agents and humans | Pilots, copy, briefs, policy-bound drafts | Sub-100ms personalization; petabyte joins |
Tap the lake directly? Yes—for batch agent workflows. A nightly segments/enterprise-churn-risk.parquet → promoted segments/enterprise.yaml is valid. The lake is the system of record; the contract is the agent API. Skipping the CDP is reasonable when:
- One primary CRM or commerce platform (Shopify + Klaviyo, Salesforce + Marketing Cloud) already holds profiles
- Audiences are small and rebuilt weekly, not streamed to twelve ad platforms
- Compliance accepts scheduled snapshots with documented lineage, not real-time suppression APIs
Keep the CDP when:
- Identity spans many brands, countries, or offline/online IDs
- Paid media and onsite personalization must share the same audience within minutes
- Privacy team requires centralized consent enforcement across vendors
The folder contract does not replace the CDP in those cases. It sits in front of the agent so marketing and commerce teams are not pasting exports into chat. That is the composable pattern: activation plane (CDP) and governance read plane (contract) stay separate so you can change vendors without retraining every workflow.
If you have no CDP today: practical sources
Most mid-market stacks already have enough to contract without a new SKU:
| Source you likely have | Promote into contract as |
|---|---|
| CRM (HubSpot, Salesforce) | segments/icp.yaml, accounts/active.csv |
| Commerce (Shopify, Magento) | catalog/skus.yaml, customers/ltv-tiers.yaml |
| ESP (Klaviyo, Braze, SFMC) | lists/export-readonly.yaml, consent/snapshot.md |
| Warehouse (Snowflake, BigQuery) | Scheduled dbt model → data/segments/*.yaml |
| Spreadsheet (segment workshop) | One promoted file only—segments/workshop-2026-q3.yaml with owner + date |
| Analytics (GA4, Amplitude) | metrics/funnel-benchmarks.yaml for copy claims, not PII |
Reverse ETL (Census, Hightouch, Fivetran Activations) is the usual glue: warehouse → SaaS or warehouse → git/Obsidian/S3 folder the agent reads. You get CDP-like activation without buying a full CDP when the destination count stays low.
What breaks without any CDP or discipline: every campaign agent maintains a private export; consent lives in someone’s inbox; “segment A” means three different SQL queries. The folder contract is how you simulate CDP governance until volume justifies the platform—or forever, if your agent use case is content and decision support rather than real-time decisioning.
Why another CDP purchase stalls agent work
CDP vendors sell identity resolution, activation connectors, and governance dashboards. Those matter at scale. They also introduce months of integration before an agent sees a clean read surface. Meanwhile pilots run in chat tabs where "customer context" means whoever pasted the spreadsheet last.
The structural problem is familiar from SaaS portfolio debates: you buy a platform for a workflow that agents could consume as files plus rules if the organization agreed on shape first. Agents do not need a perfect golden record on day one. They need stable paths for segments, product facts, consent flags, and campaign history, plus a rule that says which file wins when two disagree.
| Symptom | What breaks | Folder contract fix |
|---|---|---|
| Agent invents customer facts | No read path, model fills gaps | Named customer/ or segments/ YAML with owner |
| Two teams maintain "the same" list | Duplicate exports, drift | Single SSOT path + promotion rule |
| Compliance blocks automation | Unclear consent source | consent.yaml with last-updated and owner |
| Pilot works, production fails | Context lived in chat | Bridge points to folder paths agents must read |
This is the same lane as managed memory vs files you control: managed layers help contextual recall; operational and commercial truth still belongs in files humans can open.
What a folder contract contains
A folder contract is not a new product category. It is a short document (markdown is fine) that answers four questions:
- Paths: Which folders or files are authoritative for customer facts, segments, and campaign state?
- Update rules: Who may write, on what trigger (daily sync, sprint boundary, campaign launch), and what review gate applies?
- Ownership: Named role or team accountable for each path (RACI A stays human).
- Agent read order: Which files load at session start vs on demand.
You can still sync from a warehouse or CDP into those paths. The contract does not forbid SaaS. It defines the read surface agents and humans share.
Example implementation: how I run it
On my personal site and commerce work, I keep parametric truth in YAML under a repo data/ folder and narrative decisions in vault markdown. Agents read data/*.yaml before citing numbers in copy or code. Marketing-facing segments for agents are not buried in a UI; they are files with owners listed in a one-page contract note linked from my session Bridge.
I directed Cursor agents to scaffold the contract template, then I reviewed paths and owners. I do not hand-maintain every field; I do approve what becomes SSOT.
CDP SaaS vs folder contract vs lake-only
| Dimension | CDP first | Lake / warehouse only | Folder contract first |
|---|---|---|---|
| Time to first agent read | Months (integration) | Days–weeks (SQL + export job) | Days if paths exist |
| Real-time personalization | Strong | Build yourself | Not the goal |
| Identity across 10+ sources | Strong | Possible, expensive | Needs promoted IDs in files |
| Marketer self-serve audiences | Strong | Weak (SQL queue) | Strong for documented segments |
| Portability | Vendor export schedules | SQL + tables | Git, Obsidian, Drive |
| Audit | Product UI + logs | Query logs | Human-readable files |
| Best when | Omnichannel activation at scale | Analytics + ML core | Agent pilots on existing data |
Decision shortcut: If the ask is “activate this audience on Meta and onsite in five minutes” → CDP or composable activation hub. If the ask is “draft compliant email for segment B without inventing offers” → folder contract. If the ask is “train a model on ten years of clicks” → lake. See warehouse vs CDP for hybrid and real-time nuance.
When identity resolution across twelve sources is the program goal, CDP investment may be right. When the goal is “stop our campaign agent from hallucinating segments,” contract the folders first—regardless of packaged vs composable architecture.
Path A: afternoon test in any chat tool
You do not need Cursor or a new vendor to test the idea.
- Create a folder
customer-context/with three files:segments.md(who we target),facts.md(product and offer truths),consent.md(what automation may do). - Write a half-page
CONTRACT.mdlisting those paths, your name as owner, and "update on campaign change only." - Start a new chat. Paste: "Read CONTRACT.md. Use only those files for customer claims. Draft one email to segment A."
- Change one fact in
facts.mdwithout telling the model. Start a fresh chat with the same prompt. Confirm the draft tracks the file, not memory.
Commerce variant: add promo-rules.yaml (max discount, excluded SKUs) and prompt: "Draft a cart-abandon email; never exceed max discount in promo-rules." If the model invents a coupon, your contract path is missing or the agent did not read it—not that you lack a CDP.
If step 4 fails, you found the real blocker: no SSOT habit, not missing CDP features.
Limitations
A folder contract does not replace legal review, PII handling, enterprise identity graphs, or sub-second onsite personalization. It does not sync itself; someone must own promotion from warehouse, CDP, or CRM into read paths. It scales poorly if every analyst maintains a private export with no merge rule. At high activation volume, operating without a CDP (or warehouse + reverse ETL hub) means rebuilding identity and connector work the market already productized.
For governed agent memory over months, pair the contract with deliberate file habits from deliberate file memory.
FAQ
What is a folder contract for agents?
A versioned folder layout (YAML + markdown + schemas) that tells agents where customer facts live, how they relate, and what must not drift—without requiring a new CDP purchase first.
When do I need a full CDP versus a folder contract?
A CDP buys identity resolution, activation connectors, and governed profiles at scale. A folder contract is enough when agents need readable, testable context in repos you already control.
How does a CDP differ from a data lake for marketing agents?
Lakes store raw events cheaply; CDPs curate profiles and segments for activation. Agents need legible contracts on top of either—otherwise they hallucinate field names.
What belongs in parametric YAML for a CDP folder?
Cross-linked numbers: segment caps, ID keys, env names, consent flags, and units. Change one value in YAML; grep confirms consumers read the same path.
Can composable commerce stacks use this pattern?
Yes. MACH stacks (API-first, headless, cloud) map cleanly to four planes—data, identity, activation, agent harness—with the folder contract as the agent-readable spine.
What to do next
- Inventory one workflow — email draft, promo copy, or ABM brief — and list which facts the agent must not invent.
- Classify latency — real-time activation vs batch copy (composable best practice: warehouse-as-CDP).
- Map sources — CRM, shop, warehouse, CDP: where does each fact originate?
- Write the four-row contract (paths, update rules, owner, read order) before CDP RFPs or lake architecture reviews.
- Run Path A (or the commerce variant). If behavior improves with files, schedule exports from lake or CDP into those paths—you have phased the problem correctly.
Get practical posts on enterprise AI and transformation. Only useful updates, sent as a weekly digest.
One practical digest each week. Unsubscribe anytime.





