← Aircover.aiCONTENT HISTORY
WHAT CHANGED
Update to Aircover.ai
Snapshot Oct 24, 2026 · 13:48 UTC · version 1.0.0
Collection source: downloaded plugin package.
First saved snapshot
No earlier snapshot is available to establish a change.
Save Aircover.ai and check future changes in Following.
Up to 10 plugins free · no card required.
Compare saved observations
Download comparison JSONFull technical diff · 0 changed fields
Full snapshot data
{
"description": "Generate a pre-call prep Word document for an upcoming meeting, pulling the last 2-4 transcripts from Aircover Production to build deal context, open action items, stakeholder priorities, landmines, and a suggested agenda. Use this whenever someone says \"prep me for my call\", \"pre-call prep\", \"call prep for [company]\", \"get me ready for [meeting]\", or wants a structured briefing doc before a customer meeting.",
"included_files": [
{
"relative_path": "LICENSE",
"size_in_bytes": 1071
},
{
"relative_path": "README.md",
"size_in_bytes": 2879
},
{
"relative_path": "examples/Pre-Call_Prep_ACMECorp_SAMPLE.docx",
"size_in_bytes": 10888
},
{
"relative_path": "examples/prep_data.example.json",
"size_in_bytes": 3019
},
{
"relative_path": "scripts/build_prep_doc.js",
"size_in_bytes": 11348
}
],
"name": "pre-call-prep",
"skill_md_contents": "---\nname: pre-call-prep\ndescription: Generate a pre-call prep Word document for an upcoming meeting, pulling the last 2-4 transcripts from Aircover Production to build deal context, open action items, stakeholder priorities, landmines, and a suggested agenda. Use this whenever someone says \"prep me for my call\", \"pre-call prep\", \"call prep for [company]\", \"get me ready for [meeting]\", or wants a structured briefing doc before a customer meeting.\n---\n\n# Pre-Call Prep\n\nGenerate a polished pre-call prep .docx from Aircover Production data. Reads the last 2-4 transcripts for the deal, synthesizes open action items, stakeholder priorities, landmines, and objectives, and outputs a formatted Word document the rep can scan in five minutes before the call.\n\n## Bundled resources\n- `scripts/build_prep_doc.js` - generates the .docx from a structured JSON file (requires `docx` npm package).\n\nCopy the script into your working directory before running:\n```\ncp \"$SKILL_DIR/scripts/build_prep_doc.js\" .\n```\n(`$SKILL_DIR` is the folder this SKILL.md is in.)\n\n## Requirements\n- The **Aircover Production** connector must be connected. All deal, meeting, and transcript data is read from there.\n- **Code execution / file creation** must be on.\n- Web search is used for company enrichment (org chart context, public facts).\n- The `docx` JavaScript package must be available in the host runtime. If it is unavailable, explain the missing dependency and stop before rendering; do not install packages silently.\n\n## Configuration\n- Environment: Production (api.aircover.ai)\n- App host: app.aircover.ai (for meeting links)\n- Owner scoping: omit `owner` for org-wide, or pass the user's email for \"my meetings.\" If unknown, ask once.\n\n## Run order\n\n### 1. Identify the deal and upcoming meeting\nIf the user names a company: `get_deals(search=\"company\")`. Take the deal_key, prospect_org, deal_id, and nextMeetingDate. If the user names a date or \"my next call\": `list_meetings` over the relevant window, optionally scoped by `owner`.\n\nEcho back the matched deal (company + next meeting date + stage) and confirm before proceeding.\n\n### 2. Find the last 2-4 completed meetings for this deal\nUse the `get_deal(prospect_org, deal_id)` response. It returns a `completed_meetings` array. Take the most recent 2-4 meetings (sorted newest first). If only 1-2 exist, use what is available.\n\nIf `completed_meetings` is missing or empty, fall back to `list_meetings` over a wide window (90 days back from the upcoming meeting) and filter by the deal's prospect_org in the meeting titles/attendees.\n\n### 3. Pull meeting details and transcripts\nFor each completed meeting (most recent first):\n- `get_meeting(meeting_id, include_previous_meeting_notes=true)` for attendees, notes, and prior-meeting notes.\n- `get_meeting_transcript(meeting_id)` for the full transcript.\n\nStart with the 2 most recent. Read both transcripts. If the content is thin (short calls, internal only, limited customer discussion), pull a 3rd or 4th. Stop at 4 max.\n\n### 4. Pull deal and CRM context\n`get_deal(prospect_org, deal_id)` returns a `crm` block. Extract:\n- Opportunity amount, close date, stage (SFDC fields preferred, fall back to HubSpot).\n- Any other CRM fields present (owner, account name).\n\nCall `get_deal` once and reuse across all steps.\n\n### 5. Check for qualification agents (optional enrichment)\n`list_agents(category=\"qualification\")`. If a qualification agent exists, run `get_qualification_results(deal_key, template_id)` to get deal-level qualification gaps. Use these to inform the \"Objectives\" and \"What Matters Most\" sections. If no qualification agent exists, skip silently.\n\n### 6. Web enrichment (conservative)\nIf the company is a real, identifiable entity (not a test account), use web search for:\n- Org chart context (who reports to whom, executive structure).\n- Recent company news relevant to the deal.\n- Contact titles and roles if not clear from transcripts.\n\nUse only confident, exact-entity matches. If uncertain, use a placeholder or omit.\n\n### 7. Synthesize the prep document\nRead all transcripts and meeting notes carefully. Build the following sections by synthesizing across all available data. Write each section into a structured JSON file (`prep_data.json`).\n\n**Header:**\n- `company`: Company name\n- `meeting_date`: Upcoming meeting date and time (PT, formatted like \"Thu Jun 18, 1:30-2:00 PM ET\")\n- `attendees`: Array of {name, title} for expected attendees. Source from the upcoming meeting invite or infer from prior attendees.\n- `call_number`: Integer. Count completed meetings in this deal + 1.\n\n**Deal snapshot:**\n- `deal.amount`: From CRM (e.g. \"$30,000\")\n- `deal.close_date`: From CRM\n- `deal.stage`: From CRM\n\n**Open action items:** Extracted from the most recent 1-2 transcripts. Listen for commitments, promises, and agreed next steps. Classify each as:\n- `action_items.ours`: Things our team committed to do\n- `action_items.theirs`: Things the prospect committed to do\n- `action_items.joint`: Shared commitments or parallel workstreams\n\nFor each item, include who committed and when (if stated). Flag items that appear to have slipped (committed in an earlier call but not referenced as done in a later one).\n\n**Account hierarchy:**\n- `account_hierarchy`: A text block showing the org structure as mentioned across transcripts. Use indentation to show reporting lines. Include names, titles, and roles. Only include people actually mentioned in transcripts or meeting attendees. Do not fabricate org structure. If the hierarchy is unclear, note what is known and what is inferred.\n\n**What matters most today:**\n- `what_matters`: 2-4 sentences. The single most important strategic insight for this call. What is the champion trying to accomplish? What is the biggest risk? What momentum should be protected? This is the \"if you read nothing else\" paragraph.\n\n**Contact priorities (one per key stakeholder):**\n- `contact_priorities`: Array of {name, priorities: [string]}. For each key contact expected on the call, list 3-5 priorities or concerns they have expressed across transcripts. Use their language. Source from what they actually said, not assumed.\n\n**Landmines:**\n- `landmines`: Array of {label, detail}. Risks, sensitivities, or topics to handle carefully. Source from transcript signals: objections raised, concerns expressed, bad past experiences mentioned, political dynamics, competitor mentions, compliance/legal constraints. Each landmine gets a short label and a 1-2 sentence detail with the recommended handling approach.\n\n**Objectives for this call:**\n- `objectives`: Array of strings. 3-5 specific, actionable objectives for the upcoming meeting. Derived from: open action items that need follow-up, qualification gaps to close, logical next steps for this deal stage, anything the champion signaled they want to accomplish.\n\n**Success criteria:**\n- `success_criteria`: Array of strings. 3-5 concrete, checkable outcomes that define a successful call. These are the \"end of call\" checklist items.\n\n### 8. Build the document\n1. Write the synthesized content to `prep_data.json`.\n2. Run: `node build_prep_doc.js --input prep_data.json --out \"Pre-Call_Prep_{Company}_{Date}.docx\"`\n3. Validate the finished file with the host's Word-document validation capability.\n4. If validation fails, fix and rebuild.\n5. Present the finished .docx.\n\n### 9. Briefing notes\nAfter presenting the document, give a 2-3 sentence verbal summary of the most important thing to get right on this call. Mention any action items that appear to have slipped.\n\n## Output format\nThe .docx follows the structure in the reference template:\n- Title line with company, date/time, attendees, call number\n- Deal snapshot table (Amount, Close Date, Stage)\n- Horizontal rule\n- Open Action Items (Ours / Theirs / Joint with checkboxes)\n- Account Hierarchy (indented org chart)\n- What Matters Most Today (narrative paragraph)\n- Per-contact priority sections (bulleted)\n- Landmines (bold label + detail)\n- Objectives for This Call (numbered)\n- Success = End of Call (checkbox list)\n\n## Rules\n- **Join agent_results on title, not key.** Discover field names at runtime. Never fabricate; placeholder instead.\n- **Full 32-char meeting ids** everywhere, especially in URLs. Build meeting links as `https://app.aircover.ai/meetings/{full_id}`.\n- **Filter by prospect_org or deal_key**, never bare deal_id.\n- **No em dashes** anywhere. Use commas, periods, colons, or parentheses.\n- **Lists** for enumerations (stakeholders, action items). Short prose for narrative sections.\n- **Times in PT**, no UTC.\n- **Omit empty sections.** If there are no landmines or no qualification gaps, skip that section rather than writing \"None.\"\n- **Never fabricate.** If a transcript does not contain clear action items, priorities, or org structure, say what is known and leave the rest out. Do not invent stakeholder titles, reporting lines, or commitments.\n- **Echo the prospect's language** in priorities and landmines. Use their words, not generic sales jargon.\n- **Action item slippage.** When a commitment from an earlier call is not mentioned as completed in a later call, flag it with a note like \"(committed [date], not yet confirmed).\"\n- **Distinguish \"no data\" from \"retry.\"** A get_deals cache-miss error means retry once, not that the deal is empty.\n- **Handle \"no transcript\" gracefully.** If a meeting has no transcript, note it and move on. Never error out mid-run.\n- **Scale is small.** This skill processes 2-4 transcripts per run. No batching or CSV-append pattern needed.\n- **Web enrichment is conservative.** Only use confident, exact-entity matches for org chart and contact enrichment. If uncertain, omit.\n"
}SHA-256 of public snapshot: 980d542b55d702e297f6a38c533d633f7c0fd1fa535d0242c884cabf0ec1cbee