ForgeKitFORGEKIT

Build Log

GODgle — make the Bible answerable

October 4–5, 2026

A Google-simple app that answers everyday questions from retrieved, verified Scripture, then grew audience-native experiences for kids, teens, and adults — all live at godgle.vercel.app.

GODgleExperimentAITrustKids
31,102
BSB verses indexed (public domain)
5
API routes
4
audience experiences
3
independent adversarial audits
4
production deploys, each live-verified

Timeline

Start
Charge: Build GODgle v0
Pre-build Crucible ran by default (architect persona); weakest assumption named as trustworthy interpretation under emotional stakes
Build
Retrieval-first pipeline
BSB corpus + int8 embedding index over 15,245 passage windows; model cites pool ids only; server injects verse text
Audit 1
Quote-check bypass + prompt inflation fixed
Tokenizer replaced a bypassable regex; refs capped; parseRef length guard
Deploy
godgle.vercel.app live
Definition-of-done question verified in production
Audience
Kids / Teens / Adults / Deep study
Customer-persona Crucible; same evidence at every level
Redesign
Kids storybook, teen stack, Google-style results + Ask chat
After Zeb: 'way too much text for a kid'; web search added with fail-closed link verification
Audit 2
ReDoS + SSRF + person-check hardening
Hostile-HTML helpers ~1ms (projected ~340s before)
Relatability
Live kid/teen culture, not a list
Zeb: relevance must be generated, not curated; audit 3 hardened the path

What shipped

experiments/godgle/ — new Next.js 16 experiment app, deployed at https://godgle.vercel.app (Vercel project zebulun-j-s-projects/godgle)

experiments/godgle/scripts/build-corpus.mjs + data/bible.json — Berean Standard Bible (public-domain dedication in its own header), 66 books, 31,102 verses

experiments/godgle/scripts/build-embeddings.mjs + data/chunks.json + data/embeddings.bin — 15,245 three-verse windows, text-embedding-3-small @512 dims, int8 (7.8 MB)

experiments/godgle/lib/seek.ts — understand → retrieve (semantic + verified suggested refs) → grounded answer citing pool ids → server verification; formats full/search/chat; audience rules; chat history

experiments/godgle/lib/quotes.ts — quote-pairing tokenizer: unverified quotations lose their quote marks

experiments/godgle/lib/web.ts — OpenAI web_search with fail-closed URL verification (SSRF guard per hop, byte cap, page-derived titles/snippets, full-name person check) + live kid/teen culture context

experiments/godgle/lib/cards.ts — kids storybook cards and teen story cards; verse text attached from corpus; culture rules

experiments/godgle/app/api/{understand,answer,cards,web,passage}/route.ts — rate-limited public routes

experiments/godgle/components/{SearchView,ChatView,KidsView,TeensView,Results,PassageExpander,SearchBox}.tsx — four audience experiences + Deep study

experiments/godgle/lib/rate-limit.ts — vendored copy of forgekit-ai createRateLimiter (deliberate, for standalone Vercel deploy)

package.json — godgle workspace + deploy:godgle / dev:godgle scripts

forgekit-os/scripts/deploy-targets.config.mjs — godgle production health target (corpus-backed /api/passage)

forgekit-os/patterns.md — per-IP rate limiting row: second standalone-inline instance + bundled-deps/apps.json coupling warning