[KongchangAI]
· 2 min read· 1,313 words

DishReactions: A Local-First Dish Review Tracker for Small Restaurants

DishReactions: A Local-First Dish Review Tracker for Small Restaurants

Open-source offline tool DishReactions helps small restaurants see the true reputation of their dishes through ten-second star feedback.

DishReactions is a fully offline, local-first web app where waitstaff record dish, order number, 1-5 star rating, emoji feedback, and optional comments in 10 seconds, instantly updating ranking charts, best dish badges, and exporting CSV weekly reports. It addresses that sales don't equal reputation—high sales may just be cheap. Built entirely on open-source components (Chart.js, Vanilla JS, localStorage) with zero build, server, or API cost, data never leaves the device. The author argues how open innovation makes 2,000-rupee monthly pricing viable and validates it with real feedback from a Karachi restaurant. Currently basic: average scores ignore confidence, offline storage risks single-point loss, and AI comment summarization is still planned.

From the Sales Myth to the Truth About Taste

Small restaurants typically judge which dish is popular based on sales, but high sales don't equal customer preference—it might just be because it's cheap. DishReactions tries to solve this problem: it's a fully offline, local-first web app where waitstaff take 10 seconds after an order is completed to record the dish, order number, a 1-5 star rating, emoji feedback (😍 Love it / 😋 Good / 😐 Okay / 😕 Not great / 🤢 Bad), and optional comments. The app instantly updates a ranking bar chart, a best dish badge, a recent feedback table, and supports exporting CSV weekly reports.

DishReactions interface mockup

The project author positions it as a side-hustle product for small restaurants, street stalls, and cafes, with an expected price of 2,000 to 5,000 rupees per month, helping owners see within 7 days which dish to promote and which to improve.

A Zero-Cost Tech Stack: Open Source Components as the Product

DishReactions' technology choices revolve around "not depending on closed-source APIs":

  • Chart.js (MIT license) handles the real-time ranking charts, running locally with no keys required.
  • Vanilla JS + HTML/CSS eliminates framework lock-in and build steps; just double-click index.html to use it.
  • Browser localStorage stores all data, so feedback never leaves the device.

The author specifically mentions plans to integrate local open-weight models in the future (such as running Llama or Qwen via Ollama) to automatically summarize comments—for example, "customers like the spice level but complain about the wait time"—without sending data to closed-source services. This "local-first" design makes privacy, offline availability, and low pricing possible.

localStorage is a browser local storage API provided by HTML5 that persistently saves data on the user's device as key-value pairs (typically capped at about 5-10 MB), and the data persists after the browser is closed. It runs entirely on the client side with no network requests involved, so it naturally meets offline and privacy needs. However, localStorage is isolated by browser and domain, does not sync across devices, and is lost when users clear browser data or use private mode. This is precisely the root reason why DishReactions, having chosen it as its storage solution, must face the difficulties of multi-device syncing and the risk of single-point data loss.

Ollama is an open-source local large model runtime tool that offers a simple command-line and REST interface, capable of pulling and running open-weight models like Llama, Qwen, and Mistral on an ordinary laptop without a GPU cluster or cloud service. Developers can obtain inference capabilities via ollama run or by calling the local port 11434, with data never leaving the device. This makes "automatically summarizing customer comments with a local model" technically feasible: a restaurant's front-desk computer can complete the text summarization without paying per-call for closed-source APIs, fully consistent with the low-cost, offline, privacy-first approach emphasized in the article.

Why Open Innovation Makes This Business Viable

The author argues the critical role of open source/open innovation for the product from four angles:

  1. Privacy: Customer feedback stays only on the restaurant's laptop and is never uploaded to third-party servers.
  2. Zero cost: If using pay-per-call closed-source AI APIs (assuming $0.01-0.05 per comment), a busy restaurant's monthly API costs could reach $60-300; the open-source approach runs at zero cost, keeping the 2,000-rupee monthly pricing profitable.
  3. Offline availability: Many local restaurants have unstable networks, and purely cloud-based tools would simply fail.
  4. Customizability: Owners can modify dishes, language (Urdu/English), branding, and even swap models, without being locked into a closed-source vendor's pricing and rules.

These arguments align with the author's "Side Hustle" track positioning in the Hacktoberfest open-source AI challenge: building a small tool that can actually charge money using open-source components.

Open Innovation, proposed by Henry Chesbrough, refers to companies no longer relying solely on internal R&D but deliberately using external knowledge, open-source components, and community results to create value, while also opening up idle internal ideas. For independent developers, this means standing on the shoulders of mature open-source projects like Chart.js and Ollama, focusing energy on scenario understanding and productization, thereby launching chargeable tools at extremely low R&D cost. DishReactions is a typical example of this model: all the technical building blocks come from the open ecosystem, and competitiveness comes from grasping the niche scenario of "small restaurants recording feedback in ten seconds."

Real Feedback from the First User

According to the author, the first user is a small restaurant near Safoora in the Gulistan-e-Jauhar area of Karachi. The app was installed on a front-desk tablet, and staff recorded feedback for a week. The owner said: "I always thought Karahi was the best-selling dish, so it was the best. But your chart shows Biryani at 4.8 stars and Karahi at only 3.1 stars. Now I know what to promote."

The user started with a one-week free trial, then asked to continue with monthly reports, with the next step being converting to a paid plan at 2,000 rupees per month. The user also raised new requirements: an Urdu version, and a QR code feature letting customers rate directly by scanning at the table.

Limitations and Observations

Currently, DishReactions' features are quite basic: the rating logic is a simple arithmetic average with no consideration of confidence differences due to review counts, and no mechanism to prevent review manipulation. Offline storage means multi-device syncing is difficult, and if the tablet breaks or browser data is cleared, historical records are lost. The AI comment summarization mentioned by the author has not yet been implemented and remains in the planning stage.

However, the value of this project lies in validating a neglected scenario: what small restaurants need is not a complex POS system, but a lightweight tool that can record in ten seconds, is understandable the moment you open it, and doesn't depend on the network. Open-source components let it run at near-zero marginal cost, which exactly matches the payment capacity of small businesses.

The project code is hosted on GitHub, uses a local-first architecture, and is suitable as a reference starting point for digitalization tools for small offline merchants.

Confidence in rating statistics is used to measure how reliable an average score is. DishReactions currently takes a simple arithmetic average of 1-5 stars, but a 4.8 from 3 reviews means something completely different from a 4.8 from 300 reviews—the former is likely just chance. A common improvement is to use Bayesian averaging (like IMDB's weighted rating) or a Wilson lower bound to factor in review counts, so dishes with few reviews don't top the charts due to chance high scores. For owner decision-making, this avoids "misjudging a dish sold only twice as a signature dish," and is a key step for the product moving from demo to trustworthy reports.

One-line Summary

Open-source offline tool DishReactions helps small restaurants see the true reputation of their dishes through ten-second star feedback.

Paragraph Summary

DishReactions is a fully offline, local-first web app where waitstaff take 10 seconds after an order is completed to record the dish, order number, 1-5 star rating, emoji feedback, and optional comments. The app instantly updates ranking charts and best dish badges, and supports exporting CSV weekly reports. It tries to solve the problem that sales don't equal reputation—high sales might just be because it's cheap. The tech stack is entirely based on open-source components: Chart.js handles charts, while Vanilla JS and localStorage deliver zero build, zero server, and zero API cost, with data never leaving the device. The author argues from four aspects—privacy, zero cost, offline availability, and customizability—how open innovation makes the 2,000-rupee monthly pricing viable, and validates the value with real feedback from a small restaurant in Karachi. Current features remain basic: the average score doesn't account for confidence, offline storage carries single-point loss risk, and AI comment summarization is yet to be implemented.

#DishReactions#dish review tracker#local-first app#small restaurant tool#offline web app#Chart.js#localStorage#open innovation#restaurant feedback#side hustle
Share:

Related articles