name: public-records-osint description: Investigate public records across OSINT sources. version: 0.1.0 author: Hermes platforms: [linux, macos, windows] metadata: hermes: tags: [Osint, PublicRecords, Investigation, DueDiligence]
Use this skill to investigate people, companies, contracts, sanctions, property, courts, archives, and news using public records. It focuses on entity resolution, cross-link analysis, timing correlation, and evidence chains. It does not do generic web research or private-data collection, and it stays Python stdlib only.
SEC_USER_AGENTSENATE_LDA_TOKENOPENCORPORATES_API_TOKENCOURTLISTENER_TOKENHERMES_OSINT_UAHERMES_OSINT_CACHEInvoke through the terminal tool.
SKILL_DIR/references/sources/ and the VPS fallback reference under SKILL_DIR/references/vps-fallback-sources.md.SKILL_DIR/scripts/.entity_resolution.py.timing_analysis.py.build_findings.py.python3 SKILL_DIR/scripts/fetch_sec_edgar.py --cik 0000320193 --types 10-K,10-Q --out data/edgar_filings.csvpython3 SKILL_DIR/scripts/fetch_usaspending.py --recipient "EXAMPLE CORP" --fy 2024 --out data/contracts.csvpython3 SKILL_DIR/scripts/fetch_senate_ld.py --client "EXAMPLE CORP" --year 2024 --out data/lobbying.csvpython3 SKILL_DIR/scripts/fetch_ofac_sdn.py --out data/ofac_sdn.csvpython3 SKILL_DIR/scripts/fetch_icij_offshore.py --entity "EXAMPLE CORP" --out data/icij.csvpython3 SKILL_DIR/scripts/fetch_nyc_acris.py --name "SMITH, JOHN" --out data/acris.csvpython3 SKILL_DIR/scripts/fetch_opencorporates.py --query "Example Corp" --jurisdiction us_ny --out data/opencorporates.csvpython3 SKILL_DIR/scripts/fetch_courtlistener.py --query "Smith v. Example Corp" --type opinions --out data/courts.csvpython3 SKILL_DIR/scripts/fetch_wayback.py --url "example.com" --match host --collapse digest --out data/wayback.csvpython3 SKILL_DIR/scripts/fetch_wikipedia.py --query "Bill Gates" --out data/wp.csvpython3 SKILL_DIR/scripts/fetch_gdelt.py --query '"Example Corp"' --timespan 1y --out data/gdelt.csvpython3 SKILL_DIR/scripts/entity_resolution.py --left data/lobbying.csv --left-name-col client_name --right data/contracts.csv --right-name-col recipient_name --out data/cross_links.csvpython3 SKILL_DIR/scripts/timing_analysis.py --donations data/lobbying.csv --donation-date-col filing_date --donation-amount-col income --donation-donor-col client_name --donation-recipient-col registrant_name --contracts data/contracts.csv --contract-date-col award_date --contract-vendor-col recipient_name --cross-links data/cross_links.csv --permutations 1000 --out data/timing.jsonpython3 SKILL_DIR/scripts/build_findings.py --cross-links data/cross_links.csv --timing data/timing.json --out data/findings.jsonGDELT for global news monitoring.
Acquire data.
fetch_*.py script through the terminal tool.Treat 0-row results with warnings as meaningful when the target simply is not covered by that source.
Resolve entities across sources.
Treat fuzzy and token-overlap matches as candidates, not conclusions.
Optionally test timing correlation.
timing_analysis.py when event timing near awards or filings matters.Treat statistical significance as a lead, not proof.
Build the findings JSON.
build_findings.py to emit findings with evidence[] and sources[].time.sleep(2) between requests.https://api.crossref.org/works/{doi}) and Unpaywall API (https://api.unpaywall.org/v2/{doi}?email=...) for academic papers — these have no bot detection.news.google.com/rss/articles/... and must be resolved to direct URLs. If redirect resolution is blocked, declare this limitation in the report rather than presenting redirect URLs as direct sources.hermes kanban claim <task_id> --workspace <path> or ensure the worker environment is mapped to the task workspace immediately. NEVER claim a task without an explicit workspace assignment.https://vmi3427693.tail8c1aaf.ts.net/files/<absolute_path>. Do not use local IP or port-based links.web_search or web_extract instead.domain-intel skill instead.arxiv skill for preprints.Run python3 SKILL_DIR/scripts/build_findings.py --cross-links data/cross_links.csv --timing data/timing.json --out data/findings.json and confirm each finding contains an evidence[] trail.