Production-ready Boolean search automation for technical recruitment with AI-powered lookalike matching
Project description
Recruitin Boolean Search Generator
Een complete toolkit voor het genereren van boolean search strings, look-alike matching, en training data export voor recruitment AI modellen.
๐ Features
- Boolean Search Generatie: Genereer gerichte LinkedIn boolean searches per functiegroep
- Look-alike Matching: Vind vergelijkbare profielen tussen functiegroepen
- AI Training Data: Export Hugging Face compatibele training datasets
- Taxonomie Management: Gestructureerde functiegroep definities met skills/titels/concurrenten
- Excel Integratie: Import vacatures, export search resultaten met formatting
๐ Quick Start
Installatie
# Clone the repository
git clone <repo-url>
cd recruitin_boolean
# Install dependencies
pip install -r requirements.txt
Python API Usage
from recruitin_boolean import JobDiggerBooleanProcessor
# Initialize processor
processor = JobDiggerBooleanProcessor()
# Generate searches voor een vacature
searches = processor.search_generator.generate_all_searches_for_vacancy(
vacancy_title="Senior Software Engineer",
company="TechCorp",
location="Amsterdam"
)
print(f"Functiegroep: {searches['functiegroep']['naam']}")
for search_type, search_data in searches['searches'].items():
print(f"{search_type}: {search_data['boolean']}")
# Run volledige pipeline
files = processor.run_full_pipeline(
input_file="vacatures.xlsx",
output_dir="exports/"
)
CLI Usage
# Toon alle functiegroepen
python -m recruitin_boolean --show-taxonomy
# Genereer searches voor specifieke functiegroep
python -m recruitin_boolean --search werkvoorbereider_elektro
# Verwerk vacancy bestand
python -m recruitin_boolean -i vacatures.xlsx -o exports/
# Skip Hugging Face data generatie
python -m recruitin_boolean -i vacatures.xlsx --no-hf
# Verbose output
python -m recruitin_boolean -i vacatures.xlsx -v
๐ฆ Package Structuur
recruitin_boolean/
โโโ models/ # Data modellen
โ โโโ functiegroep.py # FunctieGroep dataclass
โ โโโ taxonomie.py # FUNCTIEGROEPEN database
โโโ search/ # Boolean search generatie
โ โโโ boolean_builder.py # BooleanSearchGenerator
โ โโโ validators.py # Pydantic validatie (nieuw)
โโโ ai/ # AI componenten
โ โโโ lookalike_matcher.py # LookAlikeMatcher
โ โโโ huggingface_exporter.py # HuggingFaceDataGenerator
โโโ pipeline/ # Hoofdorkestratie
โ โโโ processor.py # JobDiggerBooleanProcessor
โ โโโ exporters.py # Excel/data export (nieuw)
โ โโโ cli.py # Command-line interface (nieuw)
โโโ tests/ # Test suite
โโโ test_recruitin_boolean.py
๐ง Core Components
1. FunctieGroep Model
from recruitin_boolean.models import FunctieGroep, FUNCTIEGROEPEN
# Access functiegroep
fg = FUNCTIEGROEPEN['werkvoorbereider_elektro']
print(f"Naam: {fg.naam}")
print(f"Skills: {fg.skills}")
print(f"Concurrenten: {fg.concurrenten}")
# Get all terms
all_terms = fg.get_all_terms()
2. Boolean Search Generator
from recruitin_boolean.search import BooleanSearchGenerator
generator = BooleanSearchGenerator(FUNCTIEGROEPEN)
# Find matching functiegroep
match = generator.find_best_functiegroep_match("Software Engineer")
# Generate searches voor functiegroep
fg = FUNCTIEGROEPEN['software_engineer']
searches = generator.generate_combined_search(fg)
print(searches['comprehensive']) # Full boolean string
3. Look-alike Matcher
from recruitin_boolean.ai import LookAlikeMatcher
matcher = LookAlikeMatcher(FUNCTIEGROEPEN)
# Find similar profiles
similar = matcher.find_similar_profiles('software_engineer', min_similarity=0.3)
# Generate hybrid search
hybrid = matcher.generate_hybrid_search(['software_engineer', 'werkvoorbereider_elektro'])
4. Hugging Face Exporter
from recruitin_boolean.ai import HuggingFaceDataGenerator
hf_generator = HuggingFaceDataGenerator(FUNCTIEGROEPEN)
# Export training data
files = hf_generator.export_to_huggingface_format("hf_output/")
print(f"Classification data: {files['classification']}")
print(f"Similarity data: {files['similarity']}")
print(f"NER data: {files['ner']}")
๐ Input/Output Formats
Vacancy Input Excel Format
| Vacature | Bedrijf | Locatie |
|----------------------|-----------|-----------|
| Senior Software Engineer | TechCorp | Amsterdam |
| Werkvoorbereider Elektro | ElectroCo | Utrecht |
Output Boolean Searches
| Functiegroep | Search_Type | Boolean_String | Priority |
|--------------|-------------|---------------|----------|
| Software Engineer | COMPREHENSIVE | (software engineer OR developer) AND (python OR java) | 1 |
| Software Engineer | FOCUSED | software engineer AND python | 2 |
๐งช Testing
# Run all tests
python -m pytest tests/
# Run specific test
python -m pytest tests/test_recruitin_boolean.py::TestBooleanSearchGenerator
# Run with coverage
pip install pytest-cov
python -m pytest tests/ --cov=recruitin_boolean --cov-report=html
๐ Available Functiegroepen
Momenteel ondersteunde functiegroepen:
werkvoorbereider_elektro- Werkvoorbereider Elektrotechniekwerkvoorbereider_installatie- Werkvoorbereider Installatietechniekcalculator_bouw- Calculator Bouwsoftware_engineer- Software Engineer/Developeroperator- Operator/Machinist
Elke functiegroep bevat:
- Titels: Functietitels en variaties
- Skills: Technische vaardigheden
- Look-alikes: Vergelijkbare rollen
- Concurrenten: Bedrijven in de sector
- Locaties: Relevante locaties
โ๏ธ Configuration
Search Parameters
# Customize search generation
generator = BooleanSearchGenerator(FUNCTIEGROEPEN)
# Override LinkedIn location mapping
custom_locations = {
"Amsterdam": "Netherlands > North Holland > Amsterdam",
"Custom City": "Netherlands > Province > City"
}
generator.linkedin_locations.update(custom_locations)
# Generate with custom location
searches = generator.generate_all_searches_for_vacancy(
vacancy_title="Software Engineer",
location="Custom City"
)
Export Settings
# Customize output directory structure
files = processor.run_full_pipeline(
input_file="vacatures.xlsx",
output_dir="custom_exports/",
generate_hf_data=False # Skip HF data generation
)
๐ค Contributing
- Maak een feature branch
- Voeg tests toe voor nieuwe functionaliteit
- Run tests:
python -m pytest - Update documentatie
- Submit pull request
๐ Performance
- Boolean Generation: ~1ms per functiegroep
- Vacancy Processing: ~10ms per vacature
- Look-alike Matrix: ~100ms voor 5x5 matrix
- HF Export: ~500ms voor alle datasets
๐ ๏ธ Dependencies
pandas: Excel processingopenpyxl: Excel export formattingpydantic: Data validationscikit-learn: Similarity calculationspytest: Testing framework
๐ License
Eigendom van Recruitin B.V. - Alle rechten voorbehouden.
๐ Support
Voor vragen en ondersteuning:
- Email: wouter@recruitin.nl
- GitHub Issues:
Recruitin B.V. - Technisch recruitment geautomatiseerd ๐ค
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file recruitin_boolean-1.0.13.tar.gz.
File metadata
- Download URL: recruitin_boolean-1.0.13.tar.gz
- Upload date:
- Size: 40.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1a332c9d989b34113f0a739ececc69e7d79a0032942daee8d05688a188c38c29
|
|
| MD5 |
48c217852e435389f15a018179500122
|
|
| BLAKE2b-256 |
b3c956e7596a7e35ebf0521c439498685d28342c42e8eaaca5205662d1fa26d2
|
File details
Details for the file recruitin_boolean-1.0.13-py3-none-any.whl.
File metadata
- Download URL: recruitin_boolean-1.0.13-py3-none-any.whl
- Upload date:
- Size: 33.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b6851feb7df4bde7e7b814bdfd34ae99a3f5087b9eab26c5cf7bdfddfeed69d1
|
|
| MD5 |
78821abe8631a78d6bd5c7acc40e6cab
|
|
| BLAKE2b-256 |
fc408a64dae4c2a0e6b36a131432cfc04d6fde4a74bd6d541cabb50f75fc726d
|