Hood College Signal Atlas is a Python pipeline for Hood College in Frederick, Maryland. It collects official source coverage, filters for Hood-specific relevance, extracts plausible person mentions, stores article-level evidence in SQLite, and writes markdown discovery outputs.
The project is designed around four repeatable jobs:
- collect Hood College coverage from trusted sources
- extract people and preserve evidence from each article
- write a daily discovery summary in markdown
- derive weekly co-mention connections from stored evidence
The current codebase already includes:
- a runnable CLI
- source readers for paginated
hood.edu/news, paginatedhood.edu/discover/stories, RSS/Atom feeds, selected Frederick-area media feeds, and Reddit search feeds - SQLite storage
- conservative Hood-specific disambiguation
- a heuristic people extractor designed for easy replacement later
- markdown daily and weekly output writers
- narrated social-network-analysis reports over the cumulative co-mention graph
- unit tests for key first-slice behavior
This project is modeled after lessons learned in the network reference repo:
- start with clean official sources before adding broader media
- prefer traceable evidence over aggressive extraction
- store lower-confidence findings only when they remain inspectable
- delay connection analysis until person quality is good enough
- make reprocessing part of the design from the beginning
This repository is only about Hood College at 401 Rosemont Ave., Frederick, MD 21701, including its official academic, student-life, and athletics presence.
It must explicitly avoid false matches from similarly named institutions, places, organizations, or people.
- article records with normalized body text and relevance decisions
- best-effort inferred story dates, along with the source of each date inference
- article-scoped person mention records
- official faculty/staff directory records from
hood.edu/academics/faculty, retained with active status and last-seen dates - daily markdown discovery stories
- weekly markdown cumulative connection reports
- narrated social network analysis markdown and JSON, including strongest bonds, role leaders, faculty visibility, bridge people, role mixing, emerging people, and connected communities
- monthly markdown reports for the prior calendar month, including a newspaper-style essay about what happened at Hood
- cumulative summary table, discovery-growth graph, top-25 connection network graph, and a draggable HTML network view
- a local SQLite database that preserves article-level evidence
python -m pip install -r requirements.txt -e .
python -m hood_pipeline init-db
python -m hood_pipeline daily-run
python -m hood_pipeline weekly-run
python -m hood_pipeline social-network-run
python -m hood_pipeline monthly-run --date 2026-05-01
python -m hood_pipeline import-faculty-staff
python -m hood_pipeline build-pagesThe default source configuration lives in sources/hood_sources.json.
python -m hood_pipeline init-db
python -m hood_pipeline daily-run --date 2026-03-20
python -m hood_pipeline weekly-run --date 2026-03-20
python -m hood_pipeline social-network-run --date 2026-03-20
python -m hood_pipeline monthly-run --date 2026-05-01
python -m hood_pipeline import-faculty-staff --date 2026-04-29
python -m hood_pipeline build-pages --output-dir _siteSupported commands:
init-db: create the SQLite schemadaily-run: fetch sources, ingest articles, extract people, and write the daily discoveryweekly-run: build a cumulative co-mention network snapshot and write the weekly reportsocial-network-run: build the cumulative social network analysis report from stored evidencemonthly-run: publish a newspaper-style monthly story for the month that just ended, keyed to article story dates instead of fetch datesimport-faculty-staff: import the official paginated Hood faculty directory into SQLite, mark current entries active, retain prior entries, and write a markdown directory reportbuild-pages: build a static GitHub Pages site from the generated summary artifacts
The daily run also refreshes:
data/summary/discovery-summary.mddata/summary/discovery-growth.svgdata/summary/connection-network.svgdata/summary/connection-network.htmldata/summary/social-network-analysis.mddata/summary/social-network-analysis.json
On the first day of each month, daily-run also publishes:
data/monthly/YYYY-MM.md
The Pages build writes a publishable static site to _site/ by default, wrapping the interactive network, social network analysis report, discovery graph, cumulative discovery table, and latest monthly story into one browser-friendly landing page.
GitHub Actions workflows now live in .github/workflows/:
ci.yml: runs the unit test suite on pushes tomainand on pull requestsdaily-pipeline.yml: runs the daily Hood pipeline on a schedule and commits generateddata/outputs back tomainweekly-pipeline.yml: runs the weekly connections report on a schedule and commits generateddata/outputs back tomainpages.yml: builds and deploys the GitHub Pages site from the current summary artifacts onmain
The Pages workflow runs after normal pushes to relevant code, docs, and generated summary paths. It also runs after successful scheduled daily or weekly pipeline runs, so GitHub Pages is refreshed from the latest committed data/summary/ and data/monthly/ artifacts even when the update was produced by GitHub Actions.
Current schedules:
- daily pipeline:
13:05 UTCevery day - weekly connections:
13:35 UTCevery Sunday
In America/New_York, those map to:
- daily pipeline:
9:05 AM EDTor8:05 AM EST - weekly connections:
9:35 AM EDTor8:35 AM EST
By default the pipeline writes to:
data/hood_people.dbdata/discoveries/YYYY-MM-DD.mddata/connections/YYYY-MM-DD.mddata/directory/faculty-staff-directory.mddata/monthly/YYYY-MM.mddata/summary/social-network-analysis.mddata/summary/social-network-analysis.json
These can be overridden with environment variables:
HOOD_PIPELINE_DATA_DIRHOOD_PIPELINE_DATABASE_PATHHOOD_PIPELINE_DISCOVERIES_DIRHOOD_PIPELINE_CONNECTIONS_DIRHOOD_PIPELINE_DIRECTORY_DIRHOOD_PIPELINE_MONTHLY_REPORTS_DIRHOOD_PIPELINE_SUMMARY_DIRHOOD_PIPELINE_SOURCES_PATHHOOD_PIPELINE_USER_AGENTHOOD_PIPELINE_REQUEST_TIMEOUT
src/hood_pipeline/: application, domain, ports, and infrastructure codetests/: unit tests for the first implementation slicesources/: source configurationresearch/: source notes and collection researchdocs/: planning and architecture documents
- docs/getting-started.md
- docs/operations.md
- docs/project-plan.md
- docs/source-strategy.md
- docs/data-model.md
- docs/architecture.md
Planning baseline complete. First coding slice implemented and runnable.
Current limitations:
- extraction is still heuristic and intentionally conservative
- person canonicalization is still basic
- weekly connections are currently co-mention based, not richer relationship inference
- social network metrics are public co-mention and visibility measures, not claims about private relationships or influence
- GitHub Actions automation is implemented, but the scheduled data outputs still depend on the current heuristic extractor quality
- the GitHub Pages site is only as fresh as the latest committed
data/summary/artifacts