Back to projects

ControlBrief

A local compliance research tool that answers questions from a list of approved public sources.

Screenshot of the ControlBrief question screen for first-pass compliance review of EU businesses.
The Q&A screen uses approved sources focused on the EU and Germany and shows a legal-advice disclaimer.

Demo

See it in action

A test question about Workspace Agents, followed by the answer and the source registry behind it.

Why I built it

I kept running into early compliance questions around AI products, vendor claims, and rollout decisions. I wanted a way to organize the relevant public sources before asking legal, compliance, security, or data protection specialists for a full review.

The app searches a list of approved sources and returns a cited answer with the main risks and the questions that still need a specialist. It is a research aid, not legal advice.

What I built

I built the MVP for my own testing. I wanted to see whether retrieval-augmented generation could help with compliance research without hiding where the answer came from.

The registry has 24 approved sources. Twelve are indexed into 528 chunks that the app can search. Answers include a short response, citations, risks, confidence, and points that need human review.

What failed

Only 12 of the 24 approved sources could be indexed. Several official websites blocked access or returned empty pages, which meant they had to stay out of retrieval even though I wanted to use them.

That changed how I judged the answers. A good-looking response did not mean much if half the source list was missing. The registry needed to show which sources worked, which failed, and what the answer could not cover.

ControlBrief source registry showing blocked public law sources and indexed retrieval chunks.
Several public law sources were blocked or returned empty content, so they stayed out of retrieval.

What I’d change

I would improve the interface before adding more sources. Source status, failed fetches, confidence, and human-review flags should be easier to scan.

I would also add stable snapshots for official sources that block retrieval. Retrieval coverage and answer quality should be shown separately so a clean answer does not hide missing source material.

How I built it

I built the local interface in Streamlit, created the source registry, split approved content into chunks, and stored the embeddings in Chroma. OpenAI APIs generate the answer from the retrieved chunks and attach citations.

Tech stack

  • Python and Streamlit
  • Chroma
  • OpenAI APIs
  • Curated source registry
  • Local parsing, chunking, embedding, and citation tracking