=== Monviso ATS Job Importer ===
Contributors: eosphor
Tags: job board, job listings, recruitment, wp job manager, ats
Requires at least: 6.0
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 0.2.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Import jobs from Greenhouse, Lever, Ashby, Workable and SmartRecruiters career pages into WP Job Manager, and keep them in sync automatically.

== Description ==

ATS Job Importer reads the public job board of a company — the same feed their own careers page uses — and mirrors the vacancies into WP Job Manager as ordinary job listings. No API key, no scraping of HTML, no third-party account.

Supported boards:

* Greenhouse (`boards-api.greenhouse.io`)
* Lever (`api.lever.co`)
* Ashby (`api.ashbyhq.com`)
* Workable (`apply.workable.com`)
* SmartRecruiters (`api.smartrecruiters.com`)

What it does on every sync:

* adds new vacancies as `job_listing` posts;
* updates title, description and location when the posting changes;
* expires listings that disappeared from the board;
* stores the company name, the public apply URL and the location in the standard WP Job Manager fields.

The sync runs on WP-Cron — every hour, every two hours or daily, your choice — and can be triggered by hand from **Tools → ATS Job Importer**. Each board is synced in its own request, so a large import does not hit the PHP time limit.

== Installation ==

1. Install WP Job Manager (the plugin imports into its `job_listing` post type).
2. Upload the plugin folder to `/wp-content/plugins/`, or install it from the Plugins screen.
3. Activate **ATS Job Importer**.
4. Open **Tools → ATS Job Importer**, pick the ATS, enter the board name and save.
5. Press **Sync now** to run the first import.

The board name is the part that appears in the careers URL: for `boards.greenhouse.io/stripe` it is `stripe`, for `jobs.ashbyhq.com/openai` it is `openai`.

== Frequently Asked Questions ==

= Does it need an API key? =

No. Every endpoint used here is the public job board the vendor serves to browsers.

= Does my data leave my site? =

The plugin sends requests to the vendor's own board API and writes the result to your database. Nothing is sent to the plugin author.

= What happens when a vacancy is closed? =

The listing gets the status `expired` and the `_job_expires` date is set to yesterday, so WP Job Manager stops showing it.

= Can I import several boards? =

Yes. Press “+ Add board” to add as many rows as you need, and “Remove” to drop a row.

== Screenshots ==

1. The board list on Tools → ATS Job Importer, with the live number of imported vacancies per board.
2. Sync results per board and the log of the last 20 runs.

== Changelog ==

= 0.2.0 =
* Add and remove board rows without reloading the page.
* Boards are synced one request at a time, so big imports no longer hit the PHP timeout; a progress indicator reports each board.
* Log of the last 20 runs with time, trigger and per-board results.
* Live count of imported vacancies per board, cached for five minutes.
* Sync interval setting: hourly, every two hours or daily.

= 0.1.0 =
* First release: Greenhouse, Lever, Ashby, Workable and SmartRecruiters; hourly sync; expiry of closed vacancies.
