Construction
A certified payroll report records, per worker per week, the hours worked each day, the work classification, the pay rate, gross wages, deductions, and net pay. The federal WH-347 is one layout among hundreds: states publish their own variants, payroll systems export their own, and contractors edit standard forms until the columns drift. Sensible converts certified payroll data into structured JSON for prevailing wage compliance and labor reporting.
Validated JSON
Schema-enforced output; every field matches your contract
Source coordinates
Every value links back to page + bounding box for audit
Per-document pricing
Predictable cost. No token-volatility surprises
Trusted by teams turning documents into production data






Certified payroll reports start from a handful of standard forms and end up looking like none of them. Contractors add columns and freetext, every state mandates its own variant, and the data crowds into tables tight enough that OCR merges adjacent values. Hybrid extraction reads the dense grid; deterministic rules keep each day's hours tied to the right worker and classification.
01
The federal WH-347 covers Davis-Bacon work, but California, New York, and dozens of other states require their own certified payroll forms, and payroll systems export their own again. Each layout moves the classification, rate, and deduction columns somewhere new. LLM parsing reads whatever arrives; SenseML rules map every variant to one consistent schema.
02
A single row holds a worker's name, last-four SSN, classification, hours for each day of the week, total hours, pay rate, gross amount, and a column of deductions before net pay. The cells crowd together tightly enough that OCR merges adjacent numbers. Sensible reads the table as structured rows, keeping each day's hours and each deduction tied to the right worker.
03
Many reports arrive scanned, faxed, or saved as edited PDFs where readable text turns illegible to OCR. A single week can run several pages, with workers continued across page breaks and the statement of compliance on its own sheet. Hybrid extraction combines positional rules with LLM parsing for degraded inputs, and flags low-confidence fields for review rather than guessing.
Managed services
Solutions engineers handle plan, build, deploy, and adjust on your behalf. You see clean JSON in your API response. Same engine as self-serve, just with the configuration work outsourced.
What's included
01Plan.Engineers review your samples and pick the right method
02Build.SenseML configs written from your samples
03Deploy.Same engine as self-serve, ready for production
04Adjust.We update configs when formats shift or new edge cases appear
05Integrate.Help with custom integration into your downstream systems
Every compliance pipeline maps payroll reports to its own schema, so we build the config around your exact fields rather than a fixed list. These are the fields compliance teams pull most often; we map whatever else your prevailing wage or labor-reporting workflow needs.
01
Contractor & project
Contractor or subcontractor name and address, project name and location, contract or project number, payroll number, week-ending date, and the statement of compliance
02
Employee & classification
Worker name, last-four SSN, work classification (laborer, electrician, operator, and more), exemptions or withholding allowances, and fringe-benefit indicators
03
Hours, wages & deductions
Day-by-day hours (S M T W T F S), total hours, overtime split, hourly rate, gross amount earned, FICA and federal/state withholding, other deductions, and net pay
config.json
SenseML
{ /* SenseML: certified payroll extraction */
"fields": [
{
"method": {
"id": "queryGroup",
"queries": [
{ "id": "contractor_name", "description": "contractor or subcontractor name, company name" },
{ "id": "project_name", "description": "project and location, project name, job name" },
{ "id": "week_ending", "description": "week ending, for week ending, payroll week end date" },
{ "id": "payroll_number", "description": "payroll no, payroll number, payroll #" }
// + per-employee hours, wages, and deductions, mapped to your schema
]
}
}
]
}Sensible processes certified payroll reports across forms, states, and payroll systems. New variants can be configured in hours, and the extraction logic is explicit in SenseML rather than buried in prompt tuning.
Federal WH-347, state certified payroll forms (California DIR A-1-131, New York, and more), agency-specific prevailing wage reports, and contractor-edited variants of all of them
Payroll system exports (ADP, Paychot, QuickBooks, LCPtracker), system-printed PDFs, typed forms, handwritten reports, and faxed or scanned copies
Answers about WH-347 and state form support, per-day hours and deduction extraction, and handling scanned or edited reports.
Yes. Many reports arrive scanned, faxed, or saved as edited PDFs where text turns illegible to OCR, and a single week can run several pages with workers continued across breaks and the statement of compliance on its own sheet. Hybrid extraction combines positional rules with LLM parsing for degraded inputs and flags low-confidence fields for review.
A single row holds a worker's name, classification, hours for each day of the week, total hours, pay rate, gross amount, and a column of deductions, crowded tightly enough that OCR can merge adjacent numbers. Sensible reads the table as structured rows, keeping each day's hours and each deduction tied to the right worker and classification.
Contractor and project details, payroll number, week-ending date, per-worker classification, day-by-day hours, total and overtime hours, hourly rate, gross wages, deductions, and net pay are all extracted, along with the statement of compliance. Custom fields can be added in SenseML to match your prevailing-wage schema.
Sensible processes the federal WH-347 for Davis-Bacon work, state certified payroll forms like the California DIR A-1-131 and New York variants, agency-specific prevailing wage reports, and contractor-edited versions of all of them. Payroll-system exports from ADP, Paychex, QuickBooks, and LCPtracker are covered, and new variants can be configured in SenseML.
Start free
Free 14-day trial. No credit card required. Start extracting in minutes.