How Listwell is built
Listwell is a Next.js app on Cloudflare Workers (vinext). Audits run in the Worker using the @listwell/audit-engine package. Accounts and saved data live in Convex. This page lists third-party services the code actually calls and what each one does.
Third-party services
- Cloudflare. Hosts the Listwell website and API on Workers, stores short-lived audit job state in Workers KV, and may fetch some website pages through Browser Rendering.
- Convex. Stores account data, saved businesses, scan results, entitlements, and billing linkage in a deployment hosted in the Asia Pacific (Sydney) region.
- Better Auth. Runs email one-time code sign-in and session handling on Convex.
- Polar. Processes checkout, acts as merchant of record for paid reports, and sends payment receipts.
- UseSend. Sends sign-in codes, purchase emails, and optional monthly scan notification emails through the UseSend API endpoint configured for Listwell.
- Cloudflare Workers AI. Generates plain-language report summaries and listing review text from completed check results when the Workers AI binding is available.
- Google. When API keys are configured, looks up businesses (Places), finds web results (Programmable Search), and reads public performance signals (Chrome UX Report and PageSpeed Insights).
- Apple MapKit. When MapKit keys are configured, searches Apple Maps for business matches during intake.
- OpenStreetMap Nominatim. Geocodes and searches OpenStreetMap when Google or Apple lookups are unavailable or inconclusive.
- TinyFish Fetch. When an API key is configured, fetches HTML for a small number of thin website pages during an audit.
- TypeSafe. When an API key is configured, helps disambiguate business matches, interpret chat intake, compare social profile images, and tidy search phrases.
- DataForSEO. When an API key is configured, supplies SEO research data used on continued (monthly or yearly) reports.
Optional keys
Google Places, Apple MapKit, TinyFish Fetch, TypeSafe, and DataForSEO only run when the matching API keys are set on the Worker. Without those keys, Listwell falls back to other lookups or skips that feature.
Privacy
For what we collect and how these services handle personal information, see the Privacy policy.