All notable changes to this Actor are documented here.
- Initial scaffold:
.actor/ config (actor.json, input_schema.json, dataset_schema.json, output_schema.json, pay_per_event.json, Dockerfile), pinned pyproject.toml, and QA fixture.
.actor/icon.svg: Devil Scrapes container with Breezy HR's blue cloud-and-swirl app mark recreated in SVG primitives inside the bone roundel.
- Full implementation:
src/subdomain.py (slug resolution), src/models.py (ActorInput/ResultRow, Pydantic v2), src/client.py (curl-cffi, redirect-following disabled so a 302 cleanly signals an invalid slug, retry/backoff on 408/429/5xx/network only), src/parser.py (row-building, department/salary null-normalization, location field extraction), src/scraper.py (per-slug orchestration, three-way outcome tracking, honest partial-success status message), src/main.py (Actor SDK wiring, PPE charging).
- Local-green: 78 tests passing (
uv run pytest -q), ruff check clean, verify_input_prefill.py passing, pyright clean.
- README (Devil Scrapes brand voice, 10 canonical H2 sections),
promo.json (GTM manifest).