1 Dashboard
2 Checklist
3 Report
4 History
5 Certs
6 Team
7 OSHA
8 Reports
Safety Dashboard
9:41
92% Compliant
Overall Safety Score
147
Days Without Incident
8
Active Certs
2
Pending Training
Quick Actions
Report Incident
Log injury, near miss, or damage
Start Checklist
Pre-job safety inspection
View Certifications
Manage licenses & training
Recent Activity
Site checklist completed
742 Elm St — Roof repair
2h ago
OSHA 10 training assigned
Due Feb 28, 2026
1d ago

SafetyDashboard — primary safety hub with compliance score ring, KPI metrics, and quick actions

useSafety() hook • api.safety.dashboard.get

Job Site Checklist
9:41
742 Elm St, Akron, OH
Roof Repair — Started 9:15 AM
Pre-Job Safety Checklist 3 of 5
PPE Verified
Hard hat, gloves, safety glasses, harness
Area Secured
Perimeter cones, caution tape placed
Permits Posted
Building permit visible on-site
Utilities Marked
Gas, electric, water lines identified
First Aid Kit Present
Stocked, accessible, within reach
Photo Verification
Complete all items to sign off

SiteChecklist — toggleable pre-job items with photo verification, disabled sign-off until 100% complete

useChecklist(jobId) • api.safety.checklists.submit


Incident Report
9:41
Incident Type
Injury
Near Miss
Property Damage
Equipment
Severity Level
Low
Medium
High
Date & Time
Location
Description
Photo Documentation
Witness Information

IncidentReport — structured form with type chips, severity selector, photo grid, and witness fields

useIncidentForm() • api.safety.incidents.create

Incident History
9:41
All
Injury
Near Miss
Property
Near Miss — Slip
Resolved
Oct 1, 2025 • 742 Elm St
Wet shingles near ridge cap. Harness prevented fall. Corrective: non-slip mats required.
Injury — Minor Cut
Resolved
Aug 15, 2025 • 1220 Oak Dr
Sheet metal edge cut on forearm. First aid applied on-site. Corrective: cut-resistant gloves mandatory.
Property — Gutter
Resolved
Jun 3, 2025 • 89 Maple Ave
Ladder knocked loose gutter section. Repaired same day at no cost. Corrective: ladder stabilizers required.
Equipment — Nail Gun
Resolved
Mar 22, 2025 • 456 Pine Rd
Pneumatic nail gun misfired. No injuries. Equipment retired and replaced. Corrective: pre-use tool checks.

IncidentHistory — timeline view with severity badges, filter chips, and insurance export

useIncidents(filters) • api.safety.incidents.list


Training & Certifications
9:41
Certifications
Training
Schedule
Active Certifications
OSHA 10-Hour Construction
Issued May 12, 2024
Expires May 12, 2027
Valid
First Aid / CPR / AED
Issued Sep 8, 2025
Expires Sep 8, 2027
Valid
Fall Protection Certification
Issued Mar 7, 2024
Expires Mar 7, 2026
Expiring
Electrical Safety Awareness
Issued Jan 15, 2025
Expires Jan 15, 2028
Valid
Required Training
Scaffolding Safety Update
Due Feb 28, 2026
Overdue
Hazard Communication 2026
Due Mar 15, 2026
Upcoming

TrainingCerts — segmented tabs for certs, training, schedule with expiration tracking and upload

useCertifications() • api.safety.certifications.list

Team Safety Scores
9:41
Team Safety Average
94%
6 active team members • Q1 2026
Individual Scores
MT
Mike Torres
98%
24 checklists 0 incidents 5/5
365d
JR
Jake Ramirez
96%
22 checklists 0 incidents 4/4
280d
DK
David Kim
95%
20 checklists 1 incident 5/5
BL
Brian Lee
88%
15 checklists 2 incidents 3/4
SP
Sarah Patterson
97%
23 checklists 0 incidents 5/5
200d
TN
Tyler Nguyen
92%
18 checklists 1 incident 4/5

TeamSafetyScores — individual member scores, checklist counts, incident tracking, and zero-incident streak badges

useTeamSafety() • api.safety.team.scores


OSHA Compliance
9:41
Inspection Readiness
91% Ready
Last inspection: Nov 14, 2025
Fall Protection
Guardrails on elevated platforms (6ft+)
Personal fall arrest systems inspected
Ladder safety training refresher needed
Due Mar 1, 2026
Hazard Communication
SDS sheets accessible on-site
Chemical labeling compliant
Electrical Safety
GFCI protection on temporary wiring
Lockout/tagout procedure update
Non-compliant — action required
Common Violations

OSHACompliance — categorized requirements checklist, inspection readiness score, and common violations awareness

useCompliance() • api.safety.osha.status

Safety Reports
9:41
Month
Quarter
Year
Incident Rate
-33%
Jan
Feb
Mar
Apr
May
Jun
96%
Checklist Rate
89%
Training Compliance
0.8
TRIR
Top Safety Concerns
1.
Slip/trip hazards on roofing jobs
2.
Ladder positioning issues
3.
PPE compliance in summer heat
Meeting Notes
3 entries
Weekly Toolbox Talk
Feb 21 • Ladder safety • 6 attendees
Monthly Safety Review
Feb 1 • Q1 incident review • 8 attendees

SafetyReports — period selector, incident rate chart, KPIs, top concerns, meeting notes, and PDF export

useSafetyReports(period) • api.safety.reports.generate


Data Architecture

safetyIncidents Schema

_id: Id<"safetyIncidents">
contractorId: Id<"contractorUsers">
jobId: Id<"jobs"> | undefined
type: "injury" | "near_miss" | "property_damage" | "equipment"
severity: "low" | "medium" | "high"
description: string
location: string
dateTime: number (timestamp)
photos: Id<"_storage">[]
witnessName: string | undefined
witnessContact: string | undefined
resolution: "pending" | "investigating" | "resolved"
correctiveAction: string | undefined
reportedBy: Id<"contractorUsers">
_creationTime: number

safetyChecklists Schema

_id: Id<"safetyChecklists">
contractorId: Id<"contractorUsers">
jobId: Id<"jobs">
items: ChecklistItem[]
  .label: string
  .description: string
  .completed: boolean
photos: Id<"_storage">[]
signedOffBy: Id<"contractorUsers"> | undefined
signedOffAt: number | undefined
status: "in_progress" | "completed"
_creationTime: number

certifications Schema

_id: Id<"certifications">
contractorId: Id<"contractorUsers">
name: string
type: "osha" | "first_aid" | "fall_protection" | "electrical" | "other"
issuedDate: number
expirationDate: number
documentUrl: Id<"_storage"> | undefined
status: "valid" | "expiring" | "expired"
verifiedBy: Id<"adminUsers"> | undefined
_creationTime: number

trainingRecords Schema

_id: Id<"trainingRecords">
contractorId: Id<"contractorUsers">
courseName: string
provider: string
dueDate: number
completedDate: number | undefined
status: "assigned" | "in_progress" | "completed" | "overdue"
certificateUrl: Id<"_storage"> | undefined
assignedBy: Id<"contractorUsers">
_creationTime: number

Hooks & State

useSafety()
  dashboard score, KPIs, recent activity
useChecklist(jobId)
  checklist items, toggle state, photo uploads
useIncidentForm()
  form state, validation, submission
useIncidents(filters)
  paginated incident list with filters
useCertifications()
  cert list, expiration alerts, upload
useTeamSafety()
  member scores, streaks, aggregates
useCompliance()
  OSHA categories, readiness score
useSafetyReports(period)
  incident rate, KPIs, concerns, meetings

Convex Queries & Mutations

api.safety.dashboard.get
api.safety.checklists.getByJob
api.safety.checklists.submit
api.safety.checklists.toggleItem
api.safety.incidents.create
api.safety.incidents.list
api.safety.incidents.update
api.safety.incidents.export
api.safety.certifications.list
api.safety.certifications.upload
api.safety.team.scores
api.safety.osha.status
api.safety.reports.generate
api.safety.reports.meetingNotes
Dashboard & Checklists
9:41
Safety & Compliance
Safety Score
94%
Overall
247
Days Safe
Pre-Job Checklist
Hard hats & safety glasses
Fall protection inspected
Ladder condition check
First aid kit stocked
Active Alerts
Harness Recall Notice
Lot #4412 — Replace immediately
Critical
OSHA 300 Log Due
Deadline: March 1, 2026
Due Soon
3 Certifications Expiring
Within 30 days — 2 crew members
Info
Team Safety Scores
98%
Roofing
91%
Electrical
87%
Plumbing
Incidents & Certifications
9:41
Incidents & Certifications
Incident History
Near Miss — Roof Edge
Feb 28, 2026
Near Miss
Minor Injury — Scrape
Feb 15, 2026
Injury
Safety Drill Completed
Feb 1, 2026
Resolved
Certifications
OSHA 30-Hour
Expires Dec 2026
Active
Fall Protection
Expires Apr 2026
Expiring
Confined Space Entry
Expired Jan 2026
Expired
Incident Trend
OSHA & Reports
9:41
OSHA & Reports
OSHA Compliance
OSHA 300 Log
Filed
OSHA 301 Forms
2 Pending
Annual Summary
Complete
Quick Actions
Auto-Generate Reports
Email Notifications
Safety Reports
12
Inspections
0
Violations
Safety Command Center
https://app.3bids.io/contractor/safety
3Bids
Dashboard ⌘1
Checklists ⌘2
Incidents ⌘3
Certifications ⌘4
Team Scores ⌘5
OSHA ⌘6
Reports ⌘7
MK
Mike Kowalski
Contractor
Settings ⌘,

Safety Command Center

94%
Safety Score
247
Days Safe
3
Open Items
18
Certifications
Active Checklists
PPE Verification
8/8 items completed
Ladder Inspection
5/6 items — 1 flagged
Scaffolding Setup
Not started
Recent Incidents
Near Miss — Roof Edge
Feb 28 — Under review
Safety Drill — Q1
Feb 1 — Completed
Compliance & Reports
https://app.3bids.io/contractor/safety/compliance
3Bids
Dashboard ⌘1
Checklists ⌘2
Incidents ⌘3
Certifications ⌘4
Team Scores ⌘5
OSHA ⌘6
Reports ⌘7
MK
Mike Kowalski
Contractor
Settings ⌘,

Compliance & Reports

100%
OSHA Compliance
12
Inspections YTD
0
Violations
3
Reports Filed
OSHA Logs
OSHA 300 Log (2025)
Filed Jan 15, 2026
OSHA 300A Summary
Posted Feb 1, 2026
OSHA 301 — Incident #47
Due Mar 15, 2026
Safety Trend