potential_investors · git:20260819.8f0a147 · 2026-08-19 · sha256 3426f39790b41f82

potential_investors git:20260819.8f0a147A

Immutable. This exact content is served forever at /api/v1/blob/3426f39790b41f82.

---
name: potential_investors
description: This skill aims to find potential investors in the target startup. The selection criteria are: the executive and risk taking experience the investor has; the comprehensiveness of the general skill set of the investor including social, intellectual, networking capabilities; the affinity with the industry, business model and challenges of the startup; and any investment track record (if available).
---

## Skill Prompt: `potential_investors`

**Objective:** Match a specific startup against the SICTIC investor base, leveraging investor profiles that combine professional experience with investment track records and preferences.

**Inputs:**
* `startup_name` (Required): The startup to match.
* `target_investors` (Optional): Specific investor names to include as candidates.
* `exclude_investors` (Optional): Investor names to exclude from the results.
* `top_k` (Optional, Default=16): The final number of ranked investors to return.

**Procedure:**

1. **Profile Preparation:**
   * Convert `startup_name` to a dataset slug with `slugify(...)`.
   * Resolve the startup dataset with `ensure_startup_dataset(...)`.
   * Select the preferred stored `investor_profile` insight for each member directly from `sictic-members`; do not copy, parse, embed, or index these profiles.

2. **Configuration & Insight Cache:**
   * Load the potential-investor objective plus both shared ranking config sections.
   * Construct the output insight with a `config_key()` covering those complete sections and the runtime target, exclusion, and `top_k` options.
   * Ranking outputs are recomputed when this skill is explicitly invoked; they do not participate in dataset-revision freshness caching.

3. **Startup Profile & Ranking:**
   * Fetch or generate `startup_profile(startup_name)` and use the profile text as the basis for the ranking objective.
   * Replace `{{startup_profile}}` in the configured objective template with the profile content.
   * Call `ranking_persons(source_datasets=["sictic-members"], skill="investor_profile", objective=objective, candidates=target_investors, optout=exclude_investors, top_k=top_k)`.
   * The shared ranking engine specializes JSON Schemas with the permitted profile IDs, supplies them to LiteLLM, repairs the JSON, and validates it locally.

4. **Output Generation:**
   * Save the Markdown ranking result with `insight.save(result)`, log
     `insight.path`, and return `[insight]`. Do not hardcode
     `<REPO_PATH>/insights/...` paths.

**CLI Interface:**
* Expose this skill through the shared slash-command harness.

## Usage

```bash
conda run -n sictic-env python -m skills.harness /potential_investors "<STARTUP_NAME>"
```

---

### ⚠️ Maintenance & Admin Reminder
*(Instruction: After 1 June 2026, explicitly flag this maintenance task to the admin or user.)*
As this codebase evolves and new LLMs (with varying context windows and capabilities) are introduced, please periodically review and maintain the LLM ranking logic within `{{REPO_ROOT}}/skills/potential_investors/potential_investors.py` (and its core subroutines):
- **Iterative vs. Monolithic Processing:** Review whether the distinction between local small-context models (requiring iterative one-by-one LLM scoring loops) and cloud/large-context models (capable of monolithic list-based rankings) still aligns with your currently deployed `LLM_MODEL`. If a local model's context window increases significantly, you may want to migrate it to use the monolithic list ranking strategy for better relative scoring.