=== HireCurrent – Recruitment & Automated Job Listings by Jayanta ===
Contributors: jayanta77
Tags: jobs, job board, vacancies, recruitment, employer
Requires at least: 6.2
Tested up to: 7.0
Requires PHP: 7.4
Stable tag: 1.0.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Standalone job board with automated imports, employer tiers, categorization, job descriptions, and optional membership integration.

== Description ==

HireCurrent creates a complete, theme-independent job board with automated job imports and without requiring WP Job Manager or paid WooCommerce extensions.

**Required third-party plugins: NONE.**

The job board, Free tier, manual paid-plan assignment, job submission, employer dashboard, keyword categorization, listing expiration, and structured data all work independently.

Features include:

* Public vacancy directory with keyword, location, category, and job-type filters.
* Front-end employer submission and dashboard.
* Editable Free, Silver, Gold, and Platinum limits.
* Manual employer-plan assignment.
* Optional Paid Memberships Pro level mapping.
* Rule-based automatic categories.
* Optional OpenRouter job-description generation and categorization with monthly plan credits.
* Moderation, featured vacancies, expiration, and application deadlines.
* Application email or external application URL.
* JobPosting structured data.
* REST-enabled vacancy content, metadata, and taxonomies.
* Scheduled external job imports configured separately for every job category.
* Per-category source, keyword, location, and quantity controls.
* Duplicate prevention and updates using stable external source IDs.

== Requirements and Optional Integrations ==

**No third-party plugin is required for the core job board.**

The following integrations are optional:

* **Paid Memberships Pro (optional):** Install its free core plugin only when you need automatic membership checkout or recurring Silver, Gold, and Platinum billing through a supported payment gateway. Create the membership levels in Paid Memberships Pro, then map their numeric IDs under Vacancies > Settings. Manual paid-plan assignment works without it.
* **OpenRouter (optional external service):** An OpenRouter account and API key are required only for AI-generated descriptions and AI categorization. Keyword rules and clearly marked template drafts continue to work without OpenRouter. API usage may incur charges from the provider.
* **Greenhouse (optional external source):** Public job-board GET feeds work with a company's Greenhouse board token. No API key is needed for public jobs.
* **Lever (optional external source):** Public postings work with a company's Lever site name. No API key is needed for public jobs.
* **Adzuna (optional external source):** Requires an Adzuna developer account, App ID, and App Key. Adzuna may return only a description snippet and requires source attribution under its terms.
* **RSS, compatible JSON, or a company career page (optional external source):** Requires a public HTTPS URL that you are authorized to reuse. Career pages are read only when the page exposes JobPosting JSON-LD; the plugin does not crawl or scrape arbitrary page layouts.

The following plugins and extensions are **not required**:

* WP Job Manager
* WooCommerce
* WooCommerce Paid Listings
* WooCommerce Memberships
* WooCommerce Subscriptions

**AI privacy notice:** When an employer deliberately selects AI generation, the job title, company, location, skills, brief, and description are sent to OpenRouter for processing. Site owners should disclose this to employers and must not submit confidential information or personal applicant data. No job data is sent to OpenRouter when AI is disabled or the employer does not select AI generation.

== External services ==

HireCurrent's core job-board features work without an external service. The following optional services are contacted only when the corresponding integration is enabled or an administrator runs its import. Remote requests include this site's home URL in the HTTP `User-Agent` or `HTTP-Referer` header so providers can identify the requesting installation.

= OpenRouter =

OpenRouter provides optional AI-generated job descriptions and job categorization. A request is sent only when OpenRouter is configured and an employer deliberately selects the AI-generation option while submitting a vacancy.

The request includes the configured model name; job title, company, location, skills, brief, and existing description; the site's available job-category names; this site's home URL; and the OpenRouter API key used for authentication. Application contact details, salary fields, deadlines, company URLs, and WordPress user data are not included. OpenRouter may route the request to the selected model provider. Do not submit confidential information or applicant personal data. OpenRouter's response may be saved as the vacancy description, excerpt, category, skills, and experience requirement.

Service provider: OpenRouter, Inc. [Terms of Service](https://openrouter.ai/terms) and [Privacy Policy](https://openrouter.ai/privacy/).

= Greenhouse =

Greenhouse provides public job-board data for configured employers. When an administrator runs an enabled Greenhouse import, manually or on the selected schedule, HireCurrent sends a GET request containing the configured public board token and this site's home URL. It does not send applicant data or WordPress user data. The returned public job titles, descriptions, locations, metadata, and application URLs are imported into WordPress.

Service provider: Greenhouse Software, Inc. [Terms of Service](https://www.greenhouse.com/legal) and [Privacy Policy](https://www.greenhouse.com/privacy-policy).

= Lever =

Lever provides public job postings for configured employers. When an administrator runs an enabled Lever import, manually or on the selected schedule, HireCurrent sends a GET request containing the configured public Lever site name and this site's home URL. It does not send applicant data or WordPress user data. The returned public job titles, descriptions, locations, metadata, and application URLs are imported into WordPress.

Service provider: Lever by Employ, Inc. [Terms of Service](https://www.lever.co/legal/terms-of-service) and [Privacy Policy](https://www.lever.co/privacy).

= Adzuna =

Adzuna provides job-search results through its API. When an administrator runs an enabled Adzuna import, manually or on the selected schedule, HireCurrent sends the configured App ID, App Key, country code, keyword, location, requested result quantity, and this site's home URL. It does not send applicant data or WordPress user data. Returned job titles, companies, descriptions, locations, salary data, metadata, and application URLs are imported into WordPress.

Service provider: Adzuna Ltd. [Terms and Conditions](https://www.adzuna.com/terms-and-conditions.html) and [Privacy Notice](https://www.adzuna.com/privacy-policy.html).

= Administrator-configured RSS, JSON, and career-page sources =

Administrators can configure an arbitrary public HTTPS RSS/Atom feed, compatible JSON endpoint, or career page exposing JobPosting JSON-LD. When its import runs manually or on schedule, HireCurrent sends a GET request to that URL together with this site's home URL and imports the public job fields returned by the source. No applicant data or WordPress user data is deliberately sent. Because the destination is chosen by the administrator, HireCurrent cannot list its terms and privacy policy; the administrator must review the selected provider's policies and confirm authorization before enabling it.

== Automatic Job Import Setup ==

Open **Vacancies > Settings > Automatic External Job Fetching**.

1. Enable scheduled automatic fetching and choose Hourly, Twice daily, or Daily.
2. Choose whether imported jobs are Pending Review or Published Immediately.
3. Set the default imported-listing duration.
4. If using Adzuna, enter the App ID, App Key, and two-letter country code.
5. In the per-category table, enable the categories that should receive imported jobs.
6. Select Greenhouse, Lever, Adzuna, RSS/Atom, compatible JSON, or Career Page JSON-LD.
7. Enter the board token, site name, or complete HTTPS URL required by that source.
8. Optionally enter a keyword and location filter.
9. Select 5, 10, 20, 25, 50, or 100 jobs per category per run.
10. Save settings and use **Run enabled imports now** for the first test.

Greenhouse and Lever fields are normalized automatically. Adzuna fields are populated from its search response. A compatible JSON feed may use a root array or a `jobs`, `results`, or `data` array. Supported JSON fields are `id`, `title`, `company`, `description`, `location`, `url`, `apply_url`, `type`, `workplace`, `salary_min`, `salary_max`, `currency`, and `deadline`.

Imported jobs store the provider, original URL, external ID, import time, category, description, application URL, location, workplace type, salary fields when supplied, and an expiry date. An existing source ID is updated instead of creating a duplicate.

**Indeed and LinkedIn:** The plugin does not scrape these sites. Their integrations and job APIs are restricted or partner-based. If you have a feed that explicitly authorizes republication, use the supplied HTTPS RSS or compatible JSON feed and follow the provider agreement.

== Installation ==

1. Upload the `hirecurrent-job-listings` folder to `/wp-content/plugins/`.
2. Activate HireCurrent – Recruitment & Automated Job Listings by Jayanta.
3. Open Vacancies > Settings and review plan limits and categorization rules.
4. The plugin creates Jobs, Submit a Job, Employer Dashboard, and Job Plans pages automatically.
5. Optional: To use recurring memberships, install the free Paid Memberships Pro core plugin, create levels, and map their numeric IDs under Vacancies > Settings.
6. Optional: To enable AI assistance, create an OpenRouter account, enter its API key and model, and assign AI credits to plans.

== Shortcodes ==

* `[svmj_jobs]` — searchable vacancy directory. Optional `per_page` attribute.
* `[svmj_submit_job]` — employer create/edit form.
* `[svmj_employer_dashboard]` — employer vacancy dashboard.
* `[svmj_plans]` — plan comparison and PMPro checkout links.

== Frequently Asked Questions ==

= Does this require WP Job Manager? =

No. It is a standalone job-board plugin.

= Does this require a paid WooCommerce extension? =

No. Plan entitlements are native. Paid Memberships Pro integration is optional and its mapped levels are read dynamically.

= Is AI required? =

No. Keyword rules automatically categorize vacancies, and blank descriptions receive a clearly marked template draft. OpenRouter enhancement is optional.

= What happens when a plan expires? =

The employer falls back to Free unless another active PMPro level or unexpired manual plan applies. Existing listings retain their scheduled expiry; new submissions follow the current plan limits.

== Support, customization, and optional upgrades ==

The free HireCurrent plugin includes the complete standalone job board described in this readme. No paid service or add-on is required to use its advertised features.

Jayanta separately offers optional paid customization, custom job-source integrations, and priority support. You may also contact the author for information about the planned HireCurrent Pro add-on. Availability, scope, delivery time, and fees are agreed separately and are not services provided or endorsed by WordPress.org.

To discuss paid work or priority support, visit [Jayanta's WordPress.org author profile](https://profiles.wordpress.org/jayanta77/).

== Changelog ==

= 1.0.0 =

* Initial release of the standalone HireCurrent job board.
* Added employer submissions, dashboards, plan limits, featured jobs, and expiration controls.
* Added responsive vacancy listings, job details, and external or email application links.
* Added automatic keyword categorization and optional OpenRouter assistance.
* Added scheduled and manual Greenhouse, Lever, Adzuna, RSS/Atom, JSON, and JobPosting JSON-LD imports.
* Added per-category source, keyword, location, and import-quantity settings.
* Added source attribution, duplicate prevention, import updates, and import logs.
* Added optional Paid Memberships Pro mapping without requiring WooCommerce extensions.
* Added external-service disclosures and optional customization and priority-support information.
