portfolio-deal-linker

v2026.09.24

Auto-update GTME portfolio when HubSpot deals close. Links deal outcomes (won/lost, revenue, cycle time) to the skills, automations, and outreach that influenced them — building VP BD transition evidence automatically. Runs daily at 7am CST or on-demand. Use when: 'portfolio update', 'deal closed', 'link deal to portfolio', 'gtme evidence', 'what did I influence', 'career evidence', 'transition tracker'.

GitHub
Install command
npx skhub add scientiacapital/portfolio-deal-linker
Markdown
SKILL.md
<objective> Automatically connect closed HubSpot deals to the skills, automations, and outreach actions that contributed to them. Builds a living GTME portfolio that proves Tim's operational leverage — time saved, revenue influenced, cost-per-deal, and automation ROI. This is career-critical evidence for the VP Business Development transition. </objective>

<quick_start> Daily automated run (7am CST): Checks for deals closed since last run → attributes to skills/actions → updates portfolio

On-demand: "portfolio update" → runs full attribution scan now "what did I influence this month" → generates monthly impact report "gtme evidence" → formats portfolio for interview/review context

Trigger phrases:

  • "portfolio update" / "deal closed"
  • "link deal to portfolio" / "gtme evidence"
  • "what did I influence" / "career evidence"
  • "transition tracker" / "show my impact" </quick_start>

<success_criteria>

  • Every closed-won deal attributed to originating skill/workflow within 24 hours
  • Revenue influenced tracked with clear attribution chain
  • Time-saved metrics aggregated weekly (skills that eliminated manual work)
  • Portfolio evidence formatted for VP BD transition narrative
  • Monthly executive summary auto-generated
  • Zero missed attributions on deals Tim touched </success_criteria>
<workflow>

Architecture

SCHEDULED (7am CST)           ATTRIBUTION                 PORTFOLIO UPDATE
──────────────────────────────────────────────────────────────────────────────
HubSpot: recently closed  →  Match deal to skill that  →  Update portfolio.jsonl
deals (won + lost)        →  originated/influenced it  →  Update weekly digest
                          →  Calculate metrics         →  Update GTME narrative
                          →  Compare to manual baseline →  Career evidence file

Stage 1: Detect Newly Closed Deals

Use hubspot_search_deals with filters:

  • dealstage IN ('closedwon', 'closedlost')
  • closedate >= last run timestamp (stored in ~/.claude/portfolio/last-run.json)
  • Exclude channel deals (is_channel = true) and owned by AE IDs '82625923', '423155215', '190030668' (Lex Evans, Ron Epstein, Phillip Sandler)

For each deal, pull:

FieldPurpose
dealnameIdentification
amountRevenue attribution
closedateCycle time calculation
createdatePipeline velocity
dealstageWon vs lost
hubspot_owner_idTim's deals only
Associated contactsWho was engaged
Associated companyCompany match
Deal notes/activityAttribution signals

Stage 2: Skill Attribution Engine

For each closed deal, determine which skills/automations contributed:

Attribution Signals

SignalSkill AttributedHow to Detect
Contact was loaded via Apollo sequenceprospect-research-to-cadenceApollo emailer_campaigns_search — check if contact was in a sequence
MEDDIC call prep was generatedmeddic-call-prep-autoCheck if company appears in call prep logs
Deal was flagged by momentum analyzerdeal-momentum-analyzerCheck if deal appeared in RED/YELLOW actions
Contact enriched via Apolloprospect-research-to-cadenceApollo contact create date vs deal create date
Outreach email was draftedprospect-research-to-cadenceGmail draft history for contact email
Activity history existsmeddic-call-prep-autoask_agent — query activity timeline for company
Manual prospecting (no automation match)Tim (manual)Fallback — still counts for portfolio

Attribution Model

PRIMARY attribution (100% credit):
  → Skill that ORIGINATED the deal (first touch)

ASSIST attribution (shared credit):
  → Skills that INFLUENCED the deal (middle touches)
  → E.g., prospect-research found the contact, meddic-call-prep prepped the demo,
    deal-momentum flagged it when stalling

RECOVERY attribution:
  → If deal-momentum-analyzer flagged deal as RED/YELLOW
    AND deal subsequently closed-won
  → This is "recovered revenue" — strongest GTME evidence

Stage 3: Calculate Portfolio Metrics

Per-Deal Metrics

MetricFormulaWhy It Matters
Cycle timeclosedate - createdatePipeline velocity
RevenueamountDirect impact
Cost to closeEstimated from skill usage costsEfficiency
Automation touchesCount of skill attributionsLeverage
Manual vs automated% of deal lifecycle automatedTransition evidence

Aggregate Metrics (Rolling 30 days)

MetricFormulaTarget
Total revenue influencedSum of attributed closed-won dealsTrack monthly
Deals recoveredDeals flagged RED/YELLOW → closed-won5-10% of pipeline
Time saved (hours/month)Sum of skill time-saved estimates × usage count30+ hrs/mo
Cost per dealTotal automation cost / deals closed< $5/deal
Automation coverageDeals with ≥1 skill touch / total deals> 80%
Win rate liftAutomated deal win rate vs manual baselineTrack delta

GTME Positioning Metrics

MetricNarrativeVP BD Relevance
Revenue influenced/month"I influenced $X in pipeline through automated workflows"Revenue ownership
Hours saved/month"Built systems that save 30+ hours/month of manual work"Operational leverage
Cost per lead"Reduced cost-per-qualified-lead from $X to $Y"Unit economics
Recovery rate"Recovered $18K/month in stalled pipeline through automated detection"Pipeline management
Automation coverage"80%+ of deals now touch at least one automated workflow"Systems thinking

Stage 4: Update Portfolio Files

4a. Append to portfolio.jsonl

{
  "date": "2026-03-15",
  "deal_id": "hs_12345",
  "deal_name": "Baylor University",
  "amount": 45000,
  "outcome": "closedwon",
  "cycle_days": 32,
  "primary_skill": "prospect-research-to-cadence",
  "assist_skills": ["meddic-call-prep-auto", "deal-momentum-analyzer"],
  "recovered": true,
  "recovery_skill": "deal-momentum-analyzer",
  "automation_touches": 5,
  "manual_touches": 3,
  "automation_pct": 0.625
}

4b. Update Weekly Digest

Append deal to the existing portfolio-artifact weekly digest with attribution details.

4c. Generate Monthly GTME Evidence Report

╔══════════════════════════════════════════════════════════════╗
║  GTME PORTFOLIO — [Month Year]                               ║
║  Tim Kipper | BDR → VP Business Development                  ║
╠══════════════════════════════════════════════════════════════╣

HEADLINE METRICS:
┌─────────────────────────────────────────────────────────────┐
│ Revenue Influenced:  $[XXX,XXX]  (XX deals)                 │
│ Pipeline Recovered:  $[XX,XXX]   (X deals saved from stall) │
│ Time Saved:          [XX] hours  ([X] min/day × [XX] days)  │
│ Automation Coverage: [XX]%       (deals with skill touch)    │
│ Cost per Deal:       $[X.XX]     (automation cost / deals)   │
└─────────────────────────────────────────────────────────────┘

SKILL ATTRIBUTION BREAKDOWN:
| Skill | Deals Influenced | Revenue | Time Saved |
|-------|-----------------|---------|------------|
| prospect-research-to-cadence | XX | $XX,XXX | XX hrs |
| meddic-call-prep-auto | XX | $XX,XXX | XX hrs |
| deal-momentum-analyzer | XX (recovered) | $XX,XXX | XX hrs |

TOP DEALS (with attribution chain):
1. [Deal] — $XX,XXX | Won
   Chain: Apollo enrich → sequence load → call prep → demo → close
   Skills: PRC → MCA → DMA

VP BD TRANSITION NARRATIVE:
"In [Month], I influenced $[X] in revenue through automated GTM systems
I designed and built. These systems saved [X] hours of manual work,
recovered $[X] in stalled pipeline, and achieved [X]% automation
coverage across the deal lifecycle. This demonstrates [operational
leverage / systems thinking / revenue ownership] at VP BD scale."

╚══════════════════════════════════════════════════════════════╝

Stage 4: Comp Plan Attainment Tracker

Calculate daily progress against Tim's 2026 BDR comp plan targets.

Current Month Targets

ALWAYS resolve targets for the CURRENT month from the Monthly Target Lookup table below (never hardcode a month). Since June 2026 Tim is on full quota: 24 deals/mo, $714K pipeline/mo; H2 revenue targets rise monthly. Stretch = 126%+ of target (1.5x accelerator). Daily run rate = monthly target / business days in month.

Calculation Logic

  1. Query HubSpot for deals created this month where Tim is owner (87486452) or collaborator
  2. Sum amount for pipeline generated
  3. Sum amount where dealstage = 'closedwon' for revenue
  4. Calculate:
    • Pipeline attainment % = total pipeline / monthly target × 100
    • Revenue attainment % = total closed-won / monthly target × 100
    • Deal count attainment % = deals created / monthly target × 100
    • Accelerator zone: <100% = base, 100-110% = 1.0x, 111-125% = 1.25x, 126%+ = 1.5x
    • Days remaining = business days left in month
    • Required daily run rate = (target - achieved) / days remaining

Output Format (append to daily portfolio report)

📊 COMP PLAN TRACKER — {Month YYYY} ({Phase from lookup table})
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Pipeline:  $XXX,XXX / ${month pipeline target}  (XX% — Zone: BASE/1.0x/1.25x/1.5x)
Revenue:   $XX,XXX / ${month revenue target}   (XX% — Zone: BASE/1.0x/1.25x/1.5x)
Deals:     X / {month deal target}             (XX%)
Days left: X business days
Gap to stretch: $XXX,XXX pipeline | $XX,XXX revenue | X deals
Daily run rate needed: $X,XXX pipeline | $X,XXX revenue

Monthly Target Lookup (for future months)

MonthDealsPipelineRevenuePhase
March12$357K$125KRamp 50%
April16$464K$163KRamp 65%
May20$607K$212KRamp 85%
June24$714K$250KFull (H1)
July24$714K$475KFull (H2)
August24$714K$475KFull (H2)
September24$714K$500KFull (H2)
October24$714K$525KFull (H2)
November24$714K$550KFull (H2)
December24$714K$600KFull (H2)

Dynamically select targets based on current month.

</workflow>

<scheduled_automation>

Daily 7am CST Run

Schedule: Daily at 7:00 AM CST (13:00 UTC), weekdays Task name: "portfolio-deal-linker-daily" Flow:

  1. Check HubSpot for deals closed since last run
  2. Attribute each deal to originating skills
  3. Calculate per-deal and aggregate metrics
  4. Append to portfolio.jsonl
  5. Update weekly digest if new closed-wons
  6. Generate monthly report if month-end

Integration with EOD: When Tim says "EOD", include portfolio attribution summary for any deals closed today. </scheduled_automation>

<dependencies> ## Required MCP Tools - **Epiphan CRM MCP:** hubspot_search_deals, hubspot_get_deal, hubspot_search_contacts, hubspot_get_company, ask_agent (activity history for attribution) - **Apollo MCP:** apollo_emailer_campaigns_search (check sequence enrollment history) - **Gmail MCP:** search_threads (check draft/sent history for attribution)

Sibling Skills Referenced

  • portfolio-artifact-skill — Base metrics capture, weekly digest format, executive summary template
  • deal-momentum-analyzer-skill — Recovery attribution (deals flagged RED/YELLOW that closed-won)
  • prospect-research-to-cadence-skill — Origination attribution (Apollo sequence enrollment)
  • meddic-call-prep-auto-skill — Influence attribution (call prep generated for deal)
  • hubspot-revops-skill — HubSpot query patterns, deal stage definitions

Emit Outcome Sidecar

As the final step, write to ~/.claude/skill-analytics/last-outcome-portfolio-deal-linker.json:

{"ts":"[UTC ISO8601]","skill":"portfolio-deal-linker","version":"1.0.0","variant":"default",
 "status":"[success|partial|error]","runtime_ms":[estimated ms from start],
 "metrics":{"deals_linked":[n],"skills_attributed":[n],"revenue_tracked_usd":[n]},
 "error":null,"session_id":"[YYYY-MM-DD]"}

Use status "partial" if some stages failed but results were produced. Use "error" only if no output was generated. </dependencies>

Discovery
Tags

No tags published for this skill.

Version
Latest version metadata

Version

v2026.09.24

Published

Sep 24, 2026

Category

Uncategorized

License

Not specified

Source path

active/portfolio-deal-linker-skill

Default branch

main

Latest commit

9e03af3

Tree SHA

5b28287