一键导入
hypotheses
Hypothesis-driven job search: define what you're testing, execute outreach and applications, validate results, decide to continue or pivot
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Hypothesis-driven job search: define what you're testing, execute outreach and applications, validate results, decide to continue or pivot
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Track job and volunteer applications with CV snapshots, status updates, conversion metrics, and reply predictions
Complete guide to writing effective cover letters that differentiate you from other candidates
Analyze interview transcripts to evaluate which stories were chosen, which should have been chosen, and how to reframe answers for next time. Use after a real interview to turn the experience into structured feedback and new STARR achievements.
Complete workflow for analyzing job descriptions, mapping achievements to roles, assessing readiness, and generating tailored CVs. Use when applying for jobs, preparing for interviews, or creating targeted resumes. Covers JD analysis, skills mapping with evidence-based matching, readiness assessment with consultant-style gap advice, and CV generation.
Complete guide to creating STARR achievement stories with measurable results. Use when gathering work achievements, building accomplishment stories, or preparing for behavioral interviews. Helps extract metrics, structure narratives, and create evidence-based achievement files.
Complete guide to creating company profiles built FROM achievements (not the other way around). Use when creating or updating company profiles, extracting responsibilities and tools from achievements, or summarizing work history. Achievements are the source of truth; profiles extract and summarize from them.
| name | hypotheses |
| version | 1.0 |
| description | Hypothesis-driven job search: define what you're testing, execute outreach and applications, validate results, decide to continue or pivot |
| triggers | ["hypoth","гипотез","campaign","кампания","outreach plan","plan outreach","validate","валидир"] |
Define job search hypotheses, execute outreach campaigns, validate results. Strategy lives in hypotheses/, execution in applications/campaign_*/.
Job search is hypothesis-driven. Each hypothesis is a bet: "I think companies like X need someone like me for role Y."
The system separates strategy (what we're testing and why) from execution (messages sent, responses received, status tracking).
This is the canonical reference for where artifacts live in the project.
hypotheses/ — Strategy OnlyContains only strategic thinking, no execution files.
| File | Purpose |
|---|---|
hypotheses_index.md | Master index: all hypotheses with status |
[slug]/hypothesis.md | What we're testing, why, success criteria, validation results |
What does NOT belong here:
applications/campaign_*/applications/campaign_*/applications/campaign_*/messages/applications/campaign_*/cv_sent.mdapplications/ — ExecutionAll day-to-day work lives here. Two types of folders:
app_[company]_[date]/ — Formal ApplicationFrozen snapshot of CV + cover letter sent to one specific company.
| File | Purpose |
|---|---|
cv_sent.md | Exact CV text sent (frozen, never changes) |
cover_letter.md | (optional) Cover letter text (frozen) |
Created when: User formally applies to a company via ATS, email, or referral.
campaign_[name]/ — Batch OutreachWorking folder for cold outreach to multiple companies. Everything you need day-to-day in one place.
| File | Purpose |
|---|---|
outreach_plan.md | Company lists, tracks (A/B), priorities, status tracking, stats — single source of truth for the campaign |
cold_outreach_templates.md | Message templates by domain cluster |
cv_sent.md | CV snapshot for batch (one CV sent to all) |
messages/[company].md | Sent message drafts per company |
Created when: User starts a batch outreach campaign (many companies, one hypothesis).
Why everything in one folder: During execution, you shouldn't need to jump between folders. Open campaign folder → everything is there.
target_roles/ — Role Artifacts OnlyRole-specific analysis and generated documents. No outreach, no hypothesis content.
| File | Purpose |
|---|---|
role_profile.md | Merged JD requirements, domain context |
skills_mapping.md | Achievement-to-requirement mapping + readiness assessment |
cv.md | Living CV (evolves with each new JD) |
cover_letter.md | (optional) Cover letter draft for a specific company |
jd_[company]_[date].md | Full original JD text |
achievements/ — Evidence (Stories)Source of truth for all claims. Role-agnostic — no skills analysis here.
companies_i_worked/ — Company ProfilesBuilt FROM achievements. Provide context for story-gathering and CV generation.
| Artifact | Location |
|---|---|
| "I think post-raise startups need me" | hypotheses/[slug]/hypothesis.md |
| Success criteria for a hypothesis | hypotheses/[slug]/hypothesis.md |
| Validation results | hypotheses/[slug]/hypothesis.md |
| Company list for cold outreach | applications/campaign_[name]/outreach_plan.md |
| Message template for EdTech cluster | applications/campaign_[name]/cold_outreach_templates.md |
| Actual message sent to Company X | applications/campaign_[name]/messages/[company].md |
| Status: Company X replied | applications/campaign_[name]/outreach_plan.md (status + stats) |
| CV sent to 20 companies in a batch | applications/campaign_[name]/cv_sent.md |
| CV sent to 1 company via ATS | applications/app_[company]_[date]/cv_sent.md |
| Cover letter for formal application | applications/app_[company]_[date]/cover_letter.md |
| JD analysis | target_roles/role_[type]/role_profile.md |
| Skills mapping | target_roles/role_[type]/skills_mapping.md |
| Living CV (role-level) | target_roles/role_[type]/cv.md |
hypotheses/
├── README.md ← what this directory is, how to use it
├── hypotheses_index.md ← all hypotheses with status
└── [hypothesis_slug]/
└── hypothesis.md ← strategy, criteria, validation
applications/
├── README.md
└── my_data/
├── applications_index.md ← master tracking + conversion funnel
├── app_[company]_[date]/ ← formal applications (one per company)
│ ├── cv_sent.md ← frozen snapshot
│ └── cover_letter.md ← (optional, frozen)
└── campaign_[name]/ ← batch outreach (one per campaign)
├── outreach_plan.md ← companies, tracks, priorities, status + stats
├── cold_outreach_templates.md ← message templates by cluster
├── cv_sent.md ← CV snapshot for batch
└── messages/ ← sent message drafts
└── [company].md
User describes what they want to test. AI creates:
hypotheses/[slug]/hypothesis.md — strategy, positioning, success criteriahypotheses/hypotheses_index.md — adds entry with status 🔬 In progressapplications/campaign_[name]/ — creates campaign folder with outreach_plan.mdWhat goes in hypothesis.md:
target_roles/)applications/campaign_*/)What does NOT go in hypothesis.md:
Detailed guide for setting up and running a batch outreach campaign.
A campaign is created when a hypothesis moves from "defined" to "executing". Every campaign belongs to a hypothesis.
One hypothesis can have one campaign (typical) or eventually none (if hypothesis is paused before execution starts).
applications/my_data/campaign_[name]/
├── outreach_plan.md
├── cold_outreach_templates.md
├── cv_sent.md
└── messages/
Folder name uses slug + month: campaign_cold_outreach_may2026, campaign_scaling_europe_jun2026.
outreach_plan.md is the strategic document for this campaign.
Structure:
# Outreach Plan: [Campaign Name]
## Hypothesis
Link to hypothesis.md
## Company Source
Where the list came from (URL, LinkedIn post, job board)
## Tracks
### Track A: Formal Applications
Companies with open JDs that match a defined role.
### Track B: Cold Outreach
Companies where we pitch without an open role.
## Companies by Priority
### Priority 1 (send first)
* Company A — [cluster] — [reason]
* Company B — [cluster] — [reason]
### Priority 2
...
### Do Not Send
* Company X — reason (already applied, no fit, etc.)
Group companies by domain/industry for template targeting.
Clustering rules:
Example clusters:
Track A — Formal Applications:
target_roles/role_[type]/cv.mdapp_[company]_[date]/ for eachTrack B — Cold Outreach:
messages/[company].mdPriority assignment:
cold_outreach_templates.md contains templates per cluster.
Template structure:
### Cluster: [Name]
**Hook angle:** [what connects user to this domain]
---
**Subject:** [Short, specific]
Hi [First Name],
[1-2 sentences: why this company caught my eye — specific to their product/stage/market]
[1-2 sentences: what I bring — tied to the hook angle, with one concrete metric]
[1 sentence: soft CTA — "happy to chat" / "would love to share how I..." / "open to a conversation?"]
[Sign-off]
---
Template rules:
Anti-patterns:
Copy the relevant CV from target_roles/role_[type]/cv.md into campaign/cv_sent.md.
If the campaign uses multiple roles (e.g., one CV for Track A, another for Track B), snapshot both and note which is for which track.
For each company in priority order:
messages/[company].md — include subject line + bodyoutreach_plan.md — change status in the relevant table + update StatsThe outreach plan is the single source of truth for campaign status. It includes:
Stats section (at the top, after hypothesis):
## Stats
* **Sent:** N (Track B) + N (Track A formal)
* **Replied:** N
* **Reply rate:** X%
* **Interviews:** N
Status codes in tables:
| Status | Meaning |
|---|---|
| ⬜ Ready | Identified, not sent yet |
| ✅ Sent / Applied | Message or application sent |
| ✅ Replied | Positive response received |
| ❌ Rejected | Rejection received |
| ➡️ → Formal app | Cold outreach led to formal application |
| 🚫 Do not send | Decided not to reach out |
| 💬 Conversation | Ongoing conversation |
Campaign activity also appears in applications/my_data/applications_index.md:
Why two places: outreach_plan.md is for campaign-level tracking (all companies in one view). applications_index.md is for overall job search tracking (all channels, all roles, conversion funnel). When updating status, always update both.
When cold outreach leads to a formal application:
applications/my_data/app_[company]_[date]/ with frozen CV + CLoutreach_plan.md — change status to ➡️ → Formal app + update Statsapplications_index.md — add entry with channel "Cold outreach → Formal"One hypothesis can use multiple roles. Example: cold outreach uses "Founding Product & Ops Lead" CV, but a formal application to the same company might use "Customer Success Manager" CV.
When enough data is collected:
Based on validation:
# Hypotheses Index
***
## Status Overview
| Status | Count | Hypotheses |
| -------------- | ----- | ---------- |
| 🔬 In progress | N | Name |
| 📋 Queued | N | — |
| ✅ Validated | N | — |
| ❌ Invalidated | N | — |
| ⏸ Paused | N | — |
***
## Hypotheses
### 1. [Hypothesis Name]
* **Status:** 🔬 In progress
* **Hypothesis:** One-sentence summary
* **Positioning:** Role title
* **Source:** Where companies came from
* **Started:** YYYY-MM-DD
* **Completed:** —
* **Folder:** `[slug]/`
* **Campaign:** `applications/my_data/campaign_[name]/`
# [Hypothesis Name]
## What We're Testing
[Strategy description]
## Execution Plan
### Track A: Formal Applications
### Track B: Cold Outreach
* **Templates:** `applications/my_data/campaign_[name]/cold_outreach_templates.md`
* **Messages sent:** `applications/my_data/campaign_[name]/messages/`
### Company Clusters
[Groupings by domain]
**Detailed plan + status tracking:** `applications/my_data/campaign_[name]/outreach_plan.md`
***
## Success Criteria
| Metric | Target | Actual |
|--------|--------|--------|
| Response rate | X% | — |
| Interviews | Y | — |
***
## Related Roles
- `target_roles/my_data/role_[type]/` — [role description]
***
## Validation
[Fill when hypothesis concludes]
app_*/) tracked alongside campaigns (campaign_*/) in the same indexapp_*/, not in campaignsData flow:
achievements → target_roles (skills_mapping, cv)
→ companies_i_worked (profiles)
hypotheses (strategy) → applications/campaign (execution)
→ applications/app (formal snapshots)
External materials for this skill: /references/hypotheses/sources.md