← All agents
Revenue

attribution-reconciliation-agent

Every platform claims the same deal. This agent keeps the one table that says what actually closed.

Continuously reconciles what ad platforms claim against what your CRM closed, with guards that keep the table honest.

What it does

Ad platforms grade their own homework. A platform will claim dozens of conversions on a month of spend while the CRM shows three closed deals from that channel, and both numbers are technically true: they measure different things, on different windows, with different incentives.

This agent maintains the reconciliation continuously. It syncs CRM contacts that carry a paid source, matches their campaign trail against your actual campaigns, and accumulates the links at company level: touches, first touch, last touch. On top of that store it computes the table that settles arguments: per campaign, what was spent, what the platform claimed, what the CRM shows as deals and closed-won revenue.

The honesty guards are the product. When link coverage is too thin to support a claim, the surface says "awaiting data" instead of inventing attribution. And the model states its own limits on its face: first-touch, matched on campaign trails, so nobody mistakes the table for more than it is.

Before and after

Before

  • Every platform dashboard claims credit for the same deals

  • Attribution debates run on screenshots and conviction

  • Budget moves toward whichever platform overclaims best

  • Nobody can say what a channel actually closed

With the agent

  • One table: spend, platform claims, CRM deals, closed-won, per campaign

  • Claims and reality reconciled continuously, not once a quarter

  • Thin data renders as "awaiting data", never as a made-up number

  • The model's limits are printed on the report itself

How it works

The reconciliation method is public in our open-source skill; the agent runs the always-on version. Six gates.

  1. 1

    Sync contacts that carry a paid source

    CRM contacts whose first source is a paid channel are pulled on a schedule, along with the campaign value their tracking captured.

  2. 2

    Match the campaign trail, without fuzzy guessing

    The captured campaign value is matched against your real campaign catalog by identifier and name. Contacts that cannot be matched stay unattributed rather than being forced into the nearest bucket.

  3. 3

    Accumulate links at company level

    Matches become durable attribution links keyed on company and campaign, with first touch, last touch and touch counts. B2B deals close at company level, so the ledger lives there too.

  4. 4

    Compute claimed versus closed

    Per campaign: spend, what the platform claimed, how many CRM deals and how much closed-won revenue the link ledger actually supports.

  5. 5

    Refuse to overclaim

    When the ledger has no coverage for a campaign or period, the report says "awaiting data". A blank cell is honest; a fabricated one poisons every future report.

  6. 6

    State the model's limits

    First-touch attribution, matched on campaign trails. The report says so where the reader can see it, because a number without its method is a rumor.

The recipe

The open-source method inside this agent:

Terminal
git clone https://github.com/PierreNicolasMarquez/pierce-skills.git
cp -r pierce-skills/skills/reconcile-attribution ~/.claude/skills/

The reconciliation method is published as a free Claude Code skill: run it on your own exports whenever you want the table once. Then in Claude Code: "run the reconcile-attribution skill on my Meta and LinkedIn exports". The managed agent is the always-on version with the CRM sync underneath.

Tools in this agent

HubSpot

The CRM side of the truth: contacts, sources, deals, closed-won. Any CRM with stage history fits.

Visit →

Meta Ads

One of the platforms whose claims get checked against the CRM.

Visit →

Slack

Where the reconciled numbers reach the team as part of the weekly report.

Visit →

Some tool links are referral links. They never change what the tool costs you.

Built and run in production by Pierre Nicolas. This page describes a workflow that actually runs, not a concept. Last reviewed 2026-07-11.

The detection and reporting methods behind these agents are published as open-source skills and on GitHub.

Goes deeper

Related agents

Pierce runs this for you

Every agent on these pages runs on real accounts, in Slack, with every write approved by you. Bring your stack; Pierce brings the discipline.

Pricing lives on the main page.