Rating Bee: roadmap review and recommendations
What the plan gets right, what to change, and answers to the Section 16 questions on hours, costs, dependencies and the fastest path to five restaurants.
Something in this artifact failed to run
The content below is still readable, but an interactive control may not respond.
Bottom line
What you're building: a review site where the stars come from people who actually paid. The restaurant's own receipt proves the visit. The score shows how the place is doing now, not how it did years ago. A restaurant that had a bad night can win the customer back in the open. And paying Rating Bee never buys a better score. That's "Honest Reviews. Fair Ratings. Second Chances." and it's a real gap. Google and Yelp can't tell you who actually ate there, and they don't really give a business a second chance.
Verdict: the plan is sound and unusually disciplined: each stage has a gate, you have honest revenue expectations, and trust rules apply from day one. It can be built. I checked the riskiest technical assumption, receipt QR codes on Clover, against Clover's own documentation, and it works roughly the way you hoped (details below). The changes I recommend are mostly about order and integrity, not size.
- Close the "cherry-picking" hole. If staff hand review invitations only to happy tables, the "verified" score becomes a marketing score. Invitations must reach every paying customer (printed on every receipt, or a sticker/table QR anyone can use with their receipt). Hand-delivered invitations should be labeled and capped.
- Make "Second Chances" a defined, legal process. Under the FTC's 2024 review rule, a refund or freebie can't be tied to changing a review. The Resolution Center needs firm rules: the original review always stays, only the customer can update it, and offers are never conditional.
- Sell reputation tools first, advertising later. In year one consumers won't visit in large numbers, so coupons, promotions and sponsored spots have little value. What a restaurant will pay for now: verified feedback, alerts, a recovery inbox, a website badge and monthly reports. Move "Bee Featured" to the growth stage.
- Plan for Clover's billing rule. Clover's docs say app fees for Clover merchants must be billed through Clover, and you keep 70%. Confirm how that applies to Rating Bee before you fix prices.
- Pilot without waiting for any POS approval. Build "Receipt Match": the customer scans a sticker QR and types the receipt number and total, and Rating Bee checks them against the restaurant's POS (or the owner confirms with one tap). This works with Clover, Square and Toast restaurants on day one. Clover's printed-receipt QR replaces it once approved.
Added October 24: full directory, the "On Google" box and Founding Critics
Full directory, city by city. Every restaurant gets a page from day one, loaded from Foursquare Open Source Places (Apache 2.0, free, covers the US, and we're allowed to keep it). Bay Area first, then one city at a time. The US has roughly a million restaurants, and adding listings costs nothing per listing. Owners can claim and correct their page. Search engines index a page once it's claimed or has a Rating Bee review, so we don't publish thousands of thin pages.
"On Google" box. Each restaurant page has a clearly labeled box showing Google's rating, review count, a few reviews and photos, loaded live from Google when the visitor taps it. Google's rules: only Place IDs may be stored; everything else is fetched fresh, shown with the Google logo and each author's name and profile link, and on a Google map if a map is used. It's never counted in FreshScore or mixed with Rating Bee reviews, so "verified" keeps its meaning.
Google cost (list prices checked Oct 24). Free amounts are per month and count page views, not businesses. Rating and review count: 1,000 free, then $20 per 1,000. Reviews: 1,000 free, then $25 per 1,000. Photos: 1,000 free, then $7 per 1,000 each. Example: 10,000 box openings a month with 3 photos each is about $425. Tap-to-load and a 3-photo limit keep this tied to real interest.
Founding Critics, now in the pilot. An invite-only group of 10–25 Bay Area people you pick, each with a critic badge and profile. Critics pay for their own meals by default, and those reviews count normally. Hosted (free or discounted) visits get a visible "Hosted visit" label and don't count toward FreshScore. No one is rewarded for a positive review, and restaurants can't preview or approve a critic's review. The full marketplace, where restaurants invite and host critics, comes later.
What I verified (primary sources, Oct 24, 2026)
| Topic | What the source says | What it means for Rating Bee |
|---|---|---|
| Clover Smart Receipts | An app sets one receipt text and one URL. Clover prints the URL as a QR code at the bottom of paper receipts and adds ?m=merchant&o=order&p=payment. Changes take up to 10 hours to reach devices. The app name prints on the receipt. | Every receipt gets a QR code tied to a real order with no staff action, which is the ideal "no cherry-picking" invitation. The link isn't a secret, so the server must check every order with Clover's API (paid, not refunded, recent, used once). Name the app "Rating Bee". |
| Clover private apps | A private app isn't listed in the App Market and is shared by a direct link. It still needs an approved production developer account and app approval (functional video and description). | The pilot doesn't need a public listing, but it does need Clover's approval. Apply in week 1. |
| Clover billing | "All app fees … must be implemented within the Fiserv or Clover platforms. You receive 70%." | A $39 plan sold to a Clover merchant through the app may net about $27. Ask Clover Developer Relations whether web-only premium features can be billed through Stripe. |
| Toast | Partner integrations need a formal application and certification. Separately, a restaurant can buy self-service "standard API access" (read-only) from the Toast Shop. | Full Toast partnership is a later-stage effort. A pilot Toast restaurant might use standard access for Receipt Match. Confirm Toast's terms allow sharing those credentials. |
| Square | Each payment record carries a short receipt_number, the order, the location and the total. | Receipt Match can work on Square: receipt number + total + time window, checked against the Payments API. No per-receipt QR printing is assumed. |
| Google Places | Place IDs may be stored indefinitely. Other content can't be cached or stored except where allowed, and needs Google attribution. "IDs only" Text Search and Place Details are free without limit. Place Details Essentials: 10,000 free/month, then $5 per 1,000. Pro: 5,000 free, then $17. Ratings and reviews (Enterprise + Atmosphere): 1,000 free, then $25. | Store only the Place ID. Updated Oct 24: show Google's rating, reviews and photos live in a separate, credited "On Google" box that is never part of FreshScore (see "Added October 24"). |
| Open place data | Foursquare Open Source Places is published under Apache 2.0. | A free, legally reusable starting list of East Bay restaurants (verify each before showing it). |
| FTC rule, 16 CFR Part 465 (Aug 2024) | §465.4: no compensation conditioned on a review's sentiment. §465.5: insider reviews need disclosure. §465.7: no groundless threats to remove reviews, and no hiding reviews by rating while implying all are shown (neutral, equally applied rules are allowed). | This shapes the Resolution Center, staff self-reviews and moderation (see the trust section). Moderation must be sentiment-neutral and documented. |
| Your current domain | ratingbee.com is a WordPress "Rating Bee Local SEO" site on the shared Hostinger plan that had the October malware cleanup. | Host the platform separately on managed cloud. Don't put customer data on the shared WordPress account. |
Recommended changes to the plan
- Three verification levels, shown on every review: "Receipt verified" (POS-confirmed automatically), "Business confirmed" (owner confirmed a manual invitation or receipt) and "Unverified". Only the first two count toward FreshScore. Show "how reviews were collected" on every profile.
- Lock the FreshScore formula now and publish it (proposed formula below, and you can try it in the prototype). Fix one contradiction in the plan: reviews older than 36 months can't stop counting toward a "current" score that only uses 12 months anyway. The 36-month rule really affects the all-time rating. Pick one: keep "all-time" truly all-time (my recommendation; the archive is only a display tab), or rename it "3-year rating".
- One person, one current vote: FreshScore uses each customer's latest verified review of a business. A return visit is a new review, which is a natural second chance.
- Every review waits the same short hold (for example 24 hours for fraud checks), whatever its stars. The business is notified of all reviews the same way. Never hold back only negative reviews.
- Sign-in without passwords: email magic link at first, phone only for higher reviewer levels. This avoids SMS registration fees and delays in the pilot.
- No native apps in year one. A fast mobile website covers scan → review in under 60 seconds.
- Add a website badge/widget to the free or paid tier. It's the one thing every restaurant can use on day one, it brings traffic back to Rating Bee, and it fits your web-design client base. (Google won't show star snippets for a business's own reviews of itself, so sell the badge as trust, not SEO.)
- Move sponsored placements, coupons and promotions from Stage 5 to Stage 9. Start Stage 5 with reputation features.
- Set targets by channel. A QR code at the bottom of a receipt will convert at a much lower rate than an invitation handed over with a request. Track "receipts printed → scans → completed reviews" separately from hand-delivered invitations. A single 10% target will mislead you.
- Clear the names before printing stickers: run a trademark search on "Rating Bee" and "FreshScore" (food and review marks crowd the "fresh" space).
- Legal basics before public launch: Terms, Content Guidelines (the rules every removal cites), a Privacy Policy, a takedown/appeal process, and a California-licensed attorney's review. Use them in every sales conversation, because Yelp-style "pay us or else" accusations are the main reputational risk for this business model.
- Keep sales and moderation separate from day one, even if you're both people for now: a written rule that subscription status is never visible in moderation tools.
Proposed FreshScore (transparent and hard to game)
FreshScore = (5 × 3.5 + Σ weight × stars) ÷ (5 + Σ weight)
- Counts only Receipt-verified and Business-confirmed reviews from the last 12 months, using each customer's latest review. Hosted/critic reviews are excluded.
- Weight 1.0 for reviews 0–6 months old and 0.5 for 6–12 months. That's simple enough to explain on a sticker.
- The "5 × 3.5" acts like five neutral starting votes. A new place with three 5-star reviews shows 4.25, not 5.0, so tiny samples can't top the rankings.
- No score is shown until a business has 5 counted reviews ("New on Rating Bee · 3 verified reviews").
- The profile always shows: FreshScore (12 months), all-time rating, total reviews, verified reviews, and how reviews were collected.
Second Chances: the Resolution Center rules
- The customer's review publishes on the normal schedule. Nothing waits on the business.
- On a 1–3 star review, the customer can choose "Let the business contact me". Only then does the business see a private way to reach them.
- The business can reply publicly and/or privately. An offer (refund, visit) must be unconditional. The platform shows: "Offers can't depend on changing your review."
- The customer, and only the customer, marks the case "Resolved" or "Not resolved" and may post an update. The original stays visible under "Original review".
- FreshScore uses the customer's current rating. The profile shows a public "resolution rate". This is your differentiator: it rewards fixing problems, not hiding them.
- Any message asking a customer to change or remove a review is reportable and can lead to suspension.
Q1–3, Q11: engineering hours, calendar time and what runs in parallel
Hours are for an experienced full-stack developer working with a specification, including testing. Calendar times assume about 30 focused hours a week from one builder, plus your reviews. Outside approvals are listed separately and are not promises.
| Work item | Category | Your estimate (h) | My estimate (h) | Notes |
|---|---|---|---|---|
| Stage 1: spec, schema, policies, clickable concept | 1 · First pilot | 40–70 | 30–45 | Partly done with this review and the attached prototype. |
| Stage 2: core platform (profiles, search, sign-in, reviews + photos, labels, FreshScore, responses, Resolution Center, claiming, admin, audit log, invitations) | 1 · First pilot | 120–200 | 150–230 | Slightly higher: ownership verification, moderation/appeals and the audit trail are where review sites usually get underestimated. |
| Receipt Match (sticker QR + receipt number/total, owner one-tap confirm) | 1 · First pilot | — | 25–40 | New. Unblocks the pilot for any POS. |
| Stage 3: Clover smart receipts + order validation, refunds, disconnect | 1 · First pilot | 60–120 | 50–90 | Smaller than feared: the QR is a Clover setting, and the work is OAuth, order checks and webhooks. |
| Stage 4: pilot tooling (metrics dashboard, onboarding kit, sticker/print files) + support | 1 · First pilot | 50–90 | 40–70 | Plus your time recruiting restaurants. |
| Stage 5a: Stripe plans, permissions, billing history, reputation reports, badge widget, alerts | 2 · First paying | 90–150 | 70–110 | Coupons, announcements and sponsored spots moved to growth. |
| Stage 5b: coupons, promotions, announcements, sponsored labeling | 3 · Growth | 40–60 | Only valuable once consumer traffic exists. | |
| Stage 6: reviewer levels, profiles, collections, privacy | 3 · Growth | 80–140 | 60–100 | Followers and the ambassador page move to optional. |
| Stage 9: city/category pages, filters, sitemap, structured data, analytics | 3 · Growth | 70–120 | 60–100 | Build pages only where real reviews exist. |
| Stage 8: Square full integration (OAuth, matching, digital invites, listing) | 3 · Growth | 100–220 | 60–110 | Receipt Match does most of the groundwork. |
| Stage 8: Toast partner integration | 3 · Growth | 100–220 | 100–180 | Only after Toast accepts the partner application. |
| Stage 7: Invite-a-Critic marketplace | 4 · Optional | 80–130 | 70–110 | After paid demand is proven. |
| Native iOS/Android apps, followers, comparison pages, ad network, new categories | 4 · Optional | — | 300+ | Defer until there are paying customers and repeat consumer visits. |
Can run at the same time
- Week 1, with no code needed: Clover developer account and private app application, Square developer account, Toast partner application, trademark search, legal drafts, recruiting restaurants, ordering a Clover Dev Kit.
- Core platform (Stage 2) alongside the Clover sandbox work (Stage 3), since they meet only at the "verify this order" function.
- Stripe billing (Stage 5a) during the pilot. SEO pages (Stage 9) as soon as pilot restaurants have reviews.
Q4: outside dependencies
| Dependency | Blocks | How to reduce the risk |
|---|---|---|
| Clover developer account + private app approval | Automatic receipt QR | Apply in week 1; pilot on Receipt Match until approved. Clover doesn't publish an approval timeline, so budget 2–6 weeks (my assumption). |
| Clover billing rule (70% share) | Pricing for Clover merchants | Written answer from Clover Developer Relations before Stage 5. |
| Toast partner program | Toast automation | Apply early. Use standard API access or owner confirmation for Toast pilot restaurants. |
| Square developer + (later) App Marketplace | Square automation and listing | Receipt Match first; list later. |
| Stripe account | Paid plans | You already run Stripe for wdm-portal, so open a separate Rating Bee account. |
| Email sender domain (SPF/DKIM/DMARC) | Sign-in links and alerts | Set up in week 1 on a mail subdomain. |
| Attorney review; trademark search | Public launch and sticker printing | Start in week 1. |
Q5: technology. Keep your stack, with three adjustments
- Keep: Next.js + TypeScript, PostgreSQL + PostGIS, Stripe, managed auth, object storage. You already run Next.js + Supabase + Stripe + Resend in production (wdm-portal), so I recommend Supabase (Postgres, PostGIS, auth, storage and row-level security in one) on Vercel, with Resend for email and Sentry for errors.
- Not Cloudflare D1 (used for the CCA portal) for this project: it's SQLite and has no PostGIS for "restaurants near me".
- Adjustment 1: treat reviews as an append-only history (every edit is a new version, every moderation action is a logged event). That makes "auditable" and "the original stays" automatic.
- Adjustment 2: one "verification adapter" interface (
verifyEvidence(location, evidence) → verified | confirmed | rejected) with Clover, Square, Toast and Manual behind it. New POS systems plug in without touching reviews or scoring. - Adjustment 3: store the minimum transaction evidence (POS name, merchant/location, order and payment IDs, amount, time, status). Never store card data, and never store customer phone or email from the POS.
Core data model (first draft)
merchants → locations (PostGIS point, hours, category, google_place_id) · pos_connections (adapter, encrypted tokens, status) · evidence (location, adapter, external order/payment id, amount, time, status) · invitations (token hash, location, channel, expires, used_at) · users (role: consumer/owner/critic/admin; level) · reviews (location, user, evidence, verification level, hosted flag) · review_versions (stars, text, photos, created_at, reason) · responses · resolution_cases (opted_in, status set by customer) · moderation_actions (policy clause, actor, appeal) · audit_log · score_snapshots (daily FreshScore per location) · subscriptions (Stripe or Clover).
Q6–8: monthly operating costs (estimates)
Assumes roughly 50 / 500 / 5,000 reviews a month and modest photo use. Prices are list prices checked Oct 24, 2026, except Supabase and Sentry (which I couldn't confirm today) and SMS volume (my assumption). People costs (moderation, support, sales) aren't included and will be larger than the software.
| Item | 100 listings | 1,000 listings | 10,000 listings |
|---|---|---|---|
| Web hosting (Vercel Pro $20 + usage) | $20 | $20–60 | $150–500 |
| Database, auth, storage (Supabase Pro + compute) | $25–35 | $60–150 | $300–800 |
| Photo storage (R2 $0.015/GB, no egress fees) | $0–1 | $1–5 | $15–60 |
| Email (Resend: free 3k/mo; $20 for 50k) | $0–20 | $20 | $90–200 |
| SMS, if used (Twilio $0.0083/segment + 10DLC fees) | $0 | $20–80 | $200–800 |
| Monitoring/uptime (Sentry + uptime check) | $0 | $26–50 | $80–300 |
| Google Places (IDs only + Essentials in free tier) | $0 | $0–50 | $50–500 |
| Domain, backups, misc | $5–10 | $10–30 | $50–150 |
| Total software | ≈ $50–90 | ≈ $160–450 | ≈ $950–3,300 |
Q7, API costs by volume: if Rating Bee keeps its own directory, a business search costs almost nothing (your own database). Calling Google on every search is what gets expensive: Text Search Pro is $32 per 1,000 after 5,000 free a month, so 100,000 Google-powered searches would be about $3,000/month. Store the Place ID, show your own data, and call Google only for "Directions". Pay-per-use costs: Stripe 2.9% + 30¢ per charge plus 0.7% Billing (about $1.40 on a $29 plan). Clover-billed plans: you keep 70%. Window stickers and printing are a separate marketing cost.
Q9: security, app review and production testing
- Clover Dev Kit device (from Clover's developer store) to prove a printed receipt end to end, plus a sandbox test merchant.
- A functional demo video for Clover's app review (about 1 day).
- Before the public launch: an outside security review or penetration test of sign-in, invitations and the admin area (a budget line in the low thousands; get quotes).
- Attorney review of Terms, Content Guidelines and Privacy; consider media/cyber liability insurance.
- Fraud checks built in: one review per order or payment, invitation expiry, rate limits per device/IP (stored hashed), blocking owners/staff from reviewing their own business, and alerts for unusual bursts of reviews.
Q10–12: ways to save, what to defer, and the shortest path to five restaurants
Ways to save or go faster
- Receipt Match instead of waiting for POS approvals.
- Reuse the wdm-portal stack and patterns (Stripe, Supabase, Resend).
- Foursquare open data + owner claims instead of paid listing data.
- Email sign-in only in the pilot (no SMS).
- Recruit from your existing ~210 business clients and their referrals.
- Pick pilot restaurants on Clover first.
Defer until there are paying customers
- Native apps, followers, ambassador page
- Invite-a-Critic marketplace
- Sponsored placements, ads, coupons
- Toast partner build, public App Market listings
- Comparison pages, cities beyond the pilot
| Week | Build | You (business side) |
|---|---|---|
| 1 | Final spec, repo, database, sign-in, deploy pipeline | Decide the open questions below; apply to Clover/Square/Toast; trademark search; line up 5–8 restaurants (Clover first) |
| 2–3 | Profiles, review flow, verification labels, FreshScore, owner dashboard, responses | Attorney starts on Terms/Guidelines/Privacy; sticker design |
| 4 | Receipt Match, owner confirm, Resolution Center, admin moderation + audit log | Sign pilot agreements; print stickers and table cards |
| 5 | Clover sandbox order checks; fraud limits; pilot metrics dashboard; security pass | Staff walkthroughs (10 minutes per restaurant) |
| 6 | Soft launch with 5 restaurants on Receipt Match | On-site launch day at each restaurant |
| 7–12 | Clover receipt QR when approved; fixes; Stripe plans | Weekly owner check-ins; customer interviews; first pricing conversations |
Decisions I need from you
- All-time rating: truly all-time with the archive as a display tab (recommended), or a "3-year rating"?
- After a resolution, does FreshScore use the customer's updated rating (recommended, with the original kept visible) or always the original?
- Do unverified reviews appear on profiles (recommended: yes, labeled, not scored) or not at all?
- Pilot restaurants: do you already know 5 in Walnut Creek/Concord/Martinez/Benicia, and which POS they use?
- Decided: the new platform replaces ratingbee.com on Cloudflare and the old WordPress site is retired.
- The first 10–25 Founding Critics to invite.
- "On Google" box: tap-to-load (recommended) or always shown?