Neil Godfrey

Tinley Park · May 18, 2026

Thursday, May 7, 2026

mood: shipping

A long day. v0 of neil.godfreylabs.com became v1, blog cutover, journal stood up. Notes below.

Worked on

  • gl-neil — full-day session
  • v0 → v1 of neil.godfreylabs.com — specs locked, Astro static, CloudFront, auto-deploy
  • BriefForm wired to live Lambda → SES
  • Chat island wired through Cloudflare Tunnel to local Ollama
  • Repo restructured to vault / api / web / blog / mobile (canonical project layout)
  • Blog migration: gl-godfreylabs/blog → gl-neil/blog
  • Journal scaffolded + deployed

Shipped

  • https://neil.godfreylabs.com — live, end-to-end HTTPS
  • Brief endpoint live (HTTP API + Lambda + SES)
  • Chat endpoint live (qwen3:8b on Mac via Cloudflare Tunnel)
  • 9 Behaviors locked in graph
  • blog.godfreylabs.com cutover — source moved + deploys from gl-neil
  • https://journal.godfreylabs.com — bullet-journal aesthetic, daily logs + sprints
  • Letterhead nav: Journal ↗ + Blog ↗ on neil.godfreylabs.com

Got stuck

  • Function URL 403'd at org level — pivoted to API Gateway HTTP API
  • pnpm/action-setup needs package_json_file after monorepo restructure (defaults.working-directory only affects run: steps, not uses: actions)
  • JSONResponse + custom CORS headers → Content-Length mismatch → truncated chat replies. Fix: CORSMiddleware
  • CloudFront with OAC needs a Function to rewrite /foo//foo/index.html for nested paths
  • Astro lowercases collection slugs — link href needs .toLowerCase() to match emitted file paths

Tomorrow

  • v1.1 chat: declarative LLM responder module + RAG + few-shots + bump to qwen3.6:27b
  • Eval suite — 30 questions, ideal answers, score script
  • Cal.com link, OG image (image-prompt curation → per-use approval)

Notes

The canonical project layout (vault / api / web / blog / mobile) is a durable rule now — applies to every new internal project. Declarative LLM modules aren't memory; graph-resident behaviors are. Different concerns.

Three GL surfaces live tonight: neil.godfreylabs.com (chat-first), blog.godfreylabs.com (trading-desk weekly content), journal.godfreylabs.com (this — bullet-journal building-in-public). Three jobs, three voices.

Late additions: journal home is now the calendar (replaced "latest sprint" / "recent logs"). Per-day stat block at the top of each entry — big oxblood shipped count + tier tag (light/medium/heavy) + breakdown row. "§ Ask the journal" popup chat in the corner reads vault/ AND journal/src/content/ from the same bridge — RAG without RAG, ~35K char corpus, qwen3:8b context handles it. Backfilled W19 Mon/Tue/Wed daily logs from session notes (sessions/{2026-05-04,-05,-06}.md

  • git activity). Drafted blog post stub: I built a journal site that knows what I shipped each day (dev-deep-dive, status: draft, expand tomorrow morning).