ApprenticeTrack — Trade Apprenticeship Compliance
22 seeded apprentices across electrical (IBEW), plumbing (UA), sheet-metal, ironworking, and HVAC. OJT hours by work process, RTI classroom credits, 8-step wage progression, and journey-worker ratio compliance — DOL 29 CFR §29.5 evidence shape.
What it is
The shape an apprenticeship program sponsor maintains for every active apprentice — under DOL 29 CFR §29.5 — without spreadsheets across 6 supervisors. Tracks every hour logged, by work process, against the program’s required exposure breakdown.
What it tracks
- 22 apprentices across 5 trades with realistic hour distributions: electrical (8000h / 7 work processes), plumbing (8000h / 6), sheet-metal (8000h / 5), ironworking (6000h / 5), HVAC (8000h / 5).
- OJT hour accumulation — per work process per apprentice, weighted against the program’s required exposure breakdown. Under-logged processes flagged.
- RTI classroom hours — minimum 144h/year (29 CFR §29.5) tracked separately, with expected-at-this-point computation.
- 8-step wage progression — apprentice wage rises from 40% to 100% of journey-worker rate over 8 equal stages. Current step computed live from total OJT hours.
- Status logic —
on track,behind,critical,inactive >90d,completed. Behind compares actual hours vs expected-at-this-point. - Audit-ready — DOL Form 671 evidence path baked into the schema.
Why this shape
Federally registered apprenticeship programs are audited every 5 years by USDOL or the state agency. The findings are always the same: “we found the apprentice’s hours weren’t logged against the specific work processes” — or worse — “the apprentice was on prevailing-wage Davis-Bacon work but wasn’t actually registered as an apprentice when the hours were recorded.” Both result in back-wages under Davis-Bacon at the full journey rate.
ApprenticeTrack puts the evidence in one screen.
How it ships
Single HTML file, ~30KB. Zero dependencies. The trade catalog, work-process exposure tracking, wage-step computer, RTI math, and status logic are 340 lines of vanilla JavaScript.