Skip to content
heyitspuruPublic

About

This is a demonstration of a client project i did while creating full pipeline for AI assited Learning module creations for Engineers and technicians onboarding on a Product (mechanical sector). So i created this project for a normal employees to use it in day to day work for validating the videos generated by NotebookLM

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

15 Commits

Folders and files

Repository files navigation

NOLAN

Turn an engineering training document into a video you can defend.

NotebookLM will turn a document into a narrated video in three clicks, and it will look great. What it won't tell you is whether it kept the numbers right. NOLAN reads your document first, then checks NotebookLM's output against it — every set-point, every equipment tag, every safety warning, verified or flagged.

NotebookLM builds. NOLAN checks its work.

The dashboard

Classifying a document and choosing where it's allowed to go Verification results, showing what passed and what didn't

Try it in 60 seconds

No API key, no NotebookLM account — just a document that's already committed to this repo, and one deliberately wrong number for the gate to catch.

python -m venv .venv && .venv/Scripts/python -m pip install -e ".[dev,web]"

.venv/Scripts/nolan new demo --docx corpus/generic/water_treatment.docx
.venv/Scripts/nolan parse demo --generic
.venv/Scripts/nolan intake demo --mode overview --sensitivity public
mkdir -p projects/demo/generated
cp corpus/generic/demo_study_guide.md projects/demo/generated/study_guide.md
.venv/Scripts/nolan verify demo
FAIL study_guide.md
 fail accuracy   '45 lpm' appears in the output but nowhere in the source
 fail precision  '40 LPM' from the source does not appear in the output [S01-02]

CHLORINATION-SYSTEM-OPERATION: FAILED (1 deliverable(s), text gate)

That's the whole product: a document said 40 LPM, the "generated" file said 45, and NOLAN caught it — arithmetic, not a model's opinion.

How it works

flowchart TD
    A[Your document] --> B[NOLAN reads it]
    B --> C[NOLAN prepares a pack for NotebookLM]
    C --> D[You: upload, paste, click Generate]
    D --> E[NOLAN checks the result against the document]
    E -->|looks right| F[Ship it]
    E -->|something's off| G[NOLAN tells you exactly what, and why]
Loading

The middle step is yours by design — NotebookLM has no public API, so those three clicks stay manual. Everything before and after them is automatic.

Two checks run on what comes back: a text check on the written study guide (exact values must appear, word for word), and an audio check on the video's narration (Whisper transcribes it, NOLAN listens for the numbers — spoken words drop units but keep the digits, so that's what it anchors on).

Confidentiality

Every document gets a sensitivity level — restricted (the default), internal, or public — and that alone decides where it's allowed to go: your own machine only, or also a bring-your-own-key model, or also NotebookLM. This is enforced in code, not policy: a restricted document cannot reach NotebookLM even by mistake, because the code that would send it there refuses to run. Every document that does go out gets logged — as a hash, never the content, so the log itself never becomes a second copy of what left.

Install

Requires Python 3.11+.

python -m venv .venv
.venv/Scripts/python -m pip install -e ".[dev,web]"   # Windows
# .venv/bin/python -m pip install -e ".[dev,web]"      # macOS/Linux
.venv/Scripts/python -m pip install -e ".[asr]"        # optional: audio checking

Build the dashboard once, then run it:

cd frontend && npm install && npm run build
.venv/Scripts/nolan serve        # http://127.0.0.1:8000

It only listens on your own machine, and has no login — it's a tool you run, not a service you host.

Using it on a real document

nolan new mycourse --docx your-document.docx
nolan parse mycourse                     # reads your house style, or falls back generically
nolan intake mycourse                    # asks what kind of course this is, and how sensitive
nolan notebooklm mycourse                # writes the pack for NotebookLM
#   ... generate a Video Overview + Study Guide in NotebookLM, download both ...
#   ... drop the study guide into projects/mycourse/generated/ ...
nolan verify mycourse                    # checks the study guide
nolan verify mycourse --asr video.mp4    # checks the narration

Or skip the terminal — nolan serve runs the same flow from the dashboard above.

Status

This is real, running software, not a finished product. What works today:

  • Reading any .docx — a recognised house style, or a generic structural read for anything else
  • Classifying a document and routing it (exact-wording courses vs. "close enough")
  • The text check and the audio check, both run against real NotebookLM output
  • The confidentiality boundary, tested against a real restricted document
  • Bring-your-own-key model support (OpenAI, Anthropic, Gemini) alongside a free local model — the local path is verified, the hosted ones aren't yet
  • The dashboard shown above, end to end

What's still ahead: broader real-world testing of the checks, LLM-assisted reading of documents in unfamiliar formats, and — if this moves beyond one person's laptop — proper login and a shared database.


Deeper technical notes live in CLAUDE.md.

About

This is a demonstration of a client project i did while creating full pipeline for AI assited Learning module creations for Engineers and technicians onboarding on a Product (mechanical sector). So i created this project for a normal employees to use it in day to day work for validating the videos generated by NotebookLM

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages