create-image-fal
Generate or edit an image via any FAL image model (nano-banana edit, gpt-image, flux, ...), ROUTED THROUGH THE fal-proxy so it bills the Ads agent. image_urls…
Build and maintain a scored Total Addressable Market (TAM) using Apollo Company Search. Discovers companies matching ICP, scores fit (0-100), assigns tiers (1/2/3), and auto-builds a persona watchlist for Tier 1-2 companies using Apollo People Search (free). Outputs to CSV.
$ npx -y skills add gooseworks-ai/goose-skills --skill tam-builder --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/tam-builderContext preview
The summary Claude sees to decide when to auto-load this skill.
Build and maintain a scored Total Addressable Market (TAM) using Apollo Company Search. Discovers companies matching ICP, scores fit (0-100), assigns tiers (1/2/3), and auto-builds a persona watchlist for Tier 1-2 companies using Apollo People Search (free). Outputs to CSV.
name: tam-builder description: > Build and maintain a scored Total Addressable Market (TAM) using Apollo Company Search. Discovers companies matching ICP, scores fit (0-100), assigns tiers (1/2/3), and auto-builds a persona watchlist for Tier 1-2 companies using Apollo People Search (free). Outputs to CSV. tags: [lead-generation]
Build and maintain a scored Total Addressable Market. Uses Apollo Company Search to discover companies, scores ICP fit (0-100), assigns tiers (1/2/3), and auto-builds a persona watchlist for Tier 1-2 companies using Apollo People Search (free).
**Three modes:**
Add to `.env`:
APOLLO_API_KEY=your-api-key-here
That's it — one env var.
Create a JSON config per client/segment:
{
"client_name": "happy-robot",
"tam_config_name": "voice-ai-midmarket",
"company_filters": {
"organization_num_employees_ranges": ["51,200", "201,500", "501,1000"],
"q_organization_keyword_tags": ["call center", "contact center"],
"organization_locations": ["United States"]
},
"scoring": {
"weights": {
"employee_count_fit": 30,
"industry_fit": 25,
"funding_stage_fit": 20,
"geo_fit": 15,
"keyword_match": 10
},
"tier_thresholds": { "tier_1_min_score": 75, "tier_2_min_score": 50 },
"target_industries": ["Telecommunications", "Customer Service"],
"target_employee_ranges": [[51, 200], [201, 500], [501, 1000]],
"target_funding_stages": ["Series A", "Series B", "Series C"],
"target_geos": ["United States"]
},
"watchlist": {
"enabled": true,
"personas_per_company": 3,
"person_filters": {
"person_titles": ["VP of Operations", "Head of Customer Service"],
"person_seniority": ["vp", "director", "c_suite"]
},
"tiers_to_watch": [1, 2]
},
"mode": "standard",
"max_pages": 50
}**CRITICAL: Never export results without explicit user approval.**
**Required flow:** 1. Search Apollo for a small sample first (~100 companies) 2. Score them and present: tier distribution, example Tier 1/2 companies, scoring sanity check 3. **Get explicit user approval** before running the full build 4. Only then run the full search + score + export
Step 0: --preview → total count + cost estimate (no DB writes) Step 1: --sample --test → search 1 page, score in-memory, show results (no DB writes) Step 2: User reviews sample → approves, adjusts filters, or caps scope Step 3: Full build → Apollo Company Search → Export to CSV → Score → Tier → Watchlist
Phase details (Step 3 only — after user approval):
Phase 1: Apollo Company Search → Upsert raw companies → Score ICP fit → Assign tiers Phase 2: (skipped in build mode — no prior data to deprecate) Phase 3: Persona Watchlist — pull 2-3 personas per Tier 1-2 company (free)
Phase 1: Apollo Company Search → Upsert/update companies → Re-score → Detect tier changes
Phase 2: Deprecation — companies missing 2+ consecutive refreshes get deprecated
Phase 3: Persona Watchlist — pull personas for new/promoted Tier 1-2 companies,
disqualify personas at deprecated companiesPure function, no API calls. Weighted scoring across 5 dimensions from config:
Score thresholds (configurable): >=75 = Tier 1, >=50 = Tier 2, else Tier 3.
| Scenario | Behavior | |----------|----------| | New Tier 1-2 company | Pull 2-3 personas immediately | | Company promoted Tier 3→2 | Pull personas during refresh | | Company deprecated | Disqualify monitoring personas | | Company demoted Tier 1→3 | Keep existing personas, stop refreshing |
| Parameter | Test | Standard | Full | |-----------|------|----------|------| | Max pages | 1 | 50 | 200 | | Max companies | 100 | 5,000 | 20,000 |
Save results as CSV to the current working directory:
Put your AI agent on the growth team. Research customers and competitors, analyze what is working, create the next campaign, and learn from the result.
Repo: gooseworks-ai/goose-skills
Generate or edit an image via any FAL image model (nano-banana edit, gpt-image, flux, ...), ROUTED THROUGH THE fal-proxy so it bills the Ads agent. image_urls…
Generate a single photoreal or designed image with OpenAI gpt-image via fal.ai. Supports gpt-image-1 (default, fixed sizes — the FAL fallback for Higgsfield's…
Generate an instrumental music bed via ElevenLabs Music, ROUTED THROUGH THE elevenlabs-proxy so it bills the Ads agent. Trims any sparse intro, loudnorm, fades…
Image-to-video (or text-to-video) via any FAL video model (Kling, Seedance, Veo), ROUTED THROUGH THE GooseWorks fal-proxy so the call bills the Ads agent. The…
Generate a voiceover (VO) clip via ElevenLabs text-to-speech, ROUTED THROUGH THE elevenlabs-proxy so it bills the Ads agent. Voice id + script text come from…
Scrape competitor ads from Google Ads by domain. Returns ad creatives, formats, and campaign details. Use for competitive ad research and messaging analysis.