Run the full buyer intelligence pipeline against all 63 targets in the deal_research table (asset_type = 'Buyer Target'). For each company, build a dossier so detailed that Ewing can cold-call their VP of Corp Dev and reference specific quotes, specific filings, and specific strategic gaps that HR.com fills.
This is NOT a test run. This is production. Run all night. Do not stop until all 63 are complete.
Each company falls into one of four categories. The search strategy changes based on type:
Search 8 quarters of earnings call transcripts (Q1 2024 – Q4 2025):
- "{company_name} earnings call transcript Q1 2025" (repeat for Q2, Q3, Q4 2025 and Q1-Q4 2024)
- "{company_name} investor day presentation transcript"
- "{company_name} annual report 10-K SEC filing"
- "{ceo_name} {company_name} strategy interview podcast"
- "{company_name} acquisition announced 2024 2025"
- "{company_name} HR technology partnership"
- "{company_name} community platform ecosystem"
For PUBLIC companies, also retrieve from EDGAR:
- Most recent 10-K or 20-F (for foreign filers)
- Most recent 10-Q or 6-K
- Extract: revenue, revenue growth, EBITDA, strategic priorities, risk factors mentioning "community" or "audience" or "engagement" or "HR", M&A intent language, cash position
"{company_name} {pe_firm} investment thesis portfolio""{company_name} {pe_firm} partner interview""{pe_firm} fund letter limited partner update""{company_name} CEO interview podcast founders""{company_name} acquisition strategy bolt-on""{company_name} HR technology community""{pe_firm} HR technology investment""{company_name} press release funding round""{company_name} CEO interview podcast 2024 2025""{company_name} CEO keynote conference presentation""{company_name} press release partnership 2024 2025""{company_name} fundraising valuation""{company_name} HR technology strategy""{company_name} acquisition partnership community""{ceo_name} {company_name} vision strategy""{company_name} HR practice advisory announcement""{company_name} HR technology consulting partnership""{company_name} acquisition advisory services""{company_name} talent management workforce strategy"These companies are listed as PUBLIC in the database but are actually private. Treat them as PRIVATE:
Anthropic, Cohere, OpenAI, BambooHR, Culture Amp, Deel, Greenhouse, Lattice, Bevy, Mighty Networks, Khoros, Remote, Rippling
How do they sell? Revenue model? Sales motion (enterprise/PLG/channel)? ACV range? ICP? Market position in HCM?
Publicly stated challenges from earnings calls or interviews. Look for: "headwinds," "competitive pressure," "churn," "engagement," "retention," "community." Extract:
- Publicly stated challenges (array)
- Exact earnings call phrases (array)
- Competitive pressures
- Growth constraints
CEO's stated 2-3 year direction. Strategic priorities. Investment themes. Transformation narrative. Source from earnings calls, keynotes, podcasts, investor presentations.
Every deal since 2021: target name, deal value, date, stated rationale (exact quote from PR), outcome, source URL. Then characterize: bolt-on? Platform rollup? Audience aggregation? Appetite: active/selective/dormant?
From most recent 10-K/20-F and 10-Q/6-K:
- Revenue, growth rate, EBITDA
- HCM segment performance (if applicable)
- Strategic priorities from MD&A mentioning community, ecosystem, platform, audience, engagement, HR, workforce, talent
- Risk factors mentioning competitive threats in HR/HCM
- M&A language — capital allocation, pipeline mentions
- Cash position
Exact verbatim quotes. Never paraphrase. Each quote MUST have:
{
"speaker": "Full name",
"title": "Title at company",
"quote": "EXACT verbatim — do NOT paraphrase",
"source_url": "URL where published",
"date": "YYYY-MM-DD",
"context": "Earnings call Q3 2025 / keynote / interview / etc.",
"relevance_to_hrcom": "Which HR.com asset this connects to and why"
}
No source URL = don't include the quote.
For each acquisition in #4: original press release URL, analyst/media commentary, ratings.
STRATEGIC LOGIC (2-3 sentences): Why they need what HR.com has, using THEIR OWN WORDS.
ASSET MAP (1 paragraph): Which HR.com assets solve which of their challenges. Every claim references evidence.
BUSINESS MODEL INTEGRATION (2-3 paragraphs): Exactly how they'd deploy each HR.com asset inside their existing products. Name their actual products. Explain the revenue mechanism. Example level of specificity:
"SAP sells HCM to large enterprise customers. HR.com is the ultimate community to embed within SAP SuccessFactors. If the community alone is worth staying within, you get unlimited shots on goal to provide value ahead of selling them your solution."
COMPETITIVE BLOCK (1-2 sentences): What happens if a competitor acquires HR.com instead.
COLD CALL OPENER: One sentence for the corp dev VP's ear in the first 10 seconds. Must reference a specific quote or challenge.
EMAIL HOOK: One sentence for the CEO. Specific enough they think "this person understands our business."
GOLDEN NUGGETS (3-5): The best quotes paired with the HR.com asset that solves the stated pain. Each nugget includes: quote, speaker, quarter/source, why_golden, cold_call_opener.
PAIN MAPPING: For each publicly stated pain point, map it to the specific HR.com asset that solves it, with the source quote and a cold call line.
VISION MAPPING: For each stated strategic priority, map it to the HR.com asset that accelerates it.
CONVERGENCE POINTS: Where pain AND vision intersect — the strongest arguments for acquisition.
FIT SCORE: 1-100 with evidence-based rationale:
- 80-100: Multiple assets directly solve stated challenges. Acquisition pattern consistent. Quotes practically describe needing HR.com.
- 60-79: At least 2 assets address needs. Direction aligns. Some M&A appetite.
- 40-59: General alignment but limited direct evidence.
- 20-39: Tangential.
- 1-19: No meaningful alignment.
For every company:
1. Run Exa searches (8 queries per company, 5 results each, max_chars=8000)
2. For PUBLIC companies: fetch latest 10-K/20-F from EDGAR
3. Extract with Mistral (researcher_1): 8 categories
4. Cross-check with DeepSeek (researcher_2): same 8 categories
5. Merge with Groq (inspector_1): flag contradictions
6. Synthesize with Claude CLI (synthesizer): fit narrative + golden nuggets + scoring
7. PATCH results to Supabase
8. Save JSON locally
9. Log costs
After Pass 1 completes for all 63:
1. Sort by fit_score descending
2. For the top 20 scorers, run enhanced research:
- Additional Exa searches (CEO podcast interviews, conference keynotes, blog posts)
- Full pain_mapping (5+ items with source quotes)
- Full vision_mapping (5+ items)
- Convergence points (3+ items)
- Expanded quotes (target 10 per company)
- Business model integration with named products
3. Update Supabase rows with enriched data
4. Update JSON files
Exa.ai (web search) → raw research
↓
EDGAR API (SEC filings) → raw filing text (PUBLIC only)
↓
┌─────────────────────────────────────────┐
│ DUAL RESEARCH (parallel) │
│ Mistral (researcher_1) — 96/100 score │
│ DeepSeek (researcher_2) — 95/100 score │
│ Both extract same 8 categories │
└──────────────┬──────────────────────────┘
↓
┌─────────────────────────────────────────┐
│ INSPECTION (Groq — inspector_1) │
│ Merges researcher_1 + researcher_2 │
│ Flags contradictions │
│ FREE, fast (3-8s) │
└──────────────┬──────────────────────────┘
↓
┌─────────────────────────────────────────┐
│ CERTIFICATION (OpenAI — inspector_2) │
│ Validates all fields │
│ Checks for fabrications │
│ Assigns confidence levels │
└──────────────┬──────────────────────────┘
↓
┌─────────────────────────────────────────┐
│ SYNTHESIS (Claude CLI — synthesizer) │
│ Writes fit narrative + scoring │
│ Generates golden nuggets │
│ Writes cold call opener + email hook │
│ If fails: DUAL FALLBACK │
│ → Run BOTH OpenAI AND DeepSeek │
│ → Cross-check, use best result │
│ FREE via subscription │
└─────────────────────────────────────────┘
If any two agents disagree on a FACT, include BOTH versions with sources and FLAG it.
[KEY MANAGED VIA DOPPLER][KEY MANAGED VIA DOPPLER] (base: https://api.deepseek.com/v1, model: deepseek-chat)[KEY MANAGED VIA DOPPLER] (base: https://api.mistral.ai/v1, model: mistral-small-latest)[KEY MANAGED VIA DOPPLER] (base: https://api.groq.com/openai/v1, model: llama-3.3-70b-versatile, FREE)[KEY MANAGED VIA DOPPLER] (base: https://api.openai.com/v1, model: gpt-4o-mini)claude -p via subprocess (FREE, pipe prompt via stdin not CLI arg)rdnnhxhohwjucvjwbwch (and-call-command) — DECOMMISSIONED 2026-04-22. Data archived to dwrnfpjcvydhmhnvyzov in *_archive_2026_04_22 tables.https://rdnnhxhohwjucvjwbwch.supabase.co (dead — do not connect)$SUPABASE_SERVICE_ROLE_KEY env var for NEW instance.dwrnfpjcvydhmhnvyzov (Next Chapter OS DB) — use $SUPABASE_URL from ~/.zshrc⚠️ BOTH OLD URLS (asavljgcnresdnadblse and rdnnhxhohwjucvjwbwch) ARE NOW DEAD. Use dwrnfpjcvydhmhnvyzov only.
PATCH via /rest/v1/deal_research?company_name=eq.{company_name}&asset_type=eq.Buyer Target
| Field | Type | What goes here |
|---|---|---|
| story_narrative | TEXT | Full multi-section narrative: FIT NARRATIVE, BUSINESS MODEL INTEGRATION, COMPETITIVE MOAT, COLD CALL SCRIPT, EMAIL HOOK, RECENT STRATEGIC MOVES, GOLDEN NUGGETS, PAIN MAPPING, VISION MAPPING, CONVERGENCE POINTS |
| confidence | TEXT | HIGH if fit_score >= 70, MEDIUM if >= 40, LOW if < 40 |
| call_opener | TEXT | Cold call opener sentence |
| revenue | TEXT | Latest annual revenue with source |
| employees | TEXT | Employee count with source |
| business_strength | TEXT | Primary strength category |
⚠️ This table feeds the Lovable app LIVE at the Debbie Deal Room. Whatever you write here shows up immediately.
UPSERT via /rest/v1/buyer_dossiers (use slug as unique key):
| Field | Type | What goes here |
|---|---|---|
| slug | TEXT | kebab-case company name (unique) |
| company_name | TEXT | Full company name |
| ticker | TEXT | Stock ticker (or null for private) |
| buyer_type | TEXT | PUBLIC / PE_BACKED / PRIVATE |
| ceo_name | TEXT | CEO name |
| exa_research_raw | JSONB | All Exa results with URLs |
| sec_filing_raw | JSONB | SEC filing extractions |
| analysis_dual_raw | JSONB | Both researcher outputs |
| validation_report | JSONB | Inspector merge + contradictions |
| certification | JSONB | Certified data with confidence |
| certified_challenges | TEXT | Stated challenges from evidence |
| certified_ceo_vision | TEXT | CEO direction with quotes |
| certified_key_quotes | TEXT | All quotes with attribution |
| certified_acquisition_history | TEXT | M&A history with outcomes |
| certified_acquisition_appetite | TEXT | active/selective/dormant |
| certified_hr_tech_presence | TEXT | HCM market position |
| certified_community_strategy | TEXT | Community/ecosystem approach |
| certified_fit_signals | TEXT | Specific signals HR.com addresses |
| certified_market_position | TEXT | Market position detail |
| certified_revenue | TEXT | Revenue with source |
| certified_employees | TEXT | Employee count with source |
| quotes | JSONB | Array of quote objects |
| quote_count | INTEGER | Number of verified quotes |
| fit_narrative | TEXT | Full narrative |
| fit_score | INTEGER | 1-100 |
| fit_rationale | TEXT | Evidence-based rationale |
| fit_synthesis_raw | JSONB | Full synthesis output |
| pipeline_status | TEXT | QUEUED → RUNNING → SUCCESS / FAILED |
| research_cost_usd | FLOAT | Total API cost |
| completed_at | TIMESTAMP | ISO timestamp |
sec_risk_factors_relevant → Postgres text[] array → use to_pg_array() functionvision_strategic_priorities → Postgres text[] array → use to_pg_array() functionjson.dumps() for structured datajson.dumps() for the valueLog every API call to dossier_cost_log table:
- api_name, operation, cost_usd, tokens_in, tokens_out, model, provider
~/Projects/dossier-pipeline/data/buyer_dossiers/{slug}.json~/Projects/dossier-pipeline/data/overnight_progress.jsonewing-operating-system/dossier-pipeline~/Projects/dossier-pipeline/data/overnight_progress.json:json
{"sap-successfactors": "done", "workday": "done", "oracle-hcm": "running", "ukg": "queued"}deal_research where asset_type = 'Buyer Target'[{n}/63] {company_name} — fit_score: {score} — cost: ${cost} — {status}Estimated cost: $4-6 total for all 63 companies.
Estimated time: 4-6 hours.
Start now. Begin with Pass 1.