---
name: moltsets-attio-lookalike-account-builder
description: Profile your closed-won Attio accounts with MoltSets firmographics, then find similar companies not yet in Attio to build a net-new target account list.
---

# Attio Lookalike Account Builder

## Triggers

- "Build a lookalike target list based on my closed-won accounts in Attio"
- "Find companies similar to my best customers that aren't in Attio yet"

## What this skill does

Turns your best existing customers into a net-new prospecting list. It profiles a set of closed-won Attio company records with MoltSets firmographics, works out the shared industry, employee range, and revenue range, then searches for similar companies that are not already in Attio. The output is a target account list ready to hand to a rep or load into an outbound sequence.

## Chain

```
Attio closed-won accounts
  to attio/query-records                (companies with a linked closed-won deal, optional filters)
  to MoltSets:
      search_companies                  (domain -> industry, employee_range, revenue_range)
  to derive lookalike profile           (dominant industry, employee range, revenue range across the set)
  to MoltSets:
      search_companies                  (industry + employee_range + revenue_range -> candidate companies)
  to exclude domains already in Attio
  to attio/create-record                (optional: create the new companies as target accounts)
```

## Inputs

- **Seed accounts** - which closed-won accounts to profile (all, a segment, or a named list)
- **Profile weighting** - which firmographic fields matter most for the lookalike match (industry, size, revenue)
- **List size** - how many net-new accounts to return
- **Exclusions** - domains already in Attio, competitors, or a do-not-target list

## `search_companies` filters and best practice

Full request parameter set:

| Purpose | Param | Notes |
|---|---|---|
| Company name | `query` | Name only - domain, industry, size and revenue are keyword fields and aren't covered by it |
| Domain | `domain` | Exact match, beats `query` every time. Full URLs are normalised automatically ("https://www.acme.com/about" → "acme.com") |
| Industry (broad) | `industry` | 23 primary buckets plus long-tail values |
| Industry (niche) | `linkedin_industry` | ~50% filled. LinkedIn's own ~150 labels |
| Industry (code) | `naics_code` | ~50% filled. Any hierarchy level - "23" casts wide, "511210" goes narrow |
| Size | `employee_range` | Exact bands - "1-10" through "5001+" |
| Revenue | `revenue_range` | Exact bands - "Below $500k" through "Over $5B" |
| Location | `country` / `state` | Derived from where the team is based - see the caveat below |
| Paging | `limit` / `offset` | 10 default, 25 max (5 on the Free plan) |

**Filters are free precision.** Execution cost is driven by the free-text `query`, not the filters attached to it: `query` + any number of filters costs the same as `query` alone, and a filters-only call runs **~40x cheaper**. Most account lists are pure firmographics and need no free text at all:

```json
{ "industry": "Computer Software", "employee_range": "51-200", "revenue_range": "$10M - $20M" }
```

Reach for `query` only when matching a company by **name**. Billing is unchanged either way - tokens are charged per record returned.

**Use `domain` when you have one.** It's an exact match and always beats a free-text `query`. No need to strip the protocol or path first.

**Industry vocabularies overlap.** The `industry` enum carries the broad buckets *and* long-tail values - `"Computer Software"`, `"Insurance"`, `"Banks"`, `"Pharmaceuticals and Biotechnology"`, `"Aerospace and Defense"`, `"Electronics"`, `"Mining and Metals"`. A software company may be filed under `"Information Technology"` **or** `"Computer Software"`, so if a search comes back thinner than expected, try the neighbouring value. Shortening a `naics_code` is the cleanest way to widen.

**Location caveat.** `country` and `state` filter the company's location, but that location is derived from where the company's team is based. Accurate for the small companies that dominate the index - but **large multinationals are attributed to a single one of their offices**, which may not be the headquarters country. When targeting large or international accounts, combine location with other filters rather than relying on it alone. Exact stored values with standard capitalisation - `"Texas"`, not `"TX"`.

**Both range filters are heavily skewed.** `"1-10"` is the most common `employee_range` by a wide margin, and `"5001+"` returns very little. `"$500k - $1M"` is the most common `revenue_range`. Prefer the numeric bands over legacy `"Small"` / `"Mid-Market"` / `"Enterprise"` / `"Unknown"`, and always use `"$500k - $1M"` rather than the legacy `"$1 - $1M"` - same range, far fewer records.

**Skip the company pass when firmographics are the only reason for it.** `search_people` filters on `employee_range` and `revenue_range` directly, applied to the person's current employer, so one call often replaces two.

**Read `results.total` before paginating.** Results are `_score`-ranked, so the first page is the strongest; 25 max per call, increment `offset` by `limit`.

## How it works

1. Pulls the closed-won company records (or a filtered subset) from Attio
2. Runs `search_companies` by domain on each to get industry, employee range, and revenue range
3. Aggregates the results into a lookalike profile: the dominant industry or industries, and the typical employee and revenue range across the seed set. Capture `linkedin_industry` and `naics_code` off the seed records too - they give a much tighter lookalike than the 23 broad `industry` buckets when the seed set clusters in a niche
4. Runs `search_companies` again using that profile as the filter - filters only, no `query`, which is both more precise and ~40x cheaper to execute. Match the profile's granularity: broad `industry` for a wide net, `linkedin_industry` or a 4-6 digit `naics_code` when the seed set is tightly clustered (shorten the NAICS code to widen)
5. Excludes any domain that already exists in Attio, and any domain on your exclusion list
6. Returns the ranked candidate list, and optionally creates the new companies in Attio as target accounts

## Output

| Company | Domain | Industry | Employees | Revenue | Match Reason | In Attio Already |
| --- | --- | --- | --- | --- | --- | --- |

```
Seed accounts profiled:      X
Dominant industry:           X
Employee range:              X
Revenue range:                X
Candidates found:            X
Net-new (not in Attio):      X
MoltSets tokens used:        X
```

## Tips

- Requires the Attio MCP (mcp.attio.com) and the MoltSets MCP connected in the same client
- If your closed-won accounts span multiple distinct industries, run the lookalike search per cluster rather than averaging across all of them
- Use `domain` exclusion against your full Attio company list, not just the seed set, so you don't resurface existing customers or open deals
- Pair this with the buying committee expansion skill once a lookalike account is created, to find the right people inside it
- Creating companies directly in the target object works the same whether it's the standard Companies object or a custom accounts object
