Mon 20 Jul
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)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).