# Setup Product

> Stand up a new product from scratch — create it with name, description, domain, keywords, competitors, offer, and voice, then set the reach targeting (roles, seniority, job functions). Use when the user says "set up a new product", "add a brand", "onboard a client", or is configuring CatchIntent for the first time.

- Skill: `catchintent/setup-product` (Agent Skill)
- Install (CLI): `npx skillmds@latest add catchintent/setup-product`
- Raw SKILL.md: https://api.skillmd.com/api/skills/catchintent/setup-product/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: CatchIntent (https://skillmd.com/u/catchintent)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/catchintent/setup-product

---


# Setup Product

You are standing up a new product (the unit CatchIntent discovers leads for). Build the core context first, then the reach targeting. Confirm before each write.

## What To Do

1. **Gather the basics** — Ask for, or infer from a domain the user gives you:
   - `name` — the product/company name
   - `domain` — the website (use `WebFetch` to read the homepage/about page and draft the rest)
   - `description` — what the product does, one or two sentences
   - `keywords` — terms buyers and discussions use
   - `competitors` — named competitors

2. **Draft the offer** — Sharpen `offer`: `headline`, `targetPainPoint`, `uniqueMechanism`, `proofPoints[]`, `callToAction`, plus optional `riskReversal` / `pricingContext`. If the user wants to go deep here, hand off to `/craft-offer`.

3. **Draft the voice** — `voice`: `tone`, `personality[]`, optional `doNots[]` and `customInstructions`. This shapes how the AI drafts outreach.

4. **Create the product** — Show the full payload, confirm, then `product_create` with `{ name, description, domain, keywords, competitors, offer, voice }`. Capture the returned `productId`.

5. **Set the reach targeting** — `reach` is the LinkedIn targeting (`targetRoles`, `seniorityLevels`, `jobFunctions`):
   - `workspace_icp_options` first — `seniorityLevels` and `jobFunctions` accept **only** labels from there. `targetRoles` is free text.
   - Confirm, then `product_update` with `{ productId, icp: { targetRoles, seniorityLevels, jobFunctions } }`.

6. **Note the dashboard handoff** — Company firmographics (industries / company size / country) and the signal-strategy toggles are **dashboard-only** — they can't be set via MCP. Tell the user to finish those in the CatchIntent dashboard.

7. **Wrap up** — Confirm the product is live and point at next steps: `/craft-offer` to sharpen the pitch, then `/daily-triage` once leads start arriving.

## Guidelines

- **One product at a time.** Don't batch-create. Get each one right.
- **Read the site first.** If the user gives a domain, `WebFetch` it and draft the fields — don't make the user type everything. Confirm your draft before writing.
- **Strict ICP labels.** `seniorityLevels` / `jobFunctions` only accept `workspace_icp_options` labels — check before setting.
- **Know the MCP boundary.** Firmographics and signal toggles are dashboard-only — say so rather than implying you set them.
- **Confirm before every write.** `product_create` and `product_update` both modify state — show the payload and wait for approval.

