Team, firm, and subcontractor certifications
A restoration company holds credentials in three different places at once: the people on the crew, the firm itself, and the subcontractors it hires. An IICRC WRT card belongs to a technician. An II…
On this page
- What Certifications tracks
- Where to find it
- The three tables behind every record
- team_member_certifications
- business_certifications
- subcontractor_certifications
- How a raw row becomes a record you see
- How a cert slug becomes a name
- What the page shows
- Active Certifications hero
- Take Action row
- Explore row
- Most recent row
- The four tabs
- Findings
- All Certifications
- Team Depth
- Benchmarks
- Inside a single certification record
- How data gets in
- Related reading
What Certifications tracks
A restoration company holds credentials in three different places at once: the people on the crew, the firm itself, and the subcontractors it hires. An IICRC WRT card belongs to a technician. An IICRC Firm designation belongs to the business. A mold-remediation license belongs to the sub you call in for a job you do not run yourself. These are not three flavors of the same row, they carry different fields, expire on different clocks, and matter to different decisions, so Verinode models them as three separate tables that all project into one shared record shape for display. This article is the map of that model: what each table stores, how a raw database row becomes a certification you see on screen, and where every number and label on the page comes from.
Verinode does not chase your team for paperwork or issue credentials. It reads what flows in, the cert PDFs you forward, the photos of cert cards you upload, the CEC certificates from a training class, and turns that into a renewal calendar, a single-point-of-failure warning when only one person on the crew holds a qualifying cert, and a read on which carrier programs a given cert unlocks. You decide what to renew, who to train, and which sub to keep on the roster.
Where to find it
Open Certifications from the sidebar at iq.verinode.ai/certifications. Certifications is part of Verinode's Premier cluster alongside Safety, Processes, and Advisory: Contributor and Executive memberships see the page in full layout with a summary card count, and the renewal calendar, team-depth matrix, and benchmarks unlock at Premier.
The three tables behind every record
Every certification you see, no matter which tab it appears in, was read out of exactly one of three PII tables and pushed through a projector function that turns the raw row into a common CertRecord shape. The three tables are:
team_member_certifications
An individual credential held by someone on your crew, an IICRC discipline (WRT, ASD, AMRT, FSRT, and the rest), an OSHA 10/30 card, an EPA RRP certificate. Fields on this table:
- team_member_id, which teammate holds it. Verinode looks this up against your active team roster to attach a name; if the roster lookup or the team member ID itself is missing, the record is dropped rather than shown as an orphan.
- certification_slug, the credential itself, for example
iicrc_wrtorosha_10. This is what gets humanized into the name you read (see below). - cert_number, the certificate number on the card, shown as
#12345when present. - issued_at / expires_at, the dates that drive the whole renewal calendar.
- status, one of Active, Expiring Soon, Expired, or Pending.
- cec_earned / cec_required, continuing-education credits logged against this cert and the number required to keep it current. These feed the CEC History section on the record's detail view.
- document_url, the uploaded certificate image or PDF, when one is on file.
- training_vendor_id, the training provider tied to this cert, if one has been set, which is what lets the renewal prompt say "Renew WRT with [vendor]" instead of a generic nudge.
business_certifications
A firm-level credential, IICRC Firm designations, state contractor licenses, business-wide safety certifications. It does not belong to any one person, it belongs to the operator itself. Fields:
- certification_slug, cert_number, issued_at, expires_at, status, same meaning as on the team table.
- annual_cost_cents, what the firm pays each year to hold this certification, shown as a dollar figure on the record detail (for example $450).
- document_url and training_vendor_id, same meaning as above.
subcontractor_certifications
A credential held by a sub you use, not an employee. This is the only one of the three where verification matters as its own field, because you are trusting a document someone outside your company gave you. Fields:
- subcontractor_name, subcontractor_email, subcontractor_phone, contact details for the sub.
- certification_slug, cert_number, expires_at, status, same meaning as above (no
issued_aton this table, only the expiry matters operationally). - verified, whether the sub uploaded the actual document through the verification link, versus you simply having taken their word for it.
- document_url, the uploaded document, present once verified.
- invite_token, the one-click link used to invite the sub to verify.
- training_vendor_id, carried for consistency with the other two tables though subs rarely have one set.
How a raw row becomes a record you see
Each of the three tables has its own projector function (projectTeamCert, projectFirmCert, projectSubCert) that turns the raw row into a shared shape with a kind tag (team, firm, or sub) plus the original raw row attached underneath. Every list, tile, and detail view on the page reads from this shared shape and only reaches into the kind-specific raw object when it needs a field that only exists on that kind, for instance CEC progress only makes sense on a team cert.
The projector computes four things the raw row does not carry on its own:
- Title. Team certs read as the member's name, an em dash, then the cert name (for example, Brian Jackson, then OSHA 10). Firm certs read as the cert name followed by the word "Firm," for example "IICRC Firm." Sub certs follow the same pattern as team certs: the sub's name, an em dash, then the cert name.
- Subtitle. The cert number when one is on file (
#12345), or for subcontractor certs, "Verified" or "Self-reported" depending on theverifiedflag. - Status label and severity. Computed from days until expiry: more than 60 days out reads "Current"; 60 days down to 15 reads "Expires in Nd" with a warning color; 14 days or fewer, or already past expiry, reads "Expires in Nd" or "Expired Nd ago" with a critical color. A cert with no expiry date at all reads "Active" with no severity flag.
- Kind label. Team certs are labeled "Team Cert," firm certs "Firm Cert," sub certs "Sub Cert," singular on record tiles and pluralized ("Team Certs," "Firm Certs," "Sub Certs") wherever a group count is shown, for instance on the All Certifications tab.
How a cert slug becomes a name
Every certification is stored in the database as a lowercase, underscore-joined slug, iicrc_wrt, osha_10, epa_rrp. Verinode never shows that raw token. A shared formatter splits the slug on underscores and, token by token, uppercases anything on its list of known restoration-industry acronyms (IICRC, OSHA, EPA, RIA, ACAC, NORMI, plus specialty codes like WRT, ASD, AMRT, FSRT, HST, and others), and Title Cases everything else. So iicrc_wrt reads "IICRC WRT" and subcontractor_management reads "Subcontractor Management," never "IICRC_WRT" or a stuck-caps-lock "SUBCONTRACTOR MANAGEMENT."
What the page shows
Active Certifications hero
At the top of the page, a headline number: total certifications on file minus how many are expired, labeled Active Certifications. Beside it, when you are enrolled in at least one carrier or TPA program, a pill reads "N% Programs Covered," the share of your enrolled programs where every required certification is currently held somewhere on the team or the firm. Below the headline, two secondary figures:
- Expiring, certifications due inside the next 30 days, subtitled "Within 30 Days" when the count is above zero, "Nothing Expiring Soon" when it is not.
- Expired, certifications already past their expiry date, subtitled "Past Expiry" or "All Certs Current."
Before any data has landed, the hero reads: "Add Data, certs land here as photos, screenshots, and uploads come in."
Take Action row
This is where the credential radar's Findings live, capped at ten open decisions. Each one names a specific renewal, exposure, or program gap and its cost of inaction, you work the finding, you do not manage a checklist. When there is nothing pending, what shows depends on what has actually happened:
- No certifications on file at all: "Capture your team's credentials," with three concrete first moves, uploading IICRC and carrier-program cert PDFs, snapping a photo of a cert card, or forwarding IICRC renewal and CEC-completion emails so nothing slips past unnoticed.
- You have records but no open findings and have resolved signals before: "All clear on your certifications," naming how many signals you have already worked through.
- You have records, no open findings, and nothing resolved yet: "Still learning your cert stack," while the detector keeps analyzing renewals, team depth, and program-gate eligibility.
Explore row
Four tiles, each a doorway into one of the tabs described below:
- All Certifications, the total record count with a "N team · N firm · N sub" breakdown underneath, and a proportion bar showing the three-way split by color.
- Expiring in 30d, the same 30-day count from the hero, with "+N already expired" underneath when applicable, or "Renewals on the radar" when there is nothing overdue.
- Training Compliance, the percentage of team certifications currently active or expiring soon (as opposed to expired or pending) out of all team certifications on file. If there are no team certs at all, this reads 100%, there is nothing to be non-compliant on. A gauge preview colors green at 90% and above, amber from 70% up to 90%, red below 70%. Where a peer benchmark is available, a delta line reads how your compliance rate compares to peers or industry research.
- Avg Cert Currency, the peer median for how many days out, on average, a peer operator's certifications sit from expiry. This is a peer/industry reference figure, not your own number, it exists to give you a currency benchmark rather than to score your own book (your own average sits behind the scenes feeding the peer-comparison calculation, but is not displayed on this tile).
Most recent row
Up to twenty certification records, sorted with the most urgent first: critical severity (expiring inside 14 days or already expired) before warning (15 to 60 days out) before informational, and within each severity tier, the soonest expiry first. Each tile shows the record's title, its kind label (Team Cert, Firm Cert, Sub Cert) as a color-coded badge, a colored status dot alongside the status label, and, when relevant, a due badge reading "Nd" or "Nd overdue." Clicking a tile opens that record's detail view directly.
Before any certifications exist, this row reads: "Certifications will appear as you forward cert PDFs or capture credential photos."
The four tabs
Clicking into any Explore tile or Take Action item opens the certifications card slider, four tabs across the top:
Findings
The same open decisions from the Take Action row, presented as a browsable grid so you can page through all of them, not just the first few.
All Certifications
Every record on file, grouped into three sections in a fixed order: Team Certs, Firm Certs, Sub Certs, each headed by its label and count ("Team Certs · 8"). Within a group, each row shows the record's title, its subtitle (cert number, or verification status for subs) underneath, and its status label on the right, colored red for critical, amber for warning, and plain for everything else. Clicking a row opens the full record detail.
When there are no certifications on file at all, this tab reads: "No certifications on file yet. Upload a cert PDF via Add Data."
Team Depth
A single table answering one question: for each certification your team holds, how many people could cover it if the primary holder left tomorrow. One row per certification slug, three columns:
- Cert, the credential name.
- Holders, how many active or expiring-soon team members currently hold it. When that number is 1, the cell is flagged "(SPoF)", single point of failure, in the analyse-signal color: if that one person's cert lapses or they leave, nobody on the crew can step in for jobs that require it.
- Members, the actual names of everyone who holds it, comma-separated.
This tab only builds once you have at least one team certification on file and at least one active team member; otherwise it reads: "Add team certifications to see depth coverage."
Benchmarks
Two metrics compared side by side against peers and against outside research: Average cert currency (days to expiry) and Training compliance. For each, three columns show the peer figure (with the size of the comparison cohort noted underneath when available), the research figure with its publisher noted, and the scope of the comparison (national or state). A footnote explains the mechanics in plain terms: Verinode compares you to a real peer cohort once enough similarly sized operators have contributed data, and falls back to published industry research otherwise, contributing your own data is what tightens that cohort over time.
Inside a single certification record
Opening any record, from a tile, a findings card, or the All Certifications list, shows a detail view built around a stance: Current, Expiring, Exposed, Expired, or Missing, computed against your own portfolio (whether the credential is single-point-of-failure, whether it gates a carrier program you are enrolled in, and so on) rather than the expiry date alone. What is underneath the stance differs by kind.
On a team cert, you see the member's name, the certification name, cert number, training vendor when one is set, and CEC progress ("N / N CECs logged"). If the expiry is inside 60 days or already past, a renewal prompt appears: it names the training vendor if one is on file and links to that vendor's page, or, if none is set, prompts you to pick one and links to the training-provider search on Vendors. A Team Depth section restates the holder count and, for a single-point-of-failure cert, warns explicitly: "Single point of failure, if this cert lapses, the qualification has no coverage on the active crew." Three or more holders reads "Deep bench. Rotation won't break coverage." If the cert unlocks any carrier or TPA programs, those are listed by name with their requirement level (required or preferred). Below all of that sits the full CEC History, every continuing-education class logged toward this specific cert, with credits, provider, cost, and how it was captured (forwarded email, uploaded screenshot, or manual entry), plus a running progress bar against the credits required. You can log a class manually with + Add CEC manually, entering credits, completion date, and optionally a provider and cost.
On a firm cert, you see the certification name, cert number, annual cost, issue date, and expiry date, plus, when applicable, the list of carrier programs this specific firm-level credential gates.
On a sub cert, you see the subcontractor's name, the certification, cert number, expiry, whether it is verified or self-reported, and contact details. A Verification section lets you send the sub a one-click upload link by email: if they have never verified, the button reads "Send verification request" and the confirmation reads "Sent, they'll get a one-click upload link by email." Once verified, the section instead confirms "Document on file. The sub uploaded their cert via the verification link" with the option to "Re-send verification link" if you need them to replace it. Without an email on file, you are told to add one before a request can be sent.
Every record's detail view also carries a Peer Position section, showing what share of peer operators at your size hold the same credential, alongside the cohort size, once enough peers have contributed data to support the comparison. Until then it reads: "Contributions unlock the comparison. Peer operators haven't yet shared enough data to benchmark this cert at your size." An Open Tips section and a Findings section surface only when the detector has attached open tips or linked decisions to this specific record, each with its own count badge on the tab.
Note
Verinode never sells your certification data to carriers, and the peer comparisons here are always anonymized and aggregated. What you get back for contributing is a tighter, more accurate cohort to compare yourself against.
How data gets in
Certifications is built to be forwarded and photographed, not typed. Forward a renewal notice or a CEC-completion email, or upload a photo of a cert card or a screenshot from a training portal, through Add Data, and the extraction pipeline reads the credential, the holder, the numbers, and the dates off the document itself. Manual entry, the + Add CEC manually control and the equivalent add flows for team, firm, and sub certifications, exists for the cases a document does not cover, but the intended path is that certifications and CEC history accumulate on their own as the paperwork that already crosses your desk gets forwarded in.