Get Started
Back to Help

Publishing a Job

Walk through the two-step Create Job wizard — description, AI filtering prompt, follow-up questions, scorecard, language settings, and team assignment.

Last updated: 2026-05-13

Publishing a Job

The Create Job wizard takes you from a blank screen to a live application link in two steps. This guide explains what each field controls and how it shapes the AI screening behind the scenes.

Before you start

A job always lives inside a business (your workspace). The business selector in the top bar of the home page determines where the new job will land. If you have more than one business, switch to the right one before clicking the Create Job button.

When you open the wizard, ResReader immediately creates a draft in the background — you can close the wizard at any time without losing your work. The draft becomes a published job when you click Publish Job on the second page; this is the only path that also queues the description for AI processing. The status chip in the top bar lets you flip directly between Draft / Active / Paused / Archived, but on a brand-new draft you should still click Publish Job for the first publish — otherwise the job goes live without an AI evaluation profile, and incoming applicants aren't scored until you go back to the editor and click Publish Job to queue processing.

Step 1 — Description

The description is the only input the wizard asks you for on Step 1, and it's the single most important input to AI screening — everything ResReader compares a candidate's resume against comes from this text. The wizard does not have separate fields for job title, location, salary, employment type, or experience level; those are extracted from the description by the AI processor after you publish and stored on the job's aiEvaluationProfile. The processor is instructed to produce a short, human-readable title in the same natural language as the description, so stating the role clearly at the top of the description (e.g. as the first H1) gives it the best chance of picking the title you'd choose yourself.

Writing the description

You have three ways to fill the editor:

  • Type or paste markdown — paste your existing job ad straight from your careers page, LinkedIn, or notes app. The toolbar above the editor handles formatting (headings, lists, tables, emoji).
  • Ask the AI assistant — on desktop, the left pane has two tabs at the top: Editor and AI Assistant. Switch to AI Assistant, type something short like "Senior Flutter Developer, remote, 5+ years", and the AI drafts a full description you can then switch back to edit. (The right pane stays on live preview the whole time.)
  • Iterate — keep chatting with the AI to expand or tighten sections (e.g. "add a benefits section", "make the requirements list tighter"). The conversation is persisted under jobs/{jobId}/aiDescriptionUserCommand and survives page reloads.

On mobile, the same surfaces are exposed as a three-tab bar at the top of the editor: Editor, AI, Preview (AI is the default tab on first open).

What's required to publish

The description is the only required input. The wizard blocks publishing only when the description field is empty — everything on Step 2 is optional, and the title/location/salary metadata is filled in by the AI processor after publish.

Step 2 — AI configuration

The second page controls how ResReader scores incoming candidates and what happens after a candidate is scored. Every field on this page is optional — you can hit Publish Job with nothing touched and the AI will score against the description alone. But the more signal you give it here, the more useful the rankings are.

Filtering prompt

The filtering prompt is a free-text instruction to the AI explaining how to weigh the description. Think of it as a private note to the screener that doesn't go into the public job post.

Good filtering prompts are specific:

  • "Prioritize candidates with 3+ years of mobile development. Flutter is a strong plus; native iOS/Android background is acceptable. Reject candidates whose only experience is web."
  • "Communication skills matter more than years of experience. Look for evidence of writing — blog posts, conference talks, OSS docs."

If you leave this blank, the AI scores purely against the description.

AI clarification questions

When enabled, ResReader emails the candidate five tailored follow-up questions after the initial scoring pass, then re-scores them once they answer.

Who gets follow-ups. Only candidates who applied through your public apply link are eligible — manual uploads, batch imports, and Chrome-extension imports are skipped. Any eligible candidate scored 1 or higher is queued (in practice, almost everyone who reaches the analysis stage). Use this when you'd rather collect a bit more signal from every applicant than reject on a thin resume alone; turn it off if you process high volumes and don't want every applicant to receive an email.

What the AI asks. Five questions, generated per-candidate from the gaps between their resume and your job requirements — not a generic template. One of the five is always about salary expectations (the candidate can answer with a range, a number, or words). The other four target the weakest or most ambiguous areas of the resume. The candidate answers via a web form at /follow-up/<token>; the link is valid for 7 days.

The custom prompt. The text box below the toggle is appended to the AI's instructions for question generation. Use it to steer focus ("Ask about real-world projects, not certifications", "Probe for evidence of leading a team, not just being on one"). Leave it blank and the AI works only from the resume gaps.

Re-scoring rules (when the candidate answers):

  • A new rating is computed using the resume plus the Q&A. The previous rating, the new rating, and a summary of improvements are stored on the application.
  • Improvements are capped. A candidate at rating 7 or below can gain at most +3 points (e.g. 5 → 8). A candidate already above 7 can climb to at most 10. There is no cap on decreases — a poor answer can drop a strong candidate.
  • The qualified flag flips to true at rating ≥ 7, the same threshold as the initial scoring pass.

Once-per-applicant. A candidate who has already received a follow-up will not be re-queued, even if you rescan the job. If you enable follow-ups after a candidate has already applied, they only get questions on the next analysis pass for that application.

Interview score impact

If you run AI interviews, the candidate's interview performance is always recorded and visible on the analysis page. By default, the interview score does not change the candidate's overall rating — AI can mishear audio, so the resume score stays authoritative.

Toggle this on if you want the overall rating to take the interview into account. The AI re-evaluates the candidate using the resume and the interview transcript together, instructed to weight the resume more heavily than the interview (roughly 65/35). This is guidance to the model, not a fixed formula — the AI may deviate when the interview reveals something the resume hid, in either direction. The previous rating is preserved on the application so you can see how the interview moved the needle.

Scorecard

Attach a scorecard template if your team grades candidates on specific criteria after interviews (e.g. Technical depth, Culture fit, Communication). Pick a template from the dropdown and its criteria are snapshotted onto the job — if the template is later edited, this job keeps the criteria it had at the time you picked it. To create or edit templates, use the Manage button next to the dropdown; it opens the Scorecards page for your business. The same page is also reachable from any analysis page's overflow menu.

Language settings

ResReader can render four different surfaces in different languages — each is set independently:

  • Analysis Language — the language the AI writes its evaluation reports in (the description shown on candidate cards, the strengths/weaknesses breakdown, etc.). Defaults to the language you're currently using ResReader in.
  • Candidate Communication Language — the language used for emails sent to the candidate (confirmation, follow-up questions, rejection, offer, interview invites). Defaults to Candidate's language, which is auto-detected from their resume. Override to a fixed language if you want every applicant to receive English (or any single language) regardless of their resume.
  • Hiring Manager Language — the language used for HM review emails and the AI summaries that hiring managers see when you forward candidates for their input. Defaults to English on new jobs; pre-existing jobs inherit your analysis language.
  • AI Interview Language — the language the AI interviewer speaks during a live interview. The default Candidate's language is misleadingly named: it actually maps to auto mode, where the AI detects the language of the job description and conducts the interview in that language (defaulting to English if no description is present). Setting a specific language instead enforces it — the AI will conduct the entire interview in that language regardless of what the candidate speaks.

Team on this job

Assign recruiters (other co-workers in your business — UIDs from your workspace roster) and hiring managers (entries from your hiringManagers collection — they don't need to be ResReader users; an email address is enough). Both lists feed exactly two downstream behaviors today:

  • When you open the Send for HM Review dialog from the analysis page, the hiring managers assigned to the job are pre-checked. You can still add or remove HMs per batch before sending.
  • When a candidate accepts an offer, ResReader sends a Hiring Confirmation email — to the candidate, and separately to every assigned recruiter and every assigned hiring manager (de-duplicated by email). If a start date was set on the offer, the email includes an all-day .ics calendar invite.

Assignments don't currently filter dashboards, gate visibility, or change the task feed — every co-worker on the business sees every job regardless of recruiter assignment. Use the field to declare ownership and to drive the hiring-confirmation distribution list; you can edit it later from the job's edit page.

Publishing

Click Publish Job when you're done. A few things happen at once:

  1. The job's status is set to whatever the status chip is showing — typically Active, which flips isActive: true and isDraft: false on the document.
  2. A row is added to jobDescriptionProcessorQueue. A Cloud Function picks it up, parses the description, builds the AI evaluation profile (the structured representation of skills, requirements, and red flags that scoring runs against), and writes it back to the job.
  3. The public application URLhttps://resreader.com/<businessId>/<jobId> — was created with the draft and is now usable. Open the Share Job dialog from the analysis page to copy it or generate tracked variants (LinkedIn, X, custom slugs); a ?src=<slug> query parameter records which source the candidate came from. Every application that lands through this URL — direct or tracked — is stamped source: "public_job_link", which is what makes the candidate eligible for follow-up questions.
  4. You're navigated to the analysis page, where you can watch applications arrive.

Processing latency depends on queue load, but the AI evaluation profile is usually ready within a few seconds. New applicants are scored as they arrive — you don't need to do anything else.

Editing a published job

You can edit any field on a published job from its overflow menu (Edit Job) on the home page or analysis page. Most edits — assigning a recruiter or hiring manager, swapping the scorecard template, updating language settings, switching the status — apply immediately.

Two specific changes are different. If you edit the description or the filtering prompt on a job that was already published, ResReader shows a Re-scan dialog when you save.

The dialog has three buttons:

  • Cancel — close the dialog, stay on the edit page, nothing saved to the queue.
  • Skip — keep your edits, but apply the new criteria only to future applicants. Existing applications keep their original scores.
  • Re-scan — apply the new criteria to existing applications. Pick either All resumes or a minimum rating (selecting 7 rescans everyone scored 7 and above — useful when you're tightening the prompt and only want to re-score the shortlist).

Rescans run in the background. The job is marked hasBeenEdited on the first publish-edit and you'll see scores update on the analysis page as workers process the queue.

Drafts, paused, and the job lifecycle

A job is in one of four states, controlled by the status chip in the editor's top bar:

  • Draft — internal only. The public URL exists but shows "This job is not currently accepting applications" — drafts have isActive: false. Use drafts to stage descriptions ahead of a hiring kickoff.
  • Active — public, accepting applications, scoring runs on every new applicant. This is the only state where the apply page is usable.
  • Paused — public URL shows the inactive message. Existing applications, notes, interviews, and scorecards stay accessible on the analysis page. Reopen by switching back to Active.
  • Archived — same effect as Paused on the public side; used to clear paused jobs out of your active board without deleting them.

There's a shortcut from the analysis page: when a candidate accepts an offer, a green Position Filled! banner appears at the top of the page with a Close job button. Clicking it sets status to Paused and prompts you to send rejections to the remaining open applicants. You can also send rejections without closing, or dismiss the banner if you have more roles to fill against the same job.