Automated Project Matching for an Independent Consultant
Local multilingual AI, configurable filters and automated opportunity digests
- Industry
- Independent technology consulting
- Focus
- Local AI · Semantic Matching · Workflow Automation · Self-Hosted Software
An independent technology consultant needed a more efficient way to identify relevant freelance opportunities across German and international markets. A custom monitoring agent was developed to compare newly listed projects against multiple CVs and deliver relevant opportunities by email. The self-hosted application combines local AI-based matching, configurable selection criteria and automated notifications.
The challenge
Repeated marketplace checks and manual review took effort. Keyword searches missed equivalent skills expressed differently in German and English. Multiple CVs highlighting different areas of expertise made screening more complex. The solution needed to compare several profiles, support both languages, apply location/remote-work/contract constraints, avoid repeated alerts and keep CV content out of external AI services.
Our contribution
A Python-based monitoring agent was built to check public marketplace listings on a configurable schedule, with a default interval of 30 minutes.
- Extracted text from PDF and DOCX CVs and divided it into smaller sections. A locally running multilingual embedding model compares project descriptions semantically with CV content.
- Assigned a relevance score and identified the best-matching CV for each project. Shared terms and skills provide supporting evidence in notifications.
- Applied hard filters before semantic matching: country, minimum remote-work percentage, contract type, required/excluded keywords, excluded companies and end-client projects. An adjustable score threshold controls selection breadth.
- Grouped qualifying projects into SMTP email digests with links, scores, the best-matching CV and supporting terms, in HTML and plain-text formats.
- Used SQLite to record processed projects and notification status. When email delivery fails, matching projects remain pending for a later delivery attempt.
- Packaged the application with Docker Compose for an always-on server. CV processing and embedding inference run locally; persistent volumes retain database state and the downloaded model.
Technical approach
Public-page collection feeds hard filtering and local semantic scoring against CV sections. SQLite tracks processing and notification state, and SMTP delivers qualifying projects in a digest. The consultant retains responsibility for reviewing matches and deciding whether to apply.
Technical implementation
| Area | Implementation |
|---|---|
| Application | Python |
| Data collection | HTTP requests and public-page parsing |
| CV processing | PDF and DOCX text extraction |
| Matching | Local multilingual sentence embeddings and keyword overlap |
| Persistence | SQLite |
| Notifications | SMTP with HTML and plain-text emails |
| Deployment | Docker Compose |
| Diagnostics | Configuration validation, dry-run scoring and application logs |
Validation and findings
The implementation was validated through 15 automated tests, live parsing checks against both marketplace regions and a successful run of the multilingual embedding model. Python package creation was also verified.
Live testing exposed incomplete metadata extraction and differences in contract-type labels that simplified fixtures had missed. The parser was adjusted to use structured project data embedded in public pages.
A subsequent operational check showed that missing configuration, missing CV files or a container that is not running prevent notifications regardless of matching quality. A direct SMTP test procedure was documented to separate delivery problems from matching and scheduling issues.
The result
The project delivered a functional foundation for automated opportunity discovery: multiple CVs can be evaluated consistently, relevant projects ranked, and notifications delivered through a single email digest. Time savings, match precision and commercial outcomes have not yet been measured. The expected benefit is reduced manual screening, with the consultant retaining responsibility for reviewing opportunities and deciding whether to apply.
Limitations and lessons learned
- Public-page collection needs maintenance: marketplace structure and metadata can change.
- Thresholds require calibration: semantic similarity signals relevance but does not guarantee suitability.
- Coverage depends on polling frequency: only the newest listing page in each market is checked, so high publication volume or extended downtime can cause missed opportunities.
- Operational testing matters: configuration validation, SMTP testing and dry-run scoring help diagnose problems independently.
- Local AI supports data control: CV content is not sent to a cloud AI provider for semantic matching.
Identifying client information, CV content, infrastructure details and email addresses have been omitted.
Capabilities demonstrated
Python · SQLite · SMTP · Docker Compose · PDF · DOCX
Local AI · Multilingual semantic matching · Document processing · Workflow automation · Self-hosted deployment · Email delivery · Operational diagnostics
