Been freelancing for several years. Tired of manually scanning job listings trying to guess which ones fit my stack.
So I built a tool: embed your profile once, rank job listings by semantic similarity. No keyword rules — pure vector search.
How It Works
- Parse your profile (title, stack, portfolio) into a rich text chunk
- Embed it with
BAAI/bge-base-en-v1.5(768-dim) → store in Qdrant - Embed each job listing the same way
- Rank by cosine similarity
Real Results on 6 Sample Jobs
Rank Score Job
1 0.87 Senior AI/ML Engineer – Multi-Agent Systems ← correct
2 0.83 Full-Stack – Next.js + Python AI Backend ← correct
3 0.79 Backend Engineer – FastAPI + PostgreSQL ← correct
4 0.68 AI Chatbot Developer – GPT-4 Integration ← fair
5 0.71 AWS Solutions Architect – DynamoDB/Cognito ← correct
6 0.41 React Native Developer – iOS/Android ← correctly last
Most interesting: the React Native role scored 0.41 despite "React" appearing multiple times in my profile. Semantic context beats keyword matching.
What Surprised Me
Portfolio items matter a lot for match quality. When I added my AI platform (LaunchMentor.ai) and AWS compliance project to the profile text, match scores on AI/cloud jobs improved noticeably.
Usage
python3 matcher.py index-profile # embed your profile
python3 matcher.py add-csv jobs.csv # add job listings
python3 matcher.py match --top 10 # ranked output
Stack: Python · Qdrant (local) · sentence-transformers (BGE-base-en-v1.5) · Click · Rich
Repo: github.com/prog585/freelance-tools
Anyone else doing semantic filtering on job listings? Curious if there are better approaches.
Building LaunchMentor.ai — AI market intelligence for founders validating startup ideas.
Top comments (0)