Ribbit.DealsRunning Functional Specification — Team Document LIVING DOC · v1.0

Ribbit.Deals — Functional Specification

v1.0 · August 13, 2026 · Maintained alongside development — updated every sprint · Companions: Architecture · Data Layer · App UI

0. Purpose of This Document 1. System Overview 2. Audiences & Experience Isolation 3. Consumer Journey 4. Business Journey 5. Redemption Verification (Placard Model) 6. POS Integration — Decision Record 7. Offers, Caps & Void Rules 8. Rewards, Badges & Referrals 9. Pricing & Billing Model 10. Privacy, Security & Non-Functional 11. Decision Log 12. Open Questions 13. Changelog

0. Purpose of This Document

This is the single running reference for what Ribbit.Deals does and why. It travels alongside development: every speed bump, question, and resolution lands here so decisions are made once and remembered forever. Anything marked LOCKED is founder-approved; RECOMMENDED is the team's position awaiting sign-off; OPEN needs a decision.

1. System Overview

Ribbit.Deals is a performance-based local deals platform for Utah, delivered as a Progressive Web App (no app stores) with a public marketing website. Local businesses publish offers; consumers discover them nearby and redeem them in person; redemption is verified by a two-factor handshake (GPS presence + placard scan); businesses pay a performance fee only on verified redemptions, alongside a one-time activation and a per-location operations fee.

2. Audiences & Experience Isolation LOCKED

Two audiences, two completely separate experiences, one door between them.

3. Consumer Journey

3.1 Sign-up LOCKED

3.2 Discovery

3.3 Redemption

See Section 5 — the verification handshake is the product's heart.

4. Business Journey

4.1 Enrollment LOCKED

4.2 Dashboard

5. Redemption Verification — the Placard Handshake LOCKED

Two independent factors, no business-side hardware or software:

FactorMechanismDefeats
1. PresenceConsumer device GPS validated inside the offer's geofence at the moment Redeem is tapped (location captured only at that moment — no background tracking).Couch redemptions, remote code sharing
2. Physical tokenConsumer scans the business's counter placard QR (per-location qr_token, rotatable if compromised). Manual fallback: printed POND-XXXX short code.GPS spoofing alone, drive-by scans

6. POS Integration — Decision Record RECOMMENDED: DO NOT INTEGRATE (v1)

Question raised (Aug 13 stakeholder meeting): should Ribbit.Deals integrate with common point-of-sale systems (Square, Clover, Toast, Lightspeed, …) to verify purchases at the register?

Team recommendation: no POS integration in v1. The placard handshake already delivers verified, in-person redemption without it. Integration would add:

Cost DimensionPlacard Model (current)POS Integration
Initial developmentComplete (designed & prototyped)Per-platform APIs, OAuth flows, webhooks — each POS is its own project; several add partner certification queues measured in weeks-to-months
Launch timelineOn track for Black FridayCertification + per-platform QA realistically pushes launch into next year
Ongoing maintenanceNone (a laminated card)Every POS version change, API deprecation, and breaking update, forever — multiplied by the number of platforms
Support burdenReprint a card"My POS won't connect" tickets we cannot fix ourselves; failures blamed on Ribbit.Deals regardless of fault
Merchant onboardingZero technical steps — place card on counterPer-merchant setup, permissions, staff training; excludes cash-only and legacy-register businesses entirely
Sales pitch impact"Your entire equipment stack is a laminated card"Pitch dies; we become "another system to install"

What POS integration would buy: transaction-amount capture (basket size analytics) and marginally stronger purchase proof. Mitigations without it: the 48-hour void window handles no-purchase scans; basket analytics can be a Phase 2+ opt-in (e.g., receipt total entry or a single-platform pilot) if merchants demand it — decided from data, not speculation.

Status: Recommended, pending founder confirmation at the Aug 14 meeting. On confirmation this moves to LOCKED and the mitigation notes migrate to the Phase 2 backlog.

7. Offers, Caps & Void Rules LOCKED

8. Rewards, Badges & Referrals LOCKED

9. Pricing & Billing Model LOCKED (structure) OPEN (amounts)

10. Privacy, Security & Non-Functional

11. Decision Log

DateDecisionStatusRationale (short)
Jul 2026Verification = GPS + placard scan (no hardware)LOCKEDTwo-factor proof, zero merchant cost, zero staff training
Jul 2026Pricing gated to enrollment Step 3; never publicLOCKEDEarly-market flexibility; computed per location count
Jul 2026Consumer sign-up limited to four fieldsLOCKEDConversion; enrich later in-app
Jul 202648-hour business void windowLOCKEDTrust valve for no-purchase scans; billing integrity
Aug 2026Consumer & business experiences fully isolated; single door; "beneficiary" voiceLOCKEDFounder direction; each audience addressed in its own register
Aug 2026Charity/community giving deferredLOCKEDPhase 2; keeps v1 story and billing simple
Aug 2026Sunburst design direction (Round 1 Option B), ticker under navLOCKEDFounder selection after two option rounds
Aug 13No POS integration in v1 — placard model stands aloneRECOMMENDEDSection 6 — cost, timeline, support, onboarding, pitch

12. Open Questions

#QuestionNeeded ByOwner
1Fee dollar amounts: activation, per-location monthly + annual, performance feeSprint 7 start (Aug 25) — blocks billing buildFounders
2POS decision — confirm Section 6 recommendationAug 14 meetingFounders
3Points earn rate + unlock thresholds + referral reward valuesSprint 7 (rewards build)Founders + team proposal
4Dispute resolution: arbitration vs. courts (EULA §20)Attorney reviewCounsel + founders
5Video scope: confirm list, lengths, and delivery dates for the added videosAug 14 meeting — affects sprint capacityFounders + team

13. Changelog

VersionDateChanges
v1.0Aug 13, 2026Initial living spec: consolidates all decisions and prototyped functionality through Sprint 5; adds POS integration decision record; opens questions register.
How this document is used: updated every sprint (minimum) and whenever a decision lands. Speed bumps become Open Questions; answered questions become Decision Log entries; the changelog keeps the paper trail. If it isn't in here, it isn't decided.