Synaplan
Open-source AI platform for companies: self-hosted AI agents, GDPR-compliant chatbot widget, RAG knowledge base, WhatsApp and Outlook AI, MCP, multi-model routing. Docker, Kubernetes or hosted in Germ
AI voice agent for small businesses. Scans a business on Google Maps, cites the evidence, and prices what missed calls cost.
BusinessGitHub @adamtpangOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Repository information has not been collected yet.
No updates detected yet. GitHub releases will appear here.
Ringy talks, Rungy runs: a consigliere for local businesses. Reads public reviews, shows owners where they lose customers with cited proof, ranks them vs anonymized local peers, and interviews the owner in the browser. Opt-in only, no AI cold calls.
Loading the full README.
Read the full README ↗Ringy talks, Rungy runs. ringring.run is a consigliere for boring local businesses (HVAC, plumbing, cafes, salons, dentists, music shops). It reads what the public already says about a business, shows the owner where they are losing customers with real review quotes as proof, ranks them against anonymized local peers, and hands them a short game plan that says plainly who does each step.
Built for the AITX x MLOps World hackathon (Antler agents track).
Disclosure: Adam previously explored a related business scanner idea in other projects. This codebase is new and was written from scratch for this hackathon. No code was copied from those projects.
Each line names how it was checked. "Live" means it ran against the real service on the date given; "test" means an automated test in tests/ (run with pnpm test).
| Feature | Where | Proof |
|---|---|---|
Scan one business by name, or a category and city, from Google Maps (Apify compass~crawler-google-places) | /owners, /dashboard, pnpm scan | Live, 2026-10-26 (12 Austin restaurants; by-name scans). Fixture pipeline tests |
| Diagnosis where every finding cites a real review, listing fact or website quote; a code check drops any quote that is not found word for word | /businesses/[id]/diagnosis | Live with xAI grok-4.7, 2026-10-26. Citation tests; eval "Diagnosis cites real reviews" |
| Your peers: anonymized Austin tier list and leaderboard, with the tier formula shown | diagnosis page | src/data/peers.json: 111 anonymized Austin businesses in 6 industries, scanned 2026-10-26. Eval "Peers stay anonymized" |
| Game plan: scorecard, the one binding constraint, tiered steps labeled "Ringy does this", "Ringy does this after your OK" or "You do this" | diagnosis page | Tests; eval "Overlap rule" |
| Adjustable ROI calculator: every input shows where it came from (listing, vendor pricing page, or labeled assumption); edits stay on screen and are never saved | diagnosis page, business page, 1-pager | src/data/calculator.json; tests calculator.test.ts, figures-traceable.test.ts |
| 30-day game plan: up to 3 focus fixes, weeks 1 to 4 split into "Ringy does this" and "You do this", each with a starting number and its source | diagnosis page (#thirty-day), 1-pager page 2 | Tests thirtyday.test.ts on the real Aire Serv snapshot |
| Published studies per recommendation: 6 sourced case studies, each with its URL and the exact quote; vendor sources labeled "Vendor-reported"; problems with no source show none | diagnosis page, game plan items | src/data/case-studies.json (checked 2026-10-27); scripts/verify-case-studies.mjs re-fetches each page and finds the quote; tests case-studies.test.ts |
| Three ways to get each fix done: do it yourself (time cost, labeled estimate), Ringy does it (after your OK, price not set), or hire it out (a category; vendors and prices named only with a public pricing page, no affiliation) | game plan items | src/data/fix-paths.json + solutions.json; tests fixpaths.test.ts, figures-traceable.test.ts |
| Talk to Ringy: the owner picks a channel and ticks a consent box; the exact consent text and time are stored (append-only, withdraw any time, contacts masked on read). Browser voice is live; email, phone, SMS and WhatsApp are a waitlist and nothing is sent | diagnosis page (#talk), POST /api/businesses/[id]/channels | Migration 20261030000000_channel_optins.sql (RLS on, no client access); tests channels.test.ts against the local store |
| Printable 1-pager (no price, no money-back promise) | /businesses/[id]/one-pager | Tests; screenshots |
Owner interview: Ringy asks the questions from src/data/interview.json (and the game plan's open questions), the owner answers by voice in the browser or by typing, and answers are saved to the business profile | /businesses/[id]/interview | Tested end to end in a real browser (headless Chrome) against a real ElevenLabs Conversational AI session with a scripted microphone (recorded answers played into the mic input), 2026-10-26: all 5 questions asked in order, all 5 answers transcribed, mapped, saved and shown after reload (scripts/e2e/interview-voice.mjs). Not yet tried by a person on a real microphone. 18 unit and route tests |
| Weekly check-in: light rating and review-count check, new reviews only when the count went up, a deeper refresh monthly, under a monthly cap (default $1.00) | Vercel Cron /api/cron/checkin, Mondays 15:00 UTC | Tests with mocked Apify (no spend). Needs CRON_SECRET in the deploy env; not set here, so not run live |
| Phone-agent config per business: AI disclosure first, every fact numbered and cited, rules for unknown answers, bookings, after hours, upset callers | business page | Tests; simulated caller evals 10/10 (fixture), 8/8 live LLM on 2026-10-26 before the 2 new cases were added |
| Demo-safe fallback: if Supabase, Apify or xAI fail or hang (8 s timeout), the Aire Serv flow renders from a committed real report labeled "Saved snapshot from Oct 26, 2026", with editing, voice and saving off | every Aire Serv page | Tests simulate each failure; screenshots with Supabase pointed at a dead port |
| Eval panel: rule checks run on real saved reports, plus simulated callers | /evals, pnpm eval | 8/8 rule checks and 10/10 callers at the last commit |
| Customer mode: nearby businesses from OpenStreetMap on a map, and chat with a business's AI built only from cited facts | /find | Tests; bundled Austin OSM snapshot when public Overpass mirrors are down |
This is the beginning of the README. Read the rest at the original. Read the full README ↗