company-research ยท diff

git:20260327.de9c653 to git:20261001.74cc868

13 added, 4 removed. Audit A to A.

---
name: company-research
description: "Research a company and return a consistent dossier: executives + LinkedIn profiles, Glassdoor reviews, financial health, and latest news. Use when evaluating whether a role is worth pursuing."
---
# Company Research
Generate a consistent company dossier for job search decision-making.
## Trigger
User says: "research [company]", "look into [company]", "what do you know about [company]", or agent identifies a company worth investigating.
+ ## Dispatch
+
+ Run the research as ONE Agent-tool subagent with `model: sonnet`. The subagent produces the dossier (structure below), saves it, writes `job-search/data/research-results.json`, and runs the merge script and dashboard regen (After Research steps 1โ€“3). The parent session then reads the saved dossier, presents the summary, and offers the next step (After Research steps 4โ€“6). Bulk web research does not need the session-default model; the dossier is structured extraction, not user-facing prose.
+
## Output Format (ALWAYS this structure)
### 1) Overview
- Name, website, industry
- Size (employees, include numeric estimate/range), stage (startup/public/PE-backed)
- HQ location, remote policy
- Founded, key milestones
- Executives & key contacts table:
| Name | Title | LinkedIn | Notes |
|------|-------|----------|-------|
| CEO | ... | linkedin.com/in/... | Background |
| CTO/VP Eng | ... | ... | ... |
| Hiring Manager (if identifiable) | ... | ... | ... |
- Role-relevant outreach targets (ALWAYS include 2-5 people when available):
| Name | Title | Why relevant to this role | LinkedIn |
|------|-------|---------------------------|----------|
| ... | ... | Hiring owner / cross-functional partner / team lead | ... |
### 2) Signals
- Glassdoor/employee review snapshot (rating, pros/cons themes, CEO approval)
- Financial health (funding, profitability signals, layoffs/hiring freezes)
- Latest news table (last 90 days):
| Date | Headline | Source | Relevance |
|------|----------|--------|-----------|
| ... | ... | ... | High/Med/Low |
### 3) Fit
- Match to target roles (Y/N + why)
- Comp range estimate
- Culture fit signals
- Growth trajectory
- Recommendation: PURSUE / RESEARCH MORE / PASS
### 4) Risks
- Top red flags and uncertainty notes
- Data freshness concerns
- Validation gaps (what to verify before applying)
## Data Sources (in order)
1. web_search (company name + "glassdoor reviews")
2. web_search (company name + "funding crunchbase")
3. web_search (company name + "news" last 90 days)
4. web_search (company name + "executives leadership team")
5. Company careers page (for role details)
6. target-companies.csv (for existing research)
## After Research
These steps happen automatically after every dossier. Do not ask the user.
1. Save dossier to `company-research/dossiers/[company].md`
- 2. Update `job-search/data/target-companies.csv` with findings (fit_score, fit_rationale, industry, size, stage, recent_funding, tech_signals)
- 3. If recommendation is PURSUE, suggest: "Want me to tailor your CV for [role] at [company]?"
- 4. If recommendation is RESEARCH MORE, suggest: "Want me to dig deeper on [specific gap]?"
- 5. If recommendation is PASS, no suggestion needed.
+ 2. Merge findings into the tracker via the merge script (NEVER edit target-companies.csv directly):
+ - Write `job-search/data/research-results.json` as a JSON object (or array) per company.
+ - Allowed keys: `company` (required), `website`, `careers_url`, `role_url`, `industry`, `size`, `stage`, `recent_funding`, `tech_signals`, `open_positions`, `notes`, `role_family`, plus scoring fields `llm_score`, `llm_dimensions_evaluated`, `llm_rationale`, `llm_flags`, `scores`.
+ - Scoring fields must follow the canonical ratio method (`job-search/scripts/core/scoring.py`); omit `llm_score` if fewer than 5 of 10 dimensions were evaluable. Unknown columns are rejected to quarantine, not merged.
+ - Run: `uv run job-search/scripts/ops/merge_research.py`
+ 3. Regenerate the dashboard so the merge is visible: `uv run job-search/scripts/ops/generate_dashboard.py`
+ 4. If recommendation is PURSUE, suggest: "Want me to tailor your CV for [role] at [company]?"
+ 5. If recommendation is RESEARCH MORE, suggest: "Want me to dig deeper on [specific gap]?"
+ 6. If recommendation is PASS, no suggestion needed.
## Rules
- ALWAYS use this exact structure โ€” no freestyling
- Include sources for every section
- Flag when data is uncertain or outdated
- If Glassdoor has no reviews, say so (don't skip the section)
- Financial health for private companies = funding + signals (don't guess revenue)
## Error Handling
- If one source is unavailable (e.g., Glassdoor), continue and mark section as unavailable with source note.
- If conflicting data appears, report both values and recommend verification step.
- If company has minimal public footprint, return best-effort dossier with explicit confidence labels.