Skip to main content

SafePath Training — Product Requirements v2

Executive Summary

SafePath is a standalone-first, HazCom-extensible training management module. It serves two distinct use cases:

  1. Standalone Training Platform — EHS trainers, consultants, and safety managers who need to create courses, assign training, track completions, manage certifications, and prove OSHA compliance. Works without any other Tellus module.
  2. HazCom-Integrated Training — Companies using the full Tellus platform get auto-generated training from HazCom plans, chemical-change-triggered retraining, and SDS-linked content.

This architecture enables a faster path to revenue (trainers sign up and get value in minutes) while preserving the deeply integrated HazCom experience as an upsell.


Market Context

Why Standalone Training First

FactorData Point
EHS professionals in the US~164,000 (BLS 2024); est. 25,000-40,000 independent consultants
Current toolsExcel spreadsheets, paper binders, email - no dedicated affordable platform
Pain pointsCertification expiration tracking, audit-ready records, multi-client management
Generic LMS gapTalentLMS ($109-$579/mo), Teachable ($29-$189/mo) - zero OSHA/safety features
EHS platform gapHSI ($4,500+/yr), J.J. Keller (custom), VelocityEHS (enterprise) - too expensive for SMB
Price gapNo EHS-specific training platform under $3,600/yr for small businesses
OSHA training requirementsHundreds of standards require training; HazCom is just 1 of the Top 10 most-cited
TAM expansionMoving from HazCom-only to multi-standard training = ~9x larger regulatory-driven demand
Safety training spend44% of companies spend less than $200/employee/year on safety training
OSHA ROIEmployers save $4-$6 for every $1 invested in safety programs

Competitive Positioning

                   Enterprise <------- Price -------> SMB

VelocityEHS (enterprise) |
HSI ($4,500+/yr) |
J.J. Keller (custom) |
|
BIStrainer ($350+/mo) |
SiteDocs ($29/user/mo) |
|
| <-- GAP: No affordable EHS training
| platform for SMBs & consultants
|
* Tellus SafePath ($99-$449/mo, flat fee)
|
SafetyCulture ($24/user/mo) | (horizontal, not training-focused)
TalentLMS ($109/mo) | (generic LMS, no safety features)

Architecture: Two-Layer Design

Layer 1: Core Training Platform (Standalone)

Works for any company type - no other Tellus module required.

CapabilityDescription
Course creationManual course builder with video, PDF, slides, text lessons
Quiz and evaluationMCQ, true/false, matching; configurable pass rate and retakes
Assignment engineAssign by user, role, site, or department; set due dates
Certification trackingTrack expiring certifications; automated renewal reminders
Training matrixAuto-generate the OSHA-required training matrix by job role
Compliance calendarSingle view of all retraining deadlines across sites
Completion recordsImmutable records with e-signature, timestamp, audit trail
Certificate generationBranded PDF certificates with course, score, date, signatures
ReportingCompletion rates, overdue counts, audit-ready exports
Multi-languageEN/ES content and UI
Multi-companyTrainers/consultants manage multiple client organizations

Layer 2: HazCom Extension (Activates with ChemIQ + HazCom Plan)

Additional capabilities when company has ChemIQ and HazCom Plan modules enabled:

CapabilityDescription
Auto-generated coursesCreate course outline + quiz from approved HazCom plan + SDS data
Chemical-change retrainingNew chemical added triggers retraining for affected sites
Plan-version retrainingNew plan version published triggers retraining assignment
SDS-linked contentTraining content references specific SDS sections and GHS data
GHS pictogram trainingAuto-generated lessons from inventory's GHS classifications
AI ExplainerContextual chat during course that retrieves plan/SDS snippets

Why This Matters

ScenarioWithout layeringWith layering
EHS Trainer signs upMust set up chemical inventory + HazCom plan before any training valueCreates courses and assigns training immediately
Auto body shop ownerNeeds full HazCom setup (weeks) before trainingStarts manual training on Day 1; HazCom auto-training activates later
EHS ConsultantPlatform requires per-company chemical setupManages 20 client companies' training from one login; adds ChemIQ per client as needed
Time to valueWeeksMinutes

User Personas

Persona 1: EHS Trainer (Standalone)

Who: Independent safety training provider or small training company.

Context: Manages training programs for 5-50 client companies. Currently tracks everything in Excel and email. Charges clients per training session or monthly retainer.

Needs:

  • Create and manage a library of safety courses (fall protection, lockout/tagout, HazCom, etc.)
  • Assign courses to employees across multiple client companies
  • Track completion, scores, and certifications per employee
  • Generate audit-ready reports for each client when OSHA inspects
  • Get notified when certifications are expiring
  • Show clients a professional dashboard of their training compliance status

Key differentiator from generic LMS: Multi-company management, OSHA-aligned reporting, certification expiration tracking.

Persona 2: Safety Manager / Coordinator (In-House)

Who: Company employee responsible for safety compliance at one or more sites.

Context: Manages 10-200 employees across 1-5 sites. Needs to ensure all employees have required OSHA training. Currently uses paper sign-in sheets and a binder.

Needs:

  • Assign required training by job role and site
  • Track who has completed what and who is overdue
  • Handle new-hire onboarding training
  • Manage annual retraining (respiratory, bloodborne pathogens, etc.)
  • Produce records when OSHA inspector visits
  • Get dashboard showing overall compliance status

Key differentiator: Training matrix auto-generation, retraining schedule automation, compliance dashboard.

Persona 3: Full Platform User (HazCom + Training)

Who: Company using Tellus for chemical inventory, SDS management, and HazCom plans.

Context: Already set up ChemIQ with 50-500 chemicals. HazCom plan approved. Now needs to train employees on chemical hazards.

Needs:

  • Everything from Persona 2, plus:
  • Auto-generated HazCom training from plan approval
  • Training content linked to actual chemicals on-site
  • Automatic retraining when chemical inventory changes
  • GHS pictogram recognition training

Key differentiator: Deep HazCom integration that no standalone LMS can replicate.


Functional Requirements

7.1 Training Dashboard

All users see a role-appropriate dashboard:

RoleView
Employee"My Trainings" - assigned, in-progress, completed, overdue
Manager / Safety CoordinatorSite-level compliance - completion rates, overdue counts, expiring certs
EHS Trainer / ConsultantMulti-company overview - each client's compliance status at a glance
AdminCompany-wide roll-up - all sites, all employees, all courses

Dashboard elements:

  • Status chips: Pending, In Progress, Completed, Expired, Overdue
  • Filters: site, role, course, due date, certification type
  • Compliance percentage bar per site (green/yellow/red)
  • Upcoming expirations list (next 30/60/90 days)
  • Export current view to CSV/PDF

7.2 Course Management

7.2.1 Manual Course Creation (All Plans)

Course wizard:

  1. Course details - title, category, description, objectives, estimated duration
  2. Regulatory mapping - link to OSHA standard(s) (e.g., 1910.134 Respiratory Protection)
  3. Add lessons - Video, PDF, Slides, Text; upload assets; drag-to-reorder
  4. Quiz builder - MCQ (single/multi), True/False, Matching; set passing score (default 80%)
  5. Settings - retake policy (max attempts, cooldown), completion requirements, language (EN/ES)
  6. Review and publish (or save as Draft)

Course categories (pre-built):

  • Hazard Communication (HazCom/GHS)
  • Fall Protection
  • Lockout/Tagout (LOTO)
  • Respiratory Protection
  • Confined Space Entry
  • Electrical Safety
  • Personal Protective Equipment (PPE)
  • Bloodborne Pathogens
  • Fire Safety / Emergency Action
  • Forklift / Powered Industrial Trucks
  • Excavation / Trenching
  • Scaffold Safety
  • General Safety Orientation
  • Custom (user-defined)

Course templates (future): Pre-built course outlines for common OSHA topics that trainers can customize. This is a content library play - start with empty templates, build out over time.

7.2.2 Auto-Generated Courses (HazCom Extension - Standard + Pro)

Trigger: HazCom Plan approval (Module 6).

Process:

  1. System reads approved plan + SDS data for all chemicals in scope
  2. Generates course outline: GHS overview, hazard categories present, PPE requirements, emergency procedures
  3. Creates quiz questions from plan content
  4. Course saved in Draft state - trainer/coordinator reviews and edits before publishing
  5. Store linkage: course.plan_version_id

Content auto-generated from:

  • Chemical hazard classes present at site
  • GHS pictograms in use
  • PPE requirements from SDS Section 8
  • Emergency procedures from SDS Section 6
  • First aid measures from SDS Section 4

7.2.3 Course Versioning

When a published course is edited:

  • Create new version; existing assignments stay pinned to their assigned version
  • New assignments use latest version
  • Audit trail shows all versions with change history

7.3 Assignment Engine

7.3.1 Manual Assignment

Targeting options:

  • All employees at a site
  • By role (e.g., all warehouse workers)
  • By department
  • Specific individuals
  • Bulk assign from roster

Assignment details:

  • Due date (required)
  • Reminder schedule: initial notification, +3 days, +7 days, final (1 day before due)
  • Priority: Normal / Urgent
  • Notes for assignees

7.3.2 Auto-Assignment Rules (Standard + Pro)

Rule builder:

  • When: new employee joins + matches role/site, auto-assign courses
  • When: employee transfers to new site/role, auto-assign site-specific courses
  • When: certification expires in X days, auto-assign refresher course
  • When: (HazCom Extension) new chemical added to site, assign HazCom retraining

Rules are configurable per company and persist until modified.

7.3.3 Notifications

EventStarterStandardPro
Training assignedEmailEmail + In-appEmail + In-app + Webhook
Reminder (upcoming due)EmailEmail + In-appMulti-channel
Overdue alertEmailEmail + In-appMulti-channel + Manager alert
CompletedEmailEmail + CertificateEmail + Certificate + Webhook
Certification expiring-EmailEmail + Auto-assign refresher

7.4 Training Delivery

7.4.1 Learning Modes

  • Video - HTML5 player with watch tracking (must watch X% to complete)
  • PDF viewer - Embedded viewer with page tracking
  • Interactive slides - Step-through presentation
  • Text modules - Rich text content with embedded images
  • External link - Link to third-party content (e.g., OSHA website, YouTube)

Play-and-Lock: Quiz unlocks only after lesson completion thresholds are met. Users cannot skip ahead to quiz.

7.4.2 Multi-Language (EN/ES)

  • Course/lesson content fields per locale
  • Employee default language (from profile) auto-selects locale
  • Fallback to English if translation not available
  • UI strings in both languages

7.4.3 AI Explainer (Standard + Pro - HazCom Extension)

  • Contextual chat during HazCom courses
  • Retrieves plan/SDS snippets to answer questions
  • Simple definitions, no PII
  • Guardrails: cite internal sources only; rate-limited
  • Disabled for Starter tier and non-HazCom courses

7.5 Quiz and Evaluation

  • Question types: MCQ (single/multi-select), True/False, Matching (e.g., pictogram matching)
  • Passing rule: Default 80%, configurable per course (50%-100%)
  • Retake policy: Up to 3 attempts (configurable); optional cooldown between attempts
  • Feedback: Show correct answers + explanations after submission (configurable)
  • Scoring: Server-side only; randomized question order (optional)
  • Fail handling: After max attempts exhausted, manager/trainer notified; manual override available

7.6 Certification and Credential Tracking

This is a core standalone feature - critical for EHS trainers and safety managers even without any course delivery.

7.6.1 Certification Records

FieldDescription
Certification typePre-defined (OSHA 10, OSHA 30, Forklift, CPR/First Aid, etc.) or custom
Issuing authorityWho issued the certification (Tellus course, external provider, etc.)
Issue dateWhen the certification was granted
Expiration dateWhen it expires (auto-calculated from type defaults or manual)
StatusActive, Expiring Soon (within 60 days), Expired
EvidenceUploaded document (certificate scan, completion record)
EmployeeLinked to employee record

7.6.2 Certification Types (Pre-configured)

TypeDefault ValidityRetraining Frequency
OSHA 10-HourNo expirationRecommended every 5 years
OSHA 30-HourNo expirationRecommended every 5 years
Forklift Operator3 yearsEvery 3 years (1910.178)
Respiratory Fit Test1 yearAnnual (1910.134)
CPR/First Aid2 yearsEvery 2 years
Bloodborne Pathogens1 yearAnnual (1910.1030)
Confined Space EntryNo expirationAs needed per employer
HAZWOPER 40-HourNo expiration8-hour annual refresher
Fall Protection Competent PersonNo expirationAs needed
Fire Extinguisher1 yearAnnual (1910.157)
CustomConfigurableConfigurable

7.6.3 Expiration Dashboard

  • Calendar view of upcoming expirations
  • Color-coded: green (valid), yellow (expiring within 60 days), red (expired)
  • Filter by site, role, certification type
  • Bulk actions: assign refresher course, extend expiration, mark renewed
  • Export for compliance audits

7.6.4 External Certifications

Employees or managers can log certifications earned outside the platform:

  • Upload certificate document (PDF/image)
  • Enter issuing authority, dates, certification number
  • System tracks expiration and sends reminders just like internal certifications

7.7 Training Matrix

Auto-generate the OSHA-required training matrix showing which training is required for each job role.

FeatureDescription
Matrix viewRoles (rows) x Training topics (columns); cells show: Required / Completed / Overdue / N/A
Auto-populateBased on job role hazard profile and OSHA standard mappings
Manual overrideCoordinator can add/remove requirements per role
Gap analysisHighlight roles with missing training requirements
ExportPDF/Excel for audit binder

7.8 Completion Records and Certificates

7.8.1 Completion Records

Each training completion creates an immutable record:

  • Employee name, ID, job title, site
  • Course title, version, OSHA standard reference
  • Completion date and time
  • Quiz score and attempt number
  • Duration (time spent on course)
  • Delivery method (online, in-person, external)
  • Acknowledgment e-signature with timestamp and IP hash
  • Instructor/trainer name (for in-person courses)

7.8.2 Certificate Generation

  • PDF certificate: course title, employee name, date, score, trainer signature
  • Company branding on certificates (Standard + Pro)
  • Saved to employee record; downloadable anytime
  • Bulk certificate generation for classroom training

7.8.3 In-Person / Classroom Training Records

Not all training happens online. SafePath supports recording in-person training:

  • Create a classroom training session (date, location, instructor, topic)
  • Take attendance (manual entry or QR code check-in)
  • Record pass/fail for each attendee
  • Generate completion records and certificates
  • This is critical for EHS trainers who deliver live training

7.9 Retraining and Continuous Review

7.9.1 Time-Based Retraining (Core - All Plans)

  • Configure retraining schedules per course or certification type
  • System auto-creates assignments when retraining is due
  • Dashboard shows upcoming retraining needs

7.9.2 Event-Based Retraining (HazCom Extension - Standard + Pro)

TriggerAction
New chemical added to site (ChemIQ)Queue HazCom retraining for affected site employees
New HazCom plan version publishedQueue retraining with updated content
Employee transferred to new site/roleAuto-assign site-specific and role-specific courses
Safety incident logged (future: IncidentIQ integration)Trigger corrective training assignment

7.9.3 Annual Effectiveness Review

  • Annual task for Safety Coordinator: review training program effectiveness
  • Checklist: completion rates, quiz scores, incident correlation, employee feedback
  • Option to clone previous year's curriculum as starting point

7.10 Multi-Company Management (EHS Trainer / Consultant Portal)

This is the key differentiator for the standalone use case.

FeatureDescription
Client listTrainer sees all client companies in a single dashboard
Per-client data isolationEach client's employees, courses, and records are fully isolated
Cross-client course libraryTrainer maintains a personal course library; assigns copies to client companies
Client-branded reportsExport audit-ready reports with client company branding
Client accessClient company admins can log in to see their own training status
BillingTrainer account pays for all client companies (or per-client billing - future)

How it maps to the existing Tellus multi-tenant model:

  • EHS Trainer is an "EHS Trainer" company type (already defined in industry types)
  • Each client is a separate company in the system
  • Trainer has a cross-company role that grants read/write access to client companies
  • Client employees only see their own company's data

7.11 Reporting and Compliance

ReportDescriptionFormat
Training completion summaryBy site, role, course - completion %, overdue countDashboard + CSV/PDF
Individual training transcriptAll training completed by an employee with dates and scoresPDF (audit-ready)
Certification statusActive, expiring, expired certifications by employeeDashboard + CSV
Training matrixRequired vs. completed training by rolePDF/Excel
OSHA audit packageBundle of all training records, acknowledgments, certificates for a siteZIP (PDFs)
Course effectivenessAverage scores, pass rates, time to complete per courseDashboard

Tier Enforcement

FeatureStarterStandardPro
Manual course creationYesYesYes
Quiz and evaluationYesYesYes
Manual assignmentYesYesYes
Completion records and certificatesYesYesYes
Certification trackingYesYesYes
Training matrixBasicFullFull
Multi-language (EN/ES)YesYesYes
In-person training recordsYesYesYes
External certification loggingYesYesYes
Compliance reportsBasicFullFull + custom
Auto-assignment rules-YesYes
Reminder automation-YesYes
Auto-generated HazCom courses-YesYes
AI Explainer-YesYes
Chemical-change retraining--Yes
Multi-company management--Yes
Company branding on certificates--Yes
Webhook / LMS API--Yes
SSO for employees--Yes

Data Model

New Tables

safepath_courses
course_id (UUID, PK)
company_id (FK -> core_data_companies)
title
description
category (FK -> safepath_course_categories)
osha_standard_ref (e.g., "1910.134")
estimated_duration_minutes
passing_score_percent (default 80)
max_retakes (default 3)
status (draft / published / archived)
plan_version_id (FK -> chemiq_plan_versions, nullable -- HazCom extension)
version_number
locale (en / es)
created_by (FK -> users)
created_at, updated_at

safepath_lessons
lesson_id (UUID, PK)
course_id (FK -> safepath_courses)
title
lesson_type (video / pdf / slides / text / external_link)
content (JSONB -- structured content per type)
sort_order
completion_threshold (e.g., 80% video watched)
locale (en / es)
created_at, updated_at

safepath_lesson_assets
asset_id (UUID, PK)
lesson_id (FK -> safepath_lessons)
file_url (S3 signed URL)
file_type (video/mp4, application/pdf, etc.)
file_size_bytes
created_at

safepath_quizzes
quiz_id (UUID, PK)
course_id (FK -> safepath_courses)
title
sort_order (placement within course)
created_at, updated_at

safepath_quiz_questions
question_id (UUID, PK)
quiz_id (FK -> safepath_quizzes)
question_type (mcq_single / mcq_multi / true_false / matching)
question_text
options (JSONB -- array of options with correct flags)
explanation (shown after answer)
sort_order
locale (en / es)

safepath_assignments
assignment_id (UUID, PK)
company_id (FK -> core_data_companies)
course_id (FK -> safepath_courses)
course_version (pinned at assignment time)
assigned_to (FK -> users)
assigned_by (FK -> users)
site_id (FK -> company_sites, nullable)
due_date
priority (normal / urgent)
status (pending / in_progress / completed / overdue / expired)
notes
created_at, updated_at

safepath_results
result_id (UUID, PK)
assignment_id (FK -> safepath_assignments)
user_id (FK -> users)
course_id (FK -> safepath_courses)
attempt_number
score_percent
passed (boolean)
started_at
completed_at
duration_seconds
delivery_method (online / in_person / external)
instructor_name (for in-person)
acknowledgment_signature (e-sign hash)
acknowledgment_ip_hash
acknowledgment_at

safepath_certifications
certification_id (UUID, PK)
company_id (FK -> core_data_companies)
user_id (FK -> users)
certification_type_id (FK -> safepath_certification_types)
issuing_authority
issue_date
expiration_date (nullable -- some don't expire)
status (active / expiring_soon / expired / revoked)
evidence_file_url (uploaded certificate scan)
source (internal / external)
result_id (FK -> safepath_results, nullable -- if earned via platform)
created_at, updated_at

safepath_certification_types
type_id (UUID, PK)
name (e.g., "OSHA 10-Hour", "Forklift Operator")
default_validity_months (nullable)
retraining_frequency_months (nullable)
osha_standard_ref (nullable)
is_system (boolean -- pre-configured vs. custom)
company_id (FK, nullable -- null for system types, set for custom)

safepath_course_categories
category_id (UUID, PK)
name
is_system (boolean)
company_id (FK, nullable)
sort_order

safepath_auto_assignment_rules
rule_id (UUID, PK)
company_id (FK -> core_data_companies)
course_id (FK -> safepath_courses)
trigger_type (new_hire / role_change / site_transfer / cert_expiring / chemical_added)
trigger_config (JSONB -- role filter, site filter, days before expiry, etc.)
is_active (boolean)
created_by (FK -> users)
created_at, updated_at

safepath_classroom_sessions
session_id (UUID, PK)
company_id (FK -> core_data_companies)
course_id (FK -> safepath_courses)
instructor_name
session_date
location
site_id (FK -> company_sites, nullable)
notes
created_by (FK -> users)
created_at

safepath_audit_log
log_id (UUID, PK)
company_id (FK -> core_data_companies)
event_type (course.created / course.published / assignment.created / training.completed / cert.issued / etc.)
entity_type (course / assignment / result / certification)
entity_id (UUID)
user_id (FK -> users)
details (JSONB)
ip_hash
created_at

Existing Tables Used

  • core_data_companies - tenant isolation
  • users - employee/trainer records
  • company_sites - site-level assignment and reporting
  • company_roles - role-based training matrix
  • chemiq_plan_versions - HazCom extension linkage
  • chemiq_inventory - chemical-change retraining triggers

API Endpoints

Core Training APIs

POST   /api/v1/training/courses                    -- Create course
GET /api/v1/training/courses -- List courses (with filters)
GET /api/v1/training/courses/:id -- Get course details
PUT /api/v1/training/courses/:id -- Update course
POST /api/v1/training/courses/:id/publish -- Publish course
POST /api/v1/training/courses/:id/archive -- Archive course

POST /api/v1/training/courses/:id/lessons -- Add lesson
PUT /api/v1/training/lessons/:id -- Update lesson
DELETE /api/v1/training/lessons/:id -- Remove lesson
POST /api/v1/training/lessons/:id/assets -- Upload asset

POST /api/v1/training/courses/:id/quizzes -- Add quiz
PUT /api/v1/training/quizzes/:id -- Update quiz
POST /api/v1/training/quizzes/:id/questions -- Add question
PUT /api/v1/training/questions/:id -- Update question

POST /api/v1/training/assignments -- Create assignment(s)
GET /api/v1/training/assignments -- List assignments (with filters)
PUT /api/v1/training/assignments/:id -- Update assignment

POST /api/v1/training/assignments/:id/start -- Start training
POST /api/v1/training/assignments/:id/submit-quiz -- Submit quiz answers
POST /api/v1/training/assignments/:id/complete -- Mark complete (with e-sign)

GET /api/v1/training/results -- List results
GET /api/v1/training/results/:id -- Get result details
GET /api/v1/training/results/:id/certificate -- Download certificate PDF

Certification APIs

POST   /api/v1/training/certifications             -- Log certification (internal or external)
GET /api/v1/training/certifications -- List certifications (with filters)
PUT /api/v1/training/certifications/:id -- Update certification
GET /api/v1/training/certifications/expiring -- Get expiring certifications

GET /api/v1/training/certification-types -- List certification types
POST /api/v1/training/certification-types -- Create custom type

Dashboard and Reporting APIs

GET    /api/v1/training/dashboard                  -- Training dashboard data
GET /api/v1/training/matrix -- Training matrix (roles x courses)
GET /api/v1/training/reports/completion -- Completion report
GET /api/v1/training/reports/transcript/:user_id -- Individual transcript
GET /api/v1/training/reports/audit-package -- OSHA audit package (ZIP)

Classroom / In-Person APIs

POST   /api/v1/training/classroom-sessions         -- Create session
GET /api/v1/training/classroom-sessions -- List sessions
POST /api/v1/training/classroom-sessions/:id/attendance -- Record attendance + results

Auto-Assignment APIs (Standard + Pro)

POST   /api/v1/training/auto-rules                -- Create auto-assignment rule
GET /api/v1/training/auto-rules -- List rules
PUT /api/v1/training/auto-rules/:id -- Update rule
DELETE /api/v1/training/auto-rules/:id -- Delete rule

Implementation Phases

Phase 1: Core Platform (MVP)

Goal: Standalone training management that works without any other module.

FeaturePriority
Course creation (manual)P0
Lesson builder (text + PDF + external link)P0
Quiz builder (MCQ + T/F)P0
Manual assignment with due datesP0
Training delivery (play-and-lock)P0
Completion records with e-signatureP0
Basic dashboard (my trainings, site compliance)P0
Certificate generation (PDF)P0
Certification tracking (internal + external)P0
EN/ES multi-languageP1
In-person/classroom training recordsP1
Training matrixP1
Export (CSV/PDF)P1

Phase 2: Automation + HazCom Extension

FeaturePriority
Auto-assignment rulesP0
Reminder automation (email + in-app)P0
Certification expiration alertsP0
Auto-generated HazCom courses (from plan)P1
Chemical-change retraining triggersP1
AI Explainer for HazCom coursesP2

Phase 3: Scale + Differentiation

FeaturePriority
Multi-company management (consultant/trainer portal)P0
Video lesson support (upload + streaming)P1
Interactive slidesP1
Compliance calendar viewP1
OSHA audit package export (ZIP)P1
Webhook / LMS APIP2
SSO for employee accessP2
Pre-built course templates (OSHA topics)P2

Security Checklist

  • Tenant isolation (RLS) on all safepath tables via company_id
  • Access control: Trainer/Admin manage courses and assignments; Employees view and complete only their assigned courses
  • Asset security: S3 signed URLs with short TTL; file type validation on upload
  • Quiz integrity: server-side scoring only; optional randomized question order
  • Immutability: completed results and certificates are append-only; corrections via admin note, not overwrite
  • Audit trail: all create/edit/assign/complete/acknowledge events logged with user, timestamp, IP hash
  • AI Explainer (if enabled): restricted to internal corpora (plan/SDS); redact PII; rate-limited

Analytics Events

training.course.created
training.course.published
training.course.autogenerated (HazCom extension)
training.assignment.created
training.assignment.started
training.assignment.completed
training.quiz.submitted
training.quiz.passed
training.quiz.failed
training.certificate.issued
training.certification.logged (external cert)
training.certification.expiring
training.retraining.triggered
training.classroom.recorded

Feature Flags

FlagControls
training.coreEntire training module
training.autogenAuto-generated HazCom courses
training.ai_explainerAI Explainer chat during courses
training.auto_assignmentAuto-assignment rules engine
training.multi_companyMulti-company trainer portal
training.video_lessonsVideo upload and streaming
training.lms_apiExternal LMS/webhook API
training.certificatesCertificate generation
training.multilangMulti-language content

Success Metrics

MetricTargetWhy
Time to first course created< 15 minutesValidates ease of use
Time to first assignment< 30 minutes from signupFast time-to-value
Course completion rate> 80%Training is actually being completed
Certification tracking adoption> 60% of companies use itCore differentiator is sticky
Training matrix generated> 50% of Standard+ companiesProves compliance value
EHS Trainer multi-company usage> 3 client companies avgValidates consultant use case
OSHA audit package downloaded> 30% of companies/yearProves audit-readiness value