Product Architecture

How CredVault works

A look inside the engines that power credential lifecycle management — from upload to approval to renewal.

Core data flow
Upload
Employee submits document
Validate
Rules engine checks completeness
Approve
Manager reviews & signs off
Store
Vault with version history
Remind
Auto alerts before expiry
Reminder engine
schedule: daily 06:00 UTC
for each credential C:
  days_left = C.expiresOn - today
  if days_left in [90, 60, 30, 14, 7, 1]:
    notify(C.owner, "${days_left} days until ${C.name} expires")
  if days_left < 0 and not C.notified_expired:
    escalate(C.owner.manager)

Configurable cadence per organization. Supports email, in-app, and SMS channels.

Rules engine
rule "RN must hold license + BLS"
  when role == "Registered Nurse"
  require credential type "License" status active
  require credential type "Certification" name "BLS" status active
  else mark non_compliant

rule "Background check expires yearly"
  when type == "Compliance" and name contains "Background"
  set ttl 365 days

Declarative compliance rules per role and per credential type, evaluated in real time.

System layers
API & Web
REST + WebSocket layer powering web and mobile clients
Workflows
Approvals, reminders, and renewal queues
Vault & Audit
Encrypted document store with immutable audit log