This page documents the process of building the RWB Archive — not what the archive contains, but how it was built: what tools were used, what the collaboration between human curator and AI systems looked like in practice, and what this experiment suggests about the viability of AI-assisted digitization for cultural heritage work.
Individual pages throughout the site carry no AI attribution. This is the appropriate place for that accounting.
The Curator
[Sam — please add a brief note about your background as a professional archivist and technologist, your relationship to the subject (Bob Burns, your grandfather), and what motivated this project.]
Scale of the Project
As of March 2026, the archive encompasses:
Development Timeline
The project ran from February 17 to March 21, 2026 — approximately five weeks of active development across roughly sixteen working sessions. The git commit log provides an objective record of what was built, when, and in what order.
-
Feb 17–19
FoundationInitial site, SQLite database schema, GitHub Actions deployment to DreamHost, first batch of 1943–1945 records loaded. Interactive flight record viewer, verification tool, photo archive, Thornton Wilder correspondence, first story pages.
-
Feb 20
Infrastructure hardeningS3 image migration, accessibility improvements, site-wide navigation. 17 commits in a single day.
-
Mar 1–5
Database integrity & Canal Zone recordsFull rebuild pipeline established, 1943 data gap resolved, Canal Zone/Guatemala records loaded (1939–1942). Verification issue resolution. 57 commits over three days.
-
Mar 11–13
Form images & OCR correctionScan pipeline for individual form images. Aircraft reconciliation review tool. Vision-verification of all 1939–1945 transcriptions. Batch 5 complete re-transcription. Aircraft photos switched to S3.
-
Mar 14–16
Site redesign & expansionPersistent sidebar navigation, hero image, shared CSS. Aircraft gallery page, duty stations cinematic map. ADP punch card archive page. Post-WWII records loaded (1945–1950). 23 story pages launched.
-
Mar 17
Cold War records (1951–1959)103 monthly records covering Athens Greece (NATO), Ent AFB, McChord AFB. Vision transcription error correction (SH-19B, L-20A, AT-6C). Eight new Cold War aircraft types added to gallery.
-
Mar 21
Primary source integrationBob's 1999 published essay ("Polebrook, the 351st, and a Movie Star") transcribed, digitized, and published as a story page with flight record cross-references. USAF oral history transcript confirmed (File No. 269, 136 pp., 1979).
The AI Tools
This project used two categories of AI assistance: agentic coding (the AI writes and edits code in a terminal session, with the curator directing) and vision/transcription (the AI reads historical documents directly).
Agentic Coding
| Tool | Role in this project |
|---|---|
| Claude Code (Anthropic) |
Primary development environment. Wrote and maintained all Python scripts, HTML/CSS/JavaScript, SQL schema and seed data, AWS S3 integration, GitHub Actions workflows. Managed the database rebuild pipeline, aircraft image mirror pipeline, and site generation. Also conducted archival research (AFHRA oral history catalog, 351st Bomb Group commander succession, aircraft identification). |
| OpenAI Codex | Supplementary use for specific code generation tasks. Claude Code handled the large majority of development; Codex was used for a small number of targeted problems. |
Vision / Document Transcription
| Tool | Role in this project |
|---|---|
| Claude API (claude-sonnet-4-6) |
Direct reading of USAAF Form 5 scan images via scripts/transcribe_batch.py. The model reads each form page as an image and extracts structured flight data (date, aircraft type, pilot/copilot/passenger hours, landings, special notes) into JSON. This replaced manual OCR + human transcription for all new batches. Also used in scripts/vision_verify.py to cross-check existing transcriptions against scan images. |
[Sam — describe your experience with the AI tools from a practitioner's perspective. What surprised you? What worked better or worse than you expected? What did you have to correct or redo?]
The Technical Stack
Data & Backend
| Technology | Purpose |
|---|---|
| SQLite 3 | Primary data store. Schema covers servicemembers, monthly records, flight entries, aircraft types, stations, scan batches, and scan pages. All flight times stored as integer minutes. |
| Python 3 | All backend scripts: generate_site.py (full site generation from DB), load_batch.py (generic batch loader), create_db.py (schema + seed data), transcribe_batch.py (vision ingestion), vision_verify.py, mirror_aircraft_images.py, rebuild_full_archive.sh. |
| JSON | Intermediate format for all transcribed batch data (one file per scan batch, e.g. batch7_1939.json). Preserves the raw transcription alongside loaded database records. |
| SQL seed data | db/seed_reference_data.sql — canonical reference for all aircraft types (manufacturer, common name, role, engine count) and duty stations (name, location, lat/lon). Kept in version control. |
Frontend
| Technology | Purpose |
|---|---|
| HTML5 / CSS3 / JavaScript | Vanilla, no framework. All pages generated by generate_site.py or written by hand. No build step required; serves as static files directly. |
| Leaflet.js | Interactive maps on the flight records explorer, stations page, Canal Zone page. Tiles from OpenStreetMap / CartoDB. |
| Google Fonts | Playfair Display (headings), Inter (UI), JetBrains Mono (data/code). |
Infrastructure
| Technology | Purpose |
|---|---|
| Git / GitHub | Version control (private repository). Commit history provides a complete audit trail of every data correction, transcription, and code change. |
| GitHub Actions | CI/CD: on push to main, automatically deploys docs/ to DreamHost via SFTP. |
| DreamHost | Shared web hosting at sabunome.net/projects/rwb-archive/ |
| AWS S3 | Image storage: rwb-flight-archive bucket (us-east-1). Hosts all aircraft reference photos, form scan images, and supplemental materials. Mirrored from Wikimedia Commons and scanned originals. |
Primary Sources & Reference Materials
USAAF Form 5
Individual Flight Record, heavier than air. 303 monthly records covering 1939–1970 (complete career), held in family archives. Primary data source for the entire project.
AF Form 1500 (ADP Punch Cards)
Career summary punch cards, c. 1968. Decoded to reveal flight totals across Bob's entire USAF career.
USAF Oral History Program
File No. 269, "Burns, Robert W., Major General," March 12–13, 1979. 136 pages. Open access. Held at AFHRA (Maxwell AFB) and USAFA Clark Special Collections. Pending acquisition.
Family Correspondence & Narratives
Bob's first-person WWII narrative, Andy Burns' emails, Eliam Burns crash investigation. Stored in data/supplemental/ and assets/correspondence/.
Mississippians in the Mighty Eighth
Ed. N. Kenneth Nail. Mississippi Chapter–Eighth Air Force Historical Society, Tupelo MS, 1999. Bob's published essay on the 351st Bomb Group. Signed first edition.
Wikimedia Commons / American Air Museum
Aircraft reference photographs for 81 types. Downloaded and mirrored to S3 to avoid hotlinking and ensure long-term availability.
AFHRA / USAFA Clark Special Collections
Air Force Historical Research Agency (Maxwell AFB) and USAFA McDermott Library. Primary archives for unit histories, oral histories, and official records.
Burns–Wilder Correspondence
Four letters from Thornton Wilder to Bob Burns, September 1945–April 1946. Transcribed and published with scholarly context. See Thornton Wilder Journal vol. 5 no. 2.
The Collaboration Model
The working method throughout this project was directed agentic coding: the curator sets the goal and provides domain expertise; the AI implements, debugs, and researches. The curator's knowledge — of archival standards, of the subject's career, of what the data means — was not replaceable. The AI's role was to compress the implementation time dramatically.
A typical session might begin with "load this batch of 1951 flight records" and end with a fully committed, deployed set of changes including database updates, seed data corrections, new aircraft photos uploaded to S3, a regenerated site, and a git commit. Work that would have taken a skilled developer several days happened in hours. But it happened because the curator knew what was wrong when the AI got it wrong — and it got things wrong regularly.
Representative categories of human correction throughout the project:
- Aircraft identification: SB-19B → SH-19B (Sikorsky helicopter SAR variant); AT-60 → AT-6C (Texan); T-20A → L-20A (de Havilland Beaver); P-4 → B-18A (92 entries corrected); A-3 (mission code, not aircraft)
- Transcription ambiguity: Ditto marks misread as flight times; column confusion (copilot vs. passenger); cumulative vs. individual monthly totals
- Historical context: Station names requiring archival knowledge (APO 206 = Athens, Greece); career chronology validation; unit history cross-reference
- Data integrity: Missing semicolons in SQL causing parse failures; SHA-256 mismatches; form image naming conventions
[Sam — describe the collaboration dynamic in your own words. What was it like to direct an AI coding assistant as someone with archival training? Where did the AI's knowledge of the subject matter fall short? Where did it exceed your expectations? What does this model feel like compared to traditional digitization workflows?]
On the Viability of AI for Cultural Heritage Digitization
This project is one data point. The subject is a single military career documented in standardized government forms — a favorable case for AI assistance. The following observations are offered as a framework, not a conclusion.
Where AI assistance proved effective
- Generating boilerplate infrastructure (schema, loaders, deployment)
- Reading structured government forms via vision (Form 5)
- Cross-referencing aircraft types against published reference databases
- Producing consistent, well-structured HTML/CSS from specifications
- Locating archival resources (AFHRA catalog, unit histories, oral history indexes)
- Accelerating repetitive tasks (loading 103 months of records, regenerating the site after each change)
- Maintaining context across a long, complex project
Where human expertise remained essential
- Identifying aircraft misreads (requires aviation history knowledge)
- Validating transcriptions against physical reality
- Understanding what the data means (a 26-day combat command tenure tells the real story)
- Family and oral history context (what Bob was angry about, for fifty-four years)
- Archival judgment about what to digitize, what to transcribe verbatim, what to annotate
- Detecting systematic errors invisible to the AI (column confusion, cumulative vs. individual totals)
- Evaluating AI research output for accuracy and bias
[Sam — this is the core professional reflection section. As a former archivist and technologist, what is your assessment of AI-assisted digitization for cultural heritage work? What are the conditions under which it works? What are the risks — to data integrity, to interpretive fidelity, to the archival record itself? What would you advise an institution or a family archivist considering a similar approach? What does this project suggest about where the field is headed?]
[Sam — optional additional section. Any other observations, acknowledgments, or context you want to include.]
What Is Not on This Page
Specific AI attribution has been deliberately omitted from all other pages in this archive. Story pages, data pages, and the flight record explorer carry Bob's voice, the historical record, and the family's framing — not the tool's. The appropriate place for methodology is here, in a document written for researchers and practitioners, not for casual visitors.
The archive is a memorial to a person. The tools used to build it are secondary.