InTouch Hub · Blue Isle Software

PDF Form Filler

Match structured data against a form template's labeled fields and fill the form. AI handles fuzzy field-name matching ("DOB" ↔ "dateOfBirth") and combines fields when needed (firstName + lastName → "Full Name").

PDF Form Filler Skill

Take a form template (extracted from a PDF, written in markdown, or whatever) plus structured data, and produce a filled version. AI handles fuzzy field-name matching so the data does not have to use the exact same labels as the form.

The Problem

Filling forms is the world's most common boring task. Repeated rental applications, vendor onboarding sheets, customer intake forms, expense reports — different layouts, same data over and over. The painful part is mapping the data you have to the labels the form uses ("DOB" vs "Date of Birth" vs "Birthdate"). AI handles this trivially.

How It Works

  1. A trigger-file watches an inbound folder for new form templates (PDF, txt, md)
  2. A pdf extract task pulls the text out of the PDF (skip if the form is already text/md)
  3. The pdf-form-filler skill matches a fixed JSON data block against the labels and produces the filled text
  4. A pdf generate task renders the filled text back to PDF
  5. A message or email task delivers it

Setup

  1. Install this skill
  2. Create a JSON file with the data you reuse (or pull it from a database)
  3. Create a trigger-file watching your form-inbox folder
  4. Use the YAML below

Example YAML Job

name: form-fill
version: 1.0.0
description: Fill a form template with stored data, output as PDF

notifications:
  - userNames: [intouch]
    alertOnError: true

tasks:
  - name: extract-form
    tool: pdf
    properties:
      operation: extract
      inputFile: "${TRIGGER_FILE}"

  - name: fill-form
    tool: skill
    properties:
      skillName: pdf-form-filler
      input: |
        dateFormat: US

        data:
        {
          "firstName": "Alice",
          "lastName": "Chen",
          "email": "[email protected]",
          "dateOfBirth": "1990-03-15",
          "phone": "4155551234",
          "addressLine1": "123 Main St",
          "city": "San Francisco",
          "state": "CA",
          "zip": "94110"
        }

        template:
        {{extract-form.text}}

  - name: render-pdf
    tool: pdf
    properties:
      operation: generate
      outputFile: "${INTOUCH_HOME}/forms/filled-$(basename ${TRIGGER_FILE}).pdf"
      content: "{{fill-form.answer}}"
      title: "Filled form"
      font: helvetica
      fontSize: 11

  - name: notify
    tool: message
    properties:
      subject: "Form filled — review before sending"
      body: "Filled PDF available at ${INTOUCH_HOME}/forms/. Missing fields are marked [MISSING] in the document."
      userNames: "intouch"

Customization

Limitations

Plain-text form-fill works for ~80% of forms in the wild. For PDFs with native AcroForm fields (the kind where you can click and type directly in Adobe Reader), this skill cannot fill those fields directly — you'd need a tool that writes back into the form's field objects. Most non-government forms aren't AcroForm; they're flat layouts that this approach handles fine.

Cost