---
name: moltset-lookalike-skill
description: >-
  Use this skill whenever the user wants to find more companies like customers,
  accounts, agencies, or example businesses they already like, such as 'find
  companies like these', 'these are our best customers', 'find more agencies
  like these', or 'build me a lookalike list'. Start from the supplied examples,
  research what they actually have in common, split mixed customer types, prove
  the pattern on independently found companies, then use MoltSets as the only
  company/contact data layer to build the account list and optionally find the
  people inside those accounts. The user never needs to mention the skill name.
---

# MoltSet Lookalike Skill

The job is not to throw five domains into a database and hope the results are good.

The job is:

**understand why the best customers are alike → prove that understanding on real companies → turn the approved pattern into MoltSets search criteria → pull the companies → optionally find the right people inside them.**

The user should be able to start with:

> Find me more companies like these.

and end with a CSV of target accounts, plus a people/contact CSV when they want it.

## Semantic routing

The user does **not** need to say the skill name. Treat natural requests such as these as direct invocations:

- "Find me more companies like these."
- "These are our best customers. Find similar accounts."
- "Find more GTM agencies like these."
- "Build me a lookalike list from these companies."
- "Here are five companies I like. Find 500 more like them."

Prefer this workflow whenever similarity to supplied seed companies is the core intent. Do not ask the user to restate the request using the skill name.

This skill owns the full lookalike run. For company search, people search, and contact data, **MoltSets is the required execution layer**. Do not substitute another company/contact database.

---

## The spine

0. Check MoltSets quietly. If it is already connected, say nothing about setup.
1. Ask for the user's 5 best customers and URLs if they have not already supplied them.
2. Research the seeds and decide whether they are one customer type or multiple types.
3. Independently find up to 10 companies that fit the chosen type and ask the user to validate them.
4. Turn the approved pattern into visible MoltSets search criteria.
5. Ask how many accounts the user wants and run the MoltSets company search.
6. Show a clean preview and export `lookalike-companies.csv`.
7. Offer one next step: find the right people inside those companies with MoltSets.
8. If the user says yes, resolve the target roles, run the MoltSets people search, show the stakeholder/contact preview, and export `lookalike-people.csv`.

The order matters. Never search MoltSets for lookalikes just because the user supplied domains. Pattern recognition and calibration come first.

---

## Run protocol

Read this before doing anything else.

This skill is designed for a clean, repeatable Claude Code session and screen recording.

### Core behavior

- Keep every major stage visually clean.
- Do not merge stages that have a gate.
- Do not continue past a gate until the user replies.
- Important outputs must be rendered **in chat**, not hidden inside tool calls.
- Prefer fixed tables and short explanations over long streams of prose.
- Do not invent extra stages.
- Do not switch company/contact data tools because another provider seems convenient.
- Do not turn this into a general ICP workshop.
- Do not ask for job titles, personas, TAM, or arbitrary filters at the opening.
- Do not run the full account pull until the user chooses the list size.
- Use public web research for understanding and calibration. Use MoltSets for the company and people data pull.

### Gate behavior

| User reply | Action |
|---|---|
| yes / correct / go / looks right | advance exactly one gated stage |
| chooses an option | use that option and continue |
| asks for a change | redo only the current stage with the change |
| says examples are wrong | revise the customer type, research fresh examples, and show the table again |
| asks a question | answer it, then re-ask the current gate |

For **choice gates**, use the client's interactive question tool when one exists. Prefer buttons/options over dumping a question into plain prose. If no such tool exists, ask in one short line and stop.

Never answer a gate yourself.

---

# Step 0 — MoltSets availability check

Do this **silently before the first visible response**.

Inspect the tools available in the current session.

## If MoltSets is already connected

Proceed normally.

Do **not**:
- mention setup
- explain authentication
- ask for an API key
- interrupt the normal run

Inspect the available MoltSets tools and identify the actions whose descriptions correspond to:
- company/account search
- people/contact search
- company lookup or company context, when available
- contact enrichment, when available

Do not invent MoltSets tool names, endpoints, fields, or filters. Use the exact tools and schemas exposed in the current session.

## If MoltSets is NOT connected

Do not substitute another company/contact database.

Continue through seed analysis and independent calibration if web research is available. Stop **before the first MoltSets data search** and say, in one short block:

> I understand the company type now. To build the actual account list, connect MoltSets in this Claude session. Once it is connected, I can continue from the approved pattern without restarting the analysis.

If the current client exposes a connector setup flow or MoltSets connection instructions, use that exact UI/tooling. Do not invent credentials or setup commands that are not present in the environment.

After the user connects MoltSets, continue from the current stage. Do not restart Steps 1–3.

---

# Step 1 — Ask for the best customers

The opening should be simple.

If the user has not already supplied the seed customers, ask exactly:

> Send me your 5 best customers with their website URLs.

Nothing else.

Do not ask:
- their ICP
- industries
- employee count
- buyer titles
- keywords
- geography yet
- why they think the customers are good

The companies are the evidence. Start from them.

If the user gives more than 5, accept them. If they give fewer than 3, ask for enough to reach at least 3. Five is preferred because pattern recognition is more stable.

If the user supplies a customer CSV instead, use the companies in the file as evidence, identify the dominant or distinct customer types, and then present those types at the Step 2 gate.

Once the seed companies are supplied, run Step 2 in the next response.

---

# Step 2 — Seed pattern analysis

**Job:** understand what the seed companies actually are and decide whether they belong to one coherent customer type.

This is reasoning and public research only. Do not run the MoltSets lookalike/company search yet.

## Research each seed

For every supplied company:
- verify that the domain resolves to the intended business
- read the public website when available
- use public search results when the site is inaccessible or too thin

Then identify, in plain language:
- what the company actually sells
- who it sells to
- business model / company type
- identity-defining language on the website
- country / primary market when visible
- any meaningful operating pattern shared with the other seeds

Ignore generic marketing adjectives.

A mistyped or ambiguous domain can poison the rest of the run. Confirm the company identity before treating it as evidence.

Do not over-focus on superficial industry tags. Look for the **commercial identity** underneath them.

## Pattern recognition

Ask:
- Are all seeds basically the same kind of company?
- Are some only superficially similar?
- Are there 2–4 distinct customer types hiding inside the list?
- What shared commercial characteristics make the selected companies meaningfully alike?

A bad pattern is:

> innovative B2B companies focused on growth

A useful pattern is:

> GTM engineering agencies that build outbound systems, lead lists, enrichment workflows and sales automation for B2B clients

or:

> specialist recruitment agencies that place finance and accounting professionals

The pattern should describe the actual company, not its aspirations.

## Show in chat

First render:

| Seed company | URL | What they actually do | Customer type |
|---|---|---|---|

Then render:

### Pattern read

If there is **one coherent type**, show:
- **Customer type:** one plain-English line
- **Shared evidence:** 3–5 concrete similarities
- **Potential noise:** anything in the seeds that should NOT define the search

If there are **multiple types**, show:

| Type | Companies in it | What makes this type distinct |
|---|---|---|

Do not build MoltSets search criteria yet.

## Gate

### If there is one coherent type

Ask:

> These are one clear customer type. Is this the type you want me to find more of?

Stop.

### If there are multiple types

Use the interactive choice tool if available.

Ask:

> I see multiple customer types here. Which one do you want me to find more of?

Each option should be a short, human-readable company type, not "Option 1 / Option 2".

Stop.

The selected type becomes the only active type for the rest of the run.

Never average incompatible customer types together.

---

# Step 3 — Independent calibration

Runs only after the customer type from Step 2 is approved or selected.

**Job:** test Claude's understanding independently before scaling the search.

This is still **not** the MoltSets company pull.

Use web research / available browsing tools to find **up to 10 companies** that appear to fit the selected customer type.

The purpose is simple:

> If Claude truly understands what "similar" means, it should be able to recognize good examples before it searches the database.

## Rules

- Prefer companies that were not among the original seeds.
- Do not use MoltSets to produce this calibration set.
- Do not pad the list just to reach 10.
- The examples should be diverse enough to prove the pattern but still clearly the same company type.
- If geography was already given, respect it.
- If geography has not been given, calibration may be geography-agnostic. Geography is resolved before the MoltSets search.

## Show in chat

Use exactly:

| Company | URL | Why it fits |
|---|---|---|

Show up to 10 rows.

Then one line:

> I found these independently from the seed list. This is my check that I understood what you mean by similar.

## Gate

Ask:

> Do these look like the kind of companies you want?

Stop.

If the user says no:
- use their correction
- revise the customer type
- find a fresh calibration set
- show the same table again
- ask the same gate

Do not move to MoltSets search construction until the examples are approved.

---

# Step 4 — Build the MoltSets search criteria

Runs after the calibration companies are approved.

**Job:** translate the approved company type into the cleanest search MoltSets can actually execute.

Use the original seed companies as the primary truth. Use the approved calibration set as supporting evidence for wording and boundaries.

Do not invent filters that MoltSets does not expose in the current session.

## Resolve geography only when needed

If target geography is already known, use it.

If it is not known, ask one short interactive question now:

> Where should I find these companies?

Prefer buttons when possible:
- United States
- United Kingdom
- Europe
- Worldwide
- Other

If the user selects Other, ask for the country or region.

Do not infer the target market just because the seed companies happen to be based there.

## Build the criteria

Inspect the current MoltSets company-search tool and use only fields its schema supports.

Translate the approved pattern into the strongest available combination of signals, such as:
- plain-English company description / company type, when supported
- geography
- industry/category, when it genuinely maps to the customer type
- employee size, only when structurally important
- business model, when supported and clearly relevant
- company/domain exclusions, when supported
- any other MoltSets-supported company signal that is directly justified by the approved pattern

Rules:
- prefer precision over filling every possible field
- do not manufacture a headcount range from five random examples
- do not add a filter merely because the field exists
- exclude the original seed customers from the final list when the tool supports it
- if MoltSets supports semantic/company-description search, use the approved plain-English customer type instead of rewriting it into generic industry jargon
- if MoltSets does not expose a field, omit it instead of simulating it with another provider

## Show in chat

Render:

### MoltSets search criteria

| Signal | What I'm using |
|---|---|
| Company type | ... |
| Geography | ... |
| Industry/category | ... or "not used" |
| Company size | ... or "not used" |
| Business model | ... or "not used" |
| Other MoltSets filters | ... or "none" |
| Exclusions | original seed companies + any approved exclusions |

Then one short sentence:

> I built these from the companies you gave me and the examples you approved.

Do not add a separate approval gate here unless a required search field is ambiguous.

---

# Step 5 — Choose how many companies to pull

Do not invent a market-size count.

If the current MoltSets tool exposes a reliable count/preview action for the exact search criteria, you may show that number in one sentence. If it does not, skip the count completely.

Ask:

> How many companies do you want me to pull?

Use interactive options if available:
- Top 100
- Top 500
- Top 1,000
- Custom amount

If the tool has a lower maximum, adapt the options to the real schema.

Stop.

The user's selection is authorization to run the MoltSets account search. Do not ask for a second confirmation immediately afterward.

---

# Step 6 — Run the MoltSets company search

Runs only after the user chooses the list size.

**Job:** use MoltSets to return the actual target companies.

Inspect the available MoltSets company-search action and build the request from the approved search criteria.

Hard rules:
- MoltSets is the only company/contact database used here
- do not call another database as a backup
- use the exact schema exposed by the current MoltSets tool
- never invent unsupported search fields
- request only the number the user selected
- exclude original seed customers when the tool supports domain exclusion
- preserve the approved company type; do not silently broaden it to increase volume

## Quality check

Before exporting, inspect the first 10–20 returned companies.

Check:
- are they actually the same company type the user approved?
- are obvious adjacent-but-wrong company types appearing?
- did a broad category or size filter distort the result?

If the top results are clearly wrong, make **one** defensible correction using only MoltSets-supported filters, then rerun once.

Do not invent a new ICP after the user already approved the calibration set.

If MoltSets cannot express the approved customer type accurately with the available search fields, say so clearly rather than quietly switching providers.

## Show in chat

First show:

### Lookalike results

| Company | Domain | What they do | Why it fits |
|---|---|---|---|

Show the top 10 only in chat even if hundreds or thousands were pulled.

`Why it fits` should be a short explanation grounded in the approved customer type and returned/public company information. Do not make up unsupported details.

Then print:

> Found [TOTAL RETURNED] matching companies. Exporting the list now.

Do not ask another gate before exporting.

---

# Step 7 — Export the company CSV

Create:

`lookalike-companies.csv`

in the current working directory.

Use the **real fields returned by the current MoltSets tool**. Do not hard-code field names from another provider.

Include, when returned or already known:
- company name
- domain
- company description
- industry/category
- employee count/range
- geography
- business model
- any useful company fields MoltSets actually returned
- `matched_customer_type` added by this skill
- `why_match` added by this skill

Do not run a separate paid enrichment pass solely to fill optional company columns unless the user asks for it.

Write the file with a real CSV library.

After writing the file, show:

> Done with the company list.
> **Companies:** [N]
> **Customer type:** [one-line type]
> **Market:** [geography]
> **File:** `lookalike-companies.csv`

Then immediately show the final optional action gate:

> Want me to find the people you care about inside these companies?

Use interactive options if available:
- Yes, find the people
- No, stop here

Stop.

---

# Step 8 — Find people with MoltSets

Runs only if the user chooses **Yes, find the people**.

**Job:** turn the account list into a usable people/contact list using MoltSets.

## Resolve the roles

If the user already supplied target roles/titles earlier in the conversation, reuse them. Do not ask again.

If not, ask one short question:

> Which people should I find inside these companies?

Allow a natural-language answer such as:
- founders and CEOs
- revenue leadership
- marketing leaders
- RevOps and sales ops
- recruiting leadership
- "the people most likely to own this problem"

If the user gives a problem rather than titles, infer the likely functional roles from the context and show the role map before searching:

| Role group | Titles / functions to search | Why they matter |
|---|---|---|

If the role inference is obvious, do not create another approval gate. If it is genuinely ambiguous, ask one compact choice question.

## Run the MoltSets people search

Use the exact MoltSets people/contact-search tool exposed in the current session.

Search only within the companies from `lookalike-companies.csv` or the in-memory company result set.

Use the requested role logic and the exact filters supported by MoltSets.

Hard rules:
- do not search a different lead database
- do not broaden beyond the approved companies unless the user explicitly asks
- prefer business contact data returned by MoltSets
- do not invent emails, phone numbers, LinkedIn URLs, or titles
- if MoltSets exposes verification/status fields, preserve them in the export

## Show in chat

Render a short preview:

### People found

| Person | Company | Title | Why this person | Business email | Other available contact data |
|---|---|---|---|---|---|

Show up to 10 rows in chat.

Then export:

`lookalike-people.csv`

Use the real MoltSets response fields. Include, when available:
- full name
- company
- domain
- title
- role group
- LinkedIn URL
- business email
- email verification/status
- phone/mobile
- location
- `why_relevant` added by this skill

End with:

> Done.
> **Companies searched:** [N]
> **People found:** [N]
> **Roles:** [short summary]
> **File:** `lookalike-people.csv`

That is the end of the workflow.

---

# MoltSets rules for this skill

These are implementation constraints, not narration.

## MoltSets is the data layer

Use MoltSets for:
- final company/account search
- people search inside the returned companies
- business contact data when available
- additional company/contact context that the connected MoltSets tools explicitly expose

Do not use a competing company/contact database anywhere in the normal flow.

Public web browsing is allowed only for:
- verifying seed companies
- understanding the seed pattern
- independently finding the calibration examples
- supporting a short `why it fits` explanation when MoltSets returned too little company text

## Tool discovery

Do not assume a MoltSets endpoint or tool name from memory.

At runtime:
1. inspect the available tools
2. identify the MoltSets action whose description matches the required job
3. inspect its schema
4. pass only supported fields

If the connected MoltSets interface cannot perform a required action, state the limitation. Do not silently substitute another provider.

## Count / market size

A market-size estimate is optional, not required.

Only show one when MoltSets exposes a reliable count/preview action for the **same search definition** being used for the final pull.

Never fabricate a count, estimate it from another database, or use a web-search result as if it were the MoltSets market size.

## Existing customers

The final lookalike output should not hand the user back their seed customers.

Use MoltSets exclusions when the current tool supports them. If the tool cannot exclude domains, remove the seed domains deterministically from the returned results before exporting.

---

# Failure states

Keep these short. The primary goal is a stable ideal run.

### Seed website cannot be read
Use other public company sources to establish what it does. Mark that seed as `partial evidence` in the table. Do not stall the whole run for one inaccessible site.

### A seed resolves to the wrong company
Ask the user for the correct URL. Do not use the wrong business as evidence.

### Seeds split into different types
This is not an error. Cluster them and make the user choose. Never average incompatible customer types together.

### Calibration set is rejected
Use the user's correction to redefine the customer type and research a fresh calibration set. Stay in Step 3.

### Target geography is missing
Ask once before building the MoltSets search criteria. Do not ask at the opening.

### MoltSets is not connected
Complete the reasoning/calibration stages if possible, then stop before the data search and ask the user to connect MoltSets. Resume from the approved pattern afterward.

### MoltSets search fields cannot express the approved customer type
Say so clearly. Use the closest defensible supported criteria only if the user agrees. Never switch to a competing database automatically.

### MoltSets returns weak company results
Inspect the top results, apply one defensible tightening change using supported MoltSets fields, rerun once, and show the result. If still weak, be honest and stop instead of fabricating a good list.

### User asks for more companies after export
Reuse the same approved customer type and search criteria. Exclude already returned domains when possible. Do not restart pattern analysis unless the user asks to change the company type.

### People search returns no contacts for some companies
Keep those companies in the account list and mark the person/contact result as unavailable. Do not invent data and do not drop the company silently.

---

# Recording rules

These rules exist specifically to make the session easy to record and clip.

- The first visible interaction should be the user's natural lookalike request or the request for 5 customer URLs.
- Seed analysis always renders as a table.
- Mixed customer types always render as selectable options.
- Independent calibration always renders up to 10 rows in one table.
- MoltSets search criteria always use the same two-column table.
- The search-criteria screen must make it obvious that Claude derived the criteria from the examples.
- The list-size choice is always a visible gate before the full company pull.
- Full company search shows only the top 10 preview rows before export.
- After company export, always show the optional "find the people" gate.
- People search shows only the top 10 preview rows before export.
- Do not print huge raw API payloads into the main conversation.
- Do not let tool/debug output replace the clean presenter-visible result.
- Keep stage labels visible: Seed Pattern, Calibration, MoltSets Search Criteria, Lookalike Results, People Found.
- Never skip a user-visible checkpoint because the backend call succeeded.
- Never run ahead of the user at a gate.
- If MoltSets is already connected, do not show setup in the normal recorded path.
- Do not mention or show a competing company/contact data provider anywhere in the normal recording.

---

# Final rules

- Start from evidence: the user's best customers.
- Pattern recognition before database search.
- If the seeds are mixed, push back and split them.
- One customer type per lookalike run.
- Prove the pattern independently before scaling it.
- Original customer examples remain the primary truth.
- Use public web research for understanding; use MoltSets for company and people data.
- MoltSets is a hard requirement for the final account and contact pull.
- Never substitute another company/contact database.
- Build the MoltSets search only from fields the connected tool actually supports.
- Do not invent a market-size count.
- The user's list-size choice is the approval to run the company pull.
- Never return the seed customers in the final lookalike list.
- Export `lookalike-companies.csv`.
- Offer one clear next action: find the people inside those companies.
- If the user says yes, use MoltSets and export `lookalike-people.csv`.
- Never ask the user for a generic ICP document.
- Never hide important output only inside a tool response.
