How to use JobMD.io
One platform, three ways in. A physician looking for a role, a hospital hiring, or a JobMD.io recruiter running the process. This page walks through each one, then explains what happens behind the screen — and what is still specification rather than software.
1. Where to start
Create an account at /signup and choose one of three roles. The role decides everything you see afterwards and cannot be changed by anything you send later.
| You are | You get |
|---|---|
| Physician | A profile to complete, and every open position scored against it. |
| Hospital | Your own organisation, your positions, and ranked candidates for each. |
| Recruiter | The whole pipeline across every client, and the ability to move candidates. |
After that, everything lives at /app. It is one address for all three roles — it renders your dashboard, not somebody else's.
2. If you are a physician
- Complete your profile. Specialty, years of experience, board certification, the states you are licensed in, robotic platforms, where you want to work, what you expect to be paid, and when you are available. A completeness bar shows what is still missing, measured against the fields a match actually depends on — not against every box on the form.
- Or paste your CV instead. The Read my CV tab reads the text and proposes values. It shows you the exact phrase each one came from, lists what it could not find, and writes nothing until you press apply. If your CV names two specialties, it tells you and uses the first rather than guessing silently.
- Look at your matches. Every open position is scored 0–100 against your profile, best first, with the seven dimension scores, the reasons it scored well, and the gaps.
- Say you are interested. That puts you in the recruiter's pipeline at the Interested stage. That is the only stage a physician can set.
3. If you are a hospital
- Post a position. Title, specialty, city and state, compensation range, employment model, call schedule, minimum years, whether robotic experience is required and on which platform. Every one of those fields is used by the scoring — a range you leave blank is a dimension that cannot be scored, and the match will say so.
- See ranked candidates. Every physician profile on the platform, scored against that specific position, best first, each with its reasons and gaps.
- Move people through the pipeline. Thirteen stages from Prospect to Placement. You can move anyone to any stage.
You only ever see your own organisation's positions and the candidates on them.
4. If you are a recruiter
A JobMD.io recruiter works across clients, so the recruiter view is deliberately wider: the whole pipeline, every organisation, and the ability to post a position on behalf of any of them. This is the one role that is not scoped to a single organisation, and that is a decision rather than an oversight.
5. How a match is scored
Seven dimensions are computed at once. Each returns a score out of 100, the reason it scored that way, and the gap if there is one. The overall score is their weighted average.
| Dimension | Weight | What it compares |
|---|---|---|
| Clinical | 30% | Specialty, board certification, years of experience, procedures. |
| Technology | 15% | Robotic platforms, years robotic, programme leadership. |
| Geographic | 15% | Preferred states, willingness to relocate. |
| Compensation | 14% | Expectation against the posted range. |
| Cultural / Professional | 10% | Employment model and call tolerance. |
| Career | 8% | Academic background against an academic post; leadership. |
| Availability | 8% | Available-from date against the requested start date. |
A worked example from the live system: a robotic surgeon with eleven years, da Vinci Xi experience and a Florida preference scores 99 against a Tampa robotic surgery role and 42 against a general surgery role in another state — and the 42 lists exactly why.
6. The pipeline, and who may move a candidate
Prospect → Contacted → Interested → Qualified → Matched → Submitted → Hospital Review → Interview → Offer → Negotiation → Accepted → Credentialing → Placement.
Recruiters and hospitals can move a candidate to any stage. Automation may set only four, and only where a named agent's own function produces that state:
| Stage | Which agent may set it |
|---|---|
| Contacted, Interested | Recruitment Outreach Agent |
| Qualified | Clinical Qualification Agent |
| Matched | Candidate Matching Agent |
| Interview | Scheduling Agent |
| Offer, Negotiation, Accepted, Credentialing, Placement | No agent, ever. People only. |
This is enforced in the code, not requested in a prompt. An attempt to move someone to Placement as an agent is refused with a reason.
7. What happens behind the screen
In plain terms, when a physician opens their matches:
- Their Talent Intelligence Record is loaded — one row, the profile they filled in.
- Every open position is loaded.
- Each pair is scored across the seven dimensions. This is ordinary arithmetic over two records.
- The scores are stored, so a recruiter later sees the same number the physician saw rather than a fresh guess.
- The list is sorted and returned with its reasons and gaps attached.
The data itself is seven tables: accounts, physician records, organisations, positions, matches, pipeline rows, and a log of every stage change with who made it and whether a person or an agent did.
8. The eleven agents — what is real today
Stated plainly, because it matters:
| Capability | Status |
|---|---|
| Accounts and roles for physicians, hospitals and recruiters | running |
| The Talent Intelligence Record | running |
| Organisations and open positions | running |
| Matching across the seven dimensions, with reasons and gaps | running |
| CV reading (Candidate Intake / CV Intelligence, in part) | running |
| The thirteen-stage pipeline with agent authority enforced | running |
| Three dashboards | running |
| Outreach drafting (Recruitment Outreach Agent) | running — drafts only, see below |
| Interview time proposals (Scheduling Agent) | running — proposes only |
| Stalled-candidate flagging (Follow-Up Agent) | running |
| Background rescan of every match (Candidate Matching Agent) | running |
| Conversational search (Recruiter Copilot) | running |
| Actually sending an email or booking a calendar | deliberately not built |
| Automated discovery from outside sources | blocked |
Why the platform never sends anything
The Outreach Agent writes the message and the Scheduling Agent proposes the times, but nothing leaves this platform on its own. That is a decision, not a gap. Server-sent mail across this estate was landing in client spam folders, so the standing rule is that a person reviews a draft and sends it themselves. There is no mail transport in the agent code at all, and the test suite fails the build if one appears. The platform also refuses to record a message as “sent” — it cannot know that, and claiming it would be a lie in your audit trail.
The Scheduling Agent proposes three weekday slots and says plainly that it has read no calendar and booked nothing, because it has no calendar access. Inventing availability would be worse than proposing none.
Why outside discovery is blocked rather than unbuilt
Section 10 of the original project request is truncated mid-sentence, and the “existing JobMD.io physician database” it names as a discovery source does not exist — there is no such table, endpoint or file. There is nothing to discover from until you say where that data lives. This is the one item waiting on you rather than on engineering.
What the agents will and will not do
- They draft, propose and flag. A person approves.
- They never move a candidate. A stage change goes through the same allow-list as everything else, and the four agent-settable stages are the only ones automation can reach.
- They invent nothing. Every figure in an outreach draft is copied from the position row. The Copilot searches only records that exist, and reports back every word of your question it did not understand — so you never have to guess which part of “robotic surgeons in the southeast” was actually applied.
- Gaps found by the matcher go to the recruiter, not into the message. A weakness is something to raise on a call, not something to write to a candidate.
9. For developers
Two agents generate the platform's own architecture documents from the original project request. They are build tooling, not part of the product a subscriber uses.
| Method | Path | Access | Returns |
|---|---|---|---|
| GET | /jobmd/health | public | Service state and where the app lives. |
| POST | /jobmd/api/v1/auth/signup | public | Creates an account and signs you in. |
| POST | /jobmd/api/v1/auth/login | public | Signs you in. |
| GET | /jobmd/api/v1/me | sign-in | Your account, profile and completeness. |
| GET | /jobmd/api/v1/matches | physician | Every open position, scored. |
| POST | /jobmd/api/v1/apply | physician | Enters you in the pipeline as Interested. |
| GET | /jobmd/api/v1/positions | sign-in | Open positions, or your own if a hospital. |
| GET | /jobmd/api/v1/pipeline | recruiter | The pipeline, and the agent authority table. |
| GET | /jobmd/api/v1/architect/plan | public | The build plan document. |
| GET | /jobmd/api/v1/spec | public | The architecture record document. |