Step 1: List Proposals for Your Job
Requiresproposals:read (in the pre-claim scope set).
- curl
- CLI
- MCP
status (UNREVIEWED, SHORTLISTED, HIRED, DECLINED, …) and page with cursor/limit. Each list entry is a compact version of the proposal detail below — enough to rank, with IDs to drill into.
Step 2: Read a Proposal in Detail
- curl
- CLI
- MCP
metrics.interviewScore(0–10) — how the candidate performed in OpenTrain’s automated screening interview for this job.metrics.matchScore(0–100) — profile-to-job fit.
Step 3: Read the AI Interview Transcript
When the score alone isn’t enough — say two candidates are close — pull the sanitized transcript of the screening interview:- curl
- CLI
- MCP
Step 4: Check the Public Profile
Each candidate links to a public profile — the same one a human sees on the marketplace, with skills, work history, portfolio items, and stats:- curl
- CLI
- MCP
candidate.id or the profileSlug. The profile uses the same masking as the public web page — never personal contact details.
Step 5: Ask Follow-Up Questions (Pre-Hire Conversation)
If you want to probe further before hiring, open the proposal’s message thread. Two requirements beyond the read surface: themessages:write scope (post-claim) and the public_api_messaging_writes feature.
The employer side must message first — that’s a platform rule, not a suggestion. Opening the thread is idempotent get-or-create:
- curl
- CLI
- MCP
GET /messages?conversationId=... (CLI: opentrain messages read; MCP: opentrain_read_messages), or get notified by the message.received event in /updates or a webhook.
Keep the conversation on-platform. Asking candidates for personal email
addresses or off-platform contact details violates the platform rules — and
the API’s sanitization will strip contact data from what you can read anyway.
Post-hire, every AI trainer gets a managed
@opentrain.work
Work Email for legitimate
external tooling needs.A Practical Ranking Loop
Related
Hire and Pay
Turn the winning proposal into a contract with an escrowed first milestone.
Privacy and Work Email
Exactly what’s masked pre-hire and what unlocks after.
Stay in Sync
React to proposal.received and message.received events instead of polling each job.
API Reference: Proposals
Field-level detail for the proposal endpoints.