Agents
Role Collector
Find the opening before it gets buried.
The problem
A useful job-sourcing system needs more than a list of career pages. It must discover openings across sources, extract inconsistent pages, recognize duplicates, and preserve when a posting was actually observed.
The approach
- Combine ATS API discovery, targeted search, funding events, company watchlists, and public LinkedIn posts in a node-based workflow.
- Extract through an ATS parser, JSON-LD, DOM parsing, and optional LLM fallback. Normalize timestamps and keep source metadata alongside each job.
- Check exact idempotency and semantic similarity before persistence. Surface results in a FastAPI/Jinja2 dashboard with freshness buckets and filters.
How it fits together
Discover URLs
Extract & normalize
Exact dedupe
Semantic checks
Freshness-first review
The result
An end-to-end discovery, extraction, storage, and review workflow across six ATS connectors, with configurable Langfuse tracing.
The engineering decision
Freshness is explicit data, not a guess based on sort order. Source timestamps and first-observed timestamps remain separate, including an unknown bucket when neither supports a confident claim.