lappland22/famine-letters
0
Irish Famine Letter Activity Dashboard
Per-letter analysis of Irish Famine relief correspondence (Nov 1845 – Feb 1849). 5,115 letters segmented from 3,857 OCR'd pages across 6 parliamentary volumes, with metadata extracted by Qwen3.5-27B-FP8.
Source corpus
- Papers relating to Proceedings for Relief of Distress — Series 4, 5–7, 8 (Jun 1847 – Feb 1849; Poor Law Union perspective)
- Correspondence — Commissariat Series — 184511–184607, 184607–184701, 184701–184703 (Nov 1845 – Mar 1847; Treasury / Commissariat perspective)
Tabs
- 📍 Activity Map — county/union × time animated map of letter volume
- ✍️ Writers — leaderboard of 679 writers (after canonical normalization); drill into per-writer activity timeline and top unions addressed
- 🗺️ Districts — county-level rankings + county × month heatmap
- 📂 Letter Browser — full filterable index of all 5,115 letters by sender, recipient, union, type, date, subject
Data files
letter_index.csv— 5,115 letters: sender, recipient, date, union, county, type, subject (no body)letter_stats.csv— union × month aggregationswriter_stats.csv— per-writer aggregations (nletters, topunions, top_recipients, time range)district_stats.csv— county × month aggregationsseries_summary.csv— per-volume summariesdim_writer.csv— 679 writers with all aliases collapsed (e.g. "Mr. Trevelyan", "C. E. Trevelyan", "Charles Trevelyan" → one writer_id)plu_coordinates.csv/county_coordinates.csv— geo lookup
Pipeline
- Stage 01 — MinerU OCR → page-level markdown
- Stage 02 — LLM page classification (letter / dissolution / table / circular / etc.)
- Stage 05 — Qwen3.5-27B VLM repair of OCR errors
- Stage 06 — Two-stage letter segmentation:
- Phase 1: 5-page sliding window LLM emits letter boundaries (header/signature anchors only)
- Phase 2: Python deterministic body slicing using anchors
- Phase 3: per-letter LLM extracts structured metadata in batches
- Stage 06d — Writer canonical normalization (1,527 unique strings → 679 writer_ids)
Built using Qwen3.5-27B-FP8 + Streamlit + Plotly.
