WP Manifestindependent plugin directory
manifest / forms / gf-resume-autofill

Resume Autofill for Gravity Forms

Autofill Gravity Forms fields from an uploaded resume via AI parsing.

by mcglenn07 · github.com/mcglenn07/gf-resume-autofill

0stars
0forks

Install

No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:

wp plugin install https://github.com/mcglenn07/gf-resume-autofill/archive/refs/heads/main.zip

Upload a resume, watch the rest of the form fill itself in. This is the same pattern as LinkedIn Easy Apply or Greenhouse: an applicant attaches a PDF or DOCX resume to a File Upload field, and before they even submit, the plugin parses it with an AI model and autofills the other fields on the form for them to review and edit.

No plugin in the Gravity Forms ecosystem does this today. The closest thing (CandidateZip, via Zapier) fires after submission to push data into a CRM, not live, in the browser, on the same form.

How it works

  1. The admin enables autofill on a form, picks which File Upload field is the resume field, and maps schema fields (first name, email, current job title, skills, and so on) to the form's own fields.
  2. When an applicant selects a resume and checks the consent box next to it, the browser sends the file to a REST endpoint, before the form itself is submitted.
  3. The plugin extracts plain text from the PDF or DOCX, sends it to OpenAI with a strict JSON schema (via Structured Outputs), and gets back structured resume data.
  4. That data is mapped to the form's actual field IDs and sent back to the browser, which fills in the visible inputs.
  5. The applicant reviews everything, edits anything that's wrong, and submits normally. Nothing about form submission itself changes.

See docs/CODEBASE.md for a full line by line walkthrough of every file.

Requirements

  • WordPress with Gravity Forms active (2.5 or later)
  • PHP 7.4 or later, with Composer available to install dependencies
  • An OpenAI API key with billing enabled

Installation

composer install

Then activate the plugin from the WordPress Plugins screen like any other.

For stronger key security, define an encryption key in wp-config.php before entering an API key:

define( 'GFRA_ENCRYPTION_KEY', bin2hex( random_bytes( 32 ) ) );

Generate that value once, hardcode the result, and keep it out of version control. Without it, the plugin falls back to a key derived from WordPress's own auth salts and shows an admin notice recommending you set one.

Configuration

Forms → Settings → Resume Autofill (plugin wide):

  • OpenAI API key and model choice
  • Default disclosure text shown to applicants
  • Max file size, allowed file types, and a daily rate limit per IP (this protects against runaway API cost, since the parse endpoint fires before any of Gravity Forms' own spam protection)

A form's Settings → Resume Autofill (per form):

  • Enable autofill for that form
  • Which File Upload field accepts the resume
  • Whether to overwrite fields the applicant already filled in, or leave them alone
  • The field mapping table: resume data on the left, this form's fields on the right

Only Single Line Text fields can receive the work experience, education, skills, and certifications data. Those get flattened into one readable line each (for example, "Software Engineer at Acme Corp (2021-03 to Present)"), since a single text field can't hold a full multi-job history. Job and degree descriptions are dropped in that summary line by design; everything else maps one to one.

What gets extracted

Personal details (name, email, phone, address, LinkedIn and portfolio URLs), a summary, the most recent position (title, employer, dates), full work history, education history, skills, and certifications. Anything not found in the resume comes back as null rather than a guess. The model is explicitly instructed to treat the resume text as untrusted content and ignore any instructions embedded inside it.

Known limitations

  • Only Single Line Text fields can receive the work experience, education, skills, and certifications summaries; there is no List field support.
  • Job and degree descriptions are not carried into the autofilled summary lines.
  • Gravity Forms' own Form Preview tool does not load this plugin's frontend script, since that preview page skips the normal script enqueue process entirely. This is a limitation of GF's preview tool, not a bug in this plugin, and it affects any third party add-on the same way.
  • Extraction quality depends on how the resume is formatted. A scanned, image only PDF has no extractable text and will fail gracefully with a message asking the applicant to fill the form manually.

Privacy

Resume data is sent to OpenAI's API to be parsed. On OpenAI's standard API tier, that data is not used to train their models and is retained by them for up to 30 days for abuse monitoring, unless the account has a separate zero data retention agreement in place. The plugin shows applicants a disclosure notice, with an explicit consent checkbox, before any upload is sent for parsing. This tool only ever autofills fields for a human to review; it does not score, rank, or filter candidates.

License

GPL-2.0-or-later