list_sourcing_requirementsOpen requirements the caller may source for, each as the BRIEF a portal search is built from: title, client, location, work mode, skills, experience range, pay range and currency, a 1,200-character description excerpt, and the counts of profiles already on its review list (new / shortlisted / added). Filter by pay (payMin/payMax), experience, location or text; convert LPA/lakhs to absolute INR before calling (30 LPA = 3000000). Requires the browser_assistant plan feature.
list_sourced_profilesThe review list for one requirement — profiles the browser assistant captured from a portal, best deterministic fit first. Each carries the portal, its stable external id and URL, the visible facts (headline, company, role, location, experience, pay, notice, education, skills), the fit score with its reasons, the status (new / shortlisted / dismissed / added), whether contact has been revealed by a recruiter, the candidate id once promoted, and the other requirements the same profile sits on. Default status filter: new,shortlisted,added.
shortlist_sourced_profileMark a captured profile as shortlisted on its requirement's review list. Changes nothing on the pipeline — the recruiter promotes separately.
dismiss_sourced_profileDismiss a found or captured profile from its requirement's review list. It stays on record, so a re-capture does not resurface it as new and no later web search on the organisation finds the person again. An optional `reason` (240 characters, e.g. 'Too junior', 'Wrong location') is kept on the person and steers the next web search on the requirement - the planner reads it without the person's name. Changes nothing on the pipeline.
capture_sourced_profilesSave up to 100 profiles read off a portal page onto a requirement's review list (upsert by portal + external id; a re-capture refreshes facts and fit but never moves a status a recruiter set). The body has NO contact fields by design — contact enters only through record_sourced_contact after a recruiter revealed it on the portal. Each profile: externalId, name, and optionally profileUrl, headline, currentCompany, currentRole, location, preferredLocation, totalExperienceYears, currentCtc (+ currentCtcCurrency), expectedCtc, noticePeriodDays, education, skills[], summary, lastActiveLabel, extra{}.
record_sourced_contactRecord contact details a RECRUITER revealed on the portal (or typed) for a captured profile — email and/or phone. Writes an audit line (who, when, which requirement). The assistant never reveals contact itself; this records a human's action.
promote_sourced_profileCreate the candidate from a captured profile and attach them to its requirement at the 'sourced' stage — the pipeline quick-add, from a captured profile. Needs an email (recorded via record_sourced_contact or passed here). The org's identity rule applies: the same NAME and contact already on file (and visible to the caller) is attached, not duplicated — and refreshed from the captured profile only when the portal copy is newer than the rinkats record (the result's `existing.freshest` / `existing.updatedFields` say which; the email is never changed; fields a person edited by hand are kept, listed in `existing.keptManual`); first-touch provenance is 'sourced' by the caller for this requirement. A HUMAN decision: agents must confirm with the recruiter before calling.
start_sourcing_runFind talent for one open requirement on the public web. `web` (the default channel, and the only one the Sourcing tab runs) is a background run over public professional profiles with a hard budget of searches, page reads, model calls and minutes. For API callers two more channels exist: `database` (the organisation's own candidates and the talent pool, answered in this call; in the app that answer is Recommendations) and `portals` (the job-portal start links, for the recruiter to open in the browser assistant). The web run is queued and this call returns its run id at once - poll get_sourcing_run, then read the people with list_sourcing_people. `instructions` is an optional plain-words steer, 600 characters at most - what to change since the last search; a re-run without it is 'Find more' (same target, new queries and surfaces), and every earlier run's words and results and every dismissal with its reason travel to the planner as the search's conversation, so a re-run only adds people (anyone already found, dismissed included, is never found again). A second start while a run is planned, running or paused is refused with 409 `sourcing_running`. `scope` says where the web run may look (`searchIn`, the public surfaces, default all: the developer and research sites, `hackernews` - the monthly 'Who wants to be hired?' posts -, `bluesky` and `mastodon` - #opentowork posts -, `linkedin` - X-ray web queries only, a LinkedIn page is never fetched - and `web`) and what it never searches, reads or follows (`excludeHosts`); a start without it searches everywhere - the recruiter's Find talent dialog re-opens on the previous run's scope, an API caller passes it on every start. Every person found gets a likely-to-move score (`interest`) before the AI judges them; a reachable person scored `low` is kept as tier `unlikely` and never judged, so the run spends on people who will move. Pause, resume or cancel the run with pause_sourcing_run, resume_sourcing_run and cancel_sourcing_run. Requires a recruiter-tier key and the talent_sourcing plan feature. Nothing it finds reaches the pipeline: a person is added as a candidate only by a recruiter's decision (promote_sourced_profile).
get_sourcing_runOne web sourcing run on a requirement: status (planned, running, paused, done, failed, cancelled), the caps it started with, what it has spent, how many people it found (by tier: presented, borderline), where it was allowed to look (scope), the persona and surfaces it tried, the latest plain-words progress lines and, while it is planned, running or paused, `live`: the people found so far in the order found, each with the step it is in (found, reading, read, judging, done). Requires a recruiter-tier key and the talent_sourcing plan feature.
get_sourcing_run_logWhat one web sourcing run did, step by step: every plan, search (with its hits or refusal), page read or skipped (read, walled, robots, excluded, not a person, error), and decision about a person (found, judged with the fit, not judged, dropped with the reason), in time order, each with its detail (the full query, the address, the reason, the judge's strengths and concern). 300 rows at most (`capped`, `total`). A run still going returns what it has logged so far. Never a contact value. Requires a recruiter-tier key and the talent_sourcing plan feature.
pause_sourcing_runPause a planned or running web sourcing run: it stops within one search, page read or judgement, keeps everything it has done and reads `paused` (409 when it has already finished or is already paused). Requires a recruiter-tier key and the talent_sourcing plan feature.
resume_sourcing_runResume a paused web sourcing run: a new background job carries on from the same step without repeating a search, a page or a judgement; refused with 409 while the paused job is still stopping (try again in a moment) or when the run is not paused. Requires a recruiter-tier key and the talent_sourcing plan feature.
cancel_sourcing_runCancel a planned, running or paused web sourcing run for good: nothing more is searched, read or written (409 when it has already finished). Requires a recruiter-tier key and the talent_sourcing plan feature.
list_sourcing_peopleThe people a requirement's web sourcing found, best first, each with the dossier: why they fit, the evidence quotes with their links, the AI fit score and confidence, `interest` (likely to move: high, medium or low, with every signal behind it and its weight - availability posts, tenure, job changes, location, seniority gap, fame figures), and `contact`: the channels the person publishes on their own public pages (email, phone, LinkedIn, X, messaging handles, website, contact page), each with the page it was read on; `contactable` says whether one can reach them for a requirement (LinkedIn, an email for contact, a phone, a messaging handle or a contact page - a bare website is not; an email published on GitHub is flagged in `contact.emailFlags`, not for cold outreach). Contact values are never in a dossier. tier no_contact lists the people read but with no way to reach them, tier unlikely the reachable people unlikely to move (neither is judged). Promoting a person with a found email needs no email typed (a GitHub email is never used). Requires a recruiter-tier key and the talent_sourcing or browser_assistant plan feature.
list_site_profilesHow the browser assistant reads each portal, as versioned data (URL patterns, selectors with fallbacks, pacing caps, the controls it must never click). The extension refreshes these on start; a fixed selector reaches every install without a store release.