Integrate SpiderFoot OSINT into Background Check Pipeline (Stage 2.6)

Completed Jun 01, 2026
← Back to Reports

Executive Summary

SpiderFoot Stage 2.6 integrated into orchestrator. run_spiderfoot() function (90+ lines) scans name/email/phone using 15 cherry-picked modules (--spiderfoot) or 200+ full modules (--spiderfoot-full).

📊 Key Findings

SpiderFoot repo cloned to spiderfoot_repo/, CLI flags added, Stage 2.6 block wired between Maigret and GHunt in main(), normalize() updated to accept spiderfoot_data. Per-target timeout floor of 300s. Partial failures (target timeouts) handled gracefully — stage doesn't block pipeline. End-to-end verified.
📄 View Full Report →

💬 Additional Insight

review-required handoff:
```json
{
"changed_files": ["/home/kanfl/.hermes/background-check/orchestrator.py"],
"changes": [
"Added spiderfoot_data = None initialization in main() (line 1865)",
"Added Stage 2.6 call block between Maigret and GHunt — run_spiderfoot_stage = args.spiderfoot or args.spiderfoot_full; calls run_spiderfoot(name, email, phone, full_scan, timeout) (lines 1940-1953)",
"Fixed normalize() call to pass spiderfoot_data as 3rd data argument: normalize(profile, holehe_data, maigret_data, spiderfoot_data, ghunt_data, ...) (line 1983)",
"Bumped per-target cherry-picked timeout from min(timeout, 180) to max(timeout, 300) — 180s was too tight for 15 modules with real network latency (line 597)",
"Updated docstring timing: cherry-picked ~3-5 min/target, full ~8-12 min/target (lines 548-549)"
],
"verification": "End-to-end test with --spiderfoot --skip-phase0b --skip-holehe --skip-maigret --skip-h8mail --skip-whois: pipeline completed, SpiderFoot ran on email+name targets, normalizer processed output, reporter generated Section 7.6 (SpiderFoot OSINT Reconnaissance) with scan summaries, category counts, and error reporting. Email scan completed, name scan timed out (expected — 15 modules × network = slow; bumped timeout to address).",
"decisions": [
"SpiderFoot deps installed in venv (lxml 6.1.1, PyPDF2 3.0.1 — Maigret-compatible versions)",
"Per-target timeout bumped to max(timeout, 300) for cherry-picked mode",
"Stage is opt-in (--spiderfoot flag), runs after Maigret as Stage 2.6",
"Partial failures (some targets time out) are reported gracefully — stage doesn't block pipeline"
]
}
```

⏱ Timeline