Systems Lab

Agent skill

attribution-analyzer

Multi-touch attribution analysis across marketing channels with multiple models

dormantSelf-containedInstructions only1,167 words

Filed under Analytics and reporting.

From ekatasingh1107/b2b-gtm-skills · 99 skills · 2 · pushed 2026-04-11

What it does when it runs

Multi-touch attribution analysis across marketing channels with multiple models

Read from the skill and the 1 file bundled beside it. A skill’s own description is written to be selected by an agent, so it describes the job and not the dependencies.

Keys and connectors you must supply
None found.
Hosts it reaches
No third-party host appears in the skill or its bundled files.
Tool permissions it declares
No allowed-tools in the frontmatter. It only issues instructions, so there is nothing to bound.
Actions present in the files
None. Instructions only.

Ask about attribution-analyzer

Opens your assistant with this page's verified links already in the prompt.

Is this safe to install?ClaudeChatGPT
Adapt it to my stackClaudeChatGPT
What else do I need for it to workClaudeChatGPT
Rather ask a human? Talk to Cheetah
git clone --depth 1 --filter=blob:none --sparse https://github.com/ekatasingh1107/b2b-gtm-skills.git /tmp/b2b-gtm-skills
git -C /tmp/b2b-gtm-skills sparse-checkout set "skills/capabilities/attribution-analyzer"
mkdir -p ~/.claude/skills/attribution-analyzer
cp -R "/tmp/b2b-gtm-skills/skills/capabilities/attribution-analyzer/." ~/.claude/skills/attribution-analyzer/

Picked up without a restart. A project skill of the same name is shadowed by your personal one. For one repository only, swap ~/.claude/skills for .claude/skills. Claude Code docs ↗

The folder is the same in every client that implements the format — 46 of them — so if yours is not above, only the destination changes.

Reproduced in full from ekatasingh1107/b2b-gtm-skills/blob/eae8dd0bb98da1c8e84abd297066a87015dd860f/skills/capabilities/attribution-analyzer/SKILL.md, which is licensed MIT (repository). 1,167 words, 16 headings.

Attribution Analyzer

Performs multi-touch attribution analysis on lead-to-conversion journey data. Applies five attribution models (first-touch, last-touch, linear, time-decay, U-shaped) to the same dataset and compares outputs. Identifies highest-impact channels and touchpoints, calculates channel ROI, and recommends budget allocation shifts. Works with CRM data or manually provided touchpoint logs.

Prerequisites

  • agency.config.json in the project root
  • Touchpoint data: lead journeys with channel, timestamp, and conversion status
  • Optional: channel spend data for ROI calculations
  • Optional: crm-writer integration for pulling journey data from CRM

Phase 0: Read Config

  1. Read agency.config.json from the project root.
  2. Extract channel configuration:
    • outreach.channels[] -- active marketing channels
    • outreach.cadence[] -- touchpoint sequence and timing
  3. Extract tools.crm for CRM data access method.
  4. Extract tools.analytics for any analytics platform integration.
  5. Check for attribution.default_model preference in config.

Phase 1: Gather Touchpoint Data

Collect or retrieve lead journey data. Each journey record needs:

{
  "lead_id": "lead_001",
  "converted": true,
  "conversion_value": 5000,
  "conversion_date": "2024-03-15",
  "touchpoints": [
    {
      "channel": "linkedin_ad",
      "timestamp": "2024-02-01T10:00:00Z",
      "type": "impression",
      "content": "CRO case study carousel"
    },
    {
      "channel": "cold_email",
      "timestamp": "2024-02-05T14:30:00Z",
      "type": "email_open",
      "content": "Touch 1 -- PAS framework"
    },
    {
      "channel": "website",
      "timestamp": "2024-02-06T09:00:00Z",
      "type": "page_visit",
      "content": "Case study page"
    },
    {
      "channel": "cold_email",
      "timestamp": "2024-02-10T11:00:00Z",
      "type": "email_reply",
      "content": "Touch 2 follow-up"
    },
    {
      "channel": "demo_call",
      "timestamp": "2024-02-15T15:00:00Z",
      "type": "meeting",
      "content": "Discovery call"
    }
  ]
}

Data sources:

  • Manual input (user provides CSV or JSON)
  • CRM pull via crm-writer (read from Outreach CRM tab)
  • Analytics export (Google Analytics, Mixpanel)

If data is incomplete, flag gaps and proceed with available data.

Phase 2: Apply Attribution Models

Apply all five models to every converted lead's touchpoint chain:

Model 1: First-Touch Attribution

  • 100% credit to the first touchpoint in the journey
  • Use case: understanding which channels drive awareness and initial discovery
  • Formula: credit = conversion_value assigned entirely to touchpoint[0]

Model 2: Last-Touch Attribution

  • 100% credit to the last touchpoint before conversion
  • Use case: understanding which channels close deals
  • Formula: credit = conversion_value assigned entirely to touchpoint[n-1]

Model 3: Linear Attribution

  • Equal credit distributed across all touchpoints
  • Use case: valuing every interaction in the journey equally
  • Formula: credit_per_touch = conversion_value / touchpoint_count

Model 4: Time-Decay Attribution

  • More credit to touchpoints closer to conversion
  • Use case: understanding recent influence while acknowledging earlier touches
  • Formula: weight = 2^((days_before_conversion * -1) / half_life) where half_life = 7 days
  • Normalize weights so they sum to 1.0

Model 5: U-Shaped (Position-Based) Attribution

  • 40% to first touch, 40% to last touch, 20% split among middle touches
  • Use case: valuing both discovery and closing while acknowledging the nurture
  • Formula:
    • First touch: 0.4 * conversion_value
    • Last touch: 0.4 * conversion_value
    • Middle touches: (0.2 * conversion_value) / middle_touch_count

For each model, aggregate credit by channel across all converted leads.

Phase 3: Compare Model Outputs

Build a comparison matrix:

CHANNEL ATTRIBUTION COMPARISON
===
Channel          | First-Touch | Last-Touch | Linear  | Time-Decay | U-Shaped
-----------------|-------------|------------|---------|------------|--------
LinkedIn Ads     | $12,000     | $3,000     | $7,500  | $5,200     | $8,400
Cold Email       | $8,000      | $15,000    | $10,000 | $11,800    | $9,600
Website/Organic  | $3,000      | $2,000     | $6,500  | $4,000     | $3,200
Demo Calls       | $0          | $18,000    | $6,000  | $12,000    | $7,200
Referrals        | $2,000      | $0         | $3,000  | $1,500     | $1,600

Calculate the consensus score per channel:

  • Average attribution value across all 5 models
  • Rank channels by consensus score
  • Flag channels with high variance (score differs more than 2x between models)

Phase 4: Channel ROI Analysis

If spend data is available, calculate ROI per channel per model:

CHANNEL ROI (by attribution model)
===
Channel          | Spend   | First-Touch ROI | Linear ROI | Time-Decay ROI | Consensus ROI
-----------------|---------|-----------------|------------|----------------|-------------
LinkedIn Ads     | $2,000  | 6.0x            | 3.8x       | 2.6x           | 4.2x
Cold Email       | $500    | 16.0x           | 20.0x      | 23.6x          | 19.2x
Website/Organic  | $1,000  | 3.0x            | 6.5x       | 4.0x           | 3.2x

Identify:

  • Highest ROI channel: best return per dollar regardless of model
  • Most scalable channel: high ROI with room to increase spend
  • Underperforming channel: low ROI across multiple models
  • Discovery channel: high in first-touch but low in last-touch
  • Closing channel: high in last-touch but low in first-touch

Phase 5: Touchpoint Sequence Analysis

Beyond channel-level attribution, analyze touchpoint patterns:

Winning sequences (most common paths among converted leads):

TOP CONVERSION PATHS:
1. LinkedIn Ad -> Cold Email -> Website -> Demo Call (35% of conversions)
2. Cold Email -> Cold Email -> Demo Call (25% of conversions)
3. Referral -> Website -> Demo Call (20% of conversions)

Average touches to conversion:

  • Overall: X touchpoints
  • By channel entry point: which first-touch channel leads to fastest conversion
  • By deal size: do larger deals require more touches

Drop-off points:

  • Where in the sequence do leads most commonly go cold
  • Which channel transitions have the highest drop-off rate

Phase 6: Recommendations

Generate actionable recommendations:

BUDGET RECOMMENDATIONS:
===
1. INCREASE: [Channel] -- [reason, supported by data]
   Current spend: $X -> Recommended: $Y (+Z%)
   Expected impact: [projected additional revenue]

2. DECREASE: [Channel] -- [reason, supported by data]
   Current spend: $X -> Recommended: $Y (-Z%)
   Expected savings: [amount freed up]

3. TEST: [Channel/tactic] -- [hypothesis to validate]
   Budget: $X for [duration]
   Success metric: [what to measure]

SEQUENCE RECOMMENDATIONS:
===
1. Prioritize [channel] as first touch for [segment]
2. Ensure [channel] is always in the path -- linear model shows consistent contribution
3. [Channel] is most effective as the final touch before conversion

Phase 7: Output

Return structured JSON:

{
  "attribution_report": {
    "analysis_date": "2024-03-15",
    "data_summary": {
      "total_leads": 150,
      "converted_leads": 45,
      "total_revenue": "$225,000",
      "total_touchpoints_analyzed": 487,
      "average_touches_to_conversion": 4.2,
      "date_range": "2024-01-01 to 2024-03-15"
    },
    "models": {
      "first_touch": { "channel_scores": {} },
      "last_touch": { "channel_scores": {} },
      "linear": { "channel_scores": {} },
      "time_decay": { "channel_scores": {}, "half_life_days": 7 },
      "u_shaped": { "channel_scores": {} }
    },
    "consensus_ranking": [
      { "channel": "cold_email", "consensus_score": 19200, "consensus_roi": "19.2x" }
    ],
    "top_conversion_paths": [],
    "drop_off_analysis": {},
    "channel_roi": {},
    "recommendations": {
      "increase": [],
      "decrease": [],
      "test": [],
      "sequence_changes": []
    }
  }
}

Example Usage

Trigger phrases:

  • "Run attribution analysis on our pipeline"
  • "Which channel is driving the most revenue?"
  • "Compare first-touch vs last-touch attribution"
  • "Analyze our marketing touchpoints for Q1"
  • "What's the ROI of our cold email vs LinkedIn ads?"
  • "Show me the conversion paths for our best deals"
User: Run attribution analysis on our Q1 pipeline
Assistant: [pulls touchpoint data from CRM, applies 5 models, builds comparison matrix, identifies cold email as highest ROI channel, recommends increasing email volume and testing LinkedIn content changes]
User: Which channel should we invest more in?
Assistant: [runs full attribution, finds LinkedIn drives discovery but email closes deals, recommends maintaining LinkedIn for awareness and doubling email follow-up sequences]

Files bundled with it

These load only when the skill asks for them, so they cost nothing until it runs.

Other skills for the same job

Different authors, same problem. Matched on the words in the skill name, across every library in the catalogue except this one.

Need help setting it up?

This page tells you what attribution-analyzer does and what it needs. Cheetah builds the agent setup it runs inside: data, CRM, sequencing and the guardrails.

Book a call →

The directory stays free. There is nothing gated behind this.