Skip to main content

AI Governance

We govern our own AI — and we show our work

Vouli IQ exists to make AI decisions governable. So we hold our own platform to the same bar. Below, each function of the NIST AI RMF and each core obligation of the EU AI Act is mapped to a control we actually run — with the concrete mechanism behind it.

This is a self-assessment of engineering controls, not a legal certification. Formal SOC 2 and ISO readiness is underway separately.

NIST AI RMF 1.0

GOVERN — culture, accountability & oversight

Accountability structures and policies for AI risk

Separation-of-duties with dual control on irreversible AI actions; model cards record each model’s purpose and limits.

src/lib/governance/sod.ts · src/lib/ai-governance/model-cards.ts

Transparent, tamper-evident record of AI decisions

Every generation, fallback, cache hit and validation event is written to an append-only, hash-chained audit log.

src/lib/audit/log.ts · migration 086 (audit_log_hash_chain)

MAP — context & risk framing

Establish the context and intended use of the AI system

Org context is loaded fresh per request and scoped to the tenant; the SOVEREIGN diagnostic frames maturity and risk before synthesis.

src/lib/ai/prompts.ts (buildOrgContext) · scorecard scoring

Verify claims against ground truth, not self-report

Telemetry verification checks self-reported maturity against live Jira/GitHub signals and flags contradictions as findings.

src/lib/telemetry/shared.ts (verifyDimensions)

MEASURE — analyse, assess & track

Detect and mitigate hallucination / fabrication

Every number in generated prose must trace to a licensed source; framework citations are validated against a catalogue and stripped if invented.

src/lib/ai/numeral-provenance.ts · src/lib/ai/citation-validation.ts

Measure reliability of AI outputs

Board-tier outputs run dual-provider consensus with an adjudicating pass; a zero-AI-call eval harness gates schema/content regressions in CI.

src/lib/ai/consensus.ts · src/lib/eval (eval harness)

MANAGE — prioritise, respond & recover

Manage AI risks from untrusted input

Untrusted context passes 6-category prompt-injection neutralisation and high-confidence PII redaction before it reaches a model.

src/lib/ai/untrusted.ts · src/lib/security/pii.ts

Resilience to provider failure

Per-provider circuit breakers with retry + automatic Claude→GPT-4o failover keep the system available under upstream faults.

src/lib/observability/circuit-breaker.ts · src/lib/ai/engine.ts

EU AI Act

Risk management & data governance (Art. 9–10)

Operate a risk-management system across the lifecycle

The SOVEREIGN diagnostic and risk register continuously identify, score and track AI-programme risks.

src/lib/scorecard · src/lib/risks/service.ts

Data governance over inputs

Tenant isolation by deny-by-default RLS; PII redaction and injection neutralisation on all untrusted input.

RLS (get_current_org_id) · src/lib/security/pii.ts

Transparency & human oversight (Art. 13–14)

Provide interpretable, well-founded output

Every insight carries a confidence band and a Vouli verdict with explicit counterarguments and cited sources.

src/lib/ai/schemas.ts (confidence_band, vouli_verdict)

Enable effective human oversight

Consensus disagreements and telemetry contradictions are surfaced to a human, never silently resolved; irreversible actions require dual control.

src/lib/ai/engine.ts (consensus) · src/lib/agents/executor.ts

Accuracy, robustness & record-keeping (Art. 15, 12)

Accuracy and robustness

Structured output is schema-validated with a corrective retry then hard rejection; numeric provenance blocks unsupported figures.

src/lib/ai/engine.ts (validation retry) · numeral-provenance.ts

Automatic record-keeping (logging)

Append-only, hash-chained audit log records AI events with tenant, actor, model and outcome.

src/lib/audit/log.ts · migration 086

Questions about our AI governance posture? Talk to us.