Bulk Job Posting
Create up to 100 jobs from one CSV upload — validated row by row, published with the same global distribution as any single posting.
Teams that hire at volume — agencies opening a season's worth of client roles, franchises staffing multiple locations, enterprises spinning up a hiring wave — shouldn't have to click through the job form a hundred times. Bulk Job Posting takes one CSV file and creates up to 100 jobs in a single pass, directly inside the create-job page.
Every row goes through the same validation and deduplication as a manually created job — a malformed row is flagged with the reason so you can fix and re-upload it, and nothing about bulk-created jobs is second-class: they land in your dashboard, get the full pipeline, CMS scoring, and free distribution to all country sites worldwide on publish.
On this page
- What it does
- Who it's for
- What happens after upload
- Bulk posting on the wider Expertini network
- Quality still matters at volume
- Architecture: where it sits in the platform
- Data model and dependency map
- Operational considerations
- Interaction contract
- Interface blueprint & interaction flow
- Frequently asked questions
01What it does
Upload a CSV of up to 100 job rows from the Bulk upload tab on the create-job page. Each row is validated individually — required fields present, values sane — and valid rows become real jobs in your account immediately, while invalid rows are reported with a per-row reason rather than silently dropped. Duplicate entries are skipped exactly the way a duplicate manual entry would be, so re-uploading a corrected file never creates copies.
02Who it's for
Recruiting agencies opening many client roles at once, employers staffing several locations with similar postings, and anyone migrating from another ATS who wants their live roles re-created quickly rather than re-typed. For a single role, the standard create-job form with its AI-assisted description drafting is usually the better path — bulk is for volume, not a replacement.
03What happens after upload
Bulk-created jobs behave identically to any other job: publish them individually or leave them as drafts, run batch CMS scoring when applications arrive, and manage every pipeline from the same Kanban board. Publishing distributes each job to the matching Expertini country site — the same no-extra-cost reach every posting gets.
04Bulk posting on the wider Expertini network
Separately from this ATS tool, the Expertini job-board network offers employer bulk upload of up to 500 jobs per file in CSV or XML, free, from an employer account on any country site — with downloadable templates (https://github.cdn.expertini.com/sample/bulk-job-posting-template.csv and the XML equivalent). The network applies its own posting rules there: titles of at least 10 characters, descriptions of at least 50, no HTML tags, no duplicate titles within one upload. If your volume outgrows the ATS-side 100-per-file limit, batching uploads — on either side — is the supported path; there's no cap on your total number of postings.
05Quality still matters at volume
A hundred thin postings perform worse than fifty well-written ones — bulk upload multiplies whatever quality you feed it. The job posting best practices guide covers what makes a posting rank and convert (a real salary range, precise titles, complete descriptions), and everything in it applies row-by-row to a bulk file. Salary fields in particular are worth filling: postings with a stated range consistently attract more, better-matched applicants — and richer postings stand a better chance of ranking well in Google for Jobs results, covered in the same guide.
Platform architecture & operations
A1Architecture: where it sits in the platform
Bulk Job Posting is a first-class module of the Sourcing & Job Ads suite inside the authenticated Expertini ATS workspace. The platform is deliberately server-rendered: every view is prepared by the application server and shipped as complete HTML, with no client-side framework, no third-party CDN scripts, and no build pipeline between the data and the page. What renders is what the server computed — the property that makes the interface auditable.
All persistence runs on a single search-native document store; every query carries the organisation's identifier as a mandatory filter at the lowest query layer. Tenant isolation is therefore structural — a property of how every request is composed — rather than a policy that relies on application code remembering to check.
Availability is governed by the platform's tool registry: this tool is registered from the Trial plan, and access is enforced server-side by the registry gate on every request — never by hiding a button. Plans also carry a monthly distinct-tool quota (3 / 5 / 15 / 30 / 45 across Trial→Business, unlimited on Enterprise), counted at the same chokepoint. The pricing page states both honestly: what is available, and how much of it the month includes.
A2Data model and dependency map
In production the tool reads and writes job requisitions (ats_jobs). Documents are plain, explicitly-mapped fields — mappings are provisioned ahead of first write, so term filters and aggregations behave deterministically instead of depending on inferred types.
Every distinct open is journalled to the tool-activity store — and that journal, not a parallel analytics system, is what the Reports section aggregates. The usage numbers you see are the numbers the platform actually recorded.
Anything that leaves the request path — notification fan-out, webhook delivery, activity journalling, mail — runs in fire-and-forget background threads. A slow external endpoint can never make the interface hang, and a failed side effect is logged rather than silently retried into inconsistency.
A3Operational considerations
Organisation-level settings, destructive actions, and connections are gated to owner and admin roles; recruiters operate the tool on the records they can see. Role changes apply on the next request — enforcement is at the route, not in the menu.
Failures are surfaced, not swallowed: server-side validation returns the exact field and reason, vendor errors are quoted verbatim where integrations are involved, and every write either confirms or reports. Exports regenerate on request rather than being cached — a report you download reflects the store at the moment you asked, not last night's snapshot.
Everything written is yours to take: CSV exports and the Data Export app cover the same stores the product itself reads. The exit is as open as the entrance — by design, not concession.
A4Interaction contract
The interface follows the platform's search-and-select convention: any field that names a real record — a candidate, client, or job — is a type-to-search picker over live data, never a free-typed string, which is what keeps activity trails and deduplication trustworthy. Static choices are filter-as-you-type combos rather than native dropdowns, and state transitions give explicit feedback: server confirmations surface as toasts, validation errors name the exact field, and nothing is shown as done that the server has not confirmed.
The wireframe and flow below document the structural contract of the surface — what panels exist, what order the states occur in, and what happens at every edge — rather than pixels. The layout is composed with native CSS grid and flexbox and adapts from wide desktop to a single column without separate mobile views.
Dependency map
Interface blueprint
Interaction flow — states, validations, feedback
Neighbouring tools — Sourcing & Job Ads
Frequently asked questions
What's the maximum number of jobs per upload?⌄
What happens to rows with errors?⌄
Do bulk-created jobs get the same distribution?⌄
Is bulk posting available on every plan?⌄
At a glance
- Up to 100 jobs per CSV, validated row by row
- Per-row error reporting — nothing silently dropped
- Same dedup, pipeline, and scoring as manually created jobs
- Free global distribution on publish
- Network-side employer bulk upload handles up to 500 per file
- Available from the free Trial plan upward
See bulk job posting on your own hiring.
Bring a real job description to a 30-minute demo — free trial included.
Book a demo