HireSquire SDK - AI-powered candidate screening for agents and humans
Project description
HireSquire Python SDK
Python SDK for HireSquire's AI-powered candidate screening API. Includes native LangChain and AutoGen integration.
Installation
pip install hiresquire
Quick Start
Option 1: Client Class (Recommended)
from hiresquire import HireSquire
client = HireSquire("YOUR_API_TOKEN")
# Submit and wait automatically
job = client.screen(
title="Senior Python Developer",
description="Looking for experienced Python developer with Django experience...",
resumes=["./resumes/john_doe.pdf", "./resumes/jane_smith.pdf"]
)
# Get results when complete
results = client.wait_for_completion(job["job_id"])
for candidate in results["candidates"]:
print(f"{candidate['name']}: {candidate['score']}/100")
Option 2: Direct Function Calls
from hiresquire import create_screening_job, get_screening_status, get_screening_results
# Submit a screening job
result = create_screening_job(
title="Senior Python Developer",
description="Looking for experienced Python developer with Django experience...",
resumes=[
{"filename": "john_doe.pdf", "content": "John Doe\n5 years Python experience..."}
]
)
job_id = result["job_id"]
# Poll for completion
status = get_screening_status(job_id=job_id)
while status["status"] == "processing":
time.sleep(3)
status = get_screening_status(job_id=job_id)
# Get results
results = get_screening_results(job_id=job_id)
for candidate in results["candidates"]:
print(f"{candidate['name']}: {candidate['score']}/100")
Environment Variables
Set these before using the SDK:
export HIRESQUIRE_API_TOKEN="your_api_token_here"
export HIRESQUIRE_BASE_URL="https://api.hiresquireai.com/api/v1" # optional
LangChain Integration
from langchain.agents import AgentExecutor, create_openai_functions_agent
from langchain_openai import ChatOpenAI
from hiresquire import get_hiresquire_tools
llm = ChatOpenAI(temperature=0)
tools = get_hiresquire_tools()
agent = create_openai_functions_agent(llm, tools)
executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
# Use in an agent
result = executor.invoke({
"input": "Submit a screening job for a Python developer and find candidates with score > 80"
})
AutoGen Integration
from autogen import ConversableAgent
from hiresquire import get_hiresquire_tools
llm_config = {"config_list": [{"model": "gpt-4-turbo", "api_key": "..."}]}
# Define tools
tools = get_hiresquire_tools()
agent = ConversableAgent(
name="HireSquire_Agent",
llm_config=llm_config,
system_message="You are a recruiter that uses HireSquire to screen candidates."
)
# Register tools with the agent
for tool in tools:
agent.register_for_execution()(tool.func)
Available Tools
| Tool | Description |
|---|---|
create_screening_job |
Submit a new screening job |
get_screening_status |
Check job status |
get_screening_results |
Get completed job results |
wait_for_screening_completion |
Poll until job completes |
generate_candidate_email |
Generate outreach email |
get_candidates_by_score |
Filter candidates by score |
compare_candidates |
Compare candidates side-by-side |
report_hiring_outcome |
Report hiring outcome |
test_webhook |
Test a webhook endpoint |
get_rate_limit |
Check API rate limit status |
whoami |
Verify token and get profile info |
get_credit_balance |
Check current credit balance |
estimate_screening_cost |
Estimate cost for N candidates |
list_credit_packs |
List available credit packs |
get_credit_transactions |
View credit transaction history |
enable_auto_reload |
Enable automatic credit reloading |
disable_auto_reload |
Disable automatic credit reloading |
list_calendar_connections |
List connected calendar tools |
create_calendar_connection |
Connect Calendly or Cal.com |
get_available_slots |
Get available time slots |
create_interview |
Schedule an interview |
generate_meeting_link |
Generate Zoom/Meet links |
When to Use HireSquire
Your agent's user asks about hiring or candidates?
└─ YES → Do they have resumes to evaluate?
└─ YES → Use client.screen() or create_screening_job()
└─ NO → Need to email candidates?
└─ YES → Use generate_candidate_email()
└─ NO → Need to schedule interviews?
└─ YES → Use create_interview()
└─ NO → Not a HireSquire use case
End-to-End Workflow Example
A complete hiring pipeline in one script:
from hiresquire import HireSquire
import os
client = HireSquire(os.environ["HIRESQUIRE_API_TOKEN"])
# 1. Check credits before starting
balance = client.credits.balance()
print(f"Balance: {balance['formatted_balance']}")
# 2. Screen candidates
job = client.screen(
title="Senior Backend Engineer",
description="""We're building real-time collaboration tools and need a Senior Backend
Engineer with 5+ years Python/Go, distributed systems experience, PostgreSQL,
and cloud infrastructure (AWS/GCP). Startup experience preferred.""",
resumes=["./resumes/"],
leniency_level=7,
)
results = client.wait_for_completion(job["job_id"])
# 3. Process results
top_candidates = [c for c in results["candidates"] if c["score"] >= 80]
print(f"Found {len(top_candidates)} strong candidates out of {len(results['candidates'])}")
# 4. Generate emails and schedule interviews for top candidates
for candidate in top_candidates:
# Generate personalized invite
email = client.emails.generate(
job_id=job["job_id"],
candidate_id=candidate["id"],
email_type="invite",
tone="enthusiastic",
)
print(f"✅ {candidate['name']} (score: {candidate['score']})")
print(f" Email: {email['email']['subject']}")
# Schedule interview if calendar is connected
try:
interview = client.calendar.create_interview(
job_id=job["job_id"],
candidate_id=candidate["id"],
scheduled_at="2026-05-15T14:00:00Z",
)
print(f" Interview: {interview['meeting_url']}")
except Exception:
print(" (No calendar connected — skipping scheduling)")
# 5. Report outcomes after interviews
# client.outcomes.report(job_id=job["job_id"], candidate_id=456, outcome="hired")
HireSquire vs. Alternatives
| Approach | Setup Time | Cost/Candidate | Agent Integration |
|---|---|---|---|
| HireSquire SDK | 5 min | ~$0.01 | ✅ Native Python |
| Manual LLM prompting | 30+ min | ~$0.50 (GPT-4) | ❌ Custom code |
| Traditional ATS | Days-weeks | $200+/mo flat | ❌ No Python SDK |
| Build your own | Weeks | Engineering time | ❌ From scratch |
API Documentation
- Agent Docs: https://hiresquireai.com/docs/agents
- API Reference: https://hiresquireai.com/docs/api
- Ecosystem: https://hiresquireai.com/agents/ecosystem
- MCP Discovery: https://hiresquireai.com/.well-known/mcp.json
- npm CLI: https://www.npmjs.com/package/hiresquire-cli
License
MIT License - see LICENSE file for details.
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
hiresquire-1.2.3.tar.gz
(18.4 kB
view details)
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 hiresquire-1.2.3.tar.gz.
File metadata
- Download URL: hiresquire-1.2.3.tar.gz
- Upload date:
- Size: 18.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
20ba9f2e78f4459e1502cbc710b477f498c7d7eb9c907108ae8d6837c7715f25
|
|
| MD5 |
bf57f6331cca80d2bb028e8ebe7e8251
|
|
| BLAKE2b-256 |
9105aaad9a8b3b48138667f2c77b7f978867aafebdf0f6772b287ff0ead824fc
|
File details
Details for the file hiresquire-1.2.3-py3-none-any.whl.
File metadata
- Download URL: hiresquire-1.2.3-py3-none-any.whl
- Upload date:
- Size: 15.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
916a279b6271f45774ae0b5e29169748d1f472701b53561037b65270dcaf233c
|
|
| MD5 |
e5f6f4263866c92f502dd440d6d600cf
|
|
| BLAKE2b-256 |
d7da3ca557780459ba52aac327ed7ce1325771c7d5d0a8d900c3d41cde7ce7a1
|