# 05 — Intake, booking, and data handling Authority: `AGENTS.md` §3 D10 — rebuilt intake form plus calendar booking. Existing infrastructure is authoritative in `AGENTS.md` §7. How it was built is recorded in `docs/reference/AWS-Hosting-Guide.md` Parts 8–10 — a historical record with a do-not-execute banner, superseded by §7 wherever they disagree. **Read that guide before changing anything**; the resources already exist and were built by hand in the console. --- ## What exists today API Gateway (HTTP API) → Lambda → DynamoDB, with SES for notification email and a verified sender on `smlcompany.ca`. `[verified 2026-08-26 — AGENTS.md §7]` The shape is right. This is a hardening and rework pass, not a replacement. --- ## Build step 8, as actually built — 2026-08-31 **What is in the repository:** `/contact/` with the intake form, two POST-redirect-GET landing pages, and `backend/intake/handler.mjs` + `backend/intake/fields.mjs` + `backend/intake/spam-score.mjs` — the handler that **replaced** the hand-built `adr-intake-handler` §7 records. 🟢 **IT IS ALL LIVE AS OF 2026-09-02, AND THIS PARAGRAPH SAID THE OPPOSITE UNTIL 2026-09-04.** It read *"the handler is not deployed, and the CloudFront `/api/*` behaviour the form posts to does not exist"* — true when written under D11, false from the moment `docs/09` Parts 3, 5 and 6 ran at cutover, and two days stale in the document an implementer reads before touching the handler. **Measured 2026-09-04:** the function carries `handler.handler` with six environment variables and its deployed source entries match a commit **§7 names**; the API has exactly one route, `POST /api/intake`; §7 holds the full state and this spec does not restate it. ⚠️ **THIS SENTENCE NAMED THE COMMIT — `02739ad` — IN THE SAME BREATH AS DISCLAIMING RESTATEMENT, AND THE 2026-09-04 REDEPLOY MADE IT FALSE** (three source entries now, matching a later commit). The count is gone with it: both were facts §7 owns. `/contact/` still publishes the email address beside the form, which is now a courtesy rather than a fallback. ### The form is a plain HTML POST, and it answers 303 The site ships **zero** JavaScript (§7 — none, not "minimal"), so the form is a `