LocalSync HQ — a dashboard to scan and sync business listings across platforms for multi-location franchises
COMPLETEProject Overview
Features
- Implement authentication
Add login/logout and session management for pilot users.
- Implement basic authorization roles
Support at least Admin vs Viewer (or similar) for the pilot account.
- Admin-managed user invites (optional)
If needed, allow an admin to invite additional users; otherwise seed users manually for MVP.
- Audit logging (lightweight)
Record who initiated a sync/correction and when (sufficient for MVP troubleshooting).
- OAuth / connection to Google Business Profile
Implement Google OAuth and connect to GBP account; handle token storage/refresh securely.
- Fetch locations from GBP
Pull list of locations for the pilot customer (e.g., 10–15) and persist them in the app database.
- Define normalized location schema
Normalize core fields: name, address, phone, website, hours, categories (as feasible), status (open/closed).
- Manual resync
Allow a user to trigger a resync from GBP to refresh authoritative data.
- Data model for platform-specific listing records
Store per-platform snapshots (GBP/Yelp/Apple) to compare against normalized source-of-truth.
- Connect to Yelp API (as available) and fetch listing data
Implement OAuth/API key integration and fetch business listing fields per location (mapping strategy for matching GBP locations to Yelp listings).
- Connect to Apple Maps (as available) and fetch listing data
Implement Apple Maps integration or data access method for listing fields; define matching strategy to GBP locations.
- Location matching & reconciliation
Build matching logic between GBP locations and corresponding Yelp/Apple listings (by place ID, name+address+phone fuzzy matching, manual override when ambiguous).
- Normalization + comparison engine
Normalize fields from each platform into a common format and compute diffs vs GBP (source-of-truth).
- Inconsistency dashboard UI
Show per-location and cross-location views: field-level diffs, platform affected, last scanned time, and severity indicator.
- Scan scheduling
Support manual scan now; optional daily scheduled scans via background jobs/cron.
- Define inconsistency taxonomy
Categorize mismatch types (phone, hours, status, etc.) and store platform + field + old/new values.
- Persist scan results over time
Store scan snapshots/diffs per run to enable drift timelines and later scoring/benchmarking.
- Persist correction outcomes
Record correction method (API vs manual), attempt status, error messages, and completion time.
- Basic reporting export (optional)
Allow exporting inconsistencies/corrections to CSV for analysis during the pilot.
- Correction plan builder
Given detected diffs, generate a proposed set of updates to apply to Yelp/Apple to match GBP (field-by-field).
- Per-field override UI
Allow toggling which fields to update per platform before applying the correction (e.g., update phone + hours but not categories).
- Execute updates via platform APIs (as available)
Implement write/update calls for Yelp and Apple Maps where supported; handle validation/errors and partial success.
- Job queue for corrections
Run corrections asynchronously; show status (queued/running/succeeded/failed) and retry behavior.
- Post-correction rescan
After applying updates, rescan affected listings to confirm changes and update health score/diffs.
- Create new location in Google Business Profile
UI + API flow to create a new GBP location with required fields and verification considerations.
- Queue propagation to other platforms
After GBP creation, enqueue creation/update jobs for Yelp/Apple as supported; handle cases where platform requires manual claim/verification.
- Onboarding checklist UI
Show setup status per platform (created/claimed/pending verification/manual action required) so the user knows what’s blocking go-live.
- Fallback handling when platform creation isn't supported
When an API cannot create a listing, record required manual steps and keep it in a 'needs action' state.
- Define pricing model in Stripe
Model $75/location/month (quantity-based) with a monthly recurring plan; decide trial/coupon support for MVP.
- Stripe Checkout + subscription creation
Implement checkout flow and create subscriptions; store customer/subscription IDs.
- Customer portal
Allow customers to update payment method, view invoices, and cancel via Stripe portal.
- Access gating
Restrict scanning/corrections when subscription is inactive/past due; show billing state in UI.
- Webhook handling
Handle Stripe webhooks for subscription lifecycle events (created/updated/canceled, invoice paid/failed).
Milestones
Milestone 1
Assigned Features
- Pilot-mode account (single customer) and basic access
- Google Business Profile as source-of-truth + location ingestion
Milestone 2
Assigned Features
- Listing scan + drift detection (GBP vs Yelp vs Apple Maps)
- Drift log + inconsistency taxonomy (no health score in MVP)
Milestone 3
Assigned Features
- Bulk corrections: make all platforms match Google (with per-field overrides)
- New location onboarding (create in Google, propagate to Yelp/Apple)
- Stripe subscription billing ($75/location/month)