The Review Engine
4,809 public reviews mined, scored by aspect, and written into a boardroom deck by the system itself.
- Timeline
- 4,809 reviews · 6 aspects
- Role
- Solo: pipeline, aspect scoring and the document generator
- Status
- Built and running
- Primary stack
- Python · pandas · OpenAI · python-pptx
Headline metrics
- What it tackles
- A star rating tells an owner almost nothing. A restaurant sitting at 4.2 stars does not know whether the missing star is about the food, the queue, the price or the cleaning. The answer is buried in thousands of public reviews nobody has time to read.
- What it delivers
- A six-stage Python pipeline that mined 4,809 Google reviews and 4 long-form video transcripts, ran 28,854 review-by-aspect checks across 6 named dimensions, modelled the trend by month, and generated its own PowerPoint deck and written report. No slide was assembled by hand.
The problem in full
The subject is Phajja Siri Paye, one of Lahore's best known food institutions, the kind of place with decades of reputation and thousands of opinions written about it in public. That is exactly what makes it a useful subject for an engineering build. A star average hides everything an owner can actually act on: a restaurant at 4.2 stars does not know whether the missing star is about the food, the queue, the price or the cleaning. The answer is in the text of the reviews, and there are thousands of them, which is precisely why nobody reads them.
Three questions shaped the build. What do customers actually praise and actually complain about, broken out by the specific things a business can act on separately rather than as one overall mood? Has any of it moved over time, because a complaint that is fading and a complaint that is growing need different responses? And does what people say on camera match what they write, because a long-form video review is a different register from a typed rating and worth checking against it?
I built this solo, end to end, as a demonstration of a shape I keep selling commercially: source public data at volume, clean it properly, extract structure from unstructured text, and hand over a decision-ready document at the end, with no human in the middle of the production line.
System design
The pipeline runs in six independently runnable stages, discover, collect, clean, score, model, publish, so any stage can be re-run without repeating the collection cost of the ones before it. Discovery is not a hardcoded target: the pipeline searches candidate businesses through Serper, ranked 9 candidates by review volume, and chose 1. The same code points at a different subject without editing anything.
Collection pulled two deliberately different sources: 4,809 written Google reviews for volume and time series, and 4 long-form video reviews, transcribed and read on the same dimensions, for the detail and tone people rarely type. Cleaning is where every downstream number is won or lost. Public review data arrives with duplicate rows, mixed languages and inconsistent date formats, so the pipeline deduplicates, filters to one language for scoring consistency, and normalises ratings and dates before anything is scored.
Scoring is the expensive part, and it is deliberately not overall sentiment. Every review is scored independently against six named aspects: food quality, taste and flavour, service, price and value, cleanliness, and wait and crowding. That is 4,809 reviews read six ways each, 28,854 separate checks, and it is what stops a review that praises the food and criticises the wait from averaging out to neutral. The modelling stage then re-cuts the same scored rows by month and by topic, so the output shows direction, not just standing totals.
The publish stage is the part worth showing. The pipeline emits its own deliverables: matplotlib charts, a written report through reportlab, and a full presentation deck through python-pptx, slides and speaker notes included, generated straight from the scored data. The presentation was not made in PowerPoint. The analysis produced it.
The calls that made it work
Discover the target, do not hardcode it
The pipeline ranks candidate businesses by review volume and chooses one at runtime. That one decision is what makes the build transferable: point it at a competitor set, a product category or a client's own reviews and it runs unchanged. A hardcoded scraper is a one-off. A discovery stage makes it a product.
Six named aspects, not one sentiment score
Overall sentiment compresses a review into a number nobody can act on. Scoring each review against six independent, named dimensions means an owner can act on wait times are the growing complaint in a way they cannot act on 4.2 stars. It costs six times the reading, 28,854 checks instead of 4,809, and that cost is exactly where the value sits.
Two sources in different registers
Written reviews give volume and a time series. Video transcripts give detail and tone that people rarely type. The 4 transcripts were read the same six ways as the reviews, and kept out of the 28,854 count so the arithmetic stays honest. Analysing both catches what either alone would miss.
The pipeline emits the finished document
Code to PowerPoint, speaker notes included, plus a written report, both generated from the scored rows on every run. This matters commercially, not just technically: a reporting pipeline that produces the artefact means a monthly client report costs one run instead of a day of somebody's time, and the numbers in the deck cannot drift from the numbers in the data, because the deck is rebuilt from the data every time.
The results in full
Every one of the 4,809 reviews in the set was scored, nothing was sampled: 4,809 reviews against all 6 aspects is 28,854 review-by-aspect checks, with the 4 video transcripts read on the same six dimensions alongside them. The scored rows were re-cut by month and topic to separate fading complaints from growing ones, and the run closed by generating its own two deliverables, a full presentation deck with speaker notes and a written report.
The build settles a question buyers actually have: whether one engineer can take raw public opinion at volume and land it as a boardroom-ready document with no analyst, no designer and no slide built by hand. It is the same shape as commercial reporting work, sourcing public data, cleaning it properly, extracting structure from unstructured text, and producing a decision-ready artefact, and the discovery stage means the identical pipeline re-targets without a line of code changing.
Continue reading
The Podcast Pipeline
Finds founders interviewed on small podcasts, reads the episode, and writes about what they said.
The Model Router
Two trained classifiers behind an LLM agent that decides which one to call.