Skip to main content

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 Elektrotechniek
  • werkvoorbereider_installatie - Werkvoorbereider Installatietechniek
  • calculator_bouw - Calculator Bouw
  • software_engineer - Software Engineer/Developer
  • operator - 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

  1. Maak een feature branch
  2. Voeg tests toe voor nieuwe functionaliteit
  3. Run tests: python -m pytest
  4. Update documentatie
  5. 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 processing
  • openpyxl: Excel export formatting
  • pydantic: Data validation
  • scikit-learn: Similarity calculations
  • pytest: Testing framework

๐Ÿ“„ License

Eigendom van Recruitin B.V. - Alle rechten voorbehouden.

๐Ÿ“ž Support

Voor vragen en ondersteuning:


Recruitin B.V. - Technisch recruitment geautomatiseerd ๐Ÿค–

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

recruitin_boolean-1.0.13.tar.gz (40.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

recruitin_boolean-1.0.13-py3-none-any.whl (33.6 kB view details)

Uploaded Python 3

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

Hashes for recruitin_boolean-1.0.13.tar.gz
Algorithm Hash digest
SHA256 1a332c9d989b34113f0a739ececc69e7d79a0032942daee8d05688a188c38c29
MD5 48c217852e435389f15a018179500122
BLAKE2b-256 b3c956e7596a7e35ebf0521c439498685d28342c42e8eaaca5205662d1fa26d2

See more details on using hashes here.

File details

Details for the file recruitin_boolean-1.0.13-py3-none-any.whl.

File metadata

File hashes

Hashes for recruitin_boolean-1.0.13-py3-none-any.whl
Algorithm Hash digest
SHA256 b6851feb7df4bde7e7b814bdfd34ae99a3f5087b9eab26c5cf7bdfddfeed69d1
MD5 78821abe8631a78d6bd5c7acc40e6cab
BLAKE2b-256 fc408a64dae4c2a0e6b36a131432cfc04d6fde4a74bd6d541cabb50f75fc726d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page