persona-and-journey-mapping-sf

Build Salesforce-anchored personas and journey maps where every persona ties to a Permission Set Group, primary record types, list views, dashboards, automation, and a measured mobile/desktop posture, and journeys walk each task end-to-end with friction tags that drive UX decisions. NOT for stakeholder authority / RACI (use admin/stakeholder-raci-for-sf-projects), NOT for system-side process flows (use admin/process-flow-as-is-to-be), NOT for Lightning page design itself (use admin/lightning-app-builder-advanced or the lightning-record-page-auditor agent), NOT for pure design / UX research disconnected from org artifacts.

Best use case

persona-and-journey-mapping-sf is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Build Salesforce-anchored personas and journey maps where every persona ties to a Permission Set Group, primary record types, list views, dashboards, automation, and a measured mobile/desktop posture, and journeys walk each task end-to-end with friction tags that drive UX decisions. NOT for stakeholder authority / RACI (use admin/stakeholder-raci-for-sf-projects), NOT for system-side process flows (use admin/process-flow-as-is-to-be), NOT for Lightning page design itself (use admin/lightning-app-builder-advanced or the lightning-record-page-auditor agent), NOT for pure design / UX research disconnected from org artifacts.

Teams using persona-and-journey-mapping-sf should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/persona-and-journey-mapping-sf/SKILL.md --create-dirs "https://raw.githubusercontent.com/PranavNagrecha/AwesomeSalesforceSkills/main/skills/admin/persona-and-journey-mapping-sf/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/persona-and-journey-mapping-sf/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How persona-and-journey-mapping-sf Compares

Feature / Agentpersona-and-journey-mapping-sfStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Build Salesforce-anchored personas and journey maps where every persona ties to a Permission Set Group, primary record types, list views, dashboards, automation, and a measured mobile/desktop posture, and journeys walk each task end-to-end with friction tags that drive UX decisions. NOT for stakeholder authority / RACI (use admin/stakeholder-raci-for-sf-projects), NOT for system-side process flows (use admin/process-flow-as-is-to-be), NOT for Lightning page design itself (use admin/lightning-app-builder-advanced or the lightning-record-page-auditor agent), NOT for pure design / UX research disconnected from org artifacts.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# Persona And Journey Mapping (Salesforce-Anchored)

This skill activates when an admin, BA, or architect needs to define **who actually
uses the org and how**, in a way that drives concrete Salesforce configuration
decisions rather than abstract UX deliverables. Every persona must anchor to org
artifacts the platform exposes — Permission Set Groups, record types, list views,
dashboards, automation — and every journey must walk a real task with measured
friction so the output feeds downstream auditing and design agents.

---

## Before Starting

Gather this context before producing any persona artifact:

- The **list of in-scope roles** and their headcount. Roles without users are noise.
- The **target Permission Set Group(s)** for each role — if the PSG does not yet
  exist, flag it; do not invent one. Personas without a PSG anchor become opinion
  pieces.
- The **primary record types** each role touches and the **list views** they live
  in. These are observable, not invented.
- **Mobile vs desktop usage**, ideally measured (Lightning Usage app, login
  history, EventLogFile UriEvent / LightningPerformance) — never assumed.
- **Dashboards** the role consumes daily/weekly. If a dashboard is named in a
  persona but does not exist in the org, it is a hallucination — flag it.
- The **automation** that fires for the role (record-triggered Flow, validation
  rules, assignment rules, approval processes, Agentforce topics) — captured by
  metadata, not memory.

---

## Core Concepts

### Persona = User × Org Artifacts

A Salesforce-anchored persona is the join between a *user population* and the
*concrete artifacts* the platform uses to constrain and serve them. The five
anchors are non-negotiable: PSG (what they can do), record types (what they
work on), list views (what they see), dashboards (how they measure success),
automation (what fires for them). A persona missing any anchor cannot drive a
configuration decision.

### Mobile vs Desktop Posture

Salesforce mobile (the Salesforce app) and Lightning Experience desktop are
different products with different UX rules: mobile favors Compact Layouts,
mobile-only Quick Actions, and brief related-list summaries; desktop favors
Dynamic Forms, multi-tab record pages, and dense related lists. The
mobile_pct / desktop_pct split — **measured, not guessed** — is what tells you
which surface to optimize. A 70% mobile field rep persona and a 95% desktop
SDR persona need very different record pages even on the same object.

### Journey Map vs Process Flow

A journey map is **persona-first**: one persona, one task, every step
they take, with friction tagged. A process flow is **system-first**: the
sequence of system events regardless of who triggers them. Journey maps drive
UX decisions (Dynamic Forms, Quick Actions, page redesign, path); process
flows drive automation decisions (Flow vs Apex, callouts, approvals). Do not
conflate them. If you find yourself describing a callout, you are writing a
process flow — stop and switch artifacts (`admin/process-flow-as-is-to-be`).

### Friction Taxonomy (Fixed Enum)

Every friction point must be tagged from this enum so downstream agents can
route work:

| Friction Tag | Meaning | Typical Fix |
|---|---|---|
| `cognitive_load` | Too many fields, sections, or related lists in view at once | Dynamic Forms, conditional visibility, page redesign |
| `click_count` | Task takes more navigation clicks than necessary | Quick Action, Path step, list view inline edit, related list tuning |
| `mode_switch` | Forces user from mobile→desktop or app→browser mid-task | Mobile-friendly Quick Action, mobile-aware Lightning page, offline-capable LWC |
| `data_input` | Repeated typing, no defaults, no picklist where appropriate | Default field values, validation rule with a useful message, picklist conversion |
| `search` | User cannot find a record, list view, or related item | List view tuning, search layout, pinned list views, Einstein Search config |

---

## Common Patterns

### Pattern: PSG-First Persona Sketch

**When to use:** brand-new persona work, or when an existing persona doc has
drifted from org reality.

**How it works:** start from the PSG (or planned PSG) — extract assigned
object permissions, record types, layouts, and tabs. Bind that to a named
persona. Every claim in the persona profile must trace back to a PSG, a
record type, a list view, a dashboard, or an automation in the org.

**Why not the alternative:** title-based personas ("Sales Rep") describe a
stereotype, not a user. They drift, they collide, and they cannot be audited.

### Pattern: One Task Per Journey Map

**When to use:** every primary persona task — captured one task per journey
artifact, not bundled.

**How it works:** the journey artifact has a single `task` (e.g. "Log a
visit", "Triage an inbound case", "Update opportunity stage to Negotiation"),
the frequency (daily / weekly / monthly / quarterly), the steps in order,
the friction tag on each problematic step, and the **next task** the persona
moves to (so the journey doesn't end at "saves record").

**Why not the alternative:** combining tasks into a single map produces a
deliverable nobody reads and a friction list nobody can route.

---

## Decision Guidance

| Situation | Recommended Approach | Reason |
|---|---|---|
| Asked for personas with no PSG roadmap yet | Flag the gap. Do not write personas; write a PSG sketch first. | Personas without PSG anchors cannot be audited or kept current. |
| Asked to map mobile vs desktop and no measurement exists | Flag the gap. Pull from Lightning Usage app or EventLogFile, then resume. | Inventing mobile_pct corrupts every downstream UX decision. |
| Persona task ends at "record saved" | Extend it — what task does the persona do next, on what surface? | A journey that ends at save misses the most common friction (mode switch to next task). |
| 9+ personas in a single phase | Reduce to ≤7 by merging adjacent personas. | More than 7 personas is noise; signal-to-decision ratio collapses. |
| Persona references a dashboard nobody can find in the org | Remove or replace with a real dashboard | Hallucinated artifacts make the persona untrustworthy. |
| Friction tag does not fit the taxonomy | Either re-frame to fit the enum or capture as `notes` | Free-text tags break the routing handoff. |

---

## Recommended Workflow

1. **Identify personas from PSG roadmap.** Pull the planned (or current) Permission
   Set Groups; one persona per distinct user population the PSGs serve. If a
   PSG covers two distinct populations with different journeys, split it.
2. **Anchor each persona to org artifacts.** Fill the canonical schema:
   `psg_assigned`, `primary_record_types[]`, `primary_list_views[]`,
   `dashboards[]`, `automation_touched[]`, and the measured `mobile_pct` /
   `desktop_pct`. No anchor → not a persona.
3. **Build a journey map per primary task.** One task per artifact. Record
   frequency, every step in order, friction points tagged from the fixed
   taxonomy, and the next task the persona transitions to.
4. **Flag friction that needs UI work.** `cognitive_load`, `click_count`, and
   `mode_switch` typically route to record-page redesign, Quick Actions, Path,
   or Dynamic Forms — handed off to `lightning-record-page-auditor`.
5. **Flag friction that needs automation.** `data_input` and some `click_count`
   friction routes to Flow, defaults, validation rules, or assignment rules —
   handed off to the automation agents.
6. **Hand off to downstream agents.** Emit the handoff JSON: persona id, anchor
   artifacts, friction backlog, and target agents
   (`lightning-record-page-auditor`, `list-view-and-search-layout-auditor`,
   `path-designer`, plus UAT test design which runs each case as a persona).
7. **Revisit per release.** Personas drift as PSGs and record types change;
   re-run the anchor check every release train.

---

## Canonical Persona Schema

```json
{
  "persona_id": "outside_sales_rep",
  "name": "Outside Sales Rep",
  "headcount": 42,
  "psg_assigned": "PSG_Sales_Field",
  "primary_record_types": ["Account.Customer", "Opportunity.Field_Deal", "Visit__c.Standard"],
  "primary_list_views": ["My_Open_Opps_This_Week", "Visits_Due_Today"],
  "dashboards": ["Field_Sales_Daily"],
  "mobile_pct": 70,
  "desktop_pct": 30,
  "automation_touched": [
    "Flow:Visit_After_Save",
    "ValidationRule:Opp.Field_Stage_Required_Fields",
    "AssignmentRule:Lead_Field_Territory"
  ]
}
```

## Canonical Journey Schema

```json
{
  "persona_id": "outside_sales_rep",
  "task": "Log a customer visit between meetings",
  "frequency": "daily",
  "steps": [
    {"step": "Open Salesforce mobile app", "surface": "mobile"},
    {"step": "Tap Visits Due Today list view", "surface": "mobile"},
    {"step": "Open visit, tap Log Visit Quick Action", "surface": "mobile"},
    {"step": "Enter notes, attendees, next step", "surface": "mobile", "friction": "data_input"},
    {"step": "Save", "surface": "mobile"},
    {"step": "Move to next visit on list", "surface": "mobile"}
  ],
  "friction_points": [
    {"step_index": 3, "tag": "data_input", "note": "No default for Visit Type; user retypes territory each time"}
  ],
  "desired_outcome": "Visit logged in <60s without leaving the mobile app",
  "next_task": "Drive to next account and repeat"
}
```

## Handoff JSON Shape

```json
{
  "personas": [ /* persona records */ ],
  "journeys": [ /* journey records */ ],
  "friction_backlog": [
    {
      "persona_id": "outside_sales_rep",
      "task": "Log a customer visit between meetings",
      "friction_tag": "data_input",
      "recommended_target": "lightning-record-page-auditor",
      "recommended_intervention": "Default Visit Type from territory; review mobile compact layout"
    }
  ]
}
```

---

## Review Checklist

- [ ] Every persona is anchored to a real PSG (planned or existing).
- [ ] Every persona lists ≥1 record type, ≥1 list view, and ≥1 dashboard from the org.
- [ ] `mobile_pct + desktop_pct ≈ 100` (within ±2 for rounding) and the source of the measurement is named.
- [ ] Every primary task has its own journey artifact with ≥3 steps.
- [ ] Every friction point uses a tag from the fixed enum.
- [ ] Every journey names the `next_task`; none end at "save".
- [ ] Persona count for the phase is ≤ 7.
- [ ] Friction backlog routes each item to a downstream agent.

---

## Salesforce-Specific Gotchas

1. **PSG drift after release.** PSGs change between releases as new objects ship; re-run anchor checks every release train or personas go stale silently.
2. **Mobile usage measurement gaps.** Lightning Usage app shows desktop-only by default; you must enable Mobile App usage and EventLogFile UriEvent to get the real split.
3. **List view personalization invisible to admins.** Users create personal list views the admin never sees; persona list-view anchors should bias to shared list views or you misread the journey.

---

## Output Artifacts

| Artifact | Description |
|---|---|
| `personas.json` | Array of persona records following the canonical schema. |
| `journeys.json` | Array of journey records, one per persona-task pair. |
| `friction_backlog.json` | Routed friction items with target agent and recommended intervention. |
| `handoff.json` | Combined handoff envelope consumed by downstream auditing agents. |

---

## Related Skills

- `admin/stakeholder-raci-for-sf-projects` — Use for stakeholder authority and decision rights, not user-facing persona work.
- `admin/process-flow-as-is-to-be` — Use for system-side process flows; this skill stays user-facing.
- `admin/lightning-app-builder-advanced` — Use for the actual record page build once friction is identified.
- `agents/lightning-record-page-auditor` — Downstream audit agent that consumes per-persona record page friction.
- `agents/list-view-and-search-layout-auditor` — Downstream agent for `search` and list-view friction.
- `agents/path-designer` — Downstream agent for per-record-type path design driven by journey stages.

Related Skills

omnistudio-field-mapping-governance

8
from PranavNagrecha/AwesomeSalesforceSkills

Govern DataRaptor field mappings to prevent runtime errors when source metadata changes: naming, versioning, and dependency tracking. NOT for DataRaptor authoring fundamentals.

fhir-data-mapping

8
from PranavNagrecha/AwesomeSalesforceSkills

Use this skill when mapping FHIR R4 clinical resources (Patient, Observation, Condition, CarePlan, CodeableConcept) to Salesforce Health Cloud objects. Triggers: 'how do I map FHIR patient to Salesforce', 'FHIR Condition to Health Cloud object', 'FHIR R4 Support Settings', 'CodeableConcept to CodeSetBundle', 'HL7 FHIR integration Health Cloud'. NOT for general EHR integration design, HL7 v2 message parsing, outbound FHIR API exposure, or non-clinical Salesforce data migration.

data-loader-csv-column-mapping

8
from PranavNagrecha/AwesomeSalesforceSkills

Mapping CSV columns to Salesforce field API names for Data Loader, dataloader.io, Workbench, and custom Bulk API V2 loads. Covers header normalization, missing/extra-column behaviour per tool, required-field detection from describe metadata, polymorphic lookup prefixes, External ID upsert binding, picklist API names vs labels, datetime/timezone handling, and the case-sensitivity divergence between Data Loader (insensitive match) and Bulk API V2 (case-sensitive headers). NOT for picklist value validation pre-load — see data-loader-picklist-validation-pre-load. NOT for batch sizing — see data-loader-batch-window-sizing. NOT for general migration planning — see data-migration-planning.

einstein-search-personalization

8
from PranavNagrecha/AwesomeSalesforceSkills

Einstein Search personalization: configure search result ranking, promoted results, searchable objects, and Natural Language Search (NLS) for Lightning Experience. Triggers when users ask about search personalization signals, why search results feel irrelevant, how to enable NLS conversational queries, or how to manage Einstein Search settings in Setup. NOT for SOSL query authoring, Experience Cloud search customization, or Commerce storefront search tuning.

agentforce-persona-design

8
from PranavNagrecha/AwesomeSalesforceSkills

Use when defining or refining the tone, voice, and behavioral personality of an Agentforce agent: system instruction encoding, brand voice alignment, adaptive response formats, multi-persona strategies. NOT for agent topic design (use agent-topic-design) or testing methodology (use agent-testing-and-evaluation).

sales-process-mapping

8
from PranavNagrecha/AwesomeSalesforceSkills

Eliciting, documenting, and structuring a sales process before it is built in Salesforce: stage sequencing, entry/exit criteria per stage, win/loss analysis requirements, and stage transition rules. Use when a business needs to analyse or formalise its sales methodology before any Salesforce configuration begins. Trigger keywords: sales process design, stage discovery, entry criteria, exit criteria, stage gate, win/loss categorisation, sales methodology, pipeline stages, opportunity stage mapping. NOT for configuring OpportunityStage picklist values, Sales Processes, or record types in Setup (use opportunity-management skill). NOT for Path configuration. NOT for Collaborative Forecasts or quota alignment.

lead-nurture-journey-design

8
from PranavNagrecha/AwesomeSalesforceSkills

Use this skill when designing or configuring lead nurture journeys in MCAE (Account Engagement / Pardot) Engagement Studio — including mapping content to funnel stages, defining behavioral trigger rules, building branching program paths, and establishing MQL handoff criteria. Covers funnel stage mapping (Awareness, Consideration, Decision), Engagement Studio program structure, rule-based branching on score/grade/activity, content inventory prerequisites, and program execution schedule. NOT for Journey Builder implementation in Marketing Cloud Engagement (MCE), NOT for Sales Engagement cadences in Sales Cloud, NOT for Einstein Lead Scoring configuration, NOT for initial MCAE Business Unit setup or CRM connector provisioning.

journey-builder-administration

8
from PranavNagrecha/AwesomeSalesforceSkills

Use when setting up, configuring, or troubleshooting Marketing Cloud Journey Builder — including entry sources, activities, decision splits, wait activities, goals, exit criteria, journey versions, test mode, or journey analytics. Triggers: 'journey builder setup', 'entry source configuration', 'decision split not routing', 'exit criteria not removing contacts', 'goal not tracking conversion', 'journey version publishing', 'journey re-entry settings', 'wait activity date field'. NOT for Flow-based automation, Marketing Cloud Account Engagement (Pardot) engagement programs, or Salesforce core automation rules.

fundraising-process-mapping

8
from PranavNagrecha/AwesomeSalesforceSkills

Use this skill when designing or documenting nonprofit fundraising lifecycle stages, donor pipeline workflows, cultivation-to-stewardship cycles, major gift solicitation sequences, or Salesforce Opportunity sales process configuration for NPSP or Nonprofit Cloud. Trigger keywords: fundraising lifecycle, donor pipeline, cultivation stage, solicitation workflow, major gift process, moves management, NPSP Opportunity stages, stewardship cycle, NPC fundraising stages. NOT for implementation of Engagement Plans, gift entry processing, payment integration, or recurring donation configuration.

xss-and-injection-prevention

8
from PranavNagrecha/AwesomeSalesforceSkills

Use when writing or reviewing Visualforce pages, Apex controllers, or LWC components that output user-supplied data, build dynamic queries, or construct HTTP responses. Triggers: 'XSS in Visualforce', 'SOQL injection vulnerability', 'how to encode output in Apex', 'JSENCODE Visualforce', 'open redirect prevention'. NOT for Apex CRUD/FLS enforcement (use soql-security or apex-crud-and-fls), NOT for Shield encryption (use shield-encryption-key-management), NOT for AppExchange security review process (use secure-coding-review-checklist).

visualforce-security-and-modernization

8
from PranavNagrecha/AwesomeSalesforceSkills

Use when hardening or modernizing legacy Visualforce pages — covers the platform CSRF token model and when disabling it is a security regression, view state encryption guarantees and the 170 KB ceiling, FLS/CRUD enforcement gaps on `<apex:outputField>` and on getters that return sObjects, `<apex:includeScript>` interaction with the org Content Security Policy, hosting LWC inside a VF page via `lightning:container` / `lightning-out`, and the retire-vs-harden-vs-leave-alone decision for an inventory of legacy pages. Triggers: 'should I rewrite this Visualforce page in LWC', 'CSRF protection disabled on Visualforce page is that safe', 'community user sees a field they should not on a Visualforce page', 'view state encryption is that enough for sensitive data', 'how do I host an LWC inside a Visualforce page', 'apex:dynamicComponent and apex:actionFunction safe to keep'. NOT for greenfield Visualforce architecture (use apex/visualforce-fundamentals — controller types, view state pattern selection, PDF rendering); NOT for Visualforce email template authoring (use apex/visualforce-email-templates if/when that skill is authored); NOT for general Apex security review across triggers and async (use apex/soql-security and security/secure-coding-review-checklist).

transaction-security-policies

8
from PranavNagrecha/AwesomeSalesforceSkills

Transaction Security policy creation and configuration: condition builder, enhanced policies, enforcement actions (block, MFA, notification, end session), real-time monitoring mode, and policy troubleshooting. NOT for Event Monitoring log analysis or Shield Event Monitoring setup (use event-monitoring). NOT for Apex testing or debug-log analysis.