Yesterday — Tue 11 Aug
Hospitech Time (Timepoint replacement)First aggregate report pulled from dmarc@ via gws-hospitech and parsed: 24/24 messages 100% aligned (all Resend via send.hospitech.ie), zero failures/spoofs; parser says p=quarantine is safe on this evidence but holding p=none until a …
Hospitech Time (Timepoint replacement)Mark's 3-day-week question answered with the law agreeing: base = 20 x days/5 = the OWTA 4-working-week floor. contracted_days_per_week on staff page + new-starter form; trigger pro-rates mid-year joiners on the SCALED base (3-day 12-Jul …
Hospitech Time (Timepoint replacement)onboarding_statuses() (platform/081): per-employee module-aware gaps + login + PIN + contract(signed/sent/imported/none/n-a) + training(assigned/none/n-a), SECURITY DEFINER with explicit tenant fence. Time staff/[id] gets the journey rail …
Hospitech Time (Timepoint replacement)Pre-launch import gate passed on production: 30-row CSV (27 clean, 3 broken) through /hr/admin/staff-import as The Test Bar; preview named every fault by row+field, committed exactly 27, staff numbers intact, unknown job title …
Mon 10 Aug
OSH vouchersvoidVoucher implemented + LIVE (@37). The admin "Void Voucher" button had never worked on either venue — admin.html called google.script.run.voidVoucher(...) but the function did not exist in Code.js, so it errored *"Script function not …
Arch vouchersAccounts asked for vouchers sold + redeemed for FY 01/12/23–30/11/24 and 01/12/24–30/11/25; the admin dashboard shows only the new system, so those years are entirely Ticket Tailor. Pulled both venues from TT (issued_tickets + check_ins …
Arch vouchersvoidVoucher implemented + LIVE (@57), closing the gap flagged on 09/08. The "Void Voucher" button on the admin Voucher Lookup tab had never worked on either venue: admin.html called it but no such function existed in Code.gs, so every …
Hospitech Time (Timepoint replacement)Every ranked item from Mark's 51-item walkthrough is now fixed-and-verified-live or deliberately deferred. Nav: the company row and module band rendered identically, which was both of Mark's nav complaints at once — the company row now …
Hospitech Time (Timepoint replacement)Mark signed up as a genuine new tenant (info@loafd.ie, Eat Social Ltd) and wrote the walkthrough up as a document. Best test artefact the project has produced — it found things four automated harnesses did not. Full triage with per-item …
Arch live music line-up (What's On + month poster)St. Jude comp launch-ready (@34): cutoff confirmed 9pm Wed 12 Aug
Arch live music line-up (What's On + month poster)Dropdown "won't populate" root cause finally killed (@36). Same
Sun 09 Aug
Arch vouchersTwo live issues from the floor. (1) Scanner showed a stale panel after a rejected redemption: staff redeemed a promo, tapped again, and got the error *"not active (Fully Redeemed)"* while the panel still read STATUS: Active / €50.00 with a …
Hospitech Time (Timepoint replacement)Long verification day, five fronts. MAIL: SPF + DMARC live on hospitech.ie (verified authoritative + 3 public resolvers, 23 checks; my first analysis overstated the risk — both senders already passed DKIM); mail.hospitech.ie verified green …
Sat 08 Aug
Hospitech Time (Timepoint replacement)Mark signed up through hospitech.ie as a real customer would and found two bugs that between them meant nobody could create an account. Reproduced on production before touching anything. (1) The confirmation link signed you in as whoever …
Arch live music line-up (What's On + month poster)Test field + FedEx rebrand live (@33). 70-player placeholder field
Fri 07 Aug
Hospitech Time (Timepoint replacement)The last two items from "Per day, do all three" shipped and verified live. Export gate: payroll CSV/BrightPay AND lock/approve are blocked while Review holds an unresolved blocking fault — open clock, orphaned out, or a 16h+ stretch …
Hospitech platform (5-SKU convergence)(1) ⭐ hospitech.ie NOW PUBLISHES ITS PRICES. The pricing section had been opening with *"The figures go up on this page before anyone is asked to pay one — not in a quote, not after a call. If you find out what it costs by ringing us …
Hospitech platform (5-SKU convergence)Mark asked for email confirmation ON before any marketing runs. Verified state instead of assuming: GET /auth/v1/settings returns mailer_autoconfirm: true, i.e. confirmation is genuinely OFF, and all 11 existing users are confirmed and …
Hospitech platform (5-SKU convergence)(1) THE REVENUE HOLE. Mark asked *"extra sites are extra cost so each customer should only have one?"* — the opposite is true (multi-site is where the revenue is; Eat Social's five venues carry twenty-five subscription rows) but the …
Hospitech platform (5-SKU convergence)The marketing session walked the live site and found two holes upstream of everything the distribution plan proposes. Both confirmed here before building, neither needing a marketing decision. (1) THE HOMEPAGE HAD NO WAY TO START A …
Hospitech platform (5-SKU convergence)The reset template now reads {{ .SiteURL }}/reset-password?token_hash={{ .TokenHash }}&type=recovery, so the host follows Site URL and cannot drift again. Two intermediate states worth recording because both LOOKED fixed: first the host …
Hospitech platform (5-SKU convergence)(1) ⭐ ONE SCREENSHOT, TWO BUGS. A timesheet day showed *"Clocked 21:51–23:51+1"* beside *"Attendance 50h"* — 26 hours and 50 hours off the same row, so one was lying. The +N suffix was a boolean (endDate > dayISO ? "+1" : ""), rendering +1 …
Thu 06 Aug
Hospitech platform (5-SKU convergence)Mark ran the apps himself and listed what was wrong. Every code item below was reproduced against the live site before anything was changed, and re-verified there after. (1) ⛔ ADDING A SITE HAS NEVER WORKED FOR A REAL CUSTOMER. Mark …
Tue 28 Jul
Arch live music line-up (What's On + month poster)Mark supplied the August line-up. Found the sheet held only the Thursday residents for August — every weekend (1/2, 7/8, 14/15, 21/22, 28/29) was missing, so the website's August was nearly empty and the first month poster rendered from a …
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 …
Voucher platform (Hospitech add-on)Plan written, nothing built. Audited swords-voucher-directory vs the Apps Script builds. Findings: the Supabase side already has the expensive scaffolding — multi-tenant merchants/venues/merchant_users + RLS, merchant-scoped vouchers …
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 …
Hospitech financial managementMark: pausing until he has time. State parked: Sheet + Migration tab ready; default classification proposed in-session 18/07 (Supabase+domain+Firecrawl+ScrapeCreators → MOVE to Hospitech; Resend+Cloudflare+Hetzner → LEAVE/@loafd …
Hospitech platform (5-SKU convergence)Training SKU resale spec LOCKED with Mark → docs/superpowers/specs/2026-07-25-hospitech-training-and-signoff-design.md (pointer added to HOSPITECH-PLATFORM-PLAN.md). Survey first: the training engine is finished and completely unused …
Hospitech platform (5-SKU convergence)⭐ NEW PLATFORM-WIDE DESIGN RULE: every module must be sellable STANDALONE — written into HOSPITECH-PLATFORM-PLAN.md. Mark raised it for Training ("if a company just wants training but doesn't want to jump ship on HACCP"), which is the …
Hospitech platform (5-SKU convergence)Platform migrations 014–016 WRITTEN, deliberately NOT APPLIED (Hospitech Time/platform/, commit 81c11b7) — Time is live on aohzorxrdhthkpxkugth, so applying is Mark's call, not mine. 014 catalogue ownership (nullable tenant_id = Hospitech …
Hospitech platform (5-SKU convergence)Mark: *"push hard to get this finished, tenants can wait"* + *"build what can be built without me"*. Plan pkg A3 DONE → docs/courses/*.md: 26 modules, ~14,800 words of learner-facing content, 130 module questions, 8 final pools. Absorbed …
Hospitech platform (5-SKU convergence)Platform migrations 017–024 written (Hospitech Time/platform/, commit bdfd344): 8 version rows, 26 modules, 249 questions (130 module + 119 final), ZERO tenant-owned rows. Still NOT APPLIED — that's Mark's call, and 014–016 go first. ⭐ …
Hospitech platform (5-SKU convergence)Mark: *"Apply them, I will get them tested and read over once live, no users yet anyway so it is safe."* 014–025 applied to aohzorxrdhthkpxkugth, all clean (runner: scripts/apply-platform-migrations.mjs, commit acc28af — reads the DB …
Hospitech platform (5-SKU convergence)Checked the live spine rather than the docs. Person-level onboarding already works across all 5 SKUs and is spine-owned, by design: create_member_invite(tenant_id, role) → get_member_invite(token) → accept_member_invite(token), hashed …
Hospitech platform (5-SKU convergence)Mark's architecture, confirmed and built: *"sign up via whichever SKU, get an employer dashboard for that SKU, but also use it to upsell the others… in that dashboard they generate a staff onboarding link that fills their back end."* Three …
Hospitech platform (5-SKU convergence)App surface for 026–027, committed b6306a4 in Hospitech Time/app (branch repoint). Placement decided on evidence, not preference: that app already owned the front door — signup, login, join/[token], setup, auth — and its own setup/page.tsx …
Hospitech platform (5-SKU convergence)Mark: *"Do we not have a tenant self onboarding method, create your own company? … All 5 items are available individually or as 2/3/4/5 at the same time. However they can self onboard via whichever one they want?"* He was right to push. …
Hospitech platform (5-SKU convergence)(1) SHARED-SESSION TEST — RESULT: IT WORKS. Question was whether one login can span app. / hr.hospitech.ie. Three facts settle it: both apps use createBrowserClient from @supabase/ssr (cookie-based, *not* localStorage — localStorage is …
Fri 24 Jul
Arch vouchersA legacy voucher be3JRwj scanning oddly at the bar exposed an import gap: it's a legacy Ticket Tailor voucher (box office 13598) the original migration MISSED. Audited all 17 TT voucher series vs the DB → 96 still-valid €50 vouchers (all …
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 …
Hospitech Time (Timepoint replacement)The Vercel env swap is done and verified on the production URL. master→52c42c3 deployed; the live app at hospitech-time.vercel.app now targets aohzorxrdhthkpxkugth (the shared platform DB) — proven decisively: a password-reset submitted …
Hospitech platform (5-SKU convergence)The whole move since 17/07 is done. Vercel env swapped to aohzorxrdhthkpxkugth, redeployed, and every gate proven THROUGH the live app: Google login end-to-end; password reset delivered from noreply@hospitech.ie (same-device AND …
Hospitech platform (5-SKU convergence)Mark ran the full HR regression against a clean test employee I created on the platform DB (ZZ-TEST-01, Loaf'd Swords/FOH, email → kearnsam+hrtest@gmail.com so nothing reached real staff): template approved · contract issued, signed & …
Hospitech platform (5-SKU convergence)Three cutover gates closed. (1) SMTP LIVE + PROVEN on the platform DB: custom SMTP configured (smtp.resend.com:465, sender noreply@hospitech.ie, Hospitech team, hospitech.ie verified) and confirmed end-to-end — dashboard 'Send magic link' …
Thu 23 Jul
Hospitech Time (Timepoint replacement)Time's app code now runs on the platform DB. Migrations 001–008 applied; workforce schema exposed via PostgREST and verified serving. The payroll core was deliberately not touched — reconcile/leave/sickpay are pure logic, their 46 golden …
Hospitech website (parent brand)🎉 hospitech.ie REGISTERED (Mark). The single biggest unblock on the board: website mailtos, hello@ mailbox, Resend sender verification, root-identity transfer and the app/time subdomains were ALL waiting on this. Website deploy gates …
Hospitech platform (5-SKU convergence)Phase B platform/003: the Time module schema, 13 tables + 26 policies, all RLS on, FKs to spine only (isolation rule verified). Named workforce not time — time is a Postgres reserved word and quoting it would trap every future migration …
Hospitech platform (5-SKU convergence)Mark green-lit execution. platform/001+002 applied to aohzorxrdhthkpxkugth (additive only; Mark chose straight-to-prod over a branch since nothing HR reads changes shape). Landed: capability model (role_capabilities per-tenant-editable …
Hospitech platform (5-SKU convergence)Time session ran its full read-only recon of aohzorxrdhthkpxkugth → Hospitech Time/TIME-REPOINT-MAPPING.md (table-by-table homes, RLS translation, migration shape, attestation). Findings beyond the known collisions: the 207 leave_requests …
Hospitech platform (5-SKU convergence)Mark asked whether external tools like Arch's KitchTech fridge sensors (temps every 12h) were considered. Checked KITCHTECH_AUDIT.md: they WERE — but only against Loaf'd, which had sensors:[] on every fridge (paid upsell never activated) …
Hospitech platform (5-SKU convergence)Mark agreed the HACCP recs: port goes AFTER Time's repoint (so it lands on settled conventions rather than two sessions inventing two), the port must build the checks engine GENERIC (food safety = flagship template pack → absorbs Trail's …
Hospitech platform (5-SKU convergence)CRO 817101 + registered office (14 Cronans Well Grove, Swords, Co. Dublin, K67 X5F1) supplied by Mark → website footer now legally complete (SI 49/2007: name, place of registration, company no., registered office), rendered + AA …
Hospitech platform (5-SKU convergence)Time's repoint is landing well. Verified on aohzorxrdhthkpxkugth: new module schema workforce with 13 tables (tenant_settings, employee_settings, break_rules, rounding_policy, shifts, clock_events, worked_shifts, worked_shift_pay, periods …
Hospitech platform (5-SKU convergence)Time session brought 5 proposals; platform session ran read-only recon on aohzorxrdhthkpxkugth and returned verdicts: (1) one-user-pool AGREED + de-risked — HR has exactly 1 auth user; profiles(id,tenant_id,role) is already the membership …
Wed 22 Jul
Engage Football LMS (#37 wedge)Full build in one pass, Mark hands-off. Generic Engage Football-LMS format on the WC-Predictor stack (Astro/CF Worker + D1 engage-lms): 2026/27 PL season seeded from ESPN (20 teams incl COV/HUL/IPS promoted, 380 fixtures, 38 …
Hospitech Time (Timepoint replacement)Mark's platform-thinking call: the org-wide portal link (anyone could pick any name = impersonation + staff-list exposure) is replaced by per-staff private links — a hashed bearer token per person (pin_hash pattern), no passwords (full …
Hospitech Time (Timepoint replacement)The Roster & Holiday SKU is live as a real product tier. Staff portal /plan/<token> (public org-wide link, pick-your-name — the Apps Script planner's trust model, productised): request date ranges (all-calendar-days counting), live …
WC final comps — footfall-engine pilot (Breakroom + OSH)OSH winner announcement POSTED to OSH FB + IG feed + IG story via Postiz by the Arch marketing session (Mark's ask; assets from Downloads, Amy Carter €100). All three verified live w/ release URLs.
WC final comps — footfall-engine pilot (Breakroom + OSH)the above was a DUPLICATE (OSH session had already announced; Mark wanted the ARCH predictor). API delete blocked by Meta New-Pages-Experience; Mark removing the FB/IG duplicates manually. Arch champion announcement posted instead (see WC …
Tue 21 Jul
OSH vouchersPrize/comp voucher minting built into OSH. Added createPrizeVoucher (COMP_VALUE → a Standard stored-value comp voucher: partial redemption, paid €0, 12-mo expiry, Source-tagged, idempotent by key) + a doPost JSON handler …
OSH vouchersPrize minting now LIVE + verified (deploy @29). Mark set PRIZE_MINT_SECRET via a one-click _setPrizeMintSecret editor run (the Project Settings UI paste hadn't saved — diagnostic showed secretSet:false). End-to-end proof: minted OSH-S72S46 …
OSH vouchersMade prize-issuing repeatable + self-serve (Mark's "run comps going forward, as a learning experience" ask). Three parts: (1) "Issue Comp Prize" button in the OSH admin page — value/name/email/comp → mints + emails, admin-token path …
Arch vouchersCOMP_VALUE prize type added to createPrizeVoucher + deployed (@49): a full stored-value comp gift voucher (Standard / partial-redemption, months-based expiry) for cash-value competition prizes — distinct from KO_DISCOUNT and Free Pint …
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 …
Hospitech platform (5-SKU convergence)Mark: (1) HACCP Ashbourne test COMPLETE, system works — port it in BEFORE testing location 2 (which then happens ON the platform = the natural multi-site test). Port still goes AFTER Time's repoint so it lands on settled spine conventions …
Hospitech platform (5-SKU convergence)Mark declared statuses (Time ready to test-launch, Holiday Planner ready [= Time's Leave module — converges in the same move], HR/contracts ready, HACCP mid-test, Training built pre-test) and asked if it's time to unify + E2E. Answer: YES …
Hospitech platform (5-SKU convergence)The full course platform already exists INSIDE HACCP: migration 0011_course_platform.sql (versioned courses, module quizzes, randomised final @80% w/ retry cooldown, token-link learner access, PDF certificates 3-yr expiry + reminders) + …
Hospitech platform (5-SKU convergence)Phone-viewable artifact for the WHOLE suite (5 SKU statuses, convergence sequence, workstream to-dos, locked/open decisions, refs) at https://claude.ai/code/artifact/cb6c1d56-549b-4a8e-aabb-dd1e8c7aa92b — companion to the Time deep-dive …
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). …
Hospitech platform (5-SKU convergence)Full account-sprawl audit (git remotes + env hostnames + Vercel/Supabase APIs) → HOSPITECH-INFRA-INVENTORY.md with an effort-ordered migration checklist (~half a day of clicks). Better than feared: GitHub all on kearnsam-svg, Vercel all on …
Sat 18 Jul
Hospitech Time (Timepoint replacement)Standalone tier = pure request/approval portal (staff request → manager approve/decline → time-off calendar), no balances/accrual/payroll. Writes the same absences rows Time consumes, so toggling Time on later makes history …
Hospitech Time (Timepoint replacement)Mark confirmed the statutory model, so built it like the holiday engine: a certified-sick day pays 70% of the normal day's pay, capped €110/day, first 5 days/calendar year, only after 13 weeks' service; past the cap or before 13 weeks the …
Hospitech Time (Timepoint replacement)Cleared two safe polish items. Next 16 middleware→proxy rename (verified against the bundled Next docs; deprecation warning gone, auth redirect still 307s). Add-manual-line to an empty timesheet day — the last line-item-edit gap: an empty …
Hospitech platform (5-SKU convergence)Bashers prize pool + cut-stats + email (@53–55). Prize pool set
Hospitech Engage — sweep & comps engineSpec written after the Open comps proved demand (**195 entries/
Hospitech Engage — sweep & comps engineScissors bug post-cut FIXED (@31): the danger projection kept running
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 …
Arch/OSH holiday planner + roster toolKeith Walsh submitted 15 Aug even though Colin O'Sullivan was Approved off 15–21 Aug (both Arch Senior, cap=1). Diagnosed: code + data would block (verified via simulation); main URL AKfycbyZ=@40 has the cap. Root cause = this script has 9 …
Hospitech Time (Timepoint replacement)Mark nailed the umbrella plan in the website session (HOSPITECH-PLATFORM-PLAN.md, tracker #36): Time's DB is the wrong DB — the platform is the existing Hospitech-org Pro project (aohzorxrdhthkpxkugth, hospitech-hr). Time must repoint onto …
Hospitech Time (Timepoint replacement)Mark pasted 0014 (staff_pay copied then staff.pay_* dropped — verified the copy landed and the columns are gone). Ran the full supervisor E2E: owner generated a supervisor invite → signed out → /join/<token> showed the org name + role → …
Hospitech Time (Timepoint replacement)The queue's biggest item, built in one pass. The core move: pay leaves the staff table for staff_pay with admin-only RLS — RLS can't hide a column, so the column moves table; a supervisor selecting it gets zero rows by construction, and …
Hospitech Time (Timepoint replacement)Mark pasted both migrations; every deferred test ran clean. PH lock-freeze (0012): locked the Aug-BH week at 1.80h/€26.10 ⇒ snapshot row froze ph_minutes:108 at €14.50 separate from worked pay; then deleted every source punch behind it …
Hospitech Time (Timepoint replacement)Same-day continuation down Mark's queue. ④ orgs.week_start_dow (Sat default) + shared lib/week.ts — schedule/timesheet/leave/dashboard all take the org's week orientation; "Week starts on" select in settings with a change-before-locking …
Hospitech Time (Timepoint replacement)Worked Mark's ordered queue top-down, all live via auto-deploy. ① BrightPay export: ground-truthed BrightPay Ireland's real import spec (fetched their docs + the official HourlyPaymentsCSVtemplateIE.csv) — new "BrightPay CSV" button emits …
Hospitech Time (Timepoint replacement)Mark answered the full open-recommendations list. Shipped same-day via auto-deploy: (1) forgot-password flow (login link → email reset → new-password page; Supabase mailer rate-limit noted — real SMTP before founding-50); (2) absence …
Hospitech Time (Timepoint replacement)Local dev server kept crashing and blocking Mark's testing, so we shipped it to a real host. Private GitHub repo kearnsam-svg/hospitech-time (28 commits pushed) → Vercel project hospitech-time (Root Directory app, framework auto-detected …
Hospitech website (parent brand)LMS prize pool + pick graphics (@28). Prize pool wired:
Hospitech platform (5-SKU convergence)Founding-50 scope SETTLED by Mark: free-forever = Time only, suite paid for everyone. Proposed GTM upgrades folded into the plan doc (§GTM shape): founders pay in kind (feedback + case study + 2 intros), density-first selection (Fingal) …
Hospitech platform (5-SKU convergence)Live pricing pulled for Bizimply/Deputy/Planday/Trail/BrightHR/Flow → HOSPITECH-COMPETITIVE-SWEEP.md. Headlines: per-head pricing is universal among software players (Deputy $5–9/user, Planday $2.99–4.49/user+base, BrightHR from …
Hospitech platform (5-SKU convergence)Plan locked in the website session (3 explicit decisions from Mark: fold Roster&Holiday
Thu 16 Jul
OSH vouchersLeak sweep: cutover now holding. Re-ran the TT /check_ins sweep: only 1 voucher redeemed via Ticket Tailor since the 07-12 sync (WJ3b6pw, €50, 07-12 13:14) — flipped to Fully Redeemed (single code → direct sheet edit, no deploy). Zero TT …
Hospitech Time (Timepoint replacement)A paired tablet cached the roster (incl. PIN hashes) and only refreshed after a punch synced, so a regenerated/revoked PIN kept working for days. Now the tablet re-pulls the roster on a 5-min heartbeat + on wake/focus + on reconnect (the …
Hospitech Time (Timepoint replacement)A manager can now correct a single day on a draft week — the headline being the "⚠ open" broken punch (clocked in, never out) the reconciliation can't resolve alone. An edit = a manual=true worked_shifts row (0011 adds …
Hospitech Time (Timepoint replacement)Closed the last integrity gap from the fresh-eyes audit. The timesheet recomputed every week live on each load, so an APPROVED week silently rewrote itself when a late-syncing offline punch landed, when someone got a pay rise, or when a …
Hospitech Time (Timepoint replacement)Mark pasted 0009_leave.sql; verified the engine live against injected real-shaped data (six 8h unrostered days in the 5 wks before the June BH ⇒ 45h paid after breaks): Accrued 3.6h = 8% of 45h, correctly under his *personal* 90h cap (4× …
Hospitech Time (Timepoint replacement)Mark answered the holiday-engine questions and it's built in one pass. His calls: day value = manual per staff (default 8h, cleaner 4h — his TP practice, no 13-wk averaging) · opening-balance carry-over box at onboarding · BH benefit = org …
Hospitech Time (Timepoint replacement)Timesheet now reads absences: paid absence day (no clocks) pays minutes_payable ?? 480 (TP full-day convention), unpaid badge at 0, clocks-win + "absence booked" flag when both exist; grid badge + modal line + daily/weekly totals + labour …
Hospitech Time (Timepoint replacement)Mark confirmed TP records past-midnight times as 00:45+1; checked ours against it. Maths already matched (roster end≤start ⇒ +24h, golden case D = the real TP 01:00+1 row) but found 1 display gap + 1 real bug: (a) we showed 23:11–00:49 …
Hospitech website (parent brand)Built + verified locally. Not deployed — awaiting Mark's go.
Hospitech website (parent brand)Strategy re-read + 2 fixes committed: (1) Founding-50 had no CTA — the site's strongest offer dead-ended into scroll; now has its own "Apply for the Founding 50" button (mailto — dead until the mailbox exists, same gate as the rest); (2) …
Hospitech website (parent brand)LMS leaderboard scoring was DEAD, now fixed. Players were out
Hospitech website (parent brand)Paid/unpaid marker added to the LMS leaderboard (@25): green ✔ paid, gold
Hospitech website (parent brand)LMS leaderboard favourites (@26). Star any entry → it highlights in place
Hospitech website (parent brand)Manual honour-add on Bashers: Stephen Mc Shane (Scheffler/Fleetwood/Rose/Im,
Hospitech website (parent brand)LMS cut-danger scissors built (@27), dormant until 6am Fri 17 Jul
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 …
The Open LMS (Gio & Glenn's sweep)Deadline extended 21:00 → MIDNIGHT tonight (getEntriesCutoff = 16 Jul 00:00, @21),
The Bashers Sweep (The Open 2026)Typeahead picker ported from the Open LMS (@46). Bashers had the same
The Bashers Sweep (The Open 2026)Last-call reminder built (@47), send_reminders action, modes count/test/live.
The Bashers Sweep (The Open 2026)Last-call reminder SENT (Mark approved after reviewing the test copy):
Arch summer spritz menuBuilt end-to-end in one pass. Mark supplied the offer + photos; confirmed the serves are correct and it runs every day (availability banner added to the hero + card). Card renders both themes and fits A4 with no overflow. Awaiting Mark to …
Arch summer spritz menu⚠ "Some people still can't enter — list won't populate when they type" (reported
Arch summer spritz menuROOT CAUSE FOUND (Mark's screenshot) — mobile auto-zoom. The list WAS populating
Arch summer spritz menuBashers standings + picks made PUBLIC (@52, Mark's explicit call — *"happy for the
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 …
Hospitech Time (Timepoint replacement)Mark opened a logged-in Timepoint session (the incumbent we're replacing); did a read-only recon of the live Daily Browser (OldSchoolHouse, site 125, wk 2026-W30) to validate Phase 5's flagged assumptions. They were wrong, and it mattered. …
Hospitech Time (Timepoint replacement)Built /dashboard/timesheet: staff×day grid of paid hours, cell → breakdown modal (scheduled vs clocked vs worked/break/rounding/paid/gross), per-staff week paid + gross, daily totals + total labour cost, period Lock→Approve→Reopen …
Hospitech Time (Timepoint replacement)Mark applied 0008_kiosk.sql. Ran the full flow in-browser: manager created device "Test Bar Tablet" (create_kiosk_device) → paired tablet at /kiosk?t=… (kiosk_pair+kiosk_roster, roster incl. pin_hash cached) → online clock-IN (PIN …
The Open LMS (Gio & Glenn's sweep)Golfer picker rebuilt as a typed-name autocomplete (@14). Punters kept
The Open LMS (Gio & Glenn's sweep)Admin entries table is now sortable (@15): tap Name (A–Z / Z–A) or
The Open LMS (Gio & Glenn's sweep)Free-entry (comp) flag added (@16). A free entry still counts as an entry
The Open LMS (Gio & Glenn's sweep)Two-step entry made idiot-proof + abandoned-entry chase (@17/@18). Punters were
The Open LMS (Gio & Glenn's sweep)Email hardening + admin can edit name/email (@19/@20). The email field had
Mon 13 Jul
Hospitech Time (Timepoint replacement)Brainstormed downstream earnings with Mark (his 3 ideas: founding-N free-forever; free+optional €9.95 support/€X onboarding; free ≤20 staff with tiers above). Verdict: they stack into one ladder. Phase A: Founding 50, hand-picked (not 200 …
Hospitech Time (Timepoint replacement)Mark created a dedicated new Supabase account ("Hospitech Time org", free plan, fully isolated from Loaf'd/hospitech-hr). Claude drove the dashboard via Chrome MCP: created project hospitech-time (ref ucxnzecsduzfrhubximd, eu-west-1 …
Hospitech Time (Timepoint replacement)Mark to bed; Claude built solo. Written+committed 0005_auth_rls.sql (org_users owner/manager/staff, tenant RLS policies on all 13 tables, create_org() RPC seeding WRC breaks + rounding per new company). Built the full Phase 1 Next.js app …
Hospitech Time (Timepoint replacement)Dashboard recovered → applied 0005 (Success; org_users + all tenant policies + create_org live) + toggled "Confirm email" OFF (invite-gated pilot). Ran the full end-to-end smoke test in the browser: signup (founder-smoke@example.com) → …
Hospitech Time (Timepoint replacement)Mark's walkthrough feedback folded in: (1) PINs are system-assigned, never staff-chosen (avoids duplicates + clocking-as-someone-else; DB-enforced unique per org via deterministic org-salted hash index) and (2) staff numbers are …
Hospitech Time (Timepoint replacement)Full staff-onboarding module built + next build green (13 routes): /dashboard/staff (list w/ status badges + staff numbers + PIN state), /staff/new (manager-assigned staff number, venue→department cascade, friendly STAFF_LIMIT/duplicate …
Hospitech Time (Timepoint replacement)Mark pasted 0006+0007 himself. First invite hit a real bug: pgcrypto lives in the extensions schema on Supabase, so definer fns pinned to search_path=public couldn't see gen_random_bytes/digest — fixed live (ALTER FUNCTION … set …
Hospitech Time (Timepoint replacement)Built /dashboard/schedule: Sat–Fri roster grid, click-any-cell modal (set shift start/end or book Holiday/Sick/Unpaid leave), copy-last-week, per-staff + per-day + week hour totals, week nav (prev/next/this week). Overnight shifts handled …
Hospitech Time (Timepoint replacement)Built the offline-first tablet clock-in. A shared tablet isn't an auth user, so it pairs to a venue with a manager-issued token and does everything through anon-callable SECURITY DEFINER RPCs — create_kiosk_device (admin) / kiosk_pair / …
The Open LMS (Gio & Glenn's sweep)~30+ live entries wiped by clear_entries run during feature
Sun 12 Jul
OSH vouchersFirst real sale's gift email fixed. Buyer mistyped the recipient address at checkout (Gflanagan22 vs garyflanagan22@hotmail.com) so the €100 gift (OSH-P2GXLG) never arrived. Corrected the address on file + resent to the recipient only …
OSH vouchers⚠ Cutover leak found + closed. Spot-check (did staff really stop using TT?) via TT /check_ins timestamps: 10 vouchers (€500 face) were redeemed through Ticket Tailor on 07-11 evening (17:30–21:19), the scanner's first night — none in our …
Hospitech Time (Timepoint replacement)Mark redefined the product decisively: not a Roster→Clock→Pay tool just for his own venues, but a FREE, self-serve, multi-tenant Timepoint clone given away to any hospitality business. Build → trial live in Arch → release free (hosted …
Sat 11 Jul
OSH vouchersStaff redemption scanner LIVE (cutover from Ticket Tailor). Cutover-day incremental TT→sheet sync flipped the 11 vouchers redeemed via TT since the 07-09 sync (9 Active + 2 Grace) → Fully Redeemed, status/balance only (NOT logged to …
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 10 Jul
OSH vouchers08:00 daily-report trigger installed by Mark → OSH daily voucher email now fully live (first automated send 08:00 tomorrow, covering today's activity).
OSH vouchersDaily voucher email added (OSH counterpart of the Arch sendDailyReport): SOLD / REDEEMED / OUTSTANDING tiles + "Vouchers sold" table, daily 08:00 trigger, recipient = Config "Daily Report Email" (default schoolhouseinfo1@gmail.com …
Thu 09 Jul
Arch vouchersDaily voucher-redemption report for accounts@ built + LIVE. New Apps Script job buildVoucherRedemptionReport (deployed @46) rebuilds a shared Google Sheet each morning (6am Dublin trigger) combining Arch New System (Redemptions sheet) + …
Arch vouchersreport now pulls all four sources (added OSH internal sheet 1VHeDqCcH…, shared read to info@) as Mark migrates OSH off TT onto the internal system, and includes standard vouchers alongside promo (standard = value redeemed, face=paid). ⚠️ …
Wed 08 Jul
Daily social digest (email)Brainstormed → spec → built + deployed a Cloudflare Worker
Tue 07 Jul
Hospitech financial managementKicked off. Decisions (Mark): home = Google Sheet + board summary; feed = CSV-now → read-only Revolut API later. Sheet skeleton built + seeded with the 2 confirmed Connect-fee income lines (€1.70 OSH + €2.73 Arch); Categories + P&L …
Hospitech financial managementSurfaced: a lot of Hospitech services were signed up on Mark's personal card/Revolut → need moving to the Hospitech Business card. Built a Migration tab in the Sheet (evidenced from a gws inbox scan of kearnsam receipts — Supabase …
The Golf Body — faceless golf-tips brandKicked off from the IG-saves analysis (701 saves → 168 golf/fitness). Brainstormed w/ visual companion: style locked (friendly 2D + line-figure mechanics + motion-graphics hooks; comedy only as seasoning), fully faceless + AI voice, IG-led …
The Golf Body — faceless golf-tips brandRepo golf-brand (own git, commit edd69b6, 59 files, no secrets tracked). Phase 1 tip bank stories/tipbank.json (Series 1 ×10, each hook/steps/payoff/source-credit). Phase 2 src/scriptgen.ts → 10 video-script JSONs (out/scripts/, narration …
Mon 06 Jul
Arch food costing — recipes & dish GP✅ VAT confirmed ALREADY LIVE — do NOT re-push. SalesApi.gs date-aware food VAT (FOOD_VAT_SWITCH = new Date(2026,6,1) → foodVatRate_() 9% from 1 Jul, else 13.5%) was already pushed and deployed by an earlier session: script version @87 …
WC final comps — footfall-engine pilot (Breakroom + OSH)Content round with Mark, all resolved bar price: 2nd steak = 10oz Ribeye (so 10oz Striploin / 10oz Ribeye); steaks now list then a shared "served with chips, crispy onions & mixed leaf salad" line (crispy onions moved off the cut into the …
The Golf Body — faceless golf-tips brandFaceless-infra handoff (HANDOFF-faceless-infra.md) mined for reuse. Shipped: (1) IG follow-CTA on success + leaderboard pages (config-driven instagram per comp; Breakroom = @the___breakroom; OSH renders once Mark supplies a handle) …
Sun 05 Jul
Arch specials menu cardBuilt the generator + iterated the design with Mark. Landed the flowing hierarchy he wanted: crest once at top, garlic-&-mozzarella ciabatta as a quiet top line (not a course), main = the hero (biggest type), sides a bit-part italic line. …
WC final comps — footfall-engine pilot (Breakroom + OSH)Breakroom CLOSED on time: 15 entries, 3 marketing opt-ins (20%). Picks: France 11 · Argentina 10 · Portugal 3 · Spain 3 · Brazil 2 · England 1; tiebreaks cluster 3–4 goals. Honest read: mechanic flawless, reach was the limiter (~€1 ad …
Sat 04 Jul
WC final comps — footfall-engine pilot (Breakroom + OSH)Breakroom comp pivoted to the confirmed R16 field (16-team picker), rebranded with the real brand pack (ink/teal/cream/pool-yellow, Big Shoulders, wordmark mask), lock moved to Sun 5 Jul 8pm on Mark's call. AD-BRIEF.md handoff written → …
Fri 03 Jul
Arch vouchersKO_DISCOUNT voucher type added + deployed (@44): the WC Predictor knockout prize — €10 off, min spend €70 (staff eyeball, no till enforcement), 7-day expiry, one-scan/no-change. New prizeType branch in createPrizeVoucher (reuses …
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 …
Hospitech Time (Timepoint replacement)Kicked off off the back of reverse-engineering Timepoint through the weekly roster-upload automation (SiteId 125; GetFilteredData / SaveRosterRecord / PlannedAbsence shapes; DepartmentId / PayRate / DayTypeGroup model; holiday two-step …
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 …
Wed 01 Jul
Local Vouchers (directory platform)Mark revisited launch: pushed back on "generic national + cold merchant ads" (cold-start/density argument); new strategy = seed his own venue group as anchor tenants — Loaf'd (Swords/Ashbourne/Drogheda, +Artane soon), Breakroom (2 sites) …
Hiring platform (Loaf'd-first → Hospitech product)Mark added the Cloudflare CNAME careers→cname.vercel-dns.com (DNS-only) himself (Chrome MCP hung on CF's SPA loading screen; wrangler token is Arch-account + zone-read-only so Claude couldn't add DNS). DNS verified, no CAA block. SSL was …
Hiring platform (Loaf'd-first → Hospitech product)Built + shipped employer self-serve (invite-only). Auth: custom email magic-link + HMAC-signed cookie session (SESSION_SECRET; reuses crypto/Resend/cookie patterns rather than Supabase Auth — migrate later at self-serve signup). Migration …
Hiring platform (Loaf'd-first → Hospitech product)Mark's call: this is a Hospitech Solutions Ltd product, brand = Staff'd (Loaf'd = tenant #1 client, not owner). Domain staffd.ie registered (Mark). Built the Staff'd platform home (host-based routing: staffd.ie = platform landing + /jobs …
Mon 29 Jun
Arch/OSH holiday planner + roster toolAdded 2 approved holidays for Mark (4 Jul; 27 Aug–1 Sep) + a Firm block on 19 Jul, written directly to the live sheet in the app's own format. Then a 19–20 Jul request still came in (Gabriel Esteban, OSH) after the block → root-caused: the …
Arch/OSH holiday planner + roster toolNew hard department-capacity lock built + deployed @38: a request is hard-blocked at submit when ≥cap OTHER staff are already Approved off (same venue+dept, overlapping). Caps: Waiting Staff = 2, all others = 1 (Senior/Bar Staff/Cellar …
Arch/OSH holiday planner + roster toolReconciled the planner with the roster-builder (sibling session) per its return prompt. Decision: two tools, one data source — planner = source of truth for HR core (names, dept, rotations, paired, blocked dates); roster builder consumes …
Arch/OSH holiday planner + roster toolRoster replied: it auths to Sheets API (tab reads), can't call Apps Script fns. So (1) created a read-only Patterns tab (Name|dept|location|days_off|rotationA|rotationB|anchorSat|anchorWeek, day-NAME strings, 23 rows) mirroring …
Arch/OSH holiday planner + roster toolMark's calls applied: Willie→William Mc Cormack (Staff sheet + 8 Requests rows + seed; his Sun,Mon rotation+lookup now resolve, Patterns dept filled); Rosaleen Byrne stays roster-only (not added); Keith Bell (fixed Mon,Wed), Pat Crosbie …
Arch/OSH holiday planner + roster toolQ: auto-add new starters to the planner. New hires land "both ways" (Staff DB v3 + rosters). Diffed the Staff DB v3 (1kB2QDW…, 107 rows) vs planner Staff (91 rows): added the 4 genuine recent 2026 starters manually → planner IDs 100–103 …
Arch/OSH holiday planner + roster toolA chef couldn't book 8–14 Sep: cause = the old "Mark unavailable" Firm blocks scope=All (his §7 away weeks) hard-blocked EVERY staffer, not just his cover group. Per Mark, removed all "Mark unavailable" firm blocks (Sep 7–13 + Apr/May/Jul …
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 …
Hiring platform (Loaf'd-first → Hospitech product)Originated from Loaf'd recruitment (live FB/IG "Chefs & FOH" ad landing real emailed applications). Mark wants to own the funnel + productise it. Brainstormed the venture: the moat is social distribution (each client brings candidate …
Hiring platform (Loaf'd-first → Hospitech product)Mark confirmed email-only verification (no SMS), Resend, Cloudflare DNS (from HACCP), laptop left open. Built the full Phase 1 Next.js 16 app (mirrors LOAFD_STACK_HANDOFF): careers home (/), apply form per role (/apply/[slug], Turnstile + …
Hiring platform (Loaf'd-first → Hospitech product)Mark pasted Supabase service-role key → ran full local smoke test against live DB (createApplication → email-confirm → manager-ping all ✓, then cleaned test data). Deployed to Vercel via API + Vercel token (no CLI): pushed repo to …
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 …
WC final comps — footfall-engine pilot (Breakroom + OSH)Built + deployed in one session (Astro+CF+D1, cloned from breakroom-comp conventions; pure scoring engine w/ 8 unit tests; admin = teams/lock settings, result preview→confirm settle w/ random tie draw, CSV export; QR codes in qr/). Manual …
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 …
Arch/OSH holiday planner + roster toolMigrated to Claude Code. Bound Script ID 1twL1sub8PQp9FTkf8ZEcCevxpy1sQBDMtf89CJZ9nXteqIE4cC6lW1S6 located (bound scripts don't list via clasp/Drive — found by hooking window.open on the sheet's Extensions→Apps Script in the Chrome ext …
Wed 24 Jun
Contracts + Automator (Arch/OSH)Real state captured. Build lives at C:\Users\kearn\Contract sender\ — live Apps Script web app @58 / v15.4 (clasp scriptId 1Z4U3lz…, sheet Arch_Schoolhouse_Staff_Database_v3, SignNow provider on kearnsam@gmail.com). This session: recovered …
Contracts + Automator (Arch/OSH)All signed contracts extracted from SignNow → Drive. Reconciliation found 18 fully-signed docs (17 current staff + 1 ex-staff, all signed since the May archive run) with no local copy; archiveRecentSigned() downloaded each (collapsed + …
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 …
Tue 23 Jun
OSH brand packageBrainstorm + spec approved by Mark 22/06. Decisions: extend live identity; deliverables = brand book + social kit (no print/imagery-library); social beats = 4 daily specials + vouchers + Sunday roast + live music/trad + live sport (no …
OSH brand packageBuilt osh-brand/ (static brand-book site, Breakroom pattern; vanilla HTML/CSS/JS, index.html/styles.css/app.js). Crest redrawn to v2 from pixel-measured original (gable roof + slate courses + rafter ticks, arched gable window, fanlight …
OSH brand packageDeployed osh-brand/ to Cloudflare Pages → https://osh-brand.pages.dev (Arch CF account, project osh-brand, production branch main; own wrangler.jsonc shield, pages project create first then wrangler pages deploy . --branch=main). Verified …
OSH brand packageSpecials reworked to themed days (no prices: Mon steaks/ribs/stir-fries · Cheap Ass Tue Mexican+drinks · Wed fish deals · Thu steaks); Trad→Thu 9pm, Fri/Sat live music 10pm board added. First live OSH Facebook post PUBLISHED via Postiz …
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 …
Arch food costing — recipes & dish GPBuilt the backbone: 16 prep recipes (4 dips, ~12 kitchen sauces, Crispy Onions) on Prep_Recipes (per-L / per-kg / per-serve + a Unit Cost €/ml,€/g column) and the dish builder → 3 composite dishes proven from those preps: Cheeseburger …
Arch equipment maintenance logBuilt end-to-end + verified offline (mock-data preview, all 3 views, desktop + mobile, zero console errors). 33 items seeded across 6 areas; Dashboard (status grid + summary tiles + red banner), QR Report-a-fault form (optional note …
Arch equipment maintenance logclasp reauthed to the Arch account (info@thearchbarswords.ie; personal creds backed up to ~/.clasprc.bak.kearnsam.json), project Arch Equipment Log created (scriptId 1_Ta9F4U8fVSzkOUgINcn3V0sFVwqVbazlxineOnAbUhJCSIBeHH4ZwAK), 3 files …
Arch equipment maintenance logMark's plan: he'll set the real equipment statuses via Admin (PIN 7475) FIRST, then turn emails on. Alerting model changed per Mark: faults email instantly; everything else is a WEEKLY digest (Mondays 08:00), not daily …
Arch equipment maintenance logTwo features added per Mark, built + verified offline + deployed live (@3). (1) Per-category service contacts — new Contacts tab (auto-created + seeded; Refrigeration → Premier Refrigeration), editable in Admin; when a fault is reported …
Arch equipment maintenance logPer Mark, replaced load-one-at-a-time status editing with an inline "Update equipment status" list at the top of Admin: every item grouped by area with a condition picker beside it + a note box below, colour-coded by status, saving inline …
Arch equipment maintenance logAdded a Wash Up area: Dishwasher (Warewashing, 6-monthly) + Grease Trap (Grease Trap, 3-monthly/quarterly — default, editable) → register now 35 items; 2 new categories flow into contacts + editor. ensureInit_ made idempotent (appends …
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
Arch vouchers#9 DONE: both orphan 2-Jun connected accounts removed from Hospitech Connect (the mis-named "The Arch Bar" acct_1Te1ZQ + unused "Riverwood Investments"). Pre-removal forensics: the €21 test was already customer-refunded 3 Jun, its €19.40 …
Arch vouchers#2 DONE (Mark's spec: keep 4-digit PIN, add lockout): 5 consecutive PIN failures → all PIN auth locked 15 min (script-wide, CacheService), correct PIN resets counter; wired into verify_pin, today_redemptions and redeem. #11 DONE: qty cap …
Arch vouchers#5 CONFIRMED: expireOverdueVouchers daily trigger installed + running (last run 12/06 02:08, 0% errors) — no action needed. #12 DONE: arch-smoke-test.js built (root of Claude Code dir, clone of OSH harness + Arch extras: live no-money …
Arch vouchersMarked LIVE by Mark. Final state: Stripe Connect fee split proven in production (€2.73/€50 sale to Hospitech), Hospitech on dedicated "Vouchers Arch" key, WC pint wire live (104+ pints, Complimentary display everywhere, 72h expiry), PIN …
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 + …
Hospitech — billing & VAT setupProject created on closing #5. Items moved here from the Arch voucher polish list (#10) + the €21-test settlement finding.
Local Vouchers (directory platform)Added to board (build folder: C:\Users\kearn\swords-voucher-directory). Infrastructure built & hardened: hosted-checkout buy flow, live Stripe webhook (checkout.session.completed → voucher), 3-channel voucher email (inline + PDF + web/QR) …
Fri 12 Jun
Arch vouchersPint "€6.50" display fixed everywhere (WC fix request, 104 live pints): scanner shows FREE PINT/Complimentary/1×Pint (gist 4ba0767), public balance checker shows "Complimentary — 1 Pint" (gist c9e0daf), BCC subject pint-aware (@26). All …
Arch vouchers⚠️ WP paste CANCELLED — discovered the live site moved off WordPress to Cloudflare Pages (archbar-site, project archbar-site); live pages load /scripts/redeem.js + /scripts/vouchers.js, NOT the gists. Fixed scripts copied into …
Arch vouchersReview item #3 DONE: GET create_prize route removed (@27), pint minting is POST-only; verified GET dead + POST/idempotency intact. Item #1 in progress: Mark creating dedicated "Vouchers Arch" Hospitech key (decouples Arch from the shared …
Arch vouchers#1 DONE: dedicated standard key "Vouchers Arch" created on Hospitech, swapped into Arch HOSPITECH_SK, Connect checkout verified live (no-money session create OK). Arch + OSH keys now independent — each venue's key can be rolled without …
Thu 11 Jun
Contracts + Automator (Arch/OSH)Tracker created. SignNow automation marked "in progress" per CLAUDE.md. Owning session: please update with the real current state of the job + Automator.
Arch/OSH employee database → financial dashboardTracker created. Owning session: update with DB completeness % and what the dashboard link needs.
OSH vouchersFULLY LIVE. Hospitech Connect fee split verified with real production sale (€1.70 collected on €10 test). Fee model locked: venue pays Stripe processing. Smoke harness: osh-vouchers/smoke-test.js. Remaining: monitor early sales only.
OSH website handoverRedesign spec + 14-step plan approved 2026-06-10 (Warm Stout palette, builds on osh-site scaffold — see docs/superpowers/plans/). Vouchers side already live (#3). Next: execute the build plan.
Arch vouchersSystem live; WC Predictor pint vouchers wire into it (72h pint expiry set @25). Owning session: list the actual remaining polish items here.
OSH financial dashboardKickoff doc ready (OSH Dashboard/KICKOFF.md). Blocked on Workspace mail migration. Unblock path: complete the migration, then start the port.
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).