We built DEV3 AI Job Listings Assistant as an add-on, not a job board. WP Job Manager keeps its job post type, submit form, listings and JSON-LD; the add-on improves what goes in and what Google reads out, through WP Job Manager's own hooks and filters.
Key design decisions
- Rules first, AI when rules give up. A salary parser reads ranges, k/m suffixes, lakh and crore, European number formats, 48 ISO currency codes plus common symbols and words, and pay periods. The AI normaliser runs only for text the rules cannot read, such as a salary written out in words.
- Fix the schema through WP Job Manager's filter. The add-on hooks
wpjm_get_job_listing_structured_data, so there is still one JSON-LD block. It replaces the salary string with a MonetaryAmount holding numeric min and max, an ISO currency and a unit; adds TELECOMMUTE and an applicant country for remote jobs; maps job types to employmentType; and adds experience, skills and industry.
- Remove what Google would reject. When a salary cannot be read ("Competitive"), the invalid
baseSalary is removed rather than printed.
- A quality score on every save. Description length and structure, salary, job type, location, company, clean title, tags and inclusive wording add up to 0–100, shown as a sortable column in WP Job Manager's Jobs list.
- Drafts and a review queue. Bulk improve runs in the background and only creates drafts. Each draft shows a diff with Accept, Edit or Reject, and "Accept safe changes" applies only salary, title and taxonomy drafts.
- Help on the public submit form. A neutral writing assistant inside WP Job Manager's form drafts the description, checks wording and suggests job type and tags, with rate-limited, same-origin endpoints and non-AI fallbacks.
Architecture
Listing data stays in WP Job Manager's post meta; the add-on stores the quality score, numeric salary bounds and seniority alongside it, and keeps drafts and match results in two small tables. When the Job Tags add-on is missing, it registers the same job_listing_tag taxonomy itself. With Resume Manager installed, a Matching screen ranks resumes against a job with a transparent rule score and an optional AI explanation, without names or protected attributes. The API client, background jobs and usage logs come from a shared core used across DEV3's plugins.