Skip to main content

HireSquire Python SDK

PyPI Version Python Versions License

Python SDK for HireSquire's AI-powered candidate screening API. Includes native LangChain and AutoGen integration.

Agent Discovery & Registries

HireSquire is built natively for AI agents. Integrate HireSquire into your agentic workflows via these canonical sources:

Installation

pip install hiresquire

Quick Start

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://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
purchase_credits Purchase credits with saved payment method
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

Examples & Recipes

Check out the examples/ directory for production-ready integration patterns:

  • CrewAI Recruiter: A sequential multi-agent crew for screening and outreach.
  • AutoGen Recruiter: A conversational agent setup with native tool execution.
  • README: Detailed setup and dependency instructions for examples.

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.get_balance()
print(f"Balance: {balance['formatted_balance']}")

# 2. Purchase credits if low (optional)
if balance['balance'] < 10:
    client.credits.purchase(pack="satchel", payment_method_id="pm_123")


# 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

License

MIT License - see LICENSE file for details.

Metadata

Release files for hiresquire 1.2.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for hiresquire 1.2.6
File Size Uploaded Provenance Actions
hiresquire-1.2.6.tar.gz 19.7 kB Without provenance Details for hiresquire-1.2.6.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for hiresquire 1.2.6
File Interpreter ABI Platform Actions
hiresquire-1.2.6-py3-none-any.whl Python 3 none any Details for hiresquire-1.2.6-py3-none-any.whl

Total release size: 35.8 kB

Release files / hiresquire-1.2.6.tar.gz

Download URL hiresquire-1.2.6.tar.gz
Size 19.7 kB
Tags Source
SHA-256 checksum
How to use checksums
c19aeaf4b3cded6aa19fe3052c9d1f683dc2fa475b0ed2aa7c79bc5eb01c6d50
BLAKE2b-256 checksum
How to use checksums
63f951e9bed5e05be4ad80a74bd9063b8214ba3608e48a24156b17b556bff16e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.6

Release files / hiresquire-1.2.6-py3-none-any.whl

Download URL hiresquire-1.2.6-py3-none-any.whl
Size 16.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f52f2c467e5c4482dcb606dc085c7b1f9db108abf9d285fcc68e31f776b3e95f
BLAKE2b-256 checksum
How to use checksums
fc2642d2157cb8c0e1cc4d5f1450a6135a40a4dc035a7c3adfd6beec9c6a8dbe
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.6

Security for hiresquire 1.2.6

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.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page