recruitertriage
Triage recruiter outreach with a small (<1B) language model. Built for the HuggingFace Build Small Hackathon.
The default backend is
SmolLM2-360M-Instruct.
It fits on a free HF Space CPU and still gets useful triage signal.
You can swap in any callable LM (a fine-tune, Qwen-0.5B, a
heuristic, anything that maps prompt -> string).
Install
pip install recruitertriage # core only (zero heavy deps)
pip install "recruitertriage[smollm]" # + SmolLM2 / transformers
pip install "recruitertriage[space]" # + Gradio for the Space UI
Python 3.10+.
What it does
Each piece of recruiter outreach gets bucketed into one of five labels:
| label | meaning |
|---|---|
interview |
looks like a real fit, schedule a call |
needs_info |
interesting but missing role/comp/level |
reject |
clearly off (wrong stack, wrong level) |
spam |
not a real role (vendor sales, lead-gen, scam) |
unsure |
low confidence — falls through to a human |
Each Decision carries a label, a confidence (0..1), a one-line
reason, an optional suggested reply, and the raw signals the model
saw.
Usage
from recruitertriage import triage, HeuristicLLM
# Zero-dep fallback (good for tests/CI):
d = triage(
subject="Staff ML Engineer @ AcmeAI",
body="Hi - we're hiring a Staff ML Engineer. Comp 250-320k...",
llm=HeuristicLLM(),
)
print(d.label, d.confidence, d.suggested_reply)
# Real small-model backend (requires the `smollm` extra):
from recruitertriage.smollm import make_smollm
llm = make_smollm("HuggingFaceTB/SmolLM2-360M-Instruct")
d = triage(subject="...", body="...", llm=llm)
triage() only cares that llm is Callable[[str], str], so any
small instruction-tuned LM works. The core parser is tolerant of
small-model JSON quirks (code fences, prose around the object, etc.).
HuggingFace Space
The space/ directory is the deployable Gradio app:
pip install "recruitertriage[space]"
python space/app.py
To publish:
hf login- Create a new Gradio Space (CPU basic is enough)
- Push the contents of
space/as the Space root
Demo
python examples/demo.py # uses HeuristicLLM
python examples/demo.py --smollm # uses SmolLM2-360M-Instruct
Companion libraries
recruitertriage slots into the @mukundakatta agent-stack:
- agentleash — USD/call budget cap + tool-arg gate
- birddog — audited Bright Data egress for scraping agents
- agentvet — tool-arg validation with retry hints
- agentsnap — snapshot tests for agent traces
License
MIT
Metadata
Release files for recruitertriage 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| recruitertriage-0.1.0.tar.gz | 10.1 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| recruitertriage-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 18.5 kB
Release files / recruitertriage-0.1.0.tar.gz
| Download URL | recruitertriage-0.1.0.tar.gz |
|---|---|
| Size | 10.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6c8af82400eb09a6b21d013320fe29179ff627ba24503130c3937f75a54c9f1a
|
|
BLAKE2b-256 checksum How to use checksums |
f8b7b7b864e2383a57a6a0d3e9d16fe68919d4de397d478d1c4070f3ec1a8307
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.4
|
Release files / recruitertriage-0.1.0-py3-none-any.whl
| Download URL | recruitertriage-0.1.0-py3-none-any.whl |
|---|---|
| Size | 8.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
583e33b7a6283bf2a42ad5f6bec2a1e802935547a06b1a400055e2ab6bf0da81
|
|
BLAKE2b-256 checksum How to use checksums |
005d2c8ce080225bb7c6044570610708e1bda6c29bda4ea0c86462c997cf6778
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.4
|
Security for recruitertriage 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.