Claude Code Plugins

Community-maintained marketplace

Feedback

Find and validate companies for the SME banking pipeline. Supports two modes - validating specific companies mentioned by user, or broad searches for companies matching sector/trigger criteria (e.g., "find logistics companies with expansion").

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name scan-leads
description Find and validate companies for the SME banking pipeline. Supports two modes - validating specific companies mentioned by user, or broad searches for companies matching sector/trigger criteria (e.g., "find logistics companies with expansion").
allowed-tools WebSearch, Read, Grep, Glob, Write, Edit

Scan Leads Skill

You help the user find and validate companies for their SME banking pipeline.

This skill has TWO modes:

  • Mode A (Specific): Validate a specific company the user mentions
  • Mode B (Broad): Search for companies matching criteria

IMPORTANT: Always Start by Reading User Parameters

FIRST STEP - Read user parameters:

Read /data/user-parameters.md
Extract:
- Target geography, size, sectors
- Exclusions (MNC, holdco)
- Priority scoring criteria
- Current banker identification strategy

Mode Detection

Mode A (Specific Company) - User provides company name:

  • "Scan YCH Group"
  • "Check out Acme Logistics - heard they won a tender"
  • "Validate Supreme Components"

Mode B (Broad Search) - User provides criteria:

  • "Find 10 logistics companies with expansion triggers"
  • "Find manufacturing companies that won tenders"
  • "Search for healthcare companies"

MODE A: Specific Company Scan

Step 1: Research the Company

Web search pattern:

Search: "[company name] Singapore"
Search: "[company name] official website"
Search: "[company name] LinkedIn"
Search: "[company name] news 2024 2025"

Find:

  • Official website URL
  • LinkedIn company page URL
  • Basic company info (sector, industry, size indicators)

Step 2: Validate Existence

IF no website AND no LinkedIn found:

  • Report: "Could not verify [company] exists. No official website or LinkedIn page found."
  • Ask: "Do you have additional information about this company?"
  • STOP (don't proceed further)

IF website OR LinkedIn found:

  • Continue to Step 3

Step 3: Apply Exclusions (from user-parameters.md)

Check each exclusion:

a) MNC subsidiary check:

  • Look for patterns in search results:
    • "[Company] subsidiary of [Parent MNC]"
    • Global brand names (FedEx, DHL, UPS, Siemens, ABB, etc.)
    • Website mentions international parent company
  • IF MNC subsidiary → Report: "Found but excluded: MNC subsidiary of [Parent]"
  • STOP

b) Current banker identification:

  • Search: "[company] facility [bank]"
  • Search: "[company] financing [bank]"
  • Search: "[company] loan [bank]"
  • Look for: "banking partner [Bank]", "facility from [Bank]", "financed by [Bank]", "syndicated loan led by [Bank]"
  • Common Singapore banks: OCBC, UOB, DBS, Standard Chartered, HSBC, Maybank, CIMB, ANZ, Citibank
  • IF banker mentioned → Record for later (include in candidate notes)
  • IF no banker mentioned → Leave blank (not "unknown")
  • NOTE: This is intelligence gathering, NOT an exclusion check
  • Continue to next check

c) Holdco/size check:

  • Look for: "Holdings", "Group" in legal name
  • Check for: listed parent, wide regional operations (>5 countries), >1000 employees
  • IF obviously large (>S$100M likely) → Report: "Found but excluded: Holdco revenue likely >S$100M"
  • IF some signals but unclear → Flag for user review (don't auto-exclude)

IF passed exclusions (a and c):

  • Continue to Step 4

Step 4: Extract Triggers

Search for trigger signals:

Search: "[company] expansion Singapore"
Search: "[company] news 2024 2025"
Search: "[company] tender award"
Search: "[company] hiring LinkedIn"
Search: "[company] acquisition merger"

For each search result, look for these trigger types:

1. Expansion triggers:

  • Keywords: "new facility", "new outlet", "new office", "opened", "expanding to", "regional expansion", "JV", "partnership"
  • Example: "Opened new 50,000 sqft warehouse in Tuas"

2. Capex triggers:

  • Keywords: "acquired equipment", "new machinery", "fleet expansion", "invested in", "purchased", "automation"
  • Example: "Invested S$5M in automated cold chain equipment"

3. Contract/order triggers:

  • Keywords: "awarded tender", "won project", "contract with", "partnership", "long-term agreement"
  • Example: "Won S$20M tender from NTUC for logistics services"

4. Hiring triggers:

  • LinkedIn job posts, "hiring", "team growth", "expanding workforce", "recruitment"
  • Example: "Hiring 50 warehouse staff for expansion"

5. M&A triggers:

  • Keywords: "acquired", "merged with", "bought", "acquisition of"
  • Example: "Acquired Acme Logistics for S$30M"

6. Compliance triggers:

  • Keywords: "ISO certification", "regulatory approval", "accreditation", "compliance", "MAS license"
  • Example: "Achieved ISO 27001 certification"

7. Operational complexity triggers:

  • Keywords: "multi-entity", "cross-border", "operations in [N] countries", "regional"
  • Example: "Operates across Singapore, Malaysia, Vietnam"

For EACH trigger found:

Record:
- Category (expansion/capex/contract/hiring/M&A/compliance/operational)
- Specific description (what happened)
- Evidence link (URL to article/press release/LinkedIn post)
- Date observed (when it happened - YYYY-MM or YYYY)

Step 5: Determine Sector

IF not obvious from research:

  • Ask user: "What sector should I classify this company in?"
  • Options: Logistics, Manufacturing, Healthcare, F&B, Technology
  • Use user's answer

IF obvious:

  • Assign based on business description

Step 6: Ask User for Priority

Based on user-parameters.md criteria:

  • New to bank + S$40-100M size range = suggests high priority
  • Media company = suggests low priority

Ask user:

"Based on triggers found, I suggest: [high/medium/low] priority
(Criteria: new to bank + S$40-100M size = high, media = low)

What priority should I assign? (high/medium/low)"

Use user's answer (don't auto-assign)

Step 7: Report Findings

Format:

[Company Name] - Research Complete

✓ Company verified
- Website: [URL]
- LinkedIn: [URL]
- Sector: [sector] - [industry]
- Current banker: [Bank name if found, or "Not mentioned in news"]

Triggers Found: [N]
1. [Category] - [Description] ([Date])
   Evidence: [Link]
2. [Category] - [Description] ([Date])
   Evidence: [Link]
...

Priority: [user's choice] (based on: [reasoning])
Exclusions: Passed all checks

Add [Company] to candidates?

Step 8: If User Approves, Add to candidates.csv

Generate candidate_id:

  • Read existing candidates.csv
  • Find highest CAND### number
  • Increment by 1 (e.g., if last is CAND005, use CAND006)
  • If empty file, use CAND001

Add row:

candidate_id,company_name,source,initial_trigger,date_added,status,drop_reason
CAND###,[company name],user scan,[top trigger description],2025-12-30,pending,

^ VALIDATION: Must have exactly 6 commas (7 fields total) - drop_reason is empty but comma still required

Report:

✓ [Company] added to candidates.csv (CAND###)
Status: pending (needs verification)

Next step: Verify this candidate to move to companies.csv?

DO NOT commit - just update CSV and report


MODE B: Broad Search

Step 1: Parse Criteria

Extract from user's request:

  • Sector: logistics / manufacturing / healthcare / F&B / technology
  • Trigger type: expansion / capex / contract / hiring / M&A (optional)
  • Count: how many companies (default: 10)

Examples:

  • "Find 10 logistics companies with expansion triggers" → sector=logistics, trigger_type=expansion, count=10

  • "Find manufacturing companies" → sector=manufacturing, trigger_type=any, count=10 (default)

Tell user upfront:

"Searching for [count] [sector] companies [with trigger_type triggers]..."

Step 2: Search deep_research_leads.md FIRST

Read: /reference/deep_research_leads.md

Parse the markdown tables:

  • Find section for target sector (e.g., "## SECTOR 2: LOGISTICS, SUPPLY CHAIN & TRADE")
  • Extract companies from tables
  • For each company, extract:
    • Company name
    • Sector
    • Triggers from "Growth Signals (Last 18 Months)" column
    • Banking needs
    • Priority/confidence

Apply filters:

  • Sector matches (if specified)
  • Trigger type matches (if specified)
  • Apply exclusions from user-parameters.md (check notes column for MNC mentions)

Count matches found

Step 3: Supplement with Web Search (if needed)

IF matches from research doc >= count:

  • Use only research doc results
  • SKIP web search

IF matches from research doc < count:

  • Need to supplement with web search
  • Calculate: need [count - matches_found] more companies

Web search query:

"[sector] Singapore [trigger_type] 2024 2025"
Example: "logistics Singapore expansion 2024 2025"

From search results:

  • Extract company names (look for "Pte Ltd", "Private Limited")
  • For each company name:
    • Quick existence check (does website or LinkedIn exist?)
    • Quick trigger check (does it have the requested trigger type?)
    • Apply exclusions (MNC, holdco >S$100M)
    • Check for current banker (record if found)
    • If passes → add to candidate list

IMPORTANT:

  • Check against existing companies.csv and candidates.csv
  • SKIP companies already in system (avoid duplicates)

Step 4: Combine Results

Merge:

  • Companies from deep_research_leads.md
  • Companies from web search (if any)

Remove duplicates (same company name)

Limit to requested count (or slightly more if many good matches)

Step 5: Report Findings

Format:

Search complete: Found [N] [sector] companies [with trigger_type triggers]

Results:
1. [Company Name] (source: research doc / web)
   - Triggers: [list]
   - Priority suggestion: [based on triggers]

2. [Company Name] (source: research doc / web)
   - Triggers: [list]
   - Priority suggestion: [based on triggers]

...

Add all [N] companies to candidates? (yes/all/select/no)

Step 6: If User Approves

Ask about priority for batch:

"What priority for these companies?
- All high
- All medium
- All low
- Ask me for each one"

IF user chooses "Ask me for each one":

  • Go through list, ask priority for each

IF user chooses batch priority:

  • Apply same priority to all

For each approved company:

  • Generate candidate_id (CAND### sequential)
  • Add row to candidates.csv:
CAND###,[company name],[source (research doc / web search)],[top trigger],2025-12-30,pending,

^ VALIDATION: Must have exactly 6 commas (7 fields total)

Report:

✓ [N] companies added to candidates.csv
- CAND### to CAND###

Status: All pending (need verification)

Next step: Verify these candidates to move to companies.csv?

DO NOT commit - just update CSV and report


Error Handling

IF company not found (Mode A):

"Could not verify [company]. Sources checked:
- Google search: no official website
- LinkedIn: no company page
- News search: no credible mentions

This might mean:
- Company name is spelled differently
- Company is very small / informal
- Company may not exist

Do you have more information (website, LinkedIn, alternate name)?"

IF no triggers found (Mode A):

"Company verified but no recent triggers found.

[Company] exists (website: [URL]) but no significant news/expansion/hiring signals in the last 18 months.

This might mean:
- Company is stable (not growing)
- Information is sparse (not much public news)
- Triggers exist but not publicly announced

Priority suggestion: Low

Add to candidates anyway? (yes/no)"

IF broad search finds 0 results:

"Search found 0 companies matching criteria.

Checked:
- deep_research_leads.md: [N] [sector] companies, [M] excluded
- Web search: no additional matches found

Suggestions:
- Broaden criteria (remove trigger type filter)
- Try different sector
- Reduce count (find 5 instead of 20)

Try again with different criteria?"

IF all broad search results excluded:

"Found [N] companies but all excluded:
- [X] MNC subsidiaries
- [Y] Holdco >S$100M

No companies passed filters. Try different sector or criteria?"

Important Notes

DO NOT auto-commit:

  • Skills update CSVs only
  • User will trigger commits separately with "commit this" command
  • Just report what was added

Check for uncommitted changes:

  • IF candidates.csv has uncommitted changes AND user starts a new scan
  • Gently remind: "You have [N] uncommitted candidates. Commit before adding more? (yes/no)"

Priority assignment:

  • NEVER auto-assign priority
  • Always ask user based on user-parameters.md criteria
  • User makes final decision

Evidence links:

  • Try to capture for every trigger
  • If no link available, note it but still record trigger
  • Evidence makes triggers defensible (MD can verify)

Sector classification:

  • Use target sectors from user-parameters.md
  • If company doesn't fit any sector clearly, ask user

Deep research leads parsing:

  • Parse markdown tables carefully (company name is in first column)
  • Triggers are in "Growth Signals" column (may be comma-separated)
  • Banking needs are in "Banking Needs" column

Duplicate detection:

  • Always check companies.csv and candidates.csv before adding
  • Ask user if similar name found: "Is this the same as [existing company]?"

Next Step Suggestions

After Mode A (specific scan):

"Next steps:
- Verify this candidate: 'Verify all pending candidates'
- OR scan more companies: 'Scan [another company]'
- OR commit: 'Commit this data'

After Mode B (broad scan):

"Next steps:
- Verify all [N] candidates: 'Verify all pending candidates'
- OR verify by sector: 'Verify [sector] candidates'
- OR commit: 'Commit the new candidates'

You are now ready to help the user scan and validate companies for their SME banking pipeline.