Skip to main content
Command Established

Bulk Certificate Upload with AI Parsing

Every department has the folder: a hundred PDFs from the state academy, photos of wallet cards, scanned course completions. Bulk upload turns that folder into certification records. Drop the files in, and Command Established reads each one, pulls out the name, dates, number, and issuing authority, figures out which member it belongs to, and queues it for a quick review before it goes on the record.

Typing certifications in by hand is the reason most departments' credential records are incomplete. The data entry is tedious, so it gets deferred, and then the one certification you needed proof of is the one nobody entered. Bulk upload removes the typing. Your job becomes checking the AI's work — a few seconds per certificate instead of a few minutes.

For the basics of certification records, the roster, and definitions, see Certifications: Roster, Definitions & Expiration Tracking.

How Do I Upload a Batch of Certificates?

  1. Go to Training › Certifications. Admins see a Bulk upload button at the top of the page.
  2. Drag and drop up to 25 files onto the page, or click Choose files. PDFs and images (JPG, PNG, WebP, HEIC) are what the AI can read; Word documents upload but can't be analyzed.
  3. Each file is saved as soon as it lands and analyzed in the background. You don't have to wait — once the uploads finish you're taken to the Pending review view, and you can leave and come back.

Each file becomes one pending certification.

The bulk certificate upload page with a drop zone that accepts up to 25 PDF, image, or document files

Tip: One certificate per file works best. A PDF containing several certificates stapled together is treated as a single document, and only one certificate's details come out of it.

What the AI Extracts

The parser reads what's actually printed on the certificate and leaves a field blank rather than guess:

  • Certificate name and level (Firefighter I, EMT-Basic)
  • Issuing authority and any accreditation noted (Pro Board, IFSAC, NREMT)
  • Recipient name — used to match the certificate to a member of your roster
  • Dates — completed, received, and expiration; if there's no printed expiration but the certificate states how long it's valid, the expiration is calculated from that
  • Certificate number and course number
  • Hours — used to pre-fill the optional training log
  • Standard reference (for example, NFPA 1001)
  • Instructor, training category, and topics — used to pre-fill the training record if you choose to log one

Each card shows how confident the AI was, as a percentage next to the AI-extracted heading. Treat a low number as a prompt to look at the document.

The Pending Approval Queue

Every uploaded (or self-submitted) certificate lands in the Pending review view on Training › Certifications. The whole review queue is admin-only. A pending certification that already has a member assigned shows on that member's Personnel › Certifications tab with a Pending status, but it doesn't become Active — and doesn't count for compliance — until an admin approves it.

Card states

  • Analyzing — The file is uploaded and being read. The card shows just the filename; there's nothing to edit yet. A counter at the top shows how many are still in progress, and the list refreshes itself.
  • Ready — Analysis finished. The card shows the member (or Unassigned), a Bulk import or Self-submitted badge, a chip describing the certificate type, the AI-extracted details, and Reject, Edit, and Approve buttons.
  • Analysis failed — The file couldn't be read (an unsupported format, an unreadable scan, or a temporary problem). The card shows the reason. You can click Retry Analysis to try again on the unchanged file, or open Edit to view the document alongside the form, fill in the details yourself, and approve.

A pending card whose analysis failed, showing the failure reason, a Retry Analysis button, and a red Needs a member badge above the member dropdown

"Needs a member"

If the AI wasn't sure which member the certificate belongs to, the card shows a red Needs a member badge with the closest roster matches as buttons, each with a match percentage. Click one to assign, or use the Select a member… dropdown to pick anyone on the roster. Two members with similar names will usually come through as Needs a member — that's by design.

A pending card with a red Needs a member badge and two suggested roster matches as buttons with match percentages, above the Select a member dropdown

Type chips

Each ready card carries a chip describing what the AI did about the certificate's Type:

  • Matched: [definition] — It's confident this is an existing definition in your catalog and has linked it. The card can be approved as-is.
  • Suggested: [definition] — It found a likely definition but wants you to confirm. The suggestion is pre-selected when you open Edit.
  • New type proposed — Nothing in your catalog matched. It drafted a definition (name, issuing authority, standard, renewal period) that you can create as part of approving.

No chip means you'll choose the type in the approve modal.

Two pending cards in the queue: one with a Suggested type chip and a greyed-out Approve button, and one with a Matched type chip whose Approve button is enabled

Reviewing and Approving

Quick approve

The Approve button on a card approves the certification exactly as it stands. It's available when the card has a member, analysis succeeded, and the type is linked. When it's greyed out, hover it for the reason, or look for the red Needs a member badge:

  • "Choose a type first — open Edit to pick or create one" — The type is only suggested or proposed. Suggestions are never approved automatically, so a wrong guess can't quietly create a mislabeled credential.
  • "Type is deprecated" or "Type no longer exists" — The linked definition was deprecated or archived since the upload; pick another in Edit.
  • No hover text, Needs a member badge — Assign a member first.

The approve modal

Click Edit to open Approve [certificate name]. From top to bottom:

  • Member — Required. Pre-filled if the AI assigned one.
  • Also log this as a training — See below.
  • The certification form — Type, Status, Name, Issue Date, Expiration Date, Certification #, Hours, Issuing Authority, Description, pre-filled from the parse. Correct anything the AI got wrong. The uploaded file is attached under Supporting Documents.

In the Type field, the Suggested group at the top lists the AI's candidates, with the top one already selected and the hint "Suggested match — change if wrong." When a new type was proposed, a panel above the field reads "No matching definition. Create '[name]'?" with a Create this definition on approve checkbox. Leave it checked and adjust the definition's name, issuing authority, and renewal months if needed; or click or pick an existing type to file it under something you already have. You can also type a name that isn't in the catalog and choose Use "…" (creates a definition).

Click Approve (or Approve & log training) to finish.

The approve modal for an uploaded certificate, showing the proposed-definition panel with the Create this definition on approve checkbox above the pre-filled certification form

Also log this as a training

Many certificates represent a course the member sat through — hours that should count toward their training record and ISO totals. The Also log this as a training switch in the approve modal creates a completed training record for that member (and only that member) at the same time as the certification.

  • It's on by default when the AI found hours on the certificate, and off otherwise.
  • Hours are pre-filled from the certificate and required when the switch is on.
  • Source, Category, Topics, Date, and Training name are pre-filled from the certificate; change any of them.

The training is linked to the certification, so the member's ISO hours come from the training record.

Batch approve

For a large migration, approve in batches:

  1. Click Select matched to tick every card that has a member, finished analysis, and a linked type — or tick cards individually.
  2. Click Batch approve N.

A counter, N need a type, shows how many selected cards were held back because their type is only suggested or proposed; open Edit on those. Batch approve accepts cards as they stand and never creates definitions or training records — use the modal for those.

Keyboard shortcuts move things along: ↑/↓ move between cards, Enter approves the focused card and advances, S skips it.

Caution: On an unassigned card with exactly one suggested member, Enter assigns that member and approves in one step. Check the suggested name before pressing Enter; if it's wrong, pick the right member from the dropdown first or press S to skip. Cards with several suggestions stop and ask you to pick.

Rejecting

Reject opens a dialog requiring a reason. The certification's status becomes Rejected and the reason is shown on its detail page.

What Happens After Approval

  • The certification becomes Active on the member's record and appears in the roster, the member's Certifications tab, and any compliance program requirements that reference its definition.
  • If you left Create this definition on approve checked, the definition is created and linked. It carries an AI badge in the Definitions view when the name you approved matches the AI's proposed name, and you'll see "Created definition '[name]' — review it under Definitions."
  • If Also log this as a training was on, the training record is created and linked.
  • If the certificate has an expiration date, the member starts getting expiration reminders like any other certification.

Member Self-Submission

Members don't have to wait for an admin to collect their certificates. On their own personnel page, under the Certifications tab, a member without edit rights sees a Submit Certificate button.

  • The Submit a Certificate dialog accepts one file (PDF, image, or document). The member sees "Uploading and analyzing your certificate…" and then "Submitted for approval."
  • The result is a pending certification, already assigned to that member, tagged Self-submitted in the Pending Approval queue.

Self-submissions get lighter processing than bulk uploads. The AI's reading is shown in the card's AI-extracted panel and the certificate name is filled in, but nothing else is: there's no type chip, and the dates, certificate number, hours, and issuing authority aren't pre-filled. The reviewing admin opens Edit, copies the details from the AI-extracted panel (or the attached document) into the form, picks the Type, and approves.

The Submit a Certificate dialog as a member sees it on their own personnel page, with a drop zone for a single certificate file

Tip: Announce self-submission at a drill night. Members photograph the wallet card with their phone, tap Submit Certificate, and the training officer clears the queue once a week. It's the least painful way to keep records current between annual reviews.

Getting Started

  1. Clean up your Definitions view first. The AI matches against your catalog, so a tidy catalog means more Matched chips and fewer proposals. See Managing Definitions.
  2. Start with a batch of 10. Work through the queue and see how your certificates parse before committing a whole binder.
  3. Approve the Matched cards in a batch. Select matched, batch approve, done.
  4. Work the Suggested and Proposed cards individually. Confirm the type, decide whether to create the definition, and log the training hours where they matter.
  5. Turn on self-submission. Tell members it exists; the queue will start filling itself.

Frequently Asked Questions

What file types can I upload?

PDF, JPG, PNG, WebP, and HEIC files are read by the AI. Word documents can be uploaded and attached, but can't be analyzed — those cards show "Analysis failed" and you enter the details by hand.

Do I have to stay on the page while files are analyzed?

No. Each file is saved as soon as it uploads and analyzed in the background. Come back to the Pending review view whenever you like.

Why is the Approve button disabled on a card?

Hover it. The most common reason is "Choose a type first" — the AI suggested or proposed a type rather than matching one. Open Edit, confirm the type, and approve from there. If there's no hover text, the card needs a member assigned.

Does batch approve create definitions or training records?

No. Batch approve accepts cards exactly as they stand. To create a proposed definition or log a training, open the card with Edit and approve from the modal.

The AI got a date wrong. What do I do?

Click Edit, correct the field, and approve. Nothing is written to the member's record until you approve, so there's no cleanup afterward.

Can members upload their own certificates?

Yes. From their own personnel page's Certifications tab, members without edit rights see a Submit Certificate button. The submission goes into the same Pending review queue, tagged Self-submitted.

Who can see the AI-extracted details and the uploaded file?

Admins and members with the certification-document permission can see them for anyone; every member can see them on their own certifications. See Certifications: Permissions.