Skip to main content

Scenario

Your Greenhouse pipeline has thousands of candidates across sources (LinkedIn, referrals, careers page, agencies) and stages (applied, phone screen, onsite, offer, hired, rejected). Each segment has a distinct experience of your employer brand. You extract candidates grouped by source and stage outcome, build Mavera personas representing each segment, then run Focus Groups to test your employer messaging before publishing it. Flow: Greenhouse GET /candidates → Filter by source/stage → Aggregate traits → Mavera POST /personasPOST /focus-groups → Employer messaging validation

Architecture

Code

Example Output

Error Handling

Greenhouse returns 429 with a Retry-After header. The code sleeps 10 seconds on 429. For bulk pulls (1000+ candidates), add exponential backoff and paginate with per_page=100.
Not all applications have a source object. The code defaults to "Unknown". Check your Greenhouse → Configure → Sources to ensure sources are assigned to all job boards.
Valid statuses: active, rejected, hired. Custom stages show under current_stage rather than top-level status.
Greenhouse uses HTTP Basic with the API key as username and an empty password. Always encode as base64(key + ':') — the trailing colon is required.