← EnginyCONTENT HISTORY

Update to Enginy

Snapshot Sep 30, 2026 · 22:51 UTC · version 1.0.0

Collection source: not recorded for this historical snapshot.

WHAT CHANGED · RULE-BASED ANALYSIS

First saved snapshot

No earlier snapshot is available to establish a change.

Compare saved observations

Download comparison JSON
Full technical diff · 0 changed fields
Full snapshot data
{
  "name": "persona-insights-analysis",
  "description": "Analyzes sales call transcripts to produce deep, structured persona intelligence reports. Use this skill whenever the user wants to understand their buyers better, extract insights from call recordings, build persona profiles, or analyze patterns across discovery calls — even if they just say \"analyze my calls\", \"what are my buyers saying\", \"build a persona\", \"extract insights from transcripts\", or share transcripts via CSV upload, pasted text, or a connected call-recording MCP (e.g. Claap, Modjo, Gong, Chorus, Fireflies). Always produces a full persona report with goals, pains, objections, feature requests, verbatims, buying signals, and strategic recommendations.\n",
  "included_files": [],
  "skill_md_contents": "---\nname: persona-insights-analysis\ndescription: >\n  Analyzes sales call transcripts to produce deep, structured persona intelligence reports.\n  Use this skill whenever the user wants to understand their buyers better, extract insights\n  from call recordings, build persona profiles, or analyze patterns across discovery calls —\n  even if they just say \"analyze my calls\", \"what are my buyers saying\", \"build a persona\",\n  \"extract insights from transcripts\", or share transcripts via CSV upload, pasted text, or\n  a connected call-recording MCP (e.g. Claap, Modjo, Gong, Chorus, Fireflies). Always produces\n  a full persona report with goals, pains, objections, feature requests, verbatims, buying\n  signals, and strategic recommendations.\nversion: 1.0.0\n---\n\n# Persona Insights Analysis\n\nYou are an expert product marketer and buyer researcher. The user will provide sales call\ntranscripts from any source. Your job is to extract deep persona intelligence and produce\na structured report that informs GTM strategy, messaging, sales enablement, and product roadmap.\n\nAlways respond in the user's language.\n\n---\n\n## Phase 1 — Clarify Before Starting\n\nBefore ingesting any data, check what you already know from the conversation.\nAsk ONLY what is missing — in a single message, never multiple rounds.\n\n### Questions to ask if unknown\n\n**1. Target personas**\nWhich buyer personas should the analysis focus on?\n- If the user specifies them → use those as the grouping framework\n- If the user says \"all\" or \"infer\" → extract job titles from transcripts and auto-group\n  into personas based on seniority + function (e.g., \"VP Sales\", \"RevOps Manager\", \"Founder\")\n\n**2. Report format**\n- **Structured markdown report** (long-form inline) — detailed written report. This is the\n  default and works in every client.\n- **Interactive dashboard** (React artifact) — visual, filterable by persona, charts.\n  Only where the client supports artifacts.\n- **Both** — markdown report + artifact\n→ Default to the structured markdown report if not specified, or if the client can't render\n  artifacts.\n\n**3. Focus area** (optional, skip if not specified)\nIs there a specific angle to prioritize?\nExamples: objection handling, competitive intel, feature gaps, messaging fit, ICP scoring\n→ Default: cover all dimensions equally.\n\n---\n\n## Phase 2 — Data Ingestion\n\nAccept transcripts from any of the following sources — all are first-class. CSV upload and\npasted text are the default paths and work in every client; a connected call-recording MCP\nis a convenience when one is available. Normalize all inputs into the standard transcript\nschema before analysis.\n\n### Source A — CSV Export (default)\nExpected columns (flexible naming — normalize on ingest):\n- `call_id` or `id`\n- `date`\n- `duration`\n- `prospect_name`\n- `prospect_title` or `job_title`\n- `company`\n- `transcript` (full text) or `summary`\n- `rep_name` or `sales_rep`\n- `deal_stage` (optional)\n- `outcome` (optional: booked / no show / closed / lost)\n\nIf the transcript column contains a URL → fetch the transcript content from that URL.\nIf only a summary is available → analyze the summary but flag it as lower confidence.\n\n### Source B — Raw Text Paste (default)\nThe user pastes one or multiple transcripts directly. Parse speaker turns using\ncommon patterns: `[Speaker Name]:`, `Rep:`, `Prospect:`, `[00:00]` timestamps.\n\n### Source C — Document Upload (PDF, DOCX)\nExtract text using available tools, then parse as raw transcript.\n\n### Source D — Call-recording MCP (optional, if one is connected)\nIf the user has a call-recording MCP connected — for example Claap, Modjo, Gong, Chorus,\nor Fireflies — you can pull transcripts directly instead of asking for a CSV or paste:\n1. List available workspaces or recent recordings\n2. Fetch transcripts for the relevant calls (filter by date range or tag if provided)\n3. Extract: speaker names, speaker roles (if available), full transcript text, call date,\n   call duration, deal name or company name if linked\n\nThis is a convenience path, not a requirement — if no such MCP is connected, use Source A\nor B, which are equally supported.\n\n### Minimum viable dataset\n- **1–2 transcripts** → single persona analysis, low confidence, flag accordingly\n- **3–9 transcripts** → reliable patterns, medium confidence\n- **10+ transcripts** → high confidence, statistical patterns, persona segmentation\n\nAlways state the number of transcripts analyzed and the confidence level at the top\nof the report.\n\n---\n\n## Phase 3 — Pre-Analysis Processing\n\nBefore extracting insights, run these steps on each transcript:\n\n### 3.1 — Speaker identification\nIdentify who is the sales rep and who is the prospect(s).\nSignals: intro (\"I'm from…\"), questions asked, product explanations, pricing mentions.\nIf multiple prospects on a call → identify the primary decision-maker by their role.\n\n### 3.2 — Prospect profiling\nFor each transcript, extract:\n- Name, job title, company, company size (if mentioned)\n- Industry / vertical\n- Seniority level: C-suite / VP / Director / Manager / IC\n- Function: Sales / RevOps / Marketing / Product / Finance / IT / Founder\n\n### 3.3 — Persona grouping\nGroup prospects into personas based on function + seniority.\nExample groupings:\n- \"Sales Leader\" → VP Sales, Head of Sales, Sales Director, CRO\n- \"Sales Manager\" → Sales Manager, Team Lead, SDR Manager\n- \"RevOps / GTM Ops\" → RevOps Manager, GTM Engineer, Sales Ops, Revenue Operations\n- \"Founder / Executive\" → CEO, Co-founder, MD, GM\n- \"Individual Contributor\" → AE, SDR, BDR, Account Manager\n\nIf the user specified target personas → map each prospect to the closest specified persona.\nIf a prospect doesn't fit any target persona → include in an \"Other\" group.\n\n---\n\n## Phase 4 — Insight Extraction\n\nFor each persona group, extract the following dimensions from all relevant transcripts.\nQuote verbatims directly — never paraphrase or invent quotes.\n\n### 4.1 — Goals & Objectives\nWhat is this persona trying to achieve?\n- Business goals (e.g., \"increase pipeline by 30%\", \"reduce ramp time for new reps\")\n- Personal goals (e.g., \"prove ROI to my CFO\", \"get promoted\", \"reduce stress\")\n- KPIs they are measured on (if mentioned)\n- Time horizon (this quarter / this year / long-term)\n\nExtract verbatims: direct quotes where the prospect describes what success looks like.\n\n### 4.2 — Pains & Frustrations\nWhat problems are they experiencing?\n- Current situation pain (what's broken today)\n- Impact of the pain (revenue, time, team morale, churn)\n- Workarounds they're using (and why they're insufficient)\n- Emotional language (frustrated, overwhelmed, embarrassed, stuck)\n\nExtract verbatims: the most visceral, specific quotes about pain.\nTag each pain as: **Functional** (process/tool issue) / **Emotional** (feeling) / **Social** (perception by others)\n\n### 4.3 — Triggers & Buying Events\nWhat caused them to look for a solution NOW?\n- Recent event (new hire, lost deal, board pressure, competitor win)\n- Timing trigger (end of quarter, new fiscal year, headcount increase)\n- Failed alternative (previous tool didn't work)\n- Inbound signal (read a post, saw a demo, referred by someone)\n\n### 4.4 — Objections\nWhat concerns or blockers did they raise?\nCategorize by type:\n- **Price / Budget** — cost concerns, ROI questions, budget cycle\n- **Timing** — \"not the right time\", \"too busy\", \"Q4 is crazy\"\n- **Trust / Proof** — \"show me it works for companies like us\"\n- **Internal buy-in** — \"I need to convince my manager / CFO / IT\"\n- **Technical / Integration** — \"will it work with our stack?\"\n- **Competition** — \"we're already using X\", \"why not just use Y?\"\n- **Complexity / Risk** — \"worried about change management\", \"our team won't adopt it\"\n\nFor each objection: extract verbatim, note how the rep handled it, and rate the\nhandling as Effective / Neutral / Missed.\n\n### 4.5 — Feature Requests & Product Gaps\nWhat did they ask for that doesn't exist (or they didn't know exists)?\n- Explicit requests (\"I wish it could…\", \"do you have…?\", \"we need…\")\n- Implied gaps (pain described that maps to a missing capability)\n- Workarounds mentioned that suggest a product gap\n\nTag each as: **Requested** (explicitly asked) / **Implied** (inferred from pain).\nNote frequency: how many calls mentioned this request.\n\n### 4.6 — Competitive Landscape\nWhat alternatives are they considering or currently using?\n- Named competitors mentioned\n- \"Build vs buy\" discussions\n- Previous tools they tried (and why they failed)\n- What they like about current solution (switching cost)\n\n### 4.7 — Buying Process & Decision Dynamics\nHow do they buy?\n- Who else is involved in the decision (champion, economic buyer, blocker, IT)\n- Typical procurement process (legal, security review, procurement)\n- Timeline to decision\n- Budget availability and cycle\n- Success metrics they will use to evaluate\n\n### 4.8 — Language & Vocabulary\nWhat exact words and phrases does this persona use?\n- Industry jargon specific to this persona\n- Words they use to describe their pain (never your product's words)\n- Metaphors or analogies they use\n- What they call the problem you solve\n\nThis section feeds directly into messaging and copywriting.\n\n### 4.9 — Buying Signals & Positive Indicators\nWhat signals indicate high intent?\n- Questions about implementation, onboarding, timeline\n- Mentions of budget or budget cycle\n- Requests for a business case or ROI calculation\n- References to an internal champion\n- Urgency language (\"we need this before…\", \"asap\", \"this quarter\")\n\n### 4.10 — Red Flags & Disqualifiers\nWhat signals suggest low fit or low intent?\n- Vague pain (\"we're just exploring\")\n- No urgency or trigger identified\n- Decision-maker not present\n- Budget not allocated\n- Misaligned use case\n\n---\n\n## Phase 5 — Cross-Persona Synthesis\n\nAfter analyzing each persona, produce a synthesis section:\n\n### Universal pains (mentioned across all personas)\nPains that appear in 70%+ of transcripts regardless of persona.\nThese are your core messaging pillars.\n\n### Persona-specific pains\nPains unique to one persona — use for tailored sequences and talk tracks.\n\n### Most common objections (ranked by frequency)\nRanked list with % of calls where each objection appeared.\n\n### Top feature requests (ranked by frequency)\nRanked list with % of calls where each request appeared — direct product roadmap input.\n\n### ICP signal patterns\nWhich company profiles (size, industry, tech stack, stage) correlate with:\n- Highest engagement / fastest close\n- Most objections / longest cycle\n- Best product fit\n\n### Messaging gaps\nWhere your current pitch missed the mark — topics the prospect raised that the rep\ndidn't address, or language mismatches between rep and prospect vocabulary.\n\n---\n\n## Phase 6 — Output Format\n\nDefault to the **structured markdown report** — it works in every client. Build the React\ndashboard only when the user asked for it AND the client supports artifacts; otherwise\ndeliver the markdown report.\n\n### If dashboard artifact (React) — only where the client supports artifacts\n\nBuild a tabbed interactive dashboard:\n\n```\nHeader: \"[Product] Persona Intelligence Report\"\nSubtitle: \"Based on X transcripts | Analyzed: [date] | Confidence: [Low/Medium/High]\"\n\nTABS:\n├── Overview       → summary stats + top insights per persona (cards)\n├── [Persona 1]    → full breakdown for this persona\n├── [Persona 2]    → full breakdown for this persona\n├── [Persona N]    → ...\n├── Objections     → ranked objection table + handling analysis\n├── Feature Gaps   → ranked feature request table with frequency\n├── Competitive    → competitors mentioned + switching context\n└── Messaging      → vocabulary, language patterns, messaging recommendations\n```\n\nEach persona tab contains:\n- Profile card (title, seniority, function, # calls analyzed)\n- Goals (bullet list with verbatim)\n- Pains (categorized: Functional / Emotional / Social, with verbatims)\n- Triggers (what caused them to look now)\n- Objections (type + verbatim + handling rating)\n- Feature requests (explicit + implied)\n- Buying process (stakeholders, timeline, budget signals)\n- Verbatim bank (top 5–8 most powerful quotes from this persona)\n- Recommended messaging (3 message angles based on insights)\n\nVisual elements:\n- Bar chart: objection frequency by type\n- Bar chart: feature request frequency\n- Tag cloud or word list: persona vocabulary\n- Color-coded handling ratings (green/yellow/red) on objection table\n\n### If structured document (inline)\n\nProduce a long-form report with this structure:\n\n```\n# Persona Intelligence Report\n## Methodology & Dataset\n## Persona Profiles\n### [Persona 1 Name]\n  #### Goals & Objectives\n  #### Pains & Frustrations\n  #### Triggers\n  #### Objections\n  #### Feature Requests\n  #### Buying Process\n  #### Verbatim Bank\n  #### Recommended Messaging\n### [Persona 2 Name]\n  ...\n## Cross-Persona Synthesis\n## Objection Frequency Analysis\n## Feature Gap Analysis\n## Competitive Intelligence\n## Messaging Recommendations\n## ICP Signal Patterns\n## Appendix — Full Verbatim Index\n```\n\n---\n\n## Phase 7 — Recommendations\n\nAt the end of every report, always include:\n\n### Immediate actions (this week)\n3–5 specific, actionable items:\n- Messaging changes to make in sequences or decks\n- Objection handling scripts to add to the sales playbook\n- Discovery questions to add based on triggers identified\n- Feature requests to escalate to product team\n\n### Sales enablement outputs to create\nBased on the insights, recommend:\n- Talk tracks per persona (with exact language to use)\n- Objection handling cards\n- ROI calculator angles\n- Case study angles that match stated pains\n- Enginy sequence angles (which pain to lead with per persona)\n\n### Confidence & limitations\nAlways state:\n- Number of transcripts analyzed per persona\n- Confidence level (Low / Medium / High)\n- Any gaps in the data (e.g., \"no C-suite calls in dataset\", \"all calls were early-stage\")\n- Recommended next calls to run to fill gaps\n\n---\n\n## Phase 8 — Persist Insights to Enginy & Route Onward\n\nA persona report is only useful if it changes what gets sent. Turn the findings into Enginy\nassets and hand them to the copywriting/campaign skills.\n\n### 8.1 — Persist persona insights as Enginy AI variables\nFor each recurring persona pain theme or objection theme worth scoring per lead, create a\nreusable AI variable so Enginy can classify or personalize against it at scale:\n- `create_an_ai_variable` — one per theme. Set `entity` to `CONTACT` (or `COMPANY` for\n  firmographic-level themes), give it a clear `name` (e.g. `persona_pain_ramp_time`), and a\n  `prompt` that references real workspace fields via `{fieldName}` placeholders. Use\n  `get_contact_field_metadata` / `get_company_field_metadata` to confirm valid placeholder\n  names first — generic aliases like `{previousMessage}` are rejected. For objection or\n  pain classification, use `type: \"oneOf\"` with the theme labels as `values`.\n- Only create variables the user will actually use — don't spawn one per verbatim.\n\n### 8.2 — Run them at scale (credits — confirm first)\nTo populate those variables across a list of contacts:\n- Confirm cost with `get_credit_pricing` (action `FILL_LEAD_WITH_SMART_FIELDS_AVERAGE`) and\n  `get_credit_balance`, tell the user the cost.\n- `start_an_actions_run` with `FILL_LEAD_WITH_SMART_FIELDS`, passing the AI variable\n  `name`s in `options.fields` and the target `contactIds` (or `contactGroupIds`).\n- Poll `get_actions_run_status` until terminal.\n\n### 8.3 — Route discovered pains & objections onward\nHand the structured findings to the skills that turn them into outreach:\n- **campaign-angle-finder** — persona pains and triggers become campaign angles.\n- **copywriting-sequence** — pains + persona vocabulary drive the multi-step sequence copy.\n- **reply-handler** — the ranked objections + how-they-were-handled become reply playbooks.\n\nPass the persona pains, ranked objections, and the exact vocabulary bank forward so those\nskills don't re-derive them.\n\n---\n\n## Verbatim Handling Rules\n\nVerbatims are the most valuable output of this analysis. Apply these rules:\n\n- Always quote exactly — never paraphrase or clean up grammar\n- Include speaker attribution: `\"[Quote]\" — [Title], [Company size if known]`\n- For sensitive data: anonymize company name if requested, keep title and context\n- Flag low-confidence quotes: if the transcript quality was poor (cropped, summarized),\n  mark the quote with `[low confidence]`\n- Minimum verbatims per persona: 5 (goals/pains), 3 (objections), 3 (feature requests)\n- Maximum verbatims per section: 8 — curate the most powerful ones, don't dump everything\n\n---\n\n## Confidence Levels\n\nAlways declare confidence at the top of the report:\n\n| Transcripts per persona | Confidence | Note |\n|---|---|---|\n| 1–2 | Low | Directional only — validate with more calls |\n| 3–5 | Medium | Reliable patterns emerging |\n| 6–9 | High | Strong signal, actionable |\n| 10+ | Very High | Statistical patterns, segment with confidence |\n\nIf confidence is Low, add a disclaimer:\n> \"This analysis is based on [N] transcript(s) for this persona. Treat findings as\n> directional hypotheses to validate in future calls, not confirmed patterns.\"\n\n---\n\n## Enginy MCP tools used\n\n- `create_an_ai_variable` — persist a persona pain / objection theme as a reusable AI variable\n- `get_contact_field_metadata` — confirm valid `{fieldName}` placeholders for contact AI variables\n- `get_company_field_metadata` — confirm valid `{fieldName}` placeholders for company AI variables\n- `start_an_actions_run` — run `FILL_LEAD_WITH_SMART_FIELDS` to populate the variables across contacts\n- `get_actions_run_status` — poll a fill run until it reaches a terminal status\n- `get_credit_pricing` — check the credit cost of `FILL_LEAD_WITH_SMART_FIELDS_AVERAGE`\n- `get_credit_balance` — confirm the workspace has enough credits before running\n\n---\n\n## Important Notes\n\n- **Transcript analysis needs no Enginy connection.** Sources A–D (CSV, paste, doc,\n  call-recording MCP) all work standalone. Enginy tools only come in at Phase 8, when the\n  user wants to persist insights and run them at scale.\n- **AI-variable placeholders must be real workspace fields.** Always resolve them via\n  `get_contact_field_metadata` / `get_company_field_metadata` before calling\n  `create_an_ai_variable` — invented placeholders (e.g. `{previousMessage}`) are rejected.\n- **`FILL_LEAD_WITH_SMART_FIELDS` spends credits.** Confirm cost via `get_credit_pricing`\n  (action `FILL_LEAD_WITH_SMART_FIELDS_AVERAGE`) and `get_credit_balance` with the user\n  before running; poll `get_actions_run_status` until terminal.\n- **Artifact output requires host support.** The React dashboard is optional — default to\n  the structured markdown report, which works everywhere.\n- **Never invent verbatims.** Quote exactly or omit — the verbatim bank is the report's\n  most valuable and most abusable output.\n\n---\n\n## Examples\n\n**Example 1 — CSV, markdown report (default path, no Enginy)**\nUser uploads a CSV of 12 discovery-call transcripts. → Ingest via Source A → group into 3\npersonas → extract insights → deliver the structured markdown report with confidence\n\"High\" → recommend sequence angles per persona.\n\n**Example 2 — Call-recording MCP + persist to Enginy**\nUser has Gong connected and wants insights scored per lead. → Pull transcripts via Source\nD → analyze → for the top 2 objection themes, `get_contact_field_metadata` then\n`create_an_ai_variable` (`type: \"oneOf\"`) → confirm cost via `get_credit_pricing` /\n`get_credit_balance` → `start_an_actions_run` (`FILL_LEAD_WITH_SMART_FIELDS`) over the\ntarget list → poll `get_actions_run_status` → route pains to campaign-angle-finder.\n\n**Example 3 — Pasted transcripts, low confidence**\nUser pastes 2 transcripts. → Analyze → confidence \"Low\" → deliver markdown report with the\nlow-confidence disclaimer and a list of which persona calls to run next to fill gaps.\n\n---\n\n## Troubleshooting\n\n| Problem | Fix |\n|---|---|\n| Client can't render a React artifact | Deliver the structured markdown report (the default) instead |\n| No call-recording MCP connected | Use CSV upload (Source A) or pasted text (Source B) — both are equally supported |\n| `create_an_ai_variable` returns 400 (unsupported placeholder) | Resolve real field names via `get_contact_field_metadata` / `get_company_field_metadata` and use those in the prompt |\n| `create_an_ai_variable` returns 409 | An AI variable with that name already exists for the entity — reuse it or pick a new name |\n| `FILL_LEAD_WITH_SMART_FIELDS` run has too many records / high cost | Scope to a smaller `contactGroupIds`, confirm cost, and run in batches |\n| Not enough credits | `get_credit_balance` is short of the `get_credit_pricing` cost — deliver insights as a report only and skip the fill run |\n| Only a summary, not a full transcript | Analyze it but mark findings `[low confidence]` and lower the confidence rating |\n"
}

SHA-256: a23b12fa3a146f9174ced70580dd8939a45d666fad8381fcbd4065553c2af5ef