About This Site & AI Transparency
This is a personal Bible study reference tool. AI was used extensively to build it. This page documents every workflow, every external data source, and the exact prompts given to AI agents — so you can judge for yourself what to trust and what to verify.
Overview
The historic documents, Bible translations, commentaries, and lexicons on this site are all public-domain texts fetched verbatim from their upstream sources. AI did not write them and did not edit them. What AI did do is help build supplemental study layers on top of those sources — translations, book studies, connection-tagging, site code — which are documented in full below.
There are honest disagreements about AI use in biblical scholarship. Some concerns are well-founded: AI models can hallucinate citations, confuse theological traditions, or produce confident-sounding errors. Others are more general: that machine-generated content displaces human scholarship.
This site's position is pragmatic. One person building a comprehensive study tool alone cannot hand-write 9,380 encyclopedia articles, 141 library documents, or commentary notes on every verse of the Bible. The historic scholarship exists and is in the public domain. The AI's role here is to surface, connect, and structure that scholarship — not to replace it.
Where AI was used to generate original analysis (book study language notes, translation choices, echo connections), the prompts are published below in full. You can read exactly what was asked and judge the quality yourself. Source badges throughout the site label AI-generated content with AI-assisted · details and external historic sources with Barnes Notes · Public Domain.
What AI Did Not Write
The following content is verbatim text from public-domain or openly-licensed sources. AI did not write, edit, paraphrase, or summarize any of it.
- ✓ King James Version (1769)
- ✓ Berean Standard Bible
- ✓ World English Bible (WEB / WEBBE)
- ✓ ASV, YLT, DBY, GNV, AKJV
- ✓ Douay-Rheims, WEB-CE, Brenton's LXX
- ✓ Matthew Henry Concise Commentary (1706)
- ✓ Barnes' Notes on the Bible (1832–1885)
- ✓ Jamieson, Fausset & Brown (1871)
- ✓ Adam Clarke's Commentary (1810–1826)
- ✓ Calvin's Commentaries (1540–1564)
- ✓ Ellicott's Commentary (1878–1884)
- ✓ Robertson's Word Pictures NT (1930–1933)
- ✓ Wesley's Explanatory Notes (1765)
- ✓ Strong's Hebrew & Greek Lexicons
- ✓ Brown-Driver-Briggs Hebrew Lexicon
- ✓ Thayer's Greek Lexicon (1889)
- ✓ Gesenius' Hebrew Lexicon (1857)
- ✓ Abbott-Smith Greek Lexicon (1922)
- ✓ Easton's Bible Dictionary (1897)
- ✓ Smith's Bible Dictionary (1884)
- ✓ ISBE Encyclopedia (1915, 9,380 articles)
- ✓ Nave's Topical Bible (1896)
- ✓ Spurgeon's Morning & Evening (1865)
- ✓ All 141 library documents
- ✓ OpenBible cross-references (TSK, CC BY 4.0)
- ✓ SBLGNT Greek NT morphology (CC BY 4.0)
- ✓ OpenScriptures Hebrew OT morphology (CC BY 4.0)
External Data Sources
Every external source is documented in data/SOURCES.md in the repository. The table below is a reader-friendly summary. All commentaries, lexicons, and most documents are pre-1928 and fully in the public domain.
| Source | Author / Year | License | Upstream |
|---|---|---|---|
| Bible Texts | |||
| King James Version | Multiple translators, 1611/1769 | Public domain | Direct |
| Berean Standard Bible | Berean Bible, 2022 | Personal/non-commercial use | berean.bible |
| World English Bible (WEB / WEBBE) | Rainbow Missions, 2020 | Public domain (CC0) | worldenglish.bible |
| American Standard Version | 1901 | Public domain | Direct |
| Young's Literal Translation | Robert Young, 1898 | Public domain | wldeh/bible-api |
| Darby Translation | J.N. Darby, 1890 | Public domain | wldeh/bible-api |
| Geneva Bible (1599) | 1599 | Public domain | wldeh/bible-api |
| AKJV | Michael Engelbrite | Public domain | wldeh/bible-api |
| Douay-Rheims 1899 | 1899 | Public domain | ebible.org |
| WEB Catholic Edition | CC0 | CC0 | ebible.org |
| KJV with Apocrypha | 1611/1769 | Public domain | ebible.org |
| Brenton's English LXX | L.C.L. Brenton, 1851 | Public domain | ebible.org |
| Commentaries | |||
| Matthew Henry Concise Commentary | Matthew Henry, 1706 | Public domain | CrossWire SWORD |
| Barnes' Notes on the Bible | Albert Barnes, 1832–1885 | Public domain | CrossWire SWORD |
| Jamieson, Fausset & Brown | Jamieson, Fausset & Brown, 1871 | Public domain | CrossWire SWORD |
| Adam Clarke's Commentary | Adam Clarke, 1810–1826 | Public domain | CrossWire SWORD |
| Calvin's Commentaries | John Calvin, 1540–1564 | Public domain | CrossWire SWORD |
| Ellicott's Commentary | C.J. Ellicott (ed.), 1878–1884 | Public domain | StudyLight.org |
| Robertson's Word Pictures NT | A.T. Robertson, 1930–1933 | Public domain | CrossWire SWORD |
| Wesley's Explanatory Notes | John Wesley, 1765 | Public domain | CrossWire SWORD |
| Interlinear & Morphology | |||
| SBLGNT with Morphological Tagging | morphgnt project | CC BY 4.0 | morphgnt/sblgnt |
| OpenScriptures Morphological Hebrew Bible (WLC) | openscriptures project | CC BY 4.0 | openscriptures/morphhb |
| Lexicons | |||
| Strong's Greek Lexicon (Dodson revision) | James Strong; John Dodson | CC0 | openscriptures/strongs |
| Strong's Hebrew Lexicon (BDB) | Brown-Driver-Briggs, 1906 | Public domain | openscriptures/strongs |
| Thayer's Greek Lexicon | Joseph H. Thayer, 1889 | Public domain | CrossWire SWORD |
| Gesenius' Hebrew-Chaldee Lexicon (Tregelles tr.) | Wilhelm Gesenius; S.P. Tregelles (tr.), 1857 | Public domain | archive.org |
| Abbott-Smith Manual Greek Lexicon | G.H. Abbott-Smith, 1922 | Public domain | CCEL |
| Dictionaries & Reference | |||
| Int'l Standard Bible Encyclopaedia (9,380 articles) | James Orr (ed.), 1915 | Public domain | CrossWire SWORD |
| Easton's Bible Dictionary | M.G. Easton, 1897 | Public domain | CrossWire SWORD |
| Smith's Bible Dictionary | William Smith, 1884 | Public domain | CrossWire SWORD |
| Hitchcock's Bible Names Dictionary | Roswell D. Hitchcock | Public domain | Direct |
| Topical & Devotional | |||
| Nave's Topical Bible | Orville J. Nave, 1896 | Public domain | openscriptures/nave |
| Spurgeon's Morning and Evening | C.H. Spurgeon, 1865 | Public domain | CCEL |
| Library Documents (141 texts) | |||
| Patristic writings (Clement, Ignatius, Didache, Polycarp, Athenagoras, Theophilus, Irenaeus, Tertullian, Origen, Augustine, Chrysostom, Athanasius, etc.) | 1st–5th century | Public domain | Wikisource / CCEL |
| Reformation-era works (Tyndale, Zwingli, Bullinger, Cranmer, Luther) | 1525–1577 | Public domain / CC0 | EEBO-TCP (CC0), archive.org |
| Reformed confessions (Apostles', Nicene, Athanasian, Augsburg, Belgic, Canons of Dort, Heidelberg, Westminster, etc.) | 325–1689 | Public domain | Wikisource / Gutenberg |
| Papal encyclicals & Vatican documents (11 documents) | Leo XIII–Benedict XVI, 1879–2007 | Freely available from Holy See | vatican.va |
| Liturgical texts (Book of Common Prayer 1662, Apostolic Constitutions c. 380) | 380–1662 | Public domain | Wikisource |
| Apologetics (James Orr, Theophilus of Antioch) | 180 / 1893 | Public domain | CCEL / Wikisource |
| Medieval (Bonaventure, Itinerarium Mentis in Deum, 1259) | Bonaventure; G. Boas (tr.), 1953 | Public domain per CCEL | CCEL |
| Cross-References & Geography | |||
| OpenBible Cross-References (Treasury of Scripture Knowledge) | OpenBible.info | CC BY 4.0 | openbible.info |
| Biblical Geography Data | OpenBible.info | Public domain | openbible.info |
AI-Assisted Workflows
The following features were produced using Claude (Anthropic) as an AI coding and generation assistant. In each case, the AI agent was given specific instructions (the prompts below), generated output as static Python scripts or JSON data, and that output was reviewed by the site owner before being committed.
An agent was given the morphological interlinear data (SBLGNT + WLC), a 5,523-entry Greek glossary, and a 8,674-entry Hebrew glossary, then asked to write static Python scripts that encode translation choices as hardcoded dictionaries. No API calls are made during translation. Each script covers 1–6 chapters and encodes three tiers: Literal (source syntax preserved), Mediating (natural English flow), and Thought (meaning-driven).
Contested terms (e.g. the Hebrew chesed, Greek pistis, dikaiosynē) are documented in each script's header docstring with explicit rendering decisions.
data/translation/draft/literal|mediating|thought/{book}.json An agent was given the interlinear data, author-frequency statistics, and the 13,000+ entry glossary, then asked to produce four fields for each of the 66 canonical books: (1) 12–18 key vocabulary entries with theological significance notes that go beyond dictionary glosses, (2) original-language observations specific to that book, (3) a survey of the book's reception in church history (patristic → Reformation → modern), and (4) practical reading guidance.
The agent explicitly could not reproduce content already present in data/books/introductions/{book}.json, which it was required to read first.
data/workshop/book-study/{book}.json Agents were given verse-by-verse interlinear data and asked to identify and annotate five types of OT→NT connections: fulfillment (prophecy realized), type (OT pattern prefigures NT reality), shadow (OT narrative foreshadows NT doctrine), allusion (NT literary/theological reference), and quote (direct quotation). Each connection includes a note explaining the theological relationship.
data/echoes/{book}.json For verses where multiple historic commentators agree, an agent was asked to synthesize the convergent scholarly consensus into a single note, citing which commentators contributed. For verses where commentators disagree significantly, the synthesis notes the disagreement rather than smoothing it over. All synthesis commentary is flagged with an AI badge in the UI.
data/commentary/cow-synthesis/{book}/{ch}.json · data/synthesis/{book}/{ch}.json The Zebra Critical workflow produced three layers of supplemental commentary: Christ-focused notes tracing each passage's connection to Christ, historical context notes (Second Temple period, Greco-Roman world, intertextual background), and original language notes highlighting what the Hebrew or Greek reveals that English translations miss. These are stored separately from the historic commentaries.
data/commentary/mkt-christ|mkt-context|mkt-original/{book}/{ch}.json After fetching the 141 library documents from Wikisource, CCEL, EEBO-TCP, archive.org, and vatican.va, agents audited each document for hollow sections (heading without content), formatting inconsistencies, and missing metadata. Where sections were clearly incomplete fetches, agents re-sourced the missing text from the upstream location rather than generating it. No original text was composed.
data/library/html/{doc}.html · data/library/docs/{doc}.json Agents were asked to write narrative descriptions for biblical timeline events, biographical summaries for key figures, and geographical significance notes for biblical places — drawing on the public-domain scholarly consensus documented in the historic commentaries and encyclopedias already in the data set. Timeline dates and event ordering were cross-checked against ISBE and Smith's.
data/timeline/events.json · data/timeline/detail.json The entire site codebase — navigation, reader, word study, verse study, translation workshop, maps, timeline, library browser, and all other UI features — was built with Claude Code (Claude acting as a coding assistant in a local terminal session). The agent worked from a TODO list, read the existing code, implemented changes, and the site owner reviewed every diff before committing. No code was deployed without human review.
src/pages/**/*.astro · assets/js/*.js · assets/css/*.css The Exact Agent Prompts
These are the literal instructions given to AI agents. They are published here in full so readers can understand exactly what the AI was asked to do and evaluate whether the constraints were appropriate.
MKT Translation Agent Prompt — the prompt given to each translation agent session
# MKT Translation Agent Prompt
Copy and paste this entire prompt to a new agent session to claim and complete one work unit.
---
Read the following files **in full** before doing anything else — in this order, no skipping:
1. `TRANSLATION_AGENT_GUIDE.md`
2. `MKT_STATIC_SCRIPT_GUIDE.md`
3. `MKT_PROGRESS.md`
You are working on the Modern Kingdom Translation (MKT) project — a three-tier English Bible
translation (Literal / Mediating / Thought) produced directly from Hebrew and Greek source texts.
All work is written as static Python scripts containing hardcoded translation dictionaries; no API
calls are made during the translation step.
---
## Step 1 — Claim a work unit
Open `MKT_PROGRESS.md` and read the **Work Queue** table at the bottom.
Find the first row whose Status is `not started`. Immediately edit that row's Status to
`in-progress` and save the file — this is your lock. Do this **before** any other work.
After saving, re-read the file to confirm your claim is still there. If another agent
overwrote your claim (the row now shows a different status you didn't write), move on to
the next `not started` row and repeat.
If every row is `in-progress` or `complete`, stop and report:
**"No available work units — all queue entries are claimed or complete."**
Your claimed row gives you: the book, chapter range, script filename, and verse count.
---
## Step 2 — Study the source material
Before writing a single verse, read:
- `data/interlinear/{book}.json` — source tokens for your claimed chapters
- The most recently completed script(s) for the same book (check `MKT_PROGRESS.md`
Script reference table) — carries forward tone, contested-term decisions, and
capitalisation conventions
- `data/translation/draft/literal/{book}.json` — confirm which chapters already have
content so you do not overwrite them
---
## Step 3 — Word count constraint
Your script covers **only the chapter range in your claimed work queue row**.
Do not expand beyond it. Units are pre-sized to ≤ 6 chapters / ≤ 250 verses.
If you run long mid-book, finish the current chapter cleanly and stop. Update the work
queue row to show the chapters actually completed before marking it `complete`.
---
## Step 4 — Write the script
Follow `MKT_STATIC_SCRIPT_GUIDE.md` exactly. The required structure is:
1. **Header docstring** — book name, chapter range, run command, every contested-term
decision documented
2. **Boilerplate** — `load` / `save` / `merge_tier` helpers (copy verbatim from the guide)
3. **Translation dictionary** — `BOOKNAME = { "ch": { "v": { "L": "...", "M": "...",
"T": "..." } } }`
4. **`main()`** — iterates the three tiers, calls `merge_tier`, then `save`
Translation principles from `TRANSLATION_AGENT_GUIDE.md` Section 5 are non-negotiable.
For every term in Section 6 (contested terms), make an explicit rendering choice in all
three tiers and document it in the header.
---
## Step 5 — Run the script
python3 scripts/{script_name}.py
Verify it exits cleanly and prints the expected `wrote ...` lines. Spot-check three verses
spread across the range by reading `data/translation/draft/literal/{book}.json` directly.
Confirm real translation prose, not word salad.
---
## Step 6 — Update the tracker
Edit `MKT_PROGRESS.md`:
1. **Work Queue table** — update your row's Status to `complete`
2. **Book row** in the OT/NT table — update Chs Done, Verses Done, and Status string
3. **Summary table** — recalculate Partial (or Complete) chapters and verses
4. **`Last updated:`** — set to today's date
5. **Script reference table** — add your script name and chapter coverage
---
## Key facts
- Chapter and verse keys in all JSON files are **strings** ("1", not 1)
- All glossary entries are still `draft` — the primary gloss is a proposal, not a confirmed
decision; you may deviate when context requires, but document it
- The three tiers are distinct: L = source syntax preserved, M = natural English with
accurate glosses, T = meaning-driven with interpretive surface
- T should add genuine value over M — if they read the same, rewrite T
- `merge_tier` never overwrites existing content — safe to run against a partially-complete file
Book Study Agent Prompt — the prompt given to each book study agent session
# Book Study Agent Prompt
This prompt runs in a loop — each session claims one book, generates its supplemental data,
runs the script, and updates the tracker. Each run is fully self-contained.
---
Read the following files **in full** before doing anything else — in this order, no skipping:
1. `BS_AGENT_GUIDE.md`
2. `BS_SCRIPT_GUIDE.md`
3. `BS_PROGRESS.md`
---
## Step 1 — Find and claim a work unit
### 1a. Find the first unclaimed book
Scan the `BS_PROGRESS.md` table. Find the first row where **Status** is `not started`.
Evaluate stale in-progress claims using a 2-hour staleness rule:
| Status | Action |
|--------|--------|
| `not started` | Candidate — proceed to 1b |
| `in-progress @ <timestamp>` where timestamp < 2 hours old | Skip — another agent is working this book |
| `in-progress @ <timestamp>` where timestamp ≥ 2 hours old | Candidate — treat as abandoned |
| `complete` | Skip |
### 1b. Verify the output file does not already exist
import os
book_id = 'romans'
path = f'data/workshop/book-study/{book_id}.json'
print('exists:', os.path.exists(path))
If the file exists and has all four required fields, the book is already complete.
Update its Status to `complete` in the tracker and move to the next candidate.
### 1c. Claim it
Set the row's Status to `in-progress @ <timestamp>` and save `BS_PROGRESS.md`.
Re-read the file to confirm the save took effect.
---
## Step 2 — Study the source material
Read these files for your claimed book:
1. `data/books/introductions/{bookId}.json` — **read this carefully**. Do not reproduce
any of this in your script output. Your job is to add what this file lacks.
2. `data/literary/genre.json` — find the entry for your book. Read `literary_note`
and `structure_note`. Use this to inform `language_notes`.
3. `data/cultural/book-context.json` — find the entry for your book. Use this to
inform `reception` and `reading_guide`.
4. Run the vocabulary finder from `BS_AGENT_GUIDE.md` Section 5 to identify
characteristic vocabulary candidates. Print the top 25 and decide which 12–18 to
include based on theological weight in this specific book.
---
## Step 3 — Write the script
Follow `BS_SCRIPT_GUIDE.md` exactly. Required structure:
1. **Header docstring** — book name, book_id, lang, run command, author group used,
any non-obvious decisions
2. **Boilerplate** — copy `load_book_study`, `save_book_study`, `merge_book_study`
verbatim from the guide
3. **Content dictionary** — `BOOK_STUDY = { "bookId": ..., "key_vocabulary": [...],
"language_notes": "...", "reception": "...", "reading_guide": "..." }`
4. **`main()`** — loads existing, calls `merge_book_study`, saves
Content principles from `BS_AGENT_GUIDE.md` Section 3 are non-negotiable.
---
## Step 4 — Run and verify
python3 scripts/build-book-study-{bookId}.py
All assertions must pass. Spot-check:
- Read two or three `significance` notes — do they add real interpretive value?
- Read the first paragraph of `language_notes` — is it specific to this book?
If anything falls short, edit the script content dictionary in place, re-run, re-verify.
---
## Step 5 — Update the tracker
Edit `BS_PROGRESS.md` in a **single save**:
1. Set your book's Status to `complete`
2. Mark the four field columns with ✓
3. Update the `Last updated:` line to today's date
4. Increment the relevant counter in the Summary section
---
## Key facts
- **Do not reproduce** content from `data/books/introductions/{bookId}.json`
- `merge_book_study()` never overwrites existing non-empty fields — safe to re-run
- HTML in text fields uses `<p>`, `<strong>`, `<em>` only — no headings or lists
- Small epistles (Philemon, 2–3 John, Jude, Obadiah) may have 8–10 vocab entries
- If context runs short mid-book, save what you have (partial is better than nothing)
Loop Agent Prompt — the prompt given to general UI/code maintenance agents
## Before doing anything else, read these files in full, in order:
1. `CLAUDE.md` — project constraints, comment requirements, what not to do
2. `docs/site-overview.md` — architecture, module map, CSS system, localStorage keys
3. `CODING_RULES.md` — hard syntax and pattern rules for this codebase
4. `CODING_PHILOSOPHY.md` — how to think about changes, scope discipline
Do not skip any of these. They are short and will save you from expensive mistakes.
---
## Step 1 — Pick 2–3 work items from `docs/TODO.md`
Read `docs/TODO.md` in full first. Then apply these filters:
### Skip entirely:
- The entire **Z4–Z8 MKT Commentary Suite** section
- The entire **Phase Z — Modern Kingdom Translation** section
- The entire **Phase O — Long-term / Deferred** section
- Any row marked `*(claimed — see docs/inprogress-*.md)*`
- Any item that contains `DATA BLOCKED`
- Any item whose Fix says `"Agents generate …"` — those are data-generation tasks
### Prefer:
- **HIGH** priority items before MEDIUM, MEDIUM before LOW
- Items whose **Fix** section names specific files and functions
- Items touching only 1–3 files
- Items where all prerequisite infrastructure items are already checked off
---
## Step 2 — Verify the items are real work
For each item you've selected, before claiming it:
1. Locate the file and function named in the **Problem** section
2. Confirm the described issue actually exists in the current code
3. If the item was already fixed silently, mark it [x] and pick a different item
---
## Step 3 — Claim the items
In `docs/TODO.md`, append ` *(agent: in-progress)*` to each item's heading line.
Save the file. Re-read it to confirm the change landed.
---
## Step 4 — Study the relevant files
For each claimed item, read:
- The file(s) named in the **Problem** section
- Any sibling functions that the Fix will affect
- The corresponding `.css` file if CSS changes are part of the Fix
- `docs/site-overview.md` if you need architectural context
Read enough to understand **why** the current code works before changing it.
---
## Step 5 — Implement
**Before writing a single line of code:**
- Re-read `CODING_RULES.md` Section 3 (comment requirements) and Section 1 (JS syntax)
- Confirm you know which CSS file to edit
- Confirm you know which module to import from
**While implementing:**
- Add `// INTENT:` / `// CHANGE?` / `// VERIFY:` comments per CLAUDE.md — required
- Use `var` not `let`/`const` — this codebase uses `var` consistently throughout
- Use `'use strict';` at the top of any new JS file
- Do not touch code outside the Fix checklist
---
## Step 6 — Verify the work
For JS changes:
- Trace through the function from call site to output
- Check that every code path (happy path + error/missing-data path) is handled
- Confirm any new localStorage reads/writes use the right key
- Confirm any new fetch() calls have a .catch() handler
For CSS changes:
- Confirm selector specificity won't be overridden by existing rules
- Confirm dark mode is handled (`[data-theme="dark"]` override)
- Confirm `var(--color-*)` is used instead of hardcoded hex
---
## Step 7 — Mark complete and summarize
For each completed item in `docs/TODO.md`:
1. Change [ ] to [x] on every sub-item you completed
2. Remove the *(agent: in-progress)* suffix from the heading
3. If partially complete, note what remains
After updating the file, write a brief summary: what changed, which files were modified,
any edge cases or caveats. Move completed tasks to docs/todo-archive.md.
---
## Key facts about this codebase
| Thing | Where it lives |
|---|---|
| Path constants (DATA_ROOT, READER_URL, etc.) | `assets/js/core.js` |
| Bible version state | `localStorage['bsw_version']`, getVersion() / setVersion() in core.js |
| All fetch caches | Module-level var in each feature module |
| Dark mode | `[data-theme="dark"]` attribute on body, toggled by storage.js |
| Reference link wiring | wireRefLinks() in wire.js — called after any DOM insertion |
| Scripture reference format | <a class="ref" data-ref="Book Ch:V">display text</a> |
| localStorage key prefix | bsw_ — always |
| CSS variable root | assets/css/style.css :root {} block |
| Per-feature CSS | assets/css/{feature}.css — one per feature module |
| Service worker cache | sw.js — APP_CACHE_V bump required on every code deploy |
Book Study Guide (excerpt) — the reference document all BS agents read before writing
## What the Book Study adds (summary of BS_AGENT_GUIDE.md)
### key_vocabulary (12–18 entries per book)
The most characteristic vocabulary of the book, selected by two criteria:
1. Author-distinctive words — Strong's codes where the `peak` author matches this book's
author group in author-frequency data
2. Theologically significant within this book — words that carry interpretive weight here
specifically
Each entry includes a `significance` note: "2–3 sentences. WHY this word matters in this
specific book — not a generic definition. The theological/literary/rhetorical load it
carries here, what its semantic range implies that English loses, and how understanding
the original changes interpretation."
Quality bar: "Paul uses this 33× in Romans (his highest density anywhere) always in the
forensic register — God's declarative act, not a moral quality the believer develops" is
the target. "This word means X" is not enough.
### language_notes (400–700 words, HTML)
3–5 paragraphs on what the original language specifically reveals in this book.
Not generic grammar — observations about THIS book.
For NT Greek books:
- Characteristic aspect choices (e.g., John's use of perfect tense for abiding states)
- Particle patterns and what they reveal about argument structure
- Key Greek idioms or constructions opaque in English
- Genre-specific language features
For OT Hebrew books:
- Root-play and wordplay that disappears in English
- Binyan choices that signal theological meaning
- Poetic structure if applicable
- Narrative grammar — waw-consecutive chains, fronting for emphasis
### reception (300–400 words, HTML)
A concise survey of how this book has been read through church history.
One paragraph per major tradition:
- Patristic — which fathers engaged it most and their signature interpretive moves
- Medieval — notable allegorical or scholastic readings if relevant
- Reformation — Luther, Calvin, or Zwingli if they wrote on it; the interpretive shift
- Modern — the one or two critical debates that define contemporary scholarship
A short paragraph that illuminates is better than a list of names.
### reading_guide (200–300 words, HTML)
- What to watch for as you read verse by verse
- The single most important thing to understand before starting
- Common misreadings to avoid (with a sentence on why they happen)
- Where to start if dipping in rather than reading sequentially
### What NOT to do
- Do not reproduce content from data/books/introductions/{bookId}.json
- Do not write significance notes that just restate the dictionary gloss
- Do not add language_notes that are generic ("Greek has cases")
- Do not write reception that is just a list of names without interpretive content
The Citation & Provenance System
Every piece of data on this site is mapped to its source in data/provenance.json. Pages that render data from AI-assisted sources display a AI-assisted · details badge. Pages that render verbatim public-domain scholarship display a Barnes Notes · 1832–1885 · Public Domain badge.
An ongoing looping process (docs/agents/provenance-loop.md) progressively adds a "_source" field to individual JSON data files, prioritizing AI-generated content first. As this work proceeds, more of the raw data files will carry inline source attribution in addition to the UI badges.
If you find a specific piece of content you believe is inaccurate, misleading, or incorrectly attributed, the source badge will tell you what category of content it is. For AI-generated content (language notes, translation choices, echo connections), the prompts above document exactly what constraints were in place. For historic commentaries, the original public-domain text is authoritative.
The full repository — including all data files, build tooling, data validators, and the agent prompts and loop procedures under docs/ — is publicly available: