← Back to all work

2022–current

Automated Threat Intelligence Collection at Scale

  1. Sources
  2. Scheduler
  3. Per-source collectors
  4. Normalization
  5. Intelligence platform
  6. Automated action / Inform decision making

1000s

of websites scraped on a fully automated, unattended schedule

This case study generalizes a recurring pattern from professional work across multiple threat intelligence roles. Employer, client, tooling and figures have been abstracted or approximated to preserve confidentiality.

Problem

CTI analysts were manually checking a growing list of open sources — blogs, vendor advisories, forums — for content relevant to active threats. Sources multiplied faster than analyst time, checks were inconsistent, and anything published outside working hours was picked up late or missed entirely.

Approach

Automate everything before judgement is needed: reliably fetch, parse, and normalize source content so an analyst’s first interaction with it is triage, not collection. That meant treating “the scraper” as infrastructure, not a one-off script.

Architecture

  • A scheduler runs each source on its own cadence.
  • Per-source collectors are isolated modules sharing a common interface, so one failing source doesn’t take the others with it.
  • Collectors handle rate-limiting, session handling, and structural changes gracefully rather than failing silently.
  • Normalized output lands in the intelligence platform in a consistent schema, ready for analyst triage.

Implementation

Built in Python, containerized per-collector for independent deploys and rollbacks. Each collector logs its own health so failures are visible before an analyst notices a source has gone quiet.

Lessons

The hard part of collection at scale isn’t fetching data — it’s staying resilient when sources change, block, or disappear without warning. Designing for graceful, visible degradation mattered more than being clever about any single source.

stack

  • Python
  • Docker
  • Cron
  • REST APIs

← Back to all work