Civic Observatory · Research & Information Analysis
NarroVue

Applying structured methodology, source verification, and longitudinal monitoring to how institutions communicate publicly.


About

Built it.

I built NarroVue using LLMs as my primary implementation tool. I don't write the code myself. What I do is frame the research question, direct the build, verify the output, and document the method.

The hard part was knowing what to build, breaking a problem down so a model can actually execute it, catching where the output is wrong or just plausible-sounding, and writing the process clearly enough so that I can re-run it. That's the same core discipline behind directing any technical work you don't personally execute by hand: define the problem, manage the build, verify the result.

The skill here is the part people underestimate, framing the problem and sequencing the build. The pipeline ran on a cross-model loop: one LLM wrote each stage, a second reviewed it, and I read the disagreements. I caught the errors by noticing when one model's code failed or didn't match the output I actually wanted. An experienced engineer would catch failure modes I'll miss; that's a real limit and I'm not hiding it. But the boundary runs both ways: the work of deciding what to build doesn't disappear just because someone else writes the code. It's just a different job.

Type Independent, self-directed project
Domain Civic & institutional research, information analysis
Location New Jersey

Projects

Research instruments.

Below is the live analyzer you can test yourself, right now, with no login. The rest of this list is end-to-end builds behind it: real pipelines that ingest, classify, and produce real data, covering source evaluation, structured classification, longitudinal tracking, and document recovery.

Live Tool Rhetorical Analysis

Rhetorical Fingerprint Analyzer

Paste any two speeches, policy documents, or news coverage text and the analyzer scores each across six rhetorical dimensions: Power, Threat, Moral, Urgency, Us vs. Them, and Legitimacy. Every contributing word is highlighted in context. This is the lexicon scoring engine that runs underneath the Narrative Intelligence Pipeline.

🟢 Live. Runs on Hugging Face Spaces. No login required.
Framework Gradio · Python
Hosted Hugging Face Spaces
Scoring Lexicon-based, normalized per 1,000 words
Six-category rhetorical score table
Color-coded word highlighting
Side-by-side passage comparison
Auto-generated insights
Prototype Policy Monitoring

Unified Narrative Intelligence Pipeline

End-to-end pipeline for processing policy documents into a structured Canonical Analysis Object (CAO). Ingests PDFs, chunks and embeds text, runs topic clustering via BERTopic, applies NLI-based rhetorical scoring across six dimensions, and produces three tiers of formatted intelligence reports. Designed for reproducibility, the CAO persists so reports regenerate instantly.

Prototype pipeline, built on Project 2025's "Mandate for Leadership" (740 sections, 7,397 segments). Not in production use.
Format Jupyter Notebook (Python)
Models bart-large-mnli, all-MiniLM-L6-v2, distilbert-sst2
Clustering BERTopic + KMeans
Output .parquet CAO + .docx tiered reports
Three-tier .docx intelligence reports
Canonical Analysis Object (.parquet + JSON)
Network graph export (.graphml)
Topic summary and target CSVs
Prototype Immigration

ICE & Immigration Law Monitor

RSS-based monitor tracking ICE enforcement incidents, court rulings, and executive policy actions. Ingests from curated sources (SCOTUSblog, ACLU, ProPublica, etc.), structures events by overreach category and produces a formatted weekly brief.

Prototype pipeline, built on RSS feeds from SCOTUSblog, ACLU, ProPublica, and related sources. Can be run daily, weekly, or monthly. Not a deployed service, not in production use.
Ingestion RSS/feedparser across 10+ sources
Libraries feedparser, pandas, networkx
Entities tracked 6 (ICE, DHS, DOJ, SCOTUS, ACLU, White House)
Structured HTML brief
Court ruling, incident, and policy logs
Overreach category tagging
Prototype Public Health

Public Health Compacts Monitor

Similar RSS-based monitor tracking interstate public health compacts including membership dynamics, narrative volatility, and alliance network structure. Includes visualized network graphs and brief covering policy signal shifts.

Prototype pipeline. Can also be run daily, weekly, or monthly. Not a deployed service, not in production use.
Format Jupyter Notebook (Python)
Visualizations Alliance network graph, membership chart
Output HTML dashboard + weekly brief
Interactive HTML dashboard
Alliance network visualization (.png)
Structured briefs
Archived Document Recovery

Document Restoration Tool

OCR-based restoration pipeline for degraded or scanned records. Evolved from Tesseract wrapper to iterative restoration system with image preprocessing and quality assessment.

📦 Complete. Built for any historical records.
Format Jupyter Notebook, 4 versions
Engine Tesseract OCR + image preprocessing
Libraries pytesseract, PIL, pdfplumber
Structured text extraction
Quality scoring per page

Research

Self-archived
working papers.

Two working papers documenting the analytical framework and a case study application. Both are self-archived on Zenodo, which issues a permanent DOI, not a peer-reviewed credential.

01
Computational Linguistics

From Text to Structure: Cross-Document Narrative Analysis Using AI-Assisted Semantic Signal Extraction Working Paper

Introduces Semantic Signal Analysis (SSA), the computational framework underlying NarroVue's pipeline. SSA models discourse as a network of claims rather than operating at the document or sentence level, enabling structural analysis of narratives across heterogeneous corpora.

DOI: 10.5281/zenodo.19470453
02
Policy Analysis

Manufactured Authority and Narrative Engineering in Policy Documents Working Paper

Case study applying the SSA framework to Project 2025's "Mandate for Leadership" (2023). Draws on 7,397 text segments across 740 sections, annotated with rhetorical framing scores, topic classifications, claim typologies, entity sentiment data, and extracted policy prescriptions.

DOI: 10.5281/zenodo.19470618

Technical Stack

What the work runs on.

Core language
Python 3 Jupyter
Data
pandas numpy parquet
NLP / ML
sentence-transformers BERTopic transformers spaCy scikit-learn
Models used
bart-large-mnli all-MiniLM-L6-v2 distilbert-sst2
Graph / network
networkx graphml
Document / ingestion
pdfplumber python-docx feedparser pytesseract
Output / reporting
python-docx matplotlib HTML/CSS
Infrastructure
local / Jupyter PyCharm Gradio Hugging Face Spaces
Archival
Zenodo DOI registration

Contact

Email or call for more information.

This project is the clearest evidence I can offer of how I work: define a question, gather and verify sources, structure the evidence, document the method so someone else could reproduce it, and communicate what I found. The habits I bring are close reading of long documents, source collection and organization, checking claims against primary material while I read, and version-tracking my builds so I can show how a project evolved.

Everything on this site is verifiable. The DOIs are real, the pipelines run, and the methodology is documented. I'm glad to walk you through any of it.