Wed 26 Aug
Loaf'd holiday planner (Eat Social)🔒 CLOSED FOR REAL — the web app now refuses, deployed by clasp, and the last human-in-a-UI Loaf'd system is automatable for good. Mark pasted the script editor URL, which carries the one thing that was missing: the SCRIPT ID. With it …
Thu 13 Aug
Loaf'd brand pack v1.0 + marketing advisorThe chef ad had been blocked for 12 days on "meta-ads MCP disconnected". That diagnosis was wrong in an instructive way. Meta's endpoint is healthy: unauthenticated POST /ads returns 401 in 0.17s, the full OAuth chain (protected-resource …
Loaf'd brand pack v1.0 + marketing advisorMark said "launch it". All three entities activated via ads_activate_entity (campaign → ad_set → ad, parent-first) → all ACTIVE, effective_status IN_PROCESS, ads_get_errors {}. Confirmed by a fresh re-read rather than trusting the activate …
Sun 26 Jul
Loaf'd HACCP systemMy lane of the HACCP repoint is DONE, following the HACCP session's PLATFORM-REPOINT-PLAN.md §D order. Converted: lib/course/* (learner-auth, gating, cert.tsx), app/learn/*, api/learn/*, all of admin/course/*, and …
Sat 25 Jul
Loaf'd HACCP systemCross-session sync w/ the Training session. Module 4 critical-limits table had 3 of 4 form attributions WRONG (cold storage→SC1/Delivery, cooking→SC2/Refrigeration, hot holding→SC2 which doesn't exist; 0019 fixed thresholds and missed …
Loaf'd HACCP systemRoot cause of "nobody acts on alerts" found and fixed: every alert this platform ever sent reached exactly one inbox because get_alert_recipients (0005) resolves *profiles* and there is only one profile. The site managers who should act …
Loaf'd HACCP systemFSAI Food Safety Plan + per-staff read-and-sign-off DESIGNED (spec docs/superpowers/specs/2026-07-25-hospitech-training-and-signoff-design.md §6). Verified first that nothing resembling a document library, acknowledgement, sign-off or …
Loaf'd HACCP system⚠️ CODE COMMITTED ON platform-repoint — sibling repoint session please note: e23ad2e. Fixed the course markdown renderer, which had no table branch at all, so pipe-table lines fell through to the paragraph accumulator and rendered as …
Loaf'd HACCP systemSCOPE CHANGE on the Food Safety Plan: it's now a full guided MODULE with pre-fill, not a document upload (spec §6.7–6.9, plan pkg B4 — the biggest package in either doc). Mark's correction is the load-bearing one: an EHO asked to see his …
Loaf'd HACCP systemFood Safety Plan section manifest DRAFTED → docs/superpowers/specs/2026-07-25-food-safety-plan-manifest.md (commit 1d82a5e). 4 parts, 20 sections, 61 fields, authored from primary sources — Reg 852/2004 Art.5 + Annex II (by chapter), Reg …
Loaf'd HACCP systemChecked the seed scripts instead of trusting the earlier read. BOTH B4 blockers are gone. (a) Pest — not blocked; my earlier call was wrong. seed-pest-control-template.mjs already carries a contractor_visit mode alongside self_check, so …
Loaf'd HACCP system🟢 on this board means "built and deployed", NOT "in production use". Nothing on the platform DB has an end user yet. Mark, 25/07: *"time is also not live yet."* Verified against the rows: #25 Time = "LIVE ON THE PLATFORM DB" but *"NEXT …
Loaf'd HACCP system⚠️ "Live Ashbourne untouched" is NOT a real constraint and sessions should stop treating it as one. Mark, 25/07: *"they are still recording on kitchtech and this is trial work only."* The site dual-runs, KitchTech remains the authoritative …
Loaf'd HACCP systemCounted the tenant-specific content before writing the split migration: 38 × "Loaf'd", 60 × SC[0-9], 10 × /admin/ paths across 0018+0019 (~108 refs; module 6 opens *"Every Loaf'd kitchen runs a pest self-check via the Pest Control …
Fri 24 Jul
Loaf'd HACCP systemStepped back from the port to check the live Ashbourne rollout (old project): 2 days ZERO records (23rd, 24th), only 2 of 7 staff ever engaged (Rhyane, Maria), closing checks done once in 9 days, 8 alerts open since day one incl. a 16/07 …
Loaf'd HACCP systemHACCP session began the app-layer repoint on branch platform-repoint: spine.ts foundation (hx()/tx() schema routing + employee-name helpers, mirrors Time's wf()), full conversion surface mapped by an agent (104k-token sweep) → durable …
Loaf'd HACCP systemMark pasted the platform DB password into PLATFORM_DB_PASSWORD in Loaf'd Directory/haccp/.env.local (gitignored; value never entered chat or the platform session's context). Pre-flight (scripts/preflight-platform.mjs, prints no secrets) …
Loaf'd HACCP systemCorrection to the prior note: port-etl.mjs DOES route through supabase-js/PostgREST (service key bypasses RLS, not schema exposure), so it IS gated by the stuck exposed-schemas propagation (still 406 after minutes + a manual NOTIFY pgrst …
Loaf'd HACCP systemMark added haccp to Data API → Exposed schemas (now under Integrations → Data API → Settings, moved from Project Settings → API). Dropdown confirms all 4 exposed (graphql_public/haccp/public/workforce), persisted. BUT PostgREST hasn't …
Loaf'd HACCP systemTime repoint complete means the spine + entitlement conventions are settled, so the HACCP port (gate cleared by Mark 20/07) can now proceed on real conventions rather than predictions. Platform session grounded the brief in the live DB …
Loaf'd HACCP systemExecuted HACCP-PORT-BRIEF against the platform DB (aohzorxrdhthkpxkugth). Decisions confirmed by Mark: migrate trial records · Training gets its OWN training schema · schema-first (live Ashbourne stays on old project till a deliberate …
Loaf'd HACCP systemTwo leak-class bugs found by independent review + closed: (1) haccp.scheduled_check_windows view ran with owner rights (RLS-bypass) and anon held SELECT → baked security_invoker=on + revoke ... from anon into 010 (commit 3fa769b); (2) …
Loaf'd HACCP systemplatform/011_training_schema.sql applied + verified (commit 2be4135): 7 tables in schema training, RLS via training.* caps, learner→employees/assigner→profiles, spine-only FKs, 0013's active-assignment partial unique index …
Loaf'd HACCP systemMark: schemas exposed ✓; chose spine PIN service + load v1.0 course as-is. Done + verified: (1) v1.0 FSAI course loaded to training (version + 10 modules + 80 questions, content-only/no learner data; port-course.mjs --verify counts match …
Loaf'd HACCP systemBranch platform-repoint created + pushed; foundation src/lib/spine.ts committed (c19fe60): hx()→haccp / tx()→training schema routing + employee-name helpers (mirrors Time's wf()). Full app surface mapped (agent): ~30 staff→employees call …
Loaf'd HACCP systemThe "Invalid API key" was a STALE key from Time's env, not a real key/schema problem. Platform session delivered valid PLATFORM_ANON_KEY + PLATFORM_PUBLISHABLE_KEY into .env.local (proven-good); PLATFORM_SERVICE_ROLE_KEY left blank — Mark …
Loaf'd HACCP systemMark pasted the service_role key. First runtime test failed permission denied for schema haccp → 010/011 never granted service_role (only authenticated/anon), and the app's admin client IS service_role. Fixed …
Mon 20 Jul
Loaf'd HACCP systemMark asked for the MCP re-scope steps → turned out none are needed: .env.local holds SUPABASE_DB_PASSWORD and db.<ref>.supabase.co:5432 accepts direct Postgres — DDL path restored permanently via new scripts/apply-migration.mjs (pg driver …
Sun 19 Jul
Loaf'd HACCP systemTech green, adoption decaying: submissions 7→5→3→2 across 16–19/07; only 2 of 7 staff have ever logged in (Rhyane strong days 1–2 then gone — likely roster; Maria E. carrying it since, fridge checks + deliveries). Closing checks: never …
Loaf'd HACCP systemGap-mapped the platform vs the official FSAI pack (SC1–SC9): records half fully covered or exceeded; Mark confirmed NO hot-holding + NO own delivery → explicit SC4/SC9 N/A scope section shipped to EHO pack PDF + public page (smoke 53/53). …
Fri 17 Jul
Loaf'd HACCP systemIt's being used for real: 12 submissions across 16–17/07 (Rhyane + Maria Eduarda), 6 form types incl. both SC1 deliveries via the new register dropdown (supplier="Sysco" ✓). Alert pipeline proven end-to-end in prod: warm coffee freezer …
Wed 15 Jul
Loaf'd HACCP systemPre-launch check-in: DB probe + code-agent sweep for "things we haven't thought of". DONE: Swords + Drogheda sites deactivated (sites.active=false; one UPDATE each to reverse at their go-live) — the crons (check-window-close 23:05 / …
Loaf'd HACCP systemMark supplied the approved list (Sysco, Conatys, Dole - Acai) → register seeded (checks "enter suppliers" off his pre-launch list; 0 certs uploaded still open). Shipped f2ca748: the sc1_delivery supplier dropdown now feeds from the …
Loaf'd HACCP systemMark: repo private ✅, PINs distributed ✅, staff dry-run underway at Ashbourne. Next enhancement agreed in principle: per-supplier item picker on the SC1 delivery form (picker not prefill — prefilled records teach rubber-stamping; each item …
Tue 14 Jul
Loaf'd contracts🟢 MULTI-TENANT UNBLOCKED (the last thing hardcoding this to Eat Social). The contracts module hardcoded the employer in code — EMPLOYER / REPORTS_TO consts in templates.ts plus CONTRACT_COUNTERSIGNER_* env vars — so tenant #2 could not …
Loaf'd contracts✅ Sign loop RE-PROVEN against the new snapshot shape. Ad-hoc run in mock email mode (RESEND_API_KEY removed from the process env + an abort-on-real-send guard — no staff contacted), throwaway ZZ Loop Check employee, every row deleted …
Sat 11 Jul
Breakroom Pool Comp — entry siteNew Wed 15 Jul ad converting poorly (233 clicks → 3 paid); funnel showed ~98% never start the form → fixed the landing page (breakroom-comp/, deploy a3f8d80a). Killed the "29 of 32 spots left" reverse-social-proof (now shows "16 players …
Fri 03 Jul
Loaf'd HR dashboardROLLOUT-READY. Templates v2 after statutory pass (probation → S.I. 686/2022 six-month cap; public holidays 9→10; rolled-up holiday-pay wording removed; free-training particular added) — DRAFT watermark OFF; solicitor deferred to resale per …
Loaf'd holiday planner (Eat Social)Mark's corrections applied + verified on the sheet: Amber Golodo + Cathal Kessie = Kitchen (Chef), Nathan Comerford = Kitchen (KP); Millie + Róisín stay FOH. No open assumptions left except Cathal's Drogheda homing (unchallenged, stands).
Loaf'd holiday planner (Eat Social)Mark's list added to Staff tab: ES-040 Millie McMenamin, ES-041 Amber Golodo, ES-042 Cathal Kessie (Drogheda) + ES-043 Nathan Comerford, ES-044 Róisín Fay (Ashbourne). Soraya Pirbazari skipped — already ES-038. ⚠️ ASSUMPTIONS (Mark didn't …
Loaf'd holiday planner (Eat Social)Rhyane Campanin Rosa (ES-029, Chef) moved Drogheda → Ashbourne on the Staff tab, AND her 2 future approved requests' location updated (12–13 Jul + 8–12 Oct) so conflict checks count her against Ashbourne Kitchen, not Drogheda. Past request …
Thu 02 Jul
Loaf'd contracts🟢 BUILT NATIVELY IN THE PLATFORM (#11) AND LIVE-VERIFIED. Decision settled: contracts are a module of the Next.js/Supabase platform (sellable "Hospitech" direction), NOT a wired-in Apps Script bridge — the finished Eat Social Apps Script …
Loaf'd HR dashboard🟢 PRODUCTION CUT OVER. Vercel production env swapped to hospitech-hr (7 vars incl. ENCRYPTION_KEY + Resend, NEXT_PUBLIC_SITE_URL=https://dashboard.loafd.ie so signing links are prod-correct); claude/contracts-module fast-forwarded to main …
Loaf'd HR dashboardPLATFORM RE-HOMED + CONTRACTS MODULE LANDED. The old Supabase project (xjzvtysvtaunsaaczpda, free tier, Frankfurt) auto-paused and hit the 2-free-project restore cap — forced the infrastructure decision: new Supabase org "Hospitech HR" on …
Loaf'd holiday planner (Eat Social)Project handed into Claude Code: zip extracted to loafd-holiday-planner/ (CLAUDE.md, Code.gs, staff.html, admin.html). Verified the recent normaliseDate() fix in getAllRequests() + openById() accessor are intact (do not revert). Fixed …
Loaf'd holiday planner (Eat Social)Mark confirmed: happy with the roster as-is — Robynne McDonnell, Parhad Keyim Idikut, and Mark himself stay OFF the planner (don't re-raise). Planner staff list is settled at 32.
Loaf'd holiday planner (Eat Social)Mark reviewed the full by-department list (widget) and named 7 for removal: ES-001 Abigail Hamilton, ES-010 Síofra McManus, ES-014 Eimear Monaghan, ES-016 Jan Irvin Fabian, ES-017 Kinney Dunne, ES-018 Liam Connell, ES-020 Silviana Maria …
Loaf'd holiday planner (Eat Social)Reconciled planner Staff tab vs Mark's staff directory HTML. Added 3 new starters directly to the live sheet (no deploy needed — dropdown reads the sheet): ES-037 Chloe Smith (Swords FOH), ES-038 Soraya Pirbazari (Ashbourne FOH), ES-039 …
Sat 27 Jun
Loaf'd brand pack v1.0 + marketing advisorMark onboarded Claude as Loaf'd's social/marketing advisor + handed over a Claude Design brand pack. Handoff zip (~/Downloads/Loaf'd Brand Package-handoff.zip) extracted to loafd-brand-pack/loaf-d-brand-package/project/. Implemented …
Loaf'd brand pack v1.0 + marketing advisorMark confirmed the pack's raspberry (#9E2E5F DEEPER) + Bowlby One SC as-is (no token changes), and approved deploy. Built a clean 1.1MB deploy bundle (loafd-brand-pack/dist/ — brand-pack.html + index.html copy, brand-deck.html …
Fri 26 Jun
Loaf'd financial dashboardNew PdfInvoice.gs: extractPdfInvoice_ converts a PDF attachment to text via Drive OCR (throwaway Google Doc, then deleted), reads the total (parseInvoiceTotal_ — labelled total → "X.XX EUR" → max fallback) + the site (detectLocation_ on …
Loaf'd financial dashboardMark's call: all invoices to land at hello@ (he'll set forwarding/billing). Established the routing reality first: supplier invoices currently hit BOTH hello@loafd.ie AND kearnsam (Sysco/Conaty in each) — split. Deciphered the …
Loaf'd financial dashboardMark's UX idea: a "command-center" landing = a tile per café + a Group tile, each showing week-to-date Net Sales (hero) · GP% · Wage% · Purchases, GP%/Wage% colour-banded (green/amber/red). Tap a tile → drills into that site's existing …
Thu 25 Jun
Breakroom Pool Comp — entry siteFixed "signup lands on last week's list" (Sam Boland signed up 25/06 → was in the 24/06 list). Lean archive model (engine/Stripe/register untouched): live tables = the UPCOMING comp; finished weeks snapshot into a new archived_comps table …
Wed 24 Jun
Loaf'd financial dashboardMark confirmed Chloe Smith = Swords (set in Staff tab). Backfilled historical wages: downloaded all 91 Brophy audit-trail attachments from kearnsam, parsed (per-employee Gross + Employer PRSI), mapped→location via Staff tab, kept clean …
Loaf'd financial dashboardLocated the payroll source: Cindy@brophygillespie.ie, biweekly, in kearnsam@gmail.com; data is in a "Payroll Summary - Audit Trail" HTML attachment (per-employee Gross + Employer PRSI; windows-1252). New WagesIngest.gs: scanBrophyWages() …
Loaf'd financial dashboardNew ToastSales.gs: scanToastSales() reads from:toasttab.com "Daily Performance Summary" in hello@loafd.ie, parses per-location daily emails → Sales tab (Date·Week ID·Location·Gross·VAT·Net), dedupes per (location, day), labels …
Loaf'd financial dashboardIngestion.gs now threads Location through scan → write → review → confirm. New detectLocation_ matches site keywords (swords/plaza, ashbourne/killeglands/hunters court, drogheda, smithfield/grangegorman/ardcairn/breakroom/pool hall) …
Loaf'd financial dashboardRe-authed the bare gws (kearnsam@gmail.com — token had expired, invalid_grant) and pulled ~11.5 months of Toast daily-summary emails (1,301 found). Parsed each (HTML; two templates — snippet €gross €net vs bold-headline [Net,Gross,…]) …
Loaf'd financial dashboardWired the dashboard view to the multi-site schema. Location switcher (All sites · Group + each café + Admin), persisted, threaded through getDashboard/getMonthly. DashboardApi.gs rewritten location-aware — 'All' sums per-site summary rows …
Loaf'd financial dashboardclasp authed for the Loaf'd account (named user loafd; clasp 3.3.0 stores it inside ~/.clasprc.json, default user stays kearnsam). Created the Apps Script project under hello@loafd.ie (script …
Loaf'd financial dashboardBuilt the foundation in Eat Social Dashboard\: cloned the Arch .gs/.html baseline, removed dropped views (Agent/Menu/Specials/Operating). Location dimension threaded through the schema (Setup.gs) — Location col on …
Loaf'd financial dashboardPort KICKED OFF (build folder: C:\Users\kearn\Claude Code\Eat Social Dashboard\). Brainstormed the multi-site architecture, then wrote the spec (Eat_Social_Dashboard_SPEC.md) + a 6-phase implementation plan (IMPLEMENTATION_PLAN.md) — both …
Loaf'd contractsKICKED OFF. #1 (the Arch sender at C:\Users\kearn\Contract sender\) is now a feature-complete clone base: contract send/sign, reclassify, countersign queue, new-starter registration, notifications, Leavers module, and a template-recovery …
Breakroom Pool Comp — entry siteAdded admin "Add walk-in" for cash/door entries: POST /api/admin/walkin (isAdmin-gated) inserts/updates a player as paid €20, marketing_optin=0, generates a placeholder email when none given (schema email is NOT NULL UNIQUE); form sits …
Thu 18 Jun
Breakroom Pool Comp — entry siteResearched Darts Atlas (dartsatlas.com) via Firecrawl per Mark's ask — it runs the exact group→knockout model (a live series = "4 groups of 6 → top 2 → QF → knockouts best of 5"), validating our build. Adopted 3 quick wins it does: (1) …
Breakroom Pool Comp — entry siteMark gave the sk_live_… key and launched. Executed: set live STRIPE_SECRET_KEY; created the LIVE Stripe webhook via API (we_1TjpS5…, checkout.session.completed, livemode=True, enabled) → its whsec_… into STRIPE_WEBHOOK_SECRET; wiped the …
Breakroom Pool Comp — entry siteMark chose to use the Loaf'd Resend account (Eat Social = same entity as the Breakroom; cleaner than the LV/Hospitech one). Found the Loaf'd key already on disk in the HACCP app (Loaf'd Directory/haccp/.env.local, re_…) — reused it (no new …
Tue 16 Jun
Breakroom brand packageProduced a Pool Competition social asset off the brand package (Floodlit direction): IG feed post (2160×2700) + story (2160×3840) at breakroom-brand/campaigns/pool-comp-2026/ (post.html/story.html + Chrome-headless render.sh → PNG). …
Breakroom brand packageFetched + extracted the handoff tarball from the api.anthropic.com/v1/design link, read the chat transcript for intent. The package is 2 complete visual directions — A · Rack (editorial, ink-first, full-colour graded photos, rack-triangle …
Breakroom Pool Comp — entry siteBuilt end-to-end and verified locally: npm run build clean; 10/10 engine unit tests; 51/51 full-flow checks against the live API + local D1 (admin auth, league gen + idempotency, 28 results, standings ordering, top-8 seed with correct …
Breakroom Pool Comp — entry siteDeployed to Cloudflare Workers: https://breakroom-comp.black-rain-9ab0.workers.dev (remote D1 f26981e1-27c1-4087-a628-ef54004b47bb, WEUR; worker name breakroom-comp). Added a gated DEMO_MODE=1 var (entry form confirms an entry WITHOUT …
Breakroom Pool Comp — entry siteMark supplied the Breakroom's Stripe TEST secret key. Set STRIPE_SECRET_KEY secret; created a test webhook endpoint in Stripe via API (we_1Tj2bR…, checkout.session.completed) and set STRIPE_WEBHOOK_SECRET; flipped DEMO_MODE→"0" and …
Breakroom Pool Comp — entry siteTwo additions Mark asked for, built + verified + redeployed. (1) Independent scoring links — every match gets an unguessable token; /score/<token> is a public capability page (no admin login) where an assigned scorer enters just that …
Breakroom Pool Comp — entry siteMark (aiming 32 players) wanted a 2nd format option. Built + verified + deployed: admin now picks format per comp — Single league (existing) or Groups of 4. Groups: random crypto draw into 8 groups of 4 (each plays 3), with a redraw button …
Mon 15 Jun
Loaf'd HACCP systemMulti-tenant question answered + Phase A groundwork started (MULTITENANCY.md, migration 0020, both committed; 0020 deliberately NOT applied — it touches the auth signup path and Loaf'd goes live tomorrow). Verdict: the schema is genuinely …
Sun 14 Jun
Loaf'd HACCP systemCourse v1.0 PUBLISHED (all 4 app publish-guards passed: 10 modules, 30 final-eligible, 80 well-formed questions). New smoke harness node scripts/smoke-test.mjs → 53/53 green vs prod — same idea as arch-smoke-test.js; run before/after every …
Loaf'd HACCP systemRan $impeccable for the first time on this project. init was a hard blocker (no PRODUCT.md) → PRODUCT.md written (register: product; a11y bar: WCAG 2.1 AA + kitchen-hardened; anti-refs: KitchTech-skippable, café maximalism, consumer …
Sat 13 Jun
Loaf'd HACCP systemSubstantially BUILT & LIVE — and NOT Apps Script: it's a full Next.js + Supabase + Vercel app at https://haccp.loafd.ie. Repo lives at C:\Users\kearn\Loaf'd Directory\haccp (branch claude/reverent-colden-f1567e → merged to main; replaces …
Loaf'd employee database🟢 BUILT & LIVE as part of the HR dashboard build (#11) — repo at C:\Users\kearn\Loaf'd HR Dashboard\eat-social-hr\. Supabase project xjzvtysvtaunsaaczpda (eu-central-1). Tables: tenants, profiles, sites (5: Loaf'd Swords/Ashbourne/Drogheda …
Loaf'd HR dashboard🟡 Substantially BUILT & LIVE at https://dashboard.loafd.ie — repo at C:\Users\kearn\Loaf'd HR Dashboard\eat-social-hr\ (private GitHub kearnsam-svg/eat-social-hr). Stack matches HACCP siblings: Next.js 16 + Tailwind v4 + shadcn/ui + …
Thu 11 Jun
Loaf'd HACCP systemNot started in any session yet. First step: scope (digital checklists? fridge temps? supplier records?) — likely an Apps Script build on the Orders App pattern.
Loaf'd financial dashboardNot started. Sensible order: after Arch/OSH dashboards prove the model (#2, #6). Data source question to resolve: Toast API still 403-blocked → CSV pipeline.
Loaf'd contractsNot started. Depends on #1 Automator working, then #10 employee database as the feed.
Loaf'd employee databaseNot started. Source: Eat_Social_Staff_Database.xlsx (35 staff, ES-001–ES-035). Mirror whatever structure #2 lands on so dashboards/contracts port cleanly.
Loaf'd HR dashboardNot started. Depends on #10. Holiday planner web app already live and feeds this.
Loaf'd payroll systemNot started as a *system*. Current pipeline: Toast CSV export → Python/openpyxl → wages sheet → Brophy Gillespie. Known traps documented in CLAUDE.md payroll rules.
Loaf'd daily emailsNot started. Needs scoping: contents, source data (Toast CSV?), send-from account (hello@loafd.ie via gws-loafd).