osint-investigation

Cross-reference public records from SEC, OFAC, ICIJ, and court databases into evidence chains.

Updated May 18, 2026
One-click install
npx skills add https://github.com/ossoolli/Nexum-Core --skill osint-investigation-ossoolli
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: osint-investigation
Source: https://github.com/ossoolli/Nexum-Core/tree/main/optional-skills/research/osint-investigation
Command: npx skills add https://github.com/ossoolli/Nexum-Core --skill osint-investigation-ossoolli

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes scripts (resource) and references (resource) components.

What problem does it solve? Investigating people and companies across fragmented public records — corporate filings, government contracts, lobbying disclosures, sanctions lists, property deeds, and court records — requires manually querying a dozen disconnected databases and reconciling inconsistent entity names. This Skill automates acquisition, entity resolution, and evidence-chain construction across 11 public-records sources. ## Core Features & Use Cases - Multi-source data acquisition: Fetch normalized CSVs from SEC EDGAR, USAspending, Senate lobbying disclosures, OFAC SDN sanctions, ICIJ Offshore Leaks, NYC ACRIS property records, OpenCorporates, CourtListener, Wayback Machine, Wikipedia/Wikidata, and GDELT news — Python stdlib only, most sources need no API key. - Entity resolution with confidence tiers: Match names across sources using exact, fuzzy (word-bag), and token-overlap tiers, each labeled high/medium/low confidence so leads are never confused with confirmed facts. - Statistical timing analysis: Run permutation tests to detect whether events (e.g., lobbying filings) cluster suspiciously near contract awards, then compile everything into a findings.json where every claim traces to a specific source row. - Use Case: A journalist investigating pay-to-play patterns fetches a company's Senate lobbying filings and USAspending contract awards, resolves entity name variants between the two datasets, tests timing correlation, and produces a verifiable evidence chain for the story. ## Quick Start Ask the agent to investigate a company by fetching its SEC EDGAR filings and USAspending contracts, then cross-link the results and build a findings report.

Frequently Asked Questions about osint-investigation

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I investigate a company using public records?▼

Fetch data from relevant sources — SEC EDGAR for filings, USAspending for contracts, Senate LDA for lobbying — then run entity_resolution.py to match names across the CSVs and build_findings.py to compile an evidence chain. Each finding links back to specific source rows for verification.

How to check if a person or company is on the OFAC sanctions list?▼

Run fetch_ofac_sdn.py to download the full SDN list with addresses and aliases joined in, then search the normalized CSV by name. You can filter by sanctions program (e.g., SDGT, IRAN) or entity type (individual, entity, vessel, aircraft).

Does this OSINT tool require API keys or paid accounts?▼

Most sources work anonymously with no key, including USAspending, GDELT, Wayback, Wikipedia, and NYC ACRIS. Optional free tokens for OpenCorporates, CourtListener, and Senate LDA raise rate limits. SEC EDGAR only requires a User-Agent string with contact info.

Can I use this for federal campaign finance research?▼

No, FEC data is intentionally not covered because the free DEMO_KEY tier is unreliable for ad-hoc contributor-name queries. For federal donations, use https://www.fec.gov/data/ directly; this skill covers lobbying, contracts, and other public records instead.

Why did my entity search return zero results?▼

Private individuals often don't appear in sources like SEC EDGAR or USAspending unless they are corporate insiders or federal contractors. Scripts return 0 rows with an explanatory warning rather than an empty file, and EDGAR flags when a name resolved to an individual Form 3/4/5 filer.

What are the limitations of the entity matching?▼

Entity resolution uses stdlib-only token-bag matching with three tiers (exact, fuzzy, token overlap) — no Levenshtein, transliteration, or phonetic matching. Fuzzy matches are leads, not confirmed facts, and external fuzzy libraries must be installed separately if needed.