I built a Crawlee-based crawler that collects website links, identifies contacts and documents, and ranks them using configurable scoring rules. A REST API exposes the stored results.
Hardest challenge
Pages vary widely in structure, and a link’s presence says little about its usefulness. The crawler had to collect candidates, retain their source page, and rank contacts and documents with explicit scoring rules.
Technical highlights
- Custom scoring algorithms to rank extracted data by relevance
- REST API with rate limiting
- SQLite storage for lightweight, portable operation
- Crawlee-based collection with separate scoring and persistence logic
Lessons learned
Separating collection from ranking makes the scoring rules easier to inspect and tune. Retaining source context matters because a high score is only useful if someone can understand why a link was selected.
Evidence and status
Public source includes the crawler, SQLite persistence, and API tests.
