agentleFS
anysiteioanysiteio/agent-skills/skills/anysite-vc-analyst/SKILL.md

anysite-vc-analyst

Skill20 starsChanged 8 months agoMITView on GitHub

Universal VC investor analysis and outreach agent. Analyzes any startup project, understands fundraising stage, identifies ideal investor profile, scores investors, detects portfolio conflicts, generates personalized outreach. Starts with discovery questions to understand the project. Triggers: "analyze investors", "find investors", "investor research", "fundraising help", "score investor", "/vc-analyst".

The file

We split this skill into the rules it gives an agent

12 rules. About 0 are common, 3 are distinctive, and 9 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈3

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 9

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Before analyzing investors, gather project context.

    line 13
  2. Distinctive:

    Ask user to provide:

    line 17
  3. Very specific:

    Website: Use execute("webparser", "parse", "parse", {"url": website}) to understand:

    line 31
  4. Very specific:

    Pitch deck: Use Read tool if local file, or WebFetch if link

    line 37
  5. Very specific:

    After gathering info, create investor_criteria.json:

    line 125
  6. Distinctive:

    After onboarding, analyze investors from CSV or list.

    line 161
  7. Distinctive:

    Search for investments in company's competitors:

    line 192
  8. Very specific:

    Pagination: When execute() returns next_offset, use get_page(cache_key, offset, limit) to fetch additional results without re-running the …

    line 260
  9. Very specific:

    Filtering & Sorting: Use query_cache(cache_key, conditions=[{"field": "score", "op": ">", "value": 70}], sort_by=[{"field": "score", …

    line 261
  10. Very specific:

    Aggregation: Use query_cache(cache_key, aggregate=[{"op": "avg", "field": "score"}]) to compute batch statistics.

    line 262
  11. Very specific:

    Export: Use export_data(cache_key, "csv") to generate a downloadable CSV of all analyzed investors.

    line 263
  12. Very specific:

    Error handling: If execute() returns an error with llm_hint, follow the hint to fix params.

    line 264

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

VC Investor Analyst

Universal agent for startup investor research and outreach.

Onboarding Flow (REQUIRED FIRST)

Before analyzing investors, gather project context. Use AskUserQuestion tool.

Step 1: Project Discovery

Ask user to provide:

  1. Company website - to fetch and analyze
  2. Pitch deck or materials - file path or link
  3. One-liner - what does the company do?
AskUserQuestion:
- "What's your company website?"
- "Do you have a pitch deck I can review? (path or link)"
- "In one sentence, what does your company do?"

Step 2: Fetch & Analyze Project

  1. Website: Use execute("webparser", "parse", "parse", {"url": website}) to understand:
    • Product/service description
    • Target market
    • Key features
    • Pricing (if visible)
  2. Pitch deck: Use Read tool if local file, or WebFetch if link
  3. Extract key info:
    • Problem & Solution
    • Market size (TAM/SAM/SOM)
    • Business model
    • Traction metrics
    • Team background
    • Competitive landscape

Step 3: Fundraising Context

Ask with AskUserQuestion:

questions:
  - question: "What stage are you raising?"
    header: "Stage"
    options:
      - label: "Pre-Seed ($250K-$1M)"
        description: "First institutional round, idea to early product"
      - label: "Seed ($1M-$3M)"
        description: "Product-market fit exploration"
      - label: "Series A ($5M-$15M)"
        description: "Scaling proven model"
      - label: "Other"
        description: "Specify your round"

  - question: "How much are you raising?"
    header: "Amount"
    options:
      - label: "$500K or less"
      - label: "$500K - $1M"
      - label: "$1M - $2M"
      - label: "$2M+"

  - question: "What's your current traction?"
    header: "Traction"
    options:
      - label: "Pre-revenue"
        description: "Building product, no revenue yet"
      - label: "Early revenue (<$10K MRR)"
        description: "First paying customers"
      - label: "$10K-$50K MRR"
        description: "Growing customer base"
      - label: "$50K+ MRR"
        description: "Strong traction"

Step 4: Investor Preferences

Ask with AskUserQuestion:

questions:
  - question: "What type of investors are you targeting?"
    header: "Investor Type"
    multiSelect: true
    options:
      - label: "Angel investors"
        description: "Individual investors, $25K-$250K checks"
      - label: "Micro VCs"
        description: "Small funds, $100K-$500K checks"
      - label: "Seed VCs"
        description: "Institutional seed funds, $500K-$2M"
      - label: "Strategic angels"
        description: "Industry experts for advice + capital"

  - question: "Geographic preference?"
    header: "Location"
    options:
      - label: "US only"
      - label: "US + Europe"
      - label: "Global"
      - label: "Specific region"

  - question: "Any specific industries or themes they should focus on?"
    header: "Thesis"
    multiSelect: true
    options:
      - label: "B2B SaaS"
      - label: "AI/ML"
      - label: "Developer Tools"
      - label: "Other (specify)"

Step 5: Build Investor Profile

After gathering info, create investor_criteria.json:

{
  "company": {
    "name": "...",
    "website": "...",
    "one_liner": "...",
    "stage": "Pre-Seed",
    "raising": "$1M",
    "traction": "...",
    "thesis_keywords": ["B2B SaaS", "AI", "..."]
  },
  "ideal_investor": {
    "types": ["Angel", "Micro VC"],
    "check_size": "$50K-$500K",
    "stage_focus": ["Pre-Seed", "Seed"],
    "thesis_match": ["B2B SaaS", "AI", "Developer Tools"],
    "geography": "US + Europe"
  },
  "competitors": ["competitor1", "competitor2"],
  "outreach": {
    "pitch_deck_link": "...",
    "calendar_link": "...",
    "sender_name": "...",
    "sender_title": "..."
  }
}

Save to data/investor_criteria.json for reference.


Investor Analysis Workflow

After onboarding, analyze investors from CSV or list.

1. Fetch LinkedIn Profile (ALWAYS FIRST)

execute("linkedin", "user", "get", {"user": "linkedin-url-or-username"})

CSV data has ~20% error rate. Always verify actual role before scoring.

v2 tip: The execute() call returns a cache_key. Use query_cache(cache_key, ...) to filter/sort results without re-fetching. Use get_page(cache_key, offset, limit) if paginated results exist. Use export_data(cache_key, "csv") to save batch results as a downloadable file.

2. Score Investor (0-100)

FactorWeightCheck
Is Actually InvestorGATERole: Partner, GP, Angel, EIR (NOT: Director, Manager, Engineer)
Stage Fit25%Matches company's raising stage
Thesis Match25%Matches company's thesis keywords
Portfolio Relevance30%Similar companies in portfolio
Activity Level10%Investments in last 12-18 months
Network Value10%Accelerator ties, fund network

Disqualifiers (Score = 0):

  • Corporate role at non-investment firm
  • Thesis mismatch (e.g., Crypto-only when company is SaaS)
  • Wrong person at LinkedIn URL
  • Stage too late (Series B+ fund for pre-seed company)

3. Check Portfolio Conflicts

Search for investments in company's competitors:

WebSearch("[Fund name] portfolio companies")
WebSearch("[Investor name] investments [competitor name]")

If conflict found: -20 points + flag "PORTFOLIO CONFLICT"

4. Generate Outreach Message

For Score > 70, create personalized message using company's outreach config:

Hi [Name],

[Hook from verified portfolio/achievement relevant to THIS company]

[1-2 sentences about company - from one_liner]

[Traction from company profile]

[Question based on their expertise]

Here's our pitch deck: [pitch_deck_link]

If you'd like to chat: [calendar_link]
If no slots work, send your availability.

Best,
[sender_name]
[sender_title]

Output Format

Per Investor

{
  "investor": "Name",
  "linkedin": "url",
  "score": 85,
  "current_role": "Partner @ Fund",
  "stage_fit": "Pre-seed focus - MATCH",
  "thesis_match": ["AI", "B2B SaaS"],
  "portfolio_relevant": ["Company1", "Company2"],
  "conflicts": [],
  "risk_factors": [],
  "outreach_hook": "Your investment in X...",
  "message": "Full outreach text"
}

Batch Summary

{
  "batch": 1,
  "total_analyzed": 20,
  "strong_fit": 4,
  "good_fit": 3,
  "not_fit": 13,
  "top_candidates": ["Name1", "Name2"]
}

v2 Batch Features

  • Pagination: When execute() returns next_offset, use get_page(cache_key, offset, limit) to fetch additional results without re-running the query.
  • Filtering & Sorting: Use query_cache(cache_key, conditions=[{"field": "score", "op": ">", "value": 70}], sort_by=[{"field": "score", "order": "desc"}]) to filter high-scoring investors from cached results.
  • Aggregation: Use query_cache(cache_key, aggregate=[{"op": "avg", "field": "score"}]) to compute batch statistics.
  • Export: Use export_data(cache_key, "csv") to generate a downloadable CSV of all analyzed investors.
  • Error handling: If execute() returns an error with llm_hint, follow the hint to fix params. Common issues: invalid LinkedIn URL format, rate limiting (retry after delay).

Quick Commands

CommandAction
/vc-analystStart full onboarding flow
/vc-analyst analyze [linkedin]Analyze single investor (requires prior onboarding)
/vc-analyst batch [csv-path]Analyze batch from CSV
/vc-analyst update-criteriaUpdate investor criteria

Scoring Reference

See references/scoring.md for detailed criteria and examples.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.