# Freebee status board

Last updated Oct 26, 2026 · @praveen · Page: https://freebeeads.com/docs/status · Markdown: https://freebeeads.com/docs/md/status.md · All docs: https://freebeeads.com/llms-full.txt

One table for the whole platform as of today: 61 things are done and verified (25 built on 24 October and 12 on 26 October), 3 are half done, 4 are not started, and a short list at the end needs the founder. Status and priority are dropdowns, so the team can keep this current. "Done" means built, tested in the browser and live on Vercel or Railway; "half done" means it works in a test mode or with a manual step; "to do" means not started.

## Done

Built, checked in the browser, and live. The priority column says how soon the missing piece next to it matters.

### Built earlier

| Area | Item | Status | What exists | What is missing | Priority |
| --- | --- | --- | --- | --- | --- |
| Advertiser | Sign up, sign in, onboarding | Done | Email and password, business name, profile; password reset and team roles added 24 Oct; remove a member and change roles added 26 Oct | — | Later |
| Advertiser | Home with the four metric bands | Done | Delivery, Audience, Engagement, Value with deltas, sample numbers, schedule, live screens, checklist, glossary; 14-day plays line added 26 Oct | — | Later |
| Advertiser | Campaigns list and campaign report | Done | Status tabs, search, report with bands, funnels, tables, rail, CSV and proof-of-play downloads; PDF report added 26 Oct | — | Later |
| Advertiser | Creatives: upload a video or image | Done | Format checks, grid with previews and thumbnails, rename, replace, delete, used-in count; conversion, trim, fit, enhance and preview clip added | Switch ffmpeg on in the Railway image (one line) | Next |
| Advertiser | Create a game ad (5-step editor) | Done | Pick a game with live samples, brand, images with examples and one-click enhance, prizes with stock and validity, AI copy suggestions and name guard, review and send | Anthropic key to switch the AI buttons on | Later |
| Advertiser | Book a screen with hour windows | Done | Stepper, summary rail, hour grid with clashes, next-free-window hint, success card; bid step for busy windows | — | Later |
| Advertiser | Reports page | Done | Every CSV and PDF export in one place; weekly email report toggle | — | Later |
| Advertiser | Per-screen view | Done | Playing now, today's timeline, bands for my plays | — | Later |
| Ops | Today page | Done | Alerts, network bands, schedule timeline, approvals queue, screens needing attention, background jobs card, waitlist count, mall deck link, glossary | Push alerts | Next |
| Ops | Screens: health, screen list, metrics | Done | Last check-in, held batches, add and edit screens with hours, rates, sound; 7-day sparklines; remote restart | — | Later |
| Ops | Bookings list and week calendar | Done | Grouped by advertiser, phase tabs, calendar blocks by hour window, mark paid with method; Bidding tab | — | Later |
| Ops | Approvals board | Done | Waiting, approved, rejected; slide-over with play test, preview clip, footage overrides, three-tick sign-off, AI name flags; advertiser message on decision | — | Later |
| Ops | Footage library (three levels) | Done | Library, per creative, per screen; thumbnails per clip; cricket stadium set and spin effects | — | Later |
| Ops | Pair a device | Done | Six-character code, claim, wait for the player; Devices page with health | — | Later |
| Screen | Browser player (the wall) | Done | Loop, schedule by hour window, assets, play records, pairing, offline cache, remote commands, people counting, sound setting | Android build of the native shell | Next |
| Screen | Hit for Six cricket wall | Done | Two-shot footage, Freebee dice with bee faces, packs on the shelf, prizes, ad break, idle loop, fits small frames, three-language instructions, sound cues | Outcome clips re-shot from the pitch camera | Later |
| Screen | Kiosk and phone join page | Done | Code pad, name with block list and AI check, avatars, prize ladder, scan beacon; English, Telugu and Hindi | — | Later |
| Screen | Spin, wheel and catch games | Done | Engines, coupons, offline fallback reward, sound cues | — | Later |
| Data | Play record and metrics pipeline | Done | Plays, camera counts, engagement, cost per play, held batches, IST days; proof of play v2 | — | Later |
| Data | Shopper wallet and coupons | Done | Claim link, OTP flow, coupon list, redeem once, erase wallet; three languages | Real OTP delivery (AiSensy account) | Now |
| Site | Landing page | Done | Seven sections, live game wall in the hero, pricing, FAQ, real product screenshots, early-access waitlist | Case study | Later |
| Site | Team docs at /docs | Done | Status board, flow doc, UI plan, nine diagrams, 20+ engineering runbooks, every doc as markdown, llms.txt | — | Later |
| Infra | Backend on Railway, frontend on Vercel, demo data seeded | Done | Postgres, volume for media, auto-deploys, migrations on deploy, built-in scheduler, 630 backend tests, CI green | Restore drill, staging environment | Next |
| Infra | Plain-English copy and glossary | Done | Every advertiser and ops string reviewed; shopper pages in three languages | Native-speaker check of the Telugu and Hindi | Next |

### Built on 24 October

| Area | Item | Status | What exists | What is missing | Priority |
| --- | --- | --- | --- | --- | --- |
| Payments | Billing and invoices | Done | GST invoices, Billing page, printable invoice, ops mark paid with method, void and credit notes; Razorpay wired behind env vars | Razorpay account and keys; seller GSTIN and bank details in env | Now |
| Advertiser | Password reset | Done | Forgot and reset pages, 30-minute single-use links, email provider (log or Resend) | Resend account and sender domain | Now |
| Advertiser | Team roles | Done | Invite by email, owner, editor and viewer, data shared across the business, viewer writes refused; remove and change role (26 Oct) | — | Later |
| Advertiser | Messages to advertisers | Done | In-app inbox and bell for every event; same text by email once a provider is set; weekly report (26 Oct) | WhatsApp channel | Next |
| Screen | Device health and remote fixes | Done | Health in every check-in, Devices page with sick screens first, Reload, Restart the loop, Clear cache, Refetch schedule | — | Later |
| Screen | Offline play and queued records | Done | Keeps looping from cache without wifi, overlay shows the offline state, records flush in order with no double counts | — | Later |
| Data | Proof of play | Done | Signed CSV or JSON of every play record; v2 binds the booking, screens and dates; public verify endpoint | — | Later |
| Legal | Terms, privacy, camera notice, content policy | Done | Four public pages with DPDP wording, consent links in the wallet and play pages, sign-up consent line | Lawyer review; company details | Now |
| Ops | Mall sign-off in approvals | Done | Three required ticks plus a mall reference, enforced by the API | — | Later |
| Ops | Support and incident runbook | Done | Channels, severities, five numbered runbooks | Create the support address and WhatsApp number | Now |
| Infra | Backups | Done | Backup script plus runbook for Postgres and media on Railway | First manual backup, private bucket, monthly restore drill | Now |
| Infra | Secrets rotation tooling | Done | Script re-keys every wallet phone to a new SECRET_KEY; OPS_PASSWORD change rotates the login | Run the rotation after the testing round | Now |
| Quality | Tests in CI | Done | GitHub Actions on Node 24: backend tests, type check, web build, Playwright journeys; green on main | — | Later |
| Quality | Playwright journey suite | Done | 60+ tests: every journey plus a 40-page smoke | Run the read-only smoke against production weekly | Later |
| Infra | Error tracking and analytics | Done | Sentry and PostHog wired behind env vars, personal data scrubbed, health endpoint for monitors | Sentry and PostHog accounts, two uptime monitors | Next |
| Site | Product screenshots on the landing page | Done | Six real screenshots in an Inside the product section | Re-shoot after the next design pass | Later |
| Screen | Native player plan and desktop shell | Done | Full plan on /docs; Electron kiosk shell for Mac and Windows; Android project skeleton | Android build (needs the SDK licence accepted); signing; bench hardware | Next |
| Ops | Prize fulfilment | Done | Stock per tier, expiry reminders, per-phone daily limits, ops fulfilment card | Approve the reminder template in AiSensy | Next |
| Screen | Upload conversion, trim and fit | Done | MOV, WebM, MKV and AVI converted to H.264 MP4, trim and fit-to-screen edits | Switch ffmpeg on in nixpacks.toml | Next |
| Screen | AI name check | Done | Second opinion after the block list, 1.5 second timeout, fails open, cached per name | Anthropic API key | Later |
| Site | Docs as markdown for AI tools | Done | llms.txt, llms-full.txt, every doc at /docs/md | — | Later |
| Wallet | WhatsApp sender | Done | AiSensy client for the OTP, cricket code and coupon reminders | AiSensy account, three approved templates, API key | Now |
| Quality | Security review | Done | OWASP pass over every route with 144 tests: critical payment-confirm hole, viewer gaps, throttles, headers, dependency bumps; full CSP added 26 Oct | — | Later |
| Quality | QA pass on the combined build | Done | Journeys green, CI green, 13 bugs fixed | — | Later |
| Advertiser | Bidding for busy windows | Done | Ops mark busy windows with a floor and close time; sealed bids, top bids win and pay their bid, losers told; closes itself every 5 minutes | Decide first-price or second-price; whether losers get a credit | Next |

### Built on 26 October

| Area | Item | Status | What exists | What is missing | Priority |
| --- | --- | --- | --- | --- | --- |
| Infra | Built-in scheduler | Done | Runs bidding close, daily messages, coupon reminders and the weekly report on its own; job log and Run now on ops Today; verified on Railway | — | Later |
| Security | Content security policy and session hardening | Done | Per-request nonce CSP, proof v2, viewers cannot redeem, owners manage members | Test Razorpay checkout against the CSP on staging before switching payments on | Next |
| Screen | Telugu and Hindi on shopper pages | Done | Phone, kiosk, wallet, claim, reward pages and the wall; switch remembered; QR can preset the language | Native-speaker check of the marked strings | Next |
| Data | People counting (audience measurement) | Done | Counts people walking past as well as faces; modes people, faces, off; calibration page with a walk-past test; about 13% of one core | Walk-past test on a real screen against a hand count | Next |
| Advertiser | AI helpers | Done | Copy suggestions, name guard, one-click image enhance, preview clip from an image; all explained, advertiser decides | Anthropic key for copy and the guard; ffmpeg for clips | Later |
| Site | Mall pitch deck | Done | Ten slides at /deck with presenter notes, live example calculator, print to PDF | Fill in your contact details in the deck | Now |
| Screen | Sound on the wall | Done | Six soft generated cues, off by default per screen, mute on the player | Replace generated clips with recorded ones if wanted | Later |
| Site | Waitlist | Done | Early-access form on the landing page, ops list with CSV | — | Later |
| Advertiser | PDF report and weekly email | Done | Print-ready report page; Monday email with the four headline numbers; toggle on Reports | Resend account for delivery | Next |
| Ops | Clip thumbnails and sparklines | Done | Poster frames for every clip; 7-day plays per screen | ffmpeg on Railway for thumbnails | Next |
| Ops | Mall partner side and partner API | Done | Mall login and dashboard with the four bands, monthly revenue-share statements, holiday hours and maintenance mode with a Back soon card on the wall, partner API keys with three read-only endpoints, venue branding on the shopper pages; 37 tests | Decide statement month basis (paid date or flight dates) and whether share changes touch unpaid months | Next |
| Screen | Native player on Android | Done | Debug and release APKs build on this Mac (Gradle 8.11, AGP 8.7, Kotlin 2.0); watchdog, boot start and device-owner setup fixed to match the desktop shell; APKs in ~/Desktop/freebee-player-android | Real release keystore; a test box; device-owner provisioning; first soak test | Next |

## Half done

Works in a test mode or with a manual step, or is being merged right now.

| Area | Item | Status | What exists | What is missing | Priority |
| --- | --- | --- | --- | --- | --- |
| Infra | Secrets and launch switches | Half done | Rotation tooling and runbook ready | Rotate the three secrets; real domain; unset WALLET_OTP_DEV | Now |
| Wallet | OTP delivery | Half done | Sender built and tested; code shown on screen in test mode | AiSensy account, templates and key; switch test mode off | Now |
| Screen | Cricket footage | Half done | Pitch-camera delivery clip, Indian cast, right-handed batter | Outcome clips still use the older crease cast | Later |

## To do

Not started. Two of these are big enough to plan together before building.

| Area | Item | Status | What exists | What is missing | Priority |
| --- | --- | --- | --- | --- | --- |
| Infra | Staging environment | To do | — | A second Railway and Vercel environment for testing before main | Next |
| Ops | Playlists, layout zones, widgets | To do | One loop per screen | Playlists per screen, zones, weather and offer widgets; plan together before building | Later |
| Infra | Multi-city and time zones | To do | IST everywhere | Regions, currency, screen groups, per-screen time zone; plan together | Later |
| Site | Case study | To do | — | Needs a real pilot; nothing invented | Later |

## Needs you

Accounts, keys and decisions only the founder can supply. Each line names what it unblocks.

| What | Where | Unblocks |
| --- | --- | --- |
| AiSensy account, sender number, three templates (freebee_otp, freebee_cricket_code, freebee_coupon_reminder), API key | aisensy.com | OTP delivery, cricket code, coupon reminders |
| Resend account and a verified sender domain | resend.com | Password reset, team invites, messages, weekly report |
| Razorpay account, three keys, webhook URL | razorpay.com | Online payment on the Billing page |
| Sentry and PostHog accounts, two uptime monitors | sentry.io, posthog.com | Error alerts, the sign-up funnel |
| Anthropic API key, then AI_PROVIDER=anthropic | console.anthropic.com | AI name check, copy suggestions, name guard |
| A business email on freebeeads.com (the domain is live: site at freebeeads.com, API at api.freebeeads.com, set up 26 Oct) | Cloudflare email routing or Google Workspace | Resend sender, support address, every account sign-up |
| Rotate SECRET_KEY, OPS_PASSWORD and the Postgres password | /docs/repo/secrets-rotation | Launch |
| Uncomment ffmpeg in backend/nixpacks.toml | repo | Video conversion, trim, fit, thumbnails, preview clips |
| Lawyer review of the four legal pages; native-speaker check of the Telugu and Hindi | /terms, /privacy, /camera-notice, /content-policy, docs/LANGUAGES.md | Launch |
| Seller GSTIN, address, state code and bank details in Railway env | Railway variables | Correct invoices |
| Create the real Android release keystore (keytool command in player-android/README.md) and back it up twice; bench hardware (about ₹50,000) | /docs/repo/native-player-plan | Native player on Android |
| Fill DECK_CONTACT in web/components/deck/slides.tsx | repo | Mall pitch deck |
| Decisions: first-price or second-price bidding; losers credit; statement month basis; editors paying invoices | status board | Bidding, billing, mall statements |
