Back to the Library
Library · Guide

ITP Lead Finder, the workflow

Three short steps. Run them in an approved AI tool with web access (and, for the logging step, one that can reach your CRM or Notion). Fill the [BRACKETS] once. Do not delete the guardrail lines. You review every prospect before reaching out.

Everything here runs on public prospect information, not client data. If a prospect is also a current client, handle their information under the normal §7216 rules.


Step 1, the ITP worksheet

You do not need perfect answers. Jot a phrase for each, the agent sharpens it in Step 2. Skip any that do not apply.

  1. Who are they? Business or individual? Entity type (LLC, S-corp, sole prop) or role (founder, equity employee, retiree)?
  2. How big? Revenue band for a business, or income / equity situation for a person.
  3. What stage or moment? Just started, just incorporated, scaling fast, just had a liquidity event, about to sell, recently moved.
  4. Where? State, metro, or city.
  5. The trigger. The thing that makes them need you now (outgrew their bookkeeping, wrong entity for their income, surprise K-1, RSUs vesting, first year with employees).
  6. What you would do for them. The service that fits (entity election, bookkeeping cleanup, quarterly planning, equity-comp planning).
  7. Who is NOT a fit. Deal-breakers (too big, wrong industry, outside your state, price-shoppers).

Step 2, build the ITP and source the leads

Prompt A, sharpen the profile

I am a [YOUR ROLE, e.g. CPA / EA / bookkeeper] who wants more clients like this:
[PASTE YOUR WORKSHEET ANSWERS]

Turn this into a sharp Ideal Taxpayer Profile (ITP). Give me:
- a one-paragraph description of this ideal client,
- the 3 to 5 PUBLIC signals that would tell me a given prospect fits (and where
  each signal is usually visible),
- where these prospects tend to be findable publicly,
- a short "not a fit" list.

Guardrail: do not invent facts or sources. This is a profile, not a list yet.

Prompt B, source real matching prospects

Using this ITP:
[PASTE THE PROFILE FROM PROMPT A]

Search PUBLIC sources and find [HOW MANY, e.g. 15] real organizations or, for an
individual profile, real companies/communities where these people are, that match.
For each result give me a row:

  Name | Why it fits the ITP | The public signal (one specific, recent fact) |
  Source link (so I can verify) | Public way to reach them

Rules:
- Public sources only: directories, maps, public registries, company sites, news,
  public filings. No private or data-broker contact info.
- For INDIVIDUAL profiles, return the company or community and a public connection
  path (LinkedIn, an event, a referral angle). Do not return personal emails.
- If you cannot verify a real match or a real source, return fewer results. Do NOT
  fabricate names, signals, or links to hit the number.

Guardrail: every row must trace to a real public source I can open. I verify each
one before it enters my pipeline, and I am the one who reaches out.

Sanity-check before logging

Open three source links at random. If they do not back up the signal, send the list back with: "Rows X, Y, Z did not check out against their sources. Re-verify or drop them." The agent earns your trust one verified batch at a time.


Step 3, log them to your CRM

The agent writes each verified prospect straight into your pipeline through an MCP connection (the secure bridge that lets your AI tool read and write your CRM). You connect it once, then the logging prompt runs every time. If MCP setup is new to you, this is the one part worth asking a tech-comfortable colleague to help with the first time.

Log into the pipeline you already use, and dedupe first. If you already track leads somewhere, point the agent at that list instead of creating a second one, so your inbound and outbound leads live together. Before it writes anything, have it check for matches and skip anyone who is already a client or lead, plus competitors and your own firm, and report what it skipped. Mark these new ones as outbound so you can tell them apart from inbound inquiries.

Every CRM below uses the same nine fields. Set this up once and the mapping is identical everywhere:

Field Holds
Name Org or company name
Type Business / Individual
Fit One line on why they match the ITP
Signal The public signal found
Source Link to verify
Contact path Website form, public listing, or LinkedIn
ITP Which profile they came from (if you run several)
Status To review / Reaching out / Replied / Client / Pass
Sourced Date found

One compliance note for all three: keep prospects in their own list or pipeline, separate from clients, and on public data only. Do not mark sourced prospects as opted-in marketing contacts, they did not opt in. Email consent and CAN-SPAM apply when you actually reach out, not when you log.

Option A, Notion (start here)

  1. Create a Notion database named Leads with the nine fields above (Name = Title; Type, ITP, Status = Select; Source = URL; Sourced = Date; the rest = Text).
  2. Connect the Notion MCP in your AI tool (Notion's official server). Grant it access to the Leads database only.
  3. Run the logging prompt:
Add each verified prospect below to my Notion "Leads" database. Map: Name->Name,
Type->Type, why-it-fits->Fit, signal->Signal, source link->Source,
reach path->Contact path, profile->ITP. Set Status to "To review" and Sourced to
today.
[PASTE THE VERIFIED ROWS]

Guardrail: only add rows I marked verified. Do not edit or overwrite existing leads.

Option B, HubSpot

  1. A HubSpot admin connects the official remote MCP server (https://mcp.hubspot.com) by creating an MCP auth app with contact read + write scopes, then authorizing it. Other users in the account can connect after the admin does.
  2. Add the HubSpot MCP to your AI tool using that app's credentials.
  3. Map each prospect to a Contact (or a Company, for business prospects). Put Fit, Signal, Source, and Contact path into a contact note or custom properties.
Create each verified prospect below as a HubSpot contact (use the company name for
business prospects). Put the fit reason, the public signal, the source link, and the
reach path in the contact note. Add them to the list "ITP - To review". Do NOT set
any marketing or subscription status.
[PASTE THE VERIFIED ROWS]

Guardrail: only add rows I marked verified. No marketing opt-in; these are cold
prospects I will review.

Option C, Airtable

  1. Create an Airtable base with a Leads table using the nine fields above.
  2. Create a personal access token scoped to that base with data.records:write and schema.bases:read, then add the Airtable MCP to your AI tool with that token.
  3. Run the logging prompt:
Add each verified prospect below as a record in my Airtable "Leads" table, mapping
the nine fields. Set Status to "To review" and Sourced to today.
[PASTE THE VERIFIED ROWS]

Guardrail: only add rows I marked verified. Do not modify existing records.

Using a practice-management CRM (TaxDome, Canopy, Karbon, Keap)?

These do not expose an agent-writable MCP connection yet, so the agent cannot log directly. Have it output the verified rows as a CSV with the nine columns, then import that into your CRM's contacts or leads. Same data, one manual step.


After the agent runs

  1. Open Leads, filter to Status = To review.
  2. Keep the ones worth your time, set the rest to Pass.
  3. Reach out in your own voice (the cold-email formula: one signal + one insight + one proof point + one low-friction ask). Add your CAN-SPAM footer to any email.
  4. Move each lead through the statuses as it progresses.

The agent found and logged. You judged and reached out. That is the whole point.

The AI Lab for Accountants · An educational resource, not legal or tax advice.