Procedure guide
How do you write a job posting?
You open the form, write the title, squeeze two lines into the description and save. The posting goes live but never shows up in search, and once applications arrive you have no measure to rank them with. This guide walks you through writing the posting in five steps, and at every step it gives you the rule the panel applies together with its number.
300 characters
If the description, the requirements and the responsibilities together stay under this, the posting page is closed to search
100
The total of the requirement weights. A posting is not saved until it comes to exactly 100
6 criteria
A warning appears when scorable requirements drop below this number; the warning does not block saving
A job posting gathers the frame of a position and the measures you look for in a candidate into a single text. It has four parts: basic information such as the position, the location, the work mode and the contract type; the description that explains the role; weighted requirement items; and the list of responsibilities. If the description, the requirements and the responsibilities together stay under 300 characters, the posting page never enters search results.
A posting text does two jobs at once
A job posting is written for two readers at the same time. The first is the candidate: they read what the role is, where they will work and what is expected of them. The second is the evaluation itself: the requirement items you write on the posting are the input of scoring. The model invents no score; for every item it answers whether there is evidence in this CV and leaves a verbatim quote, and the arithmetic is done in code.
That is why writing a posting is not a question of style. The system sets four conditions, and all four decide either the record or its visibility: at least one requirement, weights coming to exactly 100, a body over 300 characters, and an active posting. Miss one and either the record does not save or the posting stays invisible in search.
The whole posting lives in one form, in six sections. The switch at the top of the form decides whether you write the posting by hand or have AI build it from a free brief. Whichever route you take, the last word is yours: the system never changes the status of an application on its own, AI suggests and your team decides.
- Basic Information: position, department, location, work mode, contract type, working hours, status and application deadline.
- Posting Description, Requirements and Weights, Responsibilities: the body the candidate reads and the input of scoring.
- Custom Application Fields and Scoring Bands: the questions specific to this posting and what each score range means.

Step 1
Set the position and the frame of the posting
The Basic Information section takes the position, the location, the work mode and the deadline; the department fills itself in.
In the panel go to Jobs, move to the Postings tab and open a new posting. The first section is Basic Information. The position title is not free text, it is picked from your company's internal position list; if the title you need is not on the list, you can create a new position without leaving the form. The moment you make that pick the department fills itself in and cannot be edited by hand, because the department belongs to the position.
The remaining fields set the frame of the posting. Location is free text and cannot be left empty. Work mode has three options: On site, Remote, Hybrid. Contract type has five options: Full Time, Part Time, Intern, Contract, Temporary. Working hours is picked from four preset ranges. Part of this set makes up the strip a candidate scans first, so it is a first impression rather than a matter of style.
The status field says whether the posting is live. The application deadline is optional: a posting left empty stays open until you close it, and the candidate screen reads "Open ended" instead of a date. If you do enter a date, the picker never opens a day before today; writing a past date on a posting whose status is Active gets the record rejected as well.
- The title has to be at least two characters and produces a unique address inside the company.
- Location, work mode, contract type and description cannot be left empty; working hours and the deadline are optional.
- A posting whose status is Passive or Closed stays in the panel and never appears on the public address.

Step 2
Write the description: what the role actually is
The Posting Description is the body the candidate reads, and it feeds the count that decides whether the posting shows up in search.
The Posting Description is a single free text field and the body the candidate reads in the left column. What belongs here is the role itself: what the team does, which work this person takes over, what is expected in the first months. Introducing the company is the career page's job. Keep the description on the role and the candidate finds the answer they came for in the first paragraph.
Length is not a matter of taste here. One of the two gates that decide whether a posting reaches search results is body length, and the description is not the only thing counted: the description, the requirement items and the responsibility items are counted together, with whitespace collapsed before the characters are added up. The threshold is 300 characters.
The threshold was not set by guesswork. On 1 August 2026 the 13 active postings that were live were measured: the shortest body was 310 characters, the tenth percentile 363, the median 489, the longest 2002. Not one posting was under 300, so the threshold eliminates nothing that is live today and still refuses a body that was genuinely left empty. There is no upper limit; the median shows where a comfortably written posting lands.
Step 3
Write the requirements and weight them
Every requirement row carries a percentage and a "Required" switch; the record does not open until the total is exactly 100.
The Requirements and Weights section is filled in item by item. Next to the text of each row sit two more controls: the percentage weight and the "Required" switch. The description the panel prints on the section already states the rule: write criteria that tell candidates apart and can be evaluated from a CV, and make the weights add up to 100.
The total rule is strict: at least one requirement is mandatory, every row has to carry a weight, and the total has to be exactly 100. Both 99 and 101 stop the record. The same rule is applied from a single schema on the save button and on the server, so a request that bypasses the browser stops at the same place. When you spread the weights, the practical route is to give most of them to the three or four items that genuinely tell candidates apart.
These items are not only for you: the candidate reads the same list item by item on the posting page, and the only thing they never see is the percentages. So the row you wrote for scoring becomes part of the text the candidate reads. One writing rule follows from that, write each item as a measure and a sentence at once: "at least 3 years of PostgreSQL experience" means something on both sides, "PG 3+" means something only to you.

Step 4
Weed out the items that cannot be verified
A requirement row that cannot be verified from the CV or the application form is flagged and has no counterpart in scoring.
Not every requirement you write makes it into scoring. The classifier that runs while you write the row looks at whether the measure can be verified from the CV or the application form, and flags the ones that cannot. This is the very classifier that runs when a candidate is scored; the warning at writing time and the check at save time cannot drift apart.
The reasons come under four headings. Working arrangement and availability: "in the office 3 days a week" is a condition, not a requirement. Cognitive ability: analytical thinking, problem solving. Soft skills: communication, teamwork, motivation. General: anything that cannot be verified from a CV or an application form and belongs in an interview instead. The texts live in a single dictionary, which is why the warning you see while writing and the check on the record say the same sentence.
A flagged row is not deleted from the list, but it produces no rubric item; the percentage you gave that criterion has no counterpart in scoring. A warning dialog opens before saving and the save pauses, yet you can still say save: the warning is advice and never stops the record. The right move is usually to take the row out and move the same measure to the interview or to the application form.
Step 5
Add the responsibilities, take it live, look at it as a candidate
Responsibilities is a plain list; taking the posting live spends one of your open posting slots.
The Responsibilities section is a plain list: no weights, no required flag, and the field itself is optional. Write the day to day content of the work here. It pays off twice: the candidate sees the role in concrete terms, and because the items count towards the body, they take pressure off the 300 character threshold as well.
When you set the status to Active and save, the posting drops into the list on the career page and opens at its own address. Taking a posting live spends one of the open posting slots in your plan; if the allowance is full, you have to close an open posting first. The gate only runs on the move from draft or closed to active, so a posting that is already active stays editable even when the limit has been passed.
The last job is to open the page in a separate tab and read it as a candidate. The top strip shows the department, the location, the contract type and the application deadline; an empty deadline reads "Open ended", a past one reads "Expired" and the apply button gives way to a closed notice. Check the description in the body and the requirement and responsibility items in the right column.

Where every field you fill in lands on the candidate screen
The form is split into six sections, but the screen the candidate sees is a single page. Knowing where each field surfaces makes it easier to pick your tone while writing: the top strip is scanned, the body is read. There are also fields that never appear at all, and if you do not know which, the information you wrote quietly disappears.
The table below gives the counterpart of every panel field on the candidate screen, along with the rule that governs saving it.
| Panel field | Where the candidate sees it | Rule |
|---|---|---|
| Position title | Page title and browser tab | Picked from the internal position list, produces the address of the posting |
| Department | Top strip, first item | Comes from the position, cannot be typed by hand |
| Location | Top strip | Cannot be left empty |
| Contract type | Top strip | One of five options |
| Application deadline | Top strip, next to the posting date | Empty reads "Open ended", past reads "Expired" |
| Work mode and working hours | Nowhere | If it matters, write it into the description as well |
| Posting description | Left column, body text | Counts towards the body length, and its first 180 characters appear in search results |
| Requirements | Right column, item list | The texts are visible, the percentages are not |
| Responsibilities | Right column, item list | Optional, counts towards the body length |
| Custom application fields | Application form | Specific to this posting only, at most 20 fields |
| Scoring bands | Nowhere | Works in the panel only |
When a posting reaches search results
Every posting has its own address. Two gates decide whether that address reaches search results, and both of them have to be open. If one is closed, the page is shut off from search engines and never written into the sitemap either.
With both gates open the rest runs by itself: the job posting markup is produced on the server and there is no extra setting for you to configure. The only job left to you is not leaving the fields that feed the markup empty.

Two gates: status and body
The first gate is the status of the posting: only an active posting is indexed. The public address of a closed posting, or one sitting in draft, returns 404. That was a deliberate call; the first version wanted 410, and since a page component in the App Router cannot pick its own status code, it stayed at 404.
The second gate is body length: the description, the requirements and the responsibilities together have to pass 300 characters. The sitemap and the page metadata call the same function, so a posting that is not indexed never enters the sitemap either. The posting addresses of companies whose career page visibility is off are never written at all; those companies collect applications only through the form embedded in their own site.
- The page title is built on the "Posting title | Company name" pattern.
- The description in a search result comes from the first 180 characters of the posting description.
- When a posting closes, its address returns 404; the page does not stay up as an empty shell.
The job posting markup produced automatically
The markup carries these fields: the title, the description, the publication date, the application deadline if there is one, the employment type, the hiring organisation and the location. It also marks that the application is taken directly on this page, so the fact that the candidate does not have to go anywhere else to apply travels with it.
The location is never sent empty: when there is no value, a place node carrying only the country goes out instead. Skim that field and the posting is marked as "Türkiye" with the city information lost.
Having AI draft the posting
On the second route of the switch at the top of the form you write a free brief ("We are looking for a senior backend developer for our Istanbul office, with at least 4 years of Node.js experience") and get back an editable draft: title, description, weighted requirements, decision bands, missing field warnings. The draft is generated, not saved; you are still the one who saves it.
Two behaviours of the draft matter. The first is that it does not invent: hard facts such as the location, the department, the deadline and the employment type stay empty when the brief does not carry them, surface as missing fields, and the record is not completed until you fill them in. The second is that it audits itself: requirements the model proposed but which cannot be verified from a CV are taken out of the scored list and shown separately with the reason. You can put those items back into the posting text as plain prose.
This route depends on the plan and on a company setting. AI posting generation is open on the Trial, Professional and Enterprise plans and closed on Mini and Starter. While the AI analysis switch in company settings is off, the request never even reaches the plan gate. Every generation spends one AI evaluation credit. Writing a posting by hand works on every plan; every step in this guide is the same there.
| Field | What happens in the draft | Your job |
|---|---|---|
| Title and description | Written from the brief | Reading it and correcting it against the reality of the role |
| Location, department, deadline, employment type | Left empty when the brief does not carry them, and flagged as missing fields | Filling them in; the record is not completed until you do |
| Weighted requirements | Suggested, with the weights aiming to add up to 100 | Correcting them against your own priorities |
| Requirements that cannot be verified | Taken out of the scored list and shown with the reason | Leaving them out, or putting them into the posting text as prose |
| Decision bands | Arrive as a starting suggestion | Approving them or changing them |
| Number of criteria | A warning strip appears when scorable criteria drop below 6 | Adding criteria; the warning does not block saving |
Frequently asked questions
The floor is written into the code: if the description, requirements and responsibilities together stay under 300 characters, the posting never reaches search results. There is no ceiling. Measured across live postings, the median body was 489 characters and the longest was 2002; a comfortably written posting sits inside that range. Write to explain the role, not to fill a length.
Yes. You write a free form brief and get back an editable draft: title, description, weighted requirements, decision bands. Hard facts missing from the brief (location, department, deadline, work mode) are never invented; they come back flagged as blanks, and the record will not save until you fill them in. This route is open on the Trial, Professional and Enterprise plans, and every generation spends one AI evaluation credit.
Yes, the same list appears item by item on the posting page; the only thing a candidate never sees is the percentage weight on each line. The sentence you write for scoring is the sentence the candidate reads. That is exactly why full sentences beat abbreviations and internal jargon.
The posting form has no separate salary field. If you want to state one, write it inside the posting description; the description counts toward the body length, so it also helps you clear the threshold. The candidate's own salary expectation is already asked on the application form and shows in the application detail.
Location is required and cannot be left empty. For remote work, set Work Mode to Remote and write the city the role reports into as the location. There are two reasons: an empty location drops the job posting markup down to country level only, and work mode is not drawn as its own field on the candidate screen, so remote work has to be stated in the description as well.
Yes. An Active posting stays editable even when your plan limit is full; an open posting slot is spent only at the moment you publish. Watch two things: changing the title changes the posting address and the old link stops working, while changing criteria and weights triggers a rescore for free.
Related guides
Related features
Let us write the posting on your own position
The weight table, the verifiability warning and draft generation are ready in the panel. Let us walk through one of your open positions from start to finish, request a demo.
Contact Us





