Phone agent
How JobHunter answers an employer's call through PhoneGate, and how the facts from that call are checked before anyone relies on them.
Employers sometimes call back. The phone agent lets JobHunter pick up, say who it is, ask the questions it needs answered, and write down what it learned, without pretending to be a person.
The call agent
call-agent is its own process. It reads call events from the PhoneGate API, matches an incoming number to an application it sent, and stores a CommunicationSession with its CommunicationTurn records.
It is off by default. It needs the PhoneGate address and a credential, and auto-answer is a separate setting that is also off by default.
When auto-answer is on, the agent checks the call state, the block list and the operator's stop switch. Then it answers, states that it is an automated assistant, listens and follows a scripted, deterministic conversation with a time limit. An operator can pause auto-answer or take over the current call from the Calls panel.
No free-form conversation
The call is not a real-time chat with a language model. It follows a fixed script. The agent does not book interviews, sync calendars or place outgoing calls or SMS on its own.
Verifying the call afterwards
After a call ends, the system keeps short audio clips as evidence and runs three strict passes of a Russian-language model through llmRouter. Each extracted fact is in one of four states:
| State | Meaning |
|---|---|
candidate |
The model heard it. Nothing else supports it yet. |
confirmed |
Backed by a related SMS or by an audited operator action. |
conflict |
Two sources disagree. |
unknown |
Not enough information. |
A candidate becomes confirmed only through a linked SMS or an operator's confirmation. The session as a whole is then labelled high_confidence, confirmed or needs_review.
Messages are read from PhoneGate idempotently, so a retry never duplicates a fact. Telegram notifications use bounded retries and a revision number.
Operator review
The Calls panel shows the review queue. The operator compares the transcript with the audio evidence and then confirms or corrects each fact. This human step is what turns a model's guess into something the system treats as true.