2026-04-08
Summary
Jimmy Lee (mana.inc) liked the kiosk demo post on Twitter. Members board game night tonight — demoing the kiosk feature to members. Early fundraising signal-building.
Notes
- Jimmy’s like on the kiosk post is encouraging; mana.inc is top VC pick
- Not ready to pitch yet — need 2-3 businesses on the platform first
- Fundraising math: pitch 30 businesses, 10% conversion (3 sign-ups) = high signal for investors
- Set up Raspberry Pi 4 Model B as dedicated kiosk hardware — flashed Raspberry Pi OS Bookworm 64-bit, configured Chromium kiosk mode, portrait screen rotation, Tailscale for remote access, SSH key auth (password disabled), overlay filesystem for SD card protection
- Remote kiosk refresh:
ssh panat@dungeonbooks "DISPLAY=:0 wtype -M ctrl -P r -p r" - Old Pi was running Raspbian 10 (Buster) with Chromium 88 — too old for Tailwind v4 CSS
- Created “First Assembly” buff (3x XP, 4 hours) for the inaugural member hangout
- Copilot review on #81 suggested centralizing NFC normalization — moved
.toUpperCase()intoprocessCheckIninstead of duplicating at each call site
Sales strategy notes (from watching Kunal / Jordan Belfort)
Kunal’s approach: jump straight into a demo. Prime the customer by saying “I’m going to show you this, and at the end you tell me what you think and if you want to move forward.” This forces a decision frame — the prospect is primed to make a choice rather than passively observe. Relates to Jordan Belfort’s “straight line sales” — rooted in psychology of commitment.
PRs shipped
- #70 — staff award endpoint + CLI —
POST /api/awardfor staff to give points/XP to members, plus interactive CLI for batch awards. Built for the April 9 member hangout since Hi.Events isn’t set up yet. - #72 — kiosk BBS terminal redesign — full redesign with Flare theme, weather (PirateWeather), Hi.Events upcoming events, leaderboard, supporters, guild activity, bracket-corner cards, glitch-text check-in animation, responsive portrait/landscape layout.
- #74 — guard BETTER_AUTH_SECRET during build — prevents Better Auth from falling back to insecure default secret during Next.js build phase. Closes #71.
- #75 — member settings page with kiosk privacy controls —
privacy.showOnKioskopt-in field, settings page for nickname/phone/class/birthday/visibility, wired kiosk leaderboard and supporters with real privacy-filtered data. Partially addresses #46. - #81 — normalize NFC card UIDs to uppercase — fixes case mismatch across platforms (macOS lowercase, Windows uppercase) with
beforeValidatehook. - #82 — kiosk layout tweaks and optimistic visits count — reordered portrait layout, date before time in header, full event cards with images, optimistic visits increment after check-in.
Issues opened
- #73 — configure S3 storage adapter for media uploads — Railway filesystem is ephemeral, need Railway Storage Buckets for QR codes and future uploads.
- #76 — change password from settings
- #77 — Discord link/unlink in settings
- #78 — change email from settings
- #79 — phone number verification for check-in
- #80 — kiosk leaderboard should rank by XP, not loyalty points
Evening session — leaderboard and privacy rework
PRs opened
- #83 — fix(kiosk): rank leaderboard by XP with class and level — sort by XP instead of spendable points, show “Lv 6 Rogue” on each entry, XP column header, cap nickname to 20 chars. Closes #80.
- #84 — feat: guild hall leaderboard and supporters with privacy rework (stacked on #83) — real leaderboard + supporters on Guild Hall page replacing Hall of Heroes placeholder, privacy model reworked so everyone appears (toggle controls nickname visibility only, anonymous = “Lv 6 Rogue”), rename
showOnKiosk→showNicknamewith migration, query lowest-ranked class as fallback on guild page, level + class shown on supporters too.
Design decisions
- “Lv” not “Lvl” — FF9-style “Lv 6 Rogue” over D&D-style “Lvl”. Final Fantasy has wider appeal; BECMI inspiration is in the XP tables, not the UI chrome.
- Privacy model: show everyone, hide nickname — members always appear on leaderboard/supporters as their level + class. The toggle only controls whether their nickname is visible. “Who is this Lv 35 Rogue?” is the hook.
- Freelancer as fallback class — lowest
sortOrderclass from seed data. Guild page queries it dynamically; kiosk/components hardcode “Freelancer” for now. - Nickname capped at 20 characters — enforced at Payload collection level (
maxLength) and HTML input (maxLengthattribute). MMO-style limit.
Withfriends — closing the loop with James Steinberg
Messaged James Steinberg on Twitter DM to let him know the cofounder work trial with Kunal ended (as of March 31). Kept it brief — mentioned ethical/values misalignment without details, and noted that none of Kunal’s former cofounders or collaborators could give a straight answer about working with him. No ask, just transparency. James never responded to the March 21 due diligence message, so this was a low-pressure close-the-loop follow-up.
James responded — said he never actually worked with Kunal and took over Pools after the split, so he wouldn’t have been helpful anyway. This clarifies the relationship: James joined Joe’s side post-split, not a former Kunal collaborator. Joe (pools.events / Better Network, Inc.) remains the only person who’d have direct experience working with Kunal.
Action Items
- Demo kiosk feature at tonight’s board game night
- Gauge member reactions as early signal
- Merge #83 and #84 after CI passes
- Set up kiosk refresh alias on Mac (
kiosk-refresh→ SSH + wtype Ctrl+R) - Configure Hi.Events webhook integration (attendance tracking for events like tonight)
- Discord OIDC + role management (#77 and beyond)
- Start thinking about OAuth into self-hosted apps (Nextcloud, etc.)