ReviewPulse
Real reviews in, grounded answers out — not AI guesswork.
A platform that gives restaurant owners a practical way to understand what their customers are actually saying — across their own reviews and nearby competitors — instead of scrolling through hundreds of reviews by hand or asking a generic AI chatbot that has no real data to work from.
- Attribution
- Independent Project
- Period
- 2026
- Category
- AI & Automation
0 overspend
Usage metering stays atomic under concurrent requests
01The challenge
Restaurant owners have hundreds of reviews spread across platforms but no practical way to answer questions like "what do customers dislike about our service?" or "how do we compare with competitors nearby?" Reading reviews by hand doesn't scale, and generic AI chatbots don't have the restaurant's actual review data, so they make answers up.
02The solution
A platform that auto-discovers a restaurant and its closest competitors on signup, collects and indexes their reviews in a vector database, and answers plain-English questions through a retrieval-augmented assistant grounded in that real review data — backed by an analytics dashboard and tiered Stripe subscription billing.
03Key features
- 01
Automatic restaurant and competitor discovery via Google Maps at onboarding
- 02
Parallel, rate-limited review collection — up to 50 reviews across up to 5 competitors
- 03
LangChain function-calling RAG agent on GPT-4o, grounded in each restaurant's own reviews
- 04
Guided question library: a tree of questions with per-question prompt templates and follow-ups
- 05
Thumbs-up/down feedback loop that adapts the assistant's tone, structure and depth per user
- 06
Analytics dashboard with rating distribution and review metrics
- 07
Tiered Stripe subscriptions with monthly message allowances
- 08
Full billing lifecycle: prorated upgrades, payment-retry grace periods, cancellations and undo-cancellation
04Engineering approach
How it's built.
- FastAPI
- LangChain
- OpenAI GPT-4o
- Pinecone
- Sentence-Transformers
- PostgreSQL
- SQLAlchemy
- Alembic
- Stripe
- SerpAPI
- Next.js 15
- React 19
- TypeScript
- Docker
- 01
Retrieval over fine-tuning: every answer is grounded in a restaurant's live review data, so a new restaurant can be added instantly with no retraining. The agent searches the verified review data first and only falls back to the model's general knowledge when the data lacks an answer — cutting down on made-up answers.
- 02
A small local embedding model (384-dimension Sentence-Transformers/MiniLM) keeps embedding cost and latency predictable, paired with a serverless Pinecone index for search.
- 03
Stripe is the source of truth: webhooks drive every account-tier change, checked against stale and out-of-order events so an old event can never downgrade a user who has already upgraded.
- 04
Usage metering deducts each message from the monthly allowance in a single atomic database update, so parallel requests can't overspend it — and refunds the message automatically if the underlying AI call fails.
- 05
Clear module boundaries — users, restaurants, subscription, FAQ and AI assistants are each split into routes, business logic and database access, keeping the codebase testable and easy to extend.
- 06
A full security and reliability audit covered authentication, per-user data isolation, billing correctness, XSS and dependency vulnerabilities, including a critical Next.js dependency upgrade.
05Project gallery
Inside the system.
Architecture views drawn from the project's documented design and its public source code.
System views · architecture from verified project notes
Database first, model second.
Onboarding auto-discovers the restaurant and its competitors, indexes their reviews, and answers every question from that grounded data before ever falling back to the model's general knowledge.
- 0102
Restaurant signup
Business found automatically via Google Maps
- 0203
Competitor discovery
Up to 5 competitors matched by cuisine and location
- 0304
Review collection
Up to 50 reviews per restaurant, collected in parallel
- 0405
Embed & index
MiniLM embeddings into a serverless Pinecone index
- 0506
RAG agent
LangChain + GPT-4o, grounded in retrieved reviews
- 06
Guided Q&A
Question library with templated prompts and follow-ups
Key design decisions
- Retrieval before generation — the agent falls back to general knowledge only when the data has no answer.
- A small local embedding model keeps cost and latency predictable instead of a hosted embeddings API.
- Thumbs-up/down feedback adjusts the assistant's tone and depth per user.
BE/
├── ai_assistants/ LangChain RAG agent over restaurant reviews
├── restaurants/ model · repository · routers · schema · services
├── subscription/ Stripe lifecycle — model · repository · routers
├── users/ authentication & profiles
├── faq/ guided question library
├── rag_embeddings/ embedding + Pinecone indexing
├── alembic/ versioned schema migrations
├── scheduler.py subscription-expiry background jobs
└── app.py FastAPI entrypoint
FE/src/
├── app/ Next.js 15 App Router pages
├── service/ API client
├── hooks/ data & auth hooks
└── shared/ shared UI components06Outcome
What it delivered.
A production-architected SaaS platform where answers stay grounded in a restaurant's real reviews, billing stays correct through every Stripe edge case, and usage limits hold even under concurrent load.
- Reviews per restaurant, across up to 5 auto-discovered competitors
- 50 × 5
- Usage allowance can't be overspent by concurrent requests
- Atomic metering
As published in the founder's portfolio. No figures on this page are estimates or projections.
07Project attribution
Independent ProjectAn independent project designed and built by our founder, Arslan Arshad. It is a complete, production-architected SaaS build — not a Code Velocity client engagement.
Sources: Repository (opens in a new tab)