LinkedIn Sourcer
Pulls candidates from LinkedIn matching a free-form vacancy description.
- signals
-
candidates_found - slots
-
startstop
Each agent is a small, focused service: sourcing, matching, voice screening, SMS, scheduling, dashboards. Each declares its signals (what it emits) and slots (what it consumes). Wire any of them into any chain. Bring your own — add a service and the orchestrator learns to use it.
The big AI recruiting platforms — the ones every agency owner has demoed — ship as a single product. Sourcing is included; voice is included; scheduling is included. You take all of them, or none of them. If the sourcing component is excellent and the scheduling component is awful, you do not have the option of using one and not the other. The pipeline shape is fixed.
The agency's reality is the opposite. Different verticals need different chains. Different clients need different sub-steps. A single fixed pipeline serves one workflow well and the other twelve poorly. The unit of abstraction has to be smaller than "the entire AI recruiter" — it has to be the individual agent.
Signals out. Slots in. That's all the orchestrator needs to wire any agent into any chain. Below is the shipping catalog — extending it is one Python file and one registration call.
Pulls candidates from LinkedIn matching a free-form vacancy description.
candidates_found startstop Surfaces engineers by stack signal — repo activity, language mix, contribution patterns.
candidates_found start Ranks a candidate pool against a vacancy. Hybrid retrieval + cross-encoder re-ranking.
matched score Outbound voice agent. Asks configured questions, scores answers, surfaces the transcript.
screenedfailed start Sends a personalized first-touch SMS, captures replies, forwards qualified leads.
repliedopted_out sendstop Offers timeslots to qualified candidates, books interviews, syncs to ATS.
scheduledno_show offer_slotscancel Human-in-loop step. Surfaces a checklist UI; the workflow pauses until the recruiter signs off.
validated request_review Live per-campaign funnel — queued / calling / screened / failed — with score and answer detail.
on_screenedon_failedon_scheduled Pushes qualified candidates into your ATS of record — Greenhouse, Lever, Workable.
synced push An agent is a small Python service that declares its signals, slots, and properties. Once registered with the orchestrator, it appears in the catalog and the AI can wire it into workflows just like any built-in agent.
from workflow_master.service import Service, signal, slot, prop
class MyVoiceProvider(Service):
questions: list[str] = prop(default_factory=list)
@signal
def screened(self, candidate_id: str,
score: float,
transcript: str): ...
@slot
async def start(self, candidates: list[dict],
vacancy: str):
# call your provider here, fire `screened` per call
...
Workflow Master is one product, three concerns. Here are the two that aren't this page.
After setup, a workflow lives in the engine — not in a chat. Agents fire events at each other directly. No LLM in the loop, no token bill, no candidate data leaving for a provider. Multi-day timing supported by construction.
Open →The conversational layer above the catalog. Describe the pipeline — it picks the agents, sets every property, wires the connections, and starts the campaign. Change the process mid-flight the same way: by talking.
Open →If your stack has a piece we don't ship yet — your ATS, your sourcing tool, your compliance vendor — tell us. We'll wrap it as an agent on the call.