Sam answered the bind question on AUD-133 (2026-10-26):
"A - dual bind: 127.0.0.1:8096 and 192.168.20.13:8096".
- docker-compose: publish 127.0.0.1 and ${APP_LAN_IP:-192.168.20.13}, never 0.0.0.0
- deploy.sh: carry APP_LAN_IP into the release .env, --lan-ip flag, health gate
now requires /healthz 200 on loopback AND the LAN address
- rehearse.sh: assert both binds, no wildcard, LAN reachability; KEEP_REHEARSAL
now really keeps the container/image; N3 waits up to 20s instead of 3s
- docs/phase-3-evidence.md: decision recorded, new measured output
DoD: 1, 3 (as amended by Sam), 4, 8 met with recorded output. 2, 5, 6 deferred
on the Phase 2 binary; 7 is Sam's Caddy apply. rehearse.sh 24/24, exit 0.
Ai Resume — Paperclip build directory
This is the working directory for the Paperclip project Resume Ai. Paperclip builds here. Everything needed to build is in this folder; nothing outside it is required.
Relationship to the planning folder
| Folder | Holds | Status |
|---|---|---|
/home/sam/paseo/projects/resume_ai_system/ |
The why — research, cull decisions, stack rationale, evidence notes, content drafts | Planning. Not the build. Sam works here |
/home/sam/paseo/projects/resume_ai_system_paperclip_build/ |
The what — build spec, phase documents, reference material, and the site itself | This folder. Paperclip works here |
The planning folder is read-only reference. Do not edit it from here, and do not make the build depend on it — anything needed must be copied in.
Start here
AGENTS.md— the build spec. Constraints, conventions, and the phase list. Read it before anything else.docs/phase-N-*.md— one document per phase: work, Definition of Done, out of scope, risks.reference/— frozen decisions, stack and budgets, content map, acceptance tests.
Phases
| # | Phase | Ships |
|---|---|---|
| 1 | Content source of truth | content/ + validator |
| 2 | Mode A static site | Browsable pre-rendered site, no AI |
| 3 | Public deployment | Live URL behind Caddy |
| 4 | Corpus and retrieval | content/ → Qdrant |
| 5 | Mode B console | Streaming, cited answers |
| 6 | Guardrails, cost, kill switch | Safe to leave public |
| 7 | Polish | Logos, diagrams, code exhibits |
Order is deliberate. Content first (both renderers need it). Deploy at Phase 3, not last — a live half-built URL is worth more than a perfect site that never ships. AI after deployment so it can never block launch.
Repository
This folder is the git working copy of sam/ai-resume. One repo, one product.
Previously held an abandoned Vite/React scaffold. It was replaced by this build spec; the history is retained because it honestly records the false start, and it is referenced in the site's "alternatives considered" content.
Ground rules
- Do not touch other systems. No stopping containers, no editing other projects, no
nixos-rebuild, no Caddy changes except the single block specified in Phase 3 — and that one Sam applies. - Mode A must work with every AI service stopped. Hard gate.
- Never invent facts about Sam's career. If it is not in
reference/orcontent/, ask. - Secrets live in
~/.config/environment.d/only. - All models go through OmniRoute.
Current state
- Repo prepared, scaffold retired, build spec written
- Phase 1 — content source of truth
- Phase 2 — static site
- Phase 3 — public deployment
- Phase 4 — corpus
- Phase 5 — AI overlay
- Phase 6 — guardrails
- Phase 7 — polish