In build
In buildJob descriptions built from the requisition you already filled in
Every field a good job description needs is already on the requisition. Generating from that structure beats generating from a paragraph somebody typed into a box.
Surhires is building a job description generator for the Wave 1 release. It will generate from the structured requisition, using the must-haves, seniority band, location policy and salary band already captured, rather than from a free-text prompt, and will check the result against pay transparency rules before publication.
By Surhires Editorial · Published · Reviewed
In the product: in build for Wave 1, generating from the structured requisition rather than from a prompt
Where this stands
The generator is in active build for the Wave 1 release. It is not in the product today, and everything below is written in the future tense on purpose. The requisition structure it depends on is the same structure that matching and shortlisting already use, which is why it is a build rather than a research project.
If you are evaluating now, the honest position is this: you can post jobs today and you can analyse a description you have written today with the job description analyzer tool, but you cannot yet press a button and have the description written from the requisition. That arrives with Wave 1.
Generating from structure, not from a prompt
Most job description generators are a prompt box. You type senior backend engineer, fintech, London, and receive four hundred words of confident, generic text that mentions a fast-paced environment and a rockstar team. It reads fine and it describes nothing, because nothing specific went in.
The requisition already holds what the description needs: the must-have requirements and the nice-to-haves, the seniority band, the location and remote policy expressed as a policy rather than a city name, the salary or rate band with its currency, the interview stages, the work authorisation requirement and the client context. Generating from those fields means the output can only say things the requisition actually asserts, and when a field is missing the generator will say the field is missing rather than inventing a plausible sentence to cover it.
- Must-haves and nice-to-haves rendered as separate, honest requirement lists
- Seniority expressed as the band on the requisition rather than an inflated title
- Location written as the actual policy: on-site, hybrid with named days, or remote within a region
- Salary or rate band carried through with its currency, not paraphrased away
- Interview process described from the stages configured on the requisition
- Gaps reported as gaps, with a prompt to fill the field rather than a generated guess
The pay transparency check runs before the posting goes out
A growing list of states and countries require a salary range on a posting, and the rules differ on what counts: whether a range must be good faith, how wide it may be, whether benefits must be described, and which postings are in scope when the role is remote and could be performed from a covered location.
Every generated posting will be checked against the disclosure rules of the places it is being published to, and flagged before it goes out rather than after somebody complains. Where a range is missing, too wide to be meaningful or absent from a posting that will be visible in a covered jurisdiction, the generator will hold the posting and say which rule triggered the flag. The validator that performs the check is a feature in its own right and is documented at /features/pay-transparency-validator, and it will run whether the description was generated or written by hand.
Language that narrows the field for no reason
The second check is about wording. Job descriptions routinely exclude people they did not mean to exclude: gendered or coded terms, unnecessary degree requirements on roles that do not need one, an eight-year experience floor that no evidence supports, and physical requirements copied from a template that have nothing to do with the work.
The generator will flag those patterns and explain why each one was flagged, and it will leave the decision with you. It is a review that surfaces the wording, not a filter that rewrites your client's brief without telling anybody. Where a requirement is genuinely necessary, you keep it, and the flag is dismissed with a reason that stays on the requisition.
Tone, brand and the client's own template
Agencies write for two audiences at once: the candidate reading the advert and the client who has to recognise their own role in it. A generator that produces one house voice is useless to the second audience.
Output will be produced against a template, and templates will be held per client and per job type. A client with their own format, their own required legal footer and their own boilerplate about benefits gets postings in that format. Length, register and the amount of client detail disclosed will be settings on the template rather than a slider you adjust every time. The same requisition will be renderable as a full description, a shorter job board advert and a candidate-facing summary without retyping any of it.
From description to posting
A description is only useful when it reaches a board. Once generated and approved, the output feeds multi-board posting, so the same content goes to the boards you publish on with the fields each of them expects, rather than being pasted three times with three sets of typos.
The description will also be versioned on the requisition. When a client changes the brief in week three, the new description sits alongside the old one and the record shows which version a given candidate applied against. That matters more than it sounds, because arguments about scope creep on a retained search are usually arguments about which brief was live at the time.
What it will not do
It will not invent a salary band, a benefits package, a team size or a client name that is not on the requisition. It will not write a description for a role you have not specified. It will not claim a company culture it has no information about, because that is where generated job descriptions become indistinguishable from each other.
It will also not be a compliance decision. The pay transparency check flags a posting against the disclosure rules configured for a jurisdiction, and that is a capability, not an assurance that your posting satisfies the law. Publishing decisions stay with you.
What you get
In build for Wave 1
Not shipping today; the requisition structure it generates from is already in the product.
Requisition-sourced
Generates from captured fields rather than a free-text prompt, so output asserts only what you specified.
Honest requirement split
Must-haves and nice-to-haves rendered separately instead of blended into one wish list.
Real location policy
On-site, hybrid with named days or remote within a region, written as the policy on the requisition.
Currency-aware pay band
The salary or rate band is carried through with its currency rather than paraphrased.
Gap reporting
A missing field is reported as missing, with a prompt to fill it, not covered with generated filler.
Pay transparency check
Every posting checked against disclosure rules for the jurisdictions it will be visible in.
Exclusionary language flags
Gendered terms, unnecessary degree floors and copied physical requirements surfaced for review.
You keep the decision
Flags explain themselves and are dismissed with a reason; nothing is rewritten silently.
Per-client templates
Format, footer and boilerplate held per client and per job type, not one house voice.
Multiple renderings
Full description, short board advert and candidate summary from the same requisition.
Versioned on the requisition
Brief changes keep the old description, so you know which version a candidate applied against.
Feeds multi-board posting
Approved output goes to the boards you publish on with each board's expected fields.
Questions recruiters ask
Can we use this today?
No. It is in active build for the Wave 1 release. Today you can post jobs and you can run a description you have written through the job description analyzer tool on the site. The generator that writes from the requisition arrives with Wave 1, and the shipping page will say when it lands.
Why generate from a requisition instead of a prompt?
Because a prompt box produces text that sounds specific and is not. Generating from captured fields means the description can only assert things you actually specified, missing information shows up as a gap rather than as invented filler, and the description stays consistent with what matching and shortlisting are scoring against.
Does the pay transparency check make our postings compliant?
No. It checks a posting against the salary-range disclosure rules configured for the states and countries it will be visible in and flags problems before publication. That is a capability that helps you catch a common error. Whether a given posting satisfies the law where it appears remains your assessment to make.
Will it rewrite a client's job description without asking?
No. Flags are surfaced with an explanation and left with you, and dismissing one records a reason on the requisition. Agencies work from briefs their clients own; a tool that quietly rewrote them would cause more problems on a client call than it ever solved on a posting.
Can each client have their own format?
Yes, that is the intended design. Templates are held per client and per job type, carrying the format, any required legal footer and the client's own boilerplate. The same requisition can then be rendered as a full description, a shorter board advert and a candidate-facing summary without retyping.
Will generating a description cost credits?
Yes, at a published operation weight like every other AI action, and the cost will be shown before you generate rather than appearing on an invoice. Professional includes one hundred credits per user per month and additional credits are an add-on at a published price rather than a quote.
Keep reading
See it against your own reqs
Bring one live role and three resumes. In twenty minutes you will see the match scores, the shortlist and the placement invoice that comes out the other end.