BestDealOn

Handbook

Master feature inventory

A full checklist of what a complete Best Deal On install has. For each feature: what it is, how to check it on any copy or install, and its status on bestdealon.app as verified on Nov 3, 2026 (from the code, the live flags and Render deploy records). Statuses: live, built but off, planned, not built. Where something could not be confirmed it says not verified. Settings are explained in settings and feature flags; history is in the changelog.

Public site (bestdealon-v2)

FeatureWhat it isHow to checkStatus
Home pagePitch, listings, call button for (727) 632-0002GET / returns 200live
Feature comparisonBest Deal On + Bizinator comparison chartGET /features/live
App install guideBest Deal On Bot early-access install stepsGET /app/live
Listing pagesOne static page per approved business, with JSON and feedGET /ph/<10 digits>/, profile.json, feed.xmllive
Legal pagesPrivacy Policy and TermsLEGAL_PAGES=on; GET /privacy, /termslive
IndexingPages indexable, no noindexINDEXING=on; no X-Robots-Tag headerlive
Sitemap, feed, llms.txt, robots.txtMachine-readable site filesGET /sitemap.xml, /feed.xml, /llms.txt, /robots.txtlive
Handbook wikiThis handbook, server-renderedGET /wiki/; pages listed in the sitemaplive (since 11:43 PM EST Nov 3)
Health checkService statusGET /healthlive

Accounts

FeatureWhat it isHow to checkStatus
Sign up, sign in, sign outBusiness and personal accounts/signup, /loginlive
Email confirmationSingle-use confirm link by email (Resend)/confirm?t=… after sign-up; admin setting mail_resendlive
Password resetEmailed reset link/forgot, /resetlive
Sign-in link (magic link)Passwordless email sign-in/login/link; admin setting magic_linkbuilt; live state not verified
Mail allowlistMail only to listed addressesMAIL_ALLOWLIST (empty = anyone)live (set)
DashboardOwner status page with listing and phone-bot status/account (signed in)live
API tokensOne token per install for the extension / Sync API/account/tokenslive
Device connectConnect the extension with a short code/devicelive

Listings and data

FeatureWhat it isHow to checkStatus
Sync APICreate, read, update listings with ETags and scopesGET /api/v1/schema; docs/API.md; tests in tests/run.phplive
RevisionsEvery change stores a new revisionStore::put; admin listing historylive
One-off boot hooksAudited, marker-guarded data fixes run once at deployenv var named in bin/install.php, removed after uselive (pattern)

Admin

FeatureWhat it isHow to checkStatus
Admin areaOverview, users, subscriptions, businesses, claims, activity, audit log, tokens, settings/admin/… (admin only)live
Edit businessAdmin edits listing fields with a saved revision/admin/businesses → Editlive
Manual verifyAdmin marks a phone verified with a reasonEdit business → Mark verified; audit phone.verifiedlive
Audit logOld → new values for every admin action/admin/auditlive
Delete userTyped confirm, audited, tokens revoked/admin/userslive

Phone verification and claims

FeatureWhat it isHow to checkStatus
Verify by callThe bot calls the listing's own number with a code (read or key-in)CALL_VERIFY=on (site) and BDO_VERIFY_CALLS (bot); /api/phone/verify/live
Phone verify by SMSText codesPHONE_VERIFY_SMSbuilt but off
Inbound claimsBot offers to start a claim during a callINBOUND_CLAIM (site), BDO_INBOUND_CLAIM + tenant bdo_claims (bot); /admin/claimsbuilt but off
Caller lookupSigned endpoint that tells the bot if a caller has an account (name, booleans, email label only)CALLER_LOOKUP=on; signed POST /api/callbot/caller-profile (unsigned → 401)live
Caller recognitionBot greets known callers by name; never counts as verificationtenant bdo_caller_lookup, returning_caller_greetinglive

Owner tools

FeatureWhat it isHow to checkStatus
Web phone-bot dashboardCalls, messages, subscribers and KB gaps for the owner/account/phone-bot (signed in)live
Best Deal On Bot extensionChrome extension v2.3.0: Home, Business, Phone bot, Bots, Backups, Keys, SettingsLoad unpacked; Business › Sync with bestdealonlive (early access, not in the Chrome Web Store)
Bot backupsExtension backs up Grok Bot botsExtension › Backupslive (early access)
Owner APIRead-only per-business API on the bot/api/owner/v1/status (and subscribers, calls, kb-gaps, messages, .csv)live

Phone bot (callbots-bdo)

FeatureWhat it isHow to checkStatus
Phone lineGrok Voice answers (727) 632-0002 through TwilioCall the line; /health shows mode, active_callslive
Knowledge base answerskb_answer from the Best Deal On KB with citationskb/bestdealon/; /admin/kb-gaps.csvlive
Take a messageMessage emailed to the team, no audiotenant take_messagelive
Email links and summariesCaller confirms an email; links sent via Resendtenant email_enabled; tools set_email_address, send_emaillive
Transfer to a personTransfer by SIP REFER, else take a messagetool transfer_to_humanbuilt; per-business routing planned
NewsletterEmail sign-up with confirm and unsubscribe/newsletter/confirm, /unsubscribe on the botlive
Owner briefing callDaily owner summary calltenant owner_briefingbuilt but off (not configured)
Texting (SMS)Texts to callers, STOP/HELP/STARTtenant sms_enabled; /twilio/sms on the sitebuilt but off (waits for carrier A2P approval, about 4–24 h after submission)
Graceful drain on deployKeep live calls through deploys/health drainingnot built on this service
PaymentsOnline billingStripe keysbuilt but off (no keys)

Onboarding

FeatureWhat it isHow to checkStatus
Onboarding statesnew → phone_verified → calls_connected → sms_pending → sms_livesrc/Onboarding.php; dashboard statuslive
Self-serve phone-bot setupOwner sets up their own bot without help—planned (manual today, see onboarding workflow)
Per-business call routingEach business's own number to its own tenant—planned