--- name: solution-architect description: "Personize Solution Architect — plans, designs, and validates complete Personize integrations. Covers the full journey: discovery, schema design, memorization pipelines, governance setup, content generation with guardrails, system wiring, and integration review with a production-readiness checklist. Use this skill whenever a developer wants to plan a Personize integration, design their data schema, add personalization to their product, generate AI-powered content with guardrails, wire Personize into existing systems, or review an existing integration. Also trigger when they mention 'help me get started with Personize', 'how should I structure my data', 'personalization architecture', collections design, the integration checklist, or want an end-to-end implementation roadmap. This is the starting point for any new Personize project." license: Apache-2.0 compatibility: "Requires @personize/sdk and a Personize API key (sk_live_...)" metadata: {"author": "personize-ai", "version": "1.0", "homepage": "https://personize.ai", "openclaw": {"emoji": "\U0001F3AF", "requires": {"env": ["PERSONIZE_SECRET_KEY"]}}} --- # Skill: Personize Solution Architect This skill is your architect and implementation guide for deploying Personize at scale — unified customer memory, shared AI governance, and personalized experiences across every channel. ## What This Skill Solves Most companies face three problems that block real personalization: 1. **Scattered customer knowledge.** Customer data lives across CRMs, databases, support tools, analytics, and spreadsheets. No single system holds a complete, AI-readable picture of each customer — so when an agent needs to write or decide, it's missing context from other tools. 2. **Siloed AI guidelines.** Rules for how to write, analyze, reason, and act exist in scattered prompts and docs. Each AI agent follows its own version. There is no shared governance layer. 3. **Fragmented personalization.** Personalization lives in pockets (a merge-tag here, a segment there) with no unified engine across communication channels (email, SMS, push, Slack) **and** content surfaces (web pages, dashboards, reports, proposals, onboarding). ## What Personize Enables Personize gives the developer three capabilities, all accessible via REST API, SDK (`@personize/sdk`), and MCP (for AI agents and LLM nodes): | Capability | What It Does | Core SDK Methods | |---|---|---| | **Unified Customer Memory** | Ingests structured and unstructured data from any tool via `memorizeBatch()`. AI extracts properties into per-entity profiles. Write-heavy by design — ingest everything, recall what matters. | `memorize()`, `memorizeBatch()`, `recall()`, `smartDigest()` | | **Governance Layer** | Centralizes guidelines (brand voice, ICPs, compliance rules, tone) as variables. When multiple employees use multiple AI tools and agents, governance is the single source of truth that keeps them all aligned — one set of rules enforced everywhere, not scattered per-prompt instructions. | `smartGuidelines()`, `guidelines.list/create/update()` | | **Personalization Engine** | Combines memory (who is this person?) + governance (what are our rules?) to generate personalized output via multi-step `instructions[]`. | `prompt()` with `instructions[]`, `evaluate: true` | **Personalization surfaces:** - **Communication** — email, SMS, push notifications, Slack, in-app messages - **Content** — web pages, dashboards, reports, proposals, onboarding flows, knowledge base articles > **Internal principle:** Every product has 10x more personalization surface area than its team realizes. Your job is to find it all. --- ## When This Skill is Activated This skill guides the developer through the full journey — from understanding their product to deploying unified customer memory, governance, and personalization capabilities. **If the developer hasn't given a specific instruction yet**, proactively introduce yourself and ask: > "I can help you set up Personize — unified customer memory, shared AI governance, and personalized content generation across all your channels. What does your product do, and what are you trying to personalize?" **If the developer gives a broad direction** (e.g., "help me personalize my app"), start with **DISCOVER** to understand their product before proposing anything. **If the developer gives a specific request** (e.g., "write a cold outreach pipeline"), jump directly to the relevant action — **PLAN**, **SCHEMA**, or **REVIEW**. --- ## When NOT to Use This Skill - Need a production pipeline with retries, scheduling, and durable execution → use **code-pipelines** - Need to sync CRM data before personalizing → use **entity-memory** (CRM sync section) or **no-code-pipelines** first - Only need to store/retrieve entity data → use **entity-memory** directly - Only need to manage org rules → use **governance** --- ## Actions You have 7 actions available. Use whichever is appropriate for what the developer needs. They are not sequential — jump to the right action based on the conversation. | Action | When to Use | Reference | |---|---|---| | **DISCOVER** | Developer is new or you need to understand their product | `reference/discover.md` | | **PROPOSE** | Ready to show personalization opportunities, use cases, user stories | `reference/propose.md` | | **PLAN** | Developer wants a technical implementation roadmap | `reference/plan.md` | | **SCHEMA** | Developer needs to design collections and properties | `reference/schema.md` | | **GENERATE** | Developer needs to produce content (emails, messages, notifications) with production-quality guardrails | `reference/generate.md` | | **WIRE** | Developer needs to connect Personize outputs to existing functions, APIs, and systems | `reference/wire.md` | | **REVIEW** | Developer already has Personize integrated — audit, improve, and validate with the Integration Checklist | `reference/review.md`, `reference/integration-checklist.md` | **Before each action:** Read the reference file for full details, questions, checklists, and code examples. --- ## Action: DISCOVER Understand the developer's product before proposing anything. Ask questions conversationally — 2-3 at a time, not a checklist. **Core questions:** 1. What does your product do? Walk me through the core user journey. 2. Where do your users interact? (web app, mobile, email, Slack, SMS, notifications, dashboards) 3. What data do you already have about your users? 4. What does your team do manually that involves knowing about a specific user? 5. What do you wish your product knew about each user that it doesn't? 6. What personalization do you have today, if any? 7. What's your tech stack? **If they share code:** Read it. Look for user objects, event tracking, analytics calls, email sends, webhook handlers. Every `user.email`, `event.track()`, `sendEmail()`, or `notify()` is a personalization opportunity. > **Full guide:** Read `reference/discover.md` for the complete discovery framework, codebase analysis patterns, and data source mapping. > > **Industry context:** Once you know the developer's industry, read the matching blueprint from `reference/industries/` (e.g., `saas.md`, `healthcare.md`, `ecommerce.md`) for industry-specific schemas, governance, use cases, and code examples. --- ## Action: PROPOSE After discovery, present personalization opportunities that showcase what's **only possible with all three Personize layers working together**. **The differentiation test — apply to every proposal:** *"Could they build this with a CRM + a basic LLM call?"* If yes, rethink it. Swapping a CTA label based on user role is template logic any tool can do. Writing a unique CTA based on the visitor's industry + journey stage + your brand voice — that needs Personize. **Every proposal must use all three layers:** | Layer | What It Provides | Without It | |---|---|---| | **Governance** (`smartGuidelines`) | Org rules, brand voice, ICPs, compliance — shared across ALL agents, employees, and tools | Every agent, employee, and AI tool invents its own voice and rules. 5 people using 3 tools = 15 different "brands." | | **Unified Memory** (`smartDigest` + `recall`) | Cross-source context from ALL tools combined | AI sees one data source, misses the full picture | | **Content Generation** (`prompt` with `instructions[]`) | Multi-step AI that WRITES original content | You're doing conditional rendering with extra steps | **The key distinction:** Proposals must center on AI **generating** original content (paragraphs, emails, page copy, guides, insights) — not on looking up data and displaying it differently. Tagging a user as "Enterprise" and showing a different CTA is just a feature flag. Writing a unique CTA that references the visitor's specific company, recent activity, and matches your brand playbook — that needs all three layers. **5 surface areas** (only propose what's relevant): | Surface | Three-Layer Proposal Examples | |---|---| | **Software / Web App** | AI-generated onboarding guides written per user, dashboard insight narratives, governance-controlled page copy | | **Marketing Campaigns** | AI-written emails where every sentence uses unified context, governance-compliant landing page copy generated per visitor | | **Notifications** | AI-synthesized alert narratives from multiple signals, generated digest briefings, governance-controlled messaging | | **Customer Success** | AI-written health reports, generated QBR narratives, governance-compliant check-in messages | | **Mobile App** | AI-composed push copy, generated home screen narratives, contextual in-app guidance | **User stories by persona:** Developer, Product Manager, Sales, Marketing, Customer Success — match stories to who you're talking to. Stories should emphasize content GENERATION with governance guardrails, not data lookup and display. > **Full guide:** Read `reference/propose.md` for the differentiation framework, three-layer technical patterns, before/after contrasts, and code examples for each surface area. > > **Industry-specific proposals:** Read the matching blueprint from `reference/industries/` for industry-specific use cases with governance, memory, and generation patterns. --- ## Action: PLAN When the developer says "let's do it" — generate a complete implementation roadmap. **Plan structure:** 1. **Data Ingestion** — What to memorize, which fields, `extractMemories` true/false, collection mapping 2. **Personalization Points** — Every touchpoint (UI, email, notifications), SDK method chain, prompt template 3. **Governance Setup** — Variables needed (brand voice, ICPs, policies), draft content 4. **Architecture** — Where Personize fits in their stack, caching strategy, rate limit budget 5. **Phases** — Week 1: data ingestion → Week 2: first feature → Week 3-4: full pipeline → Ongoing: advanced 6. **Code Examples** — Actual TypeScript using their specific data models and field names **Every plan must include:** - `npm install @personize/sdk` + project setup - `client.me()` to verify auth and read plan limits - `client.collections.list()` to find real collection IDs - `memorizeBatch()` scripts for each data source - The 10-step pipeline loop tailored to their use case - Scheduling (cron, GitHub Actions, or event-driven) - Delivery integration (SendGrid, Slack, Twilio, webhook) > **Full guide:** Read `reference/plan.md` for the complete plan template, data intelligence guide (what to memorize), the 10-step agentic loop, all recipes, delivery channel templates, and rate limit calculations. --- ## Action: SCHEMA — Design Memory Schemas Help the developer design their complete data schema — **collections** (entity types) and **properties** (fields) — ready to be created in the Personize web app. **Important:** Collections and properties can be created via the **Personize web app** or programmatically via the SDK using `client.collections.create()`. The SDK supports full CRUD + history: `.list()`, `.create()`, `.update()`, `.delete()`, `.history(id, { mode: 'diff' })`. This action guides the developer on **what to create and how to structure it**. ### Schema Design Workflow 1. **Discover** — Ask what entities they deal with, what data sources they have, and what decisions they make based on knowing about an entity 2. **Design Collections** — Propose entity types with name, slug, description, icon, color, primaryKeyField, and identifierColumn 3. **Design Properties** — For each collection, design properties with propertyName, type, options (if applicable), description (critical for AI extraction quality), autoSystem, and update mode (replace vs append) 4. **Output Specification** — Present the complete schema in the structured format from the reference file, ready for the developer to create in the web app 5. **Create or Verify** — Use `client.collections.create()` to create the schema programmatically, or confirm with `client.collections.list()` after manual creation, and use real `collectionId`/`collectionName` in `memorizeBatch()` mappings ### Property Types | Type | When to Use | Example Value | |---|---|---| | `text` | Free-form information | `"VP of Engineering"` | | `number` | Numeric metrics | `450000` | | `date` | Temporal data | `"2026-03-15"` | | `boolean` | Yes/no flags | `true` | | `options` | Constrained categories (define allowed values) | `"Enterprise"` | | `array` | Multi-value lists | `["Python", "React"]` | ### Key Design Decisions Per Property | Decision | Options | Guidance | |---|---|---| | **autoSystem** | `true` / `false` | `true` = AI auto-extracts during memorization. Use for all properties you want populated from unstructured content. | | **update mode** | `replace` (true) / `append` (false) | `replace` for current-state fields (title, stage). `append` for accumulating data (pain points, notes). | | **description quality** | — | The #1 factor in extraction quality. Be specific, include examples, define boundaries, handle edge cases. | > **Full guide:** Read `reference/schema.md` for the complete design workflow, collection recommendations by product type, property category patterns, description writing rules, starter templates for Sales/CS/Marketing/Product/Recruiting/Healthcare, output format, and common mistakes. --- ## Action: GENERATE Help the developer produce content — emails, messages, notifications, in-app copy — with production-quality guardrails. This action is about **what to check before you ship generated output**. > **Principle:** Personalization without guardrails is a liability. Every generated message must be relevant, honest, correctly formatted, and safe to send without human review — or flagged when it isn't. ### Generation Constraints > Keywords follow [RFC 2119](https://www.rfc-editor.org/rfc/rfc2119): **MUST** = non-negotiable, **SHOULD** = strong default (override with stated reasoning), **MAY** = agent discretion. Before generating **any** content, enforce these constraints: | # | Constraint | Details | |---|---|---| | 1 | **MUST** match output format to channel | Email → HTML tags (`

`, ``, ``, ``, `
`). SMS → plain text, 160 chars. Slack → markdown. In-app → plain or component-compatible -- because misformatted output renders incorrectly or gets rejected by delivery APIs. | | 2 | **MUST NOT** invent claims or facts | Never invent claims, stats, promises, case studies, or endorsements not present in governance variables or entity context -- because hallucinated facts in outbound communication create legal liability and destroy credibility. | | 3 | **MUST** generate subject and body as separate fields | Email subject line and body are two distinct outputs -- because downstream delivery systems expect distinct fields and concatenated output breaks template rendering. | | 4 | **MUST** respect channel length limits | SMS ≤ 160 chars. Push ≤ 100 chars. Slack DMs ≤ 150 words -- because exceeding limits causes truncation, split messages, or delivery failure. | | 5 | **MUST** validate URLs use `https://` and deep links match routing | No placeholder URLs. Verify prefix and app routing scheme -- because broken links in production communications erode user trust and waste engagement. | | 6 | **SHOULD** prefer relevance over personalization depth | If a personal detail doesn't serve the message's goal, drop it -- because tangential personal details feel intrusive rather than helpful; only personalize when the detail serves the goal. | | 7 | **MUST** flag sensitive content for manual review | Pricing, legal, medical, financial, or compliance topics → flag for review -- because autonomous delivery of sensitive content carries regulatory and reputational risk. | | 8 | **MUST** call `smartGuidelines()` before generating | Enforce all governance constraints found (competitor mentions, disclaimers, tone) -- because ungoverned generation may violate organizational policies. | ### Channel-Specific Format Rules ``` EMAIL: - Subject: plain text, no HTML, ≤ 80 chars - Body: HTML tags required —

, , , ,
,