AI Guardrails — HFI GRC Work OS

How the AI drafting features are constrained. Written so it can be shown to a security-minded buyer.

The one-liner (for Dave)

It only reasons over the data in the workspace and what the advisor enters — no web browsing, no outside data sources — and a human reviews every draft before it's used. The scoring and mapping underneath are deterministic, not generative.

Where AI is live (across the product, not a demo corner)

Every one of these is grounded in the first-party control library, runs through the same guardrails below, and produces an editable/refinable/exportable draft:

Surface Generates
Data Inventory data-handling (privacy) narrative
Procurement → AI Narrative buyer-facing AI-use narrative
New Project Intake system overview (SSP starter)
AI Features plain-language end-user AI notice
Procurement → Buyer Questions drafted answers to buyer questions
Procurement → Vendor Checklist vendor due-diligence questions
GovRAMP → Monthly Review client check-in message
GovRAMP Readiness Workspace client-ready readiness summary
Findings & Gap Register leadership executive summary
Ask AI — Copilot (/eb/ask) answers portfolio questions over a deterministic briefing (counts are real queries; the AI never invents numbers)
Ask AI — persona commands (Deliver) grounded drafts on demand: map control, generate policy, generate workpaper, assess risk — each cites only control IDs from the first-party glossary
Ask AI — Tutor (/program/ask) plain-English control/GRC help for learners — grounded only in the public control library, never client/engagement data

Plus Refine with AI (plain-language revision) on every draft. The Tool-Stack Assessment mapping, gap-assessment scoring, and document generators remain deterministic — AI only drafts prose; it never computes the numbers. The gap-assessment findings the register summarizes are computed by the deterministic crosswalk engine and persisted server-side (tenant-scoped eb_gap_findings), so the executive-summary draft reasons over real, stored results — not figures the model produced.

Models (current): Anthropic Claude Sonnet 4.5 for drafting/Q&A, Claude Haiku 4.5 for lab feedback and Zoom recording enrichment. Server-side only (Supabase edge functions); the browser never holds the API key.

Two-lane AI boundary (for Dave/Noah): the Tutor (Learn lane) is grounded only in the public control library — zero path to client data. The Copilot (Deliver lane) reasons over the advisor's workspace + the active client. Different grounding contexts that never cross — so a learner's AI can never reach an engagement's data; the tenant boundary holds by construction.

What the model can and can't see

Guardrails in place

  1. First-party grounding (now live) — every drafting/Q&A call ships a compact slice of our own vetted reference data (the control glossary + cross-control evidence matrix) into the prompt, and the system instruction says to cite control IDs only from that glossary and never invent IDs, mappings, or evidence. The model grounds in our curated content, not training memory.
  2. Instructional guardrail — use only the provided facts, never invent systems/vendors/controls, flag missing info rather than guess. (This is why the privacy draft surfaced the test row and the data-retention gap instead of glossing over them.)
  3. Scoped input — only the active client's fields; no cross-client bleed. (The Tutor narrows further: public control library only, no client data.)
  4. Human-in-the-loop — nothing is auto-sent; every output is labeled a draft for review, and is editable/refinable before use.
  5. Deterministic core — the Tool-Stack Assessment mapping, bucket scoring, gap-assessment, and readiness numbers are rules-based (no hallucination risk). Only the narrative drafting is generative.

Honest caveats (we don't overclaim)

Hardening roadmap

The reference corpus (controls, crosswalks, evidence guide, tool map) lives in the Work OS, so widening the grounding is a configuration step, not a multi-week ingestion project.