RWB Archive

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:

303
Monthly flight records (Form 5s)
2,564
Individual flight entries
7,451
Total flight hours (career)
81
Distinct aircraft types
21
Duty stations
23+
First-person story pages
31 yrs
Complete career (1939–1970)
176
Git commits over 5 weeks

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.

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

TechnologyPurpose
SQLite 3Primary 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 3All 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.
JSONIntermediate 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 datadb/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

TechnologyPurpose
HTML5 / CSS3 / JavaScriptVanilla, no framework. All pages generated by generate_site.py or written by hand. No build step required; serves as static files directly.
Leaflet.jsInteractive maps on the flight records explorer, stations page, Canal Zone page. Tiles from OpenStreetMap / CartoDB.
Google FontsPlayfair Display (headings), Inter (UI), JetBrains Mono (data/code).

Infrastructure

TechnologyPurpose
Git / GitHubVersion control (private repository). Commit history provides a complete audit trail of every data correction, transcription, and code change.
GitHub ActionsCI/CD: on push to main, automatically deploys docs/ to DreamHost via SFTP.
DreamHostShared web hosting at sabunome.net/projects/rwb-archive/
AWS S3Image 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:

[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.