Provifact
Provifact turns “we think our company Macs are secure” into “here is the proof.”
Inspiration
When an auditor asks, “Can you prove every managed Mac is encrypted?”, the answer is rarely in one place.
An endpoint engineer may have to open Microsoft Intune, find the approved policy, locate the Git change and reviewer, compare expected and observed values, collect screenshots, document exceptions, and then translate all of that into language an auditor can understand. The work is repetitive, the evidence becomes stale, and a polished dashboard can still hide unsupported settings or missing collection.
I built Provifact because teams should not have to reconstruct months of configuration history every time an audit begins.
What it does
Provifact connects an approved endpoint-security baseline in Git to read-only Microsoft Intune observation and produces a traceable evidence chain:
Approved intent → observed state → deterministic drift → sanitized proof → bounded GPT-5.6 explanation → human review
For a setting such as FileVault, Provifact can show:
- the approved target value;
- the value observed through Microsoft Graph;
- the exact reviewed provider definition used for the comparison;
- assignment and collection evidence;
- stable evidence IDs and fingerprints;
- whether the setting is aligned, drifting, unsupported, unmapped, or unevaluated; and
- a plain-language GPT-5.6 explanation that cites the verified evidence.
The public Mission Control experience gives endpoint, security, GRC, and audit teams one place to inspect findings, change history, evidence health, privacy boundaries, and the implementation backlog.
The Build Week proof
The current vertical slice focuses on managed Apple endpoints in Microsoft Intune.
It includes a pinned 98-rule macOS Level 1 planning inventory derived from a recorded revision of the NIST macOS Security Compliance Project. Four exact Intune provider mappings are currently reviewed and enter the deterministic evaluation denominator. The remaining 94 rules stay visible as mapping or implementation work instead of being hidden or mislabeled as failed controls.
The production demo serves a reviewed live sanitized tenant snapshot. Raw tenant responses, policy names, device identities, user identities, object IDs, credentials, and tokens are not published. Current and prior sanitized snapshots can show new, resolved, and unchanged technical drift without retaining a public tenant data lake.
Provifact does not claim CIS certification, a CMMC assessment result, or an organizational compliance verdict. It produces technical configuration evidence that a qualified human can review.
Why GPT-5.6 is necessary
The deterministic engine establishes the facts. GPT-5.6 explains the facts.
Provifact Assistant receives only a small, intent-specific subset of the sanitized evidence package. Production uses a fixed GPT-5.6 model with structured output, store: false, no tools, bounded input and output, and server-side credentials.
After the model responds, Provifact checks typed claims and evidence references against the deterministic package. Unsupported verdict language is rejected, and free prose remains labeled as generated analysis requiring human review.
The model cannot:
- change an Intune setting;
- decide whether a finding exists;
- alter drift status;
- approve an exception;
- accept risk;
- publish evidence; or
- determine organizational compliance.
This separation is deliberate: rules establish the facts, AI explains them, and a human makes the judgment.
How I built it
Provifact uses:
- Python for the typed provider, baseline, evidence, drift, sanitization, and verification layers;
- Microsoft Graph with GET-only collection for the reviewed Intune resource families;
- Git and GitHub Actions for approved intent, review history, protected-main workflows, and Azure OIDC authentication without a stored client secret;
- Cloudflare Workers and Static Assets for the public product, same-origin APIs, security headers, rate limiting, and the server-side OpenAI call;
- TypeScript for the Worker runtime and Assistant contract; and
- MkDocs and generated static assets for the judge-ready product and technical documentation.
The public repository includes a credential-free synthetic demonstration, installation instructions, sample data, a judge guide, architecture and security documentation, and commands for reproducing the build.
How Codex accelerated the work
Codex was the primary implementation collaborator throughout Build Week. It helped inspect and extend the architecture, implement typed provider and evidence contracts, build the GET-only collection boundary, create deterministic drift and current/prior comparison logic, add fail-closed sanitization, build Mission Control and Provifact Assistant, write adversarial tests, harden the Cloudflare runtime, and record decisions and limitations.
I retained the product, security, baseline-approval, external-system, review, and merge decisions. Codex accelerated implementation and verification; it did not replace human authority.
The validated build records:
- 245 passing Python tests with 90.03% branch coverage;
- 57 Worker tests;
- strict typing, linting, formatting, dependency audits, secret scanning, Bandit, CodeQL, and public-artifact scanning; and
- a deterministic credential-free demo that rebuilds identically.
Challenges
The hardest problem was not generating prose. It was deciding what the system is allowed to claim.
A missing value can mean real drift, incomplete collection, an unsupported provider shape, an unreviewed mapping, or a policy that has not been designed yet. Treating all of those as “noncompliant” would create a confident but false score. Provifact therefore keeps those states separate and exposes the denominator.
The second challenge was safely using real operational data. The live workflow collects through GET-only Microsoft Graph permissions, creates a private normalized package, reconstructs a separate allowlisted public package, scans it, verifies its fingerprint, and deploys only the reviewed artifact.
The third challenge was making AI useful without making it authoritative. Typed claims, evidence citations, structured output, post-verification, and human-review labeling make GPT-5.6 an explainer rather than a compliance oracle.
Accomplishments I am proud of
- A working public Mission Control experience using reviewed live sanitized Intune evidence.
- Exact provider-definition joins rather than display-name or substring matching.
- Honest 98/4/94 baseline coverage that exposes unfinished work.
- A protected OIDC workflow with no Entra client secret and no Intune write capability.
- A bounded GPT-5.6 Assistant whose claims and citations are checked against deterministic evidence.
- Current/prior evidence comparison without publishing raw tenant history.
- A reproducible, credential-free local demo for judges and contributors.
- A complete security, threat-model, architecture, and judge-validation record.
What I learned
AI becomes much more valuable when it is placed behind trustworthy evidence boundaries.
Git supplies reviewed intent and history. Microsoft Intune supplies observed configuration state. Deterministic code establishes what the evidence supports. GPT-5.6 makes that evidence understandable. Human reviewers retain authority.
I also learned that showing an honest gap is more useful than displaying a fabricated compliance score. A product earns trust not only by answering questions, but by clearly refusing to answer questions for which it lacks evidence.
What is next
The next product milestones are broader exact Intune mappings, private customer-owned deployments, RBAC, longer evidence history, formal exception and approval workflows, exportable evidence packages, and additional endpoint-management connectors.
The long-term goal is simple:
Stop rebuilding audit evidence after the fact. Keep a trustworthy proof chain as approved configuration and observed state change.
Built With
- cloudflare-workers
- github-actions
- microsoft-graph
- microsoft-intune
- mkdocs
- openai-api
- openai-codex
- openai-gpt-5.6
- python
- typescript
Log in or sign up for Devpost to join the conversation.