Yummy Recs | Case Study
The problem
The goal with this project was to see if I could build a mobile application that allows users to rate individual menu items from restaurants with a better rating system: "Eat often", "Would get again", "Worth trying", "Not good not bad", and "Don't eat". This stems from my frustration of people giving food ratings such as "I rate this restaurant a 4 out of 5. This dish is 7.8 out of 10." What do these rating really mean? I have no idea. All I know is that it seems like the restaurant and dish are good.
There are others food apps in the public that do similar things, such as Yelp, Google Maps ratings, Beli, but none target my specific problem of understanding what the ratings people rate mean. Even food delivery apps like DoorDash and UberEats try to solve this by allowing users to rate items they order through the app, but I find that sometimes when I order the dishes after looking at the reviews, the dishes are not to my taste and am disappointed.
So, I decided as my first try to build a B2C app would be to build "Yummy Recs", an application that explicitly explains the ratings and allows users to attach restaurants and menu items to those ratings.
Building the solution
The decisions I made for the app were the following:
- I would try this app as a consumer app that if it became popular, I wouldn't need to think about reimplementing the features and architectures I had already decided on.
- I would mostly be vibe coding the project to see if I could utilize multiple agents to work on the same codebase to explore creating a 1-person company.
- The architecture and building blocks would revolve around utilizing already built frameworks and libraries to minimize time spent on validating whether the app would be useful to others.
- I would learn how to sell and market the app to get my friends and family to use it.
I decided to use Pocketbase as the backend, customizing it to handle external API calls to Google Places API and Gemini API. I also added in PostHog for analytics. For the frontend, I decided on using React Native with Expo, due to the fact that it was going to be a 1-person project. I focused the development and features to be useful for iOS and the web as those were the devices I would be testing with.
Once I made those decisions, I started off with sending basic architecture prompts to the coding agents to first setup the project to be set up locally. Once they ran on my local machine, I then setup the infrastructure for a CI/CD pipeline as I would be hosting the application on a remote VPS. Once those were good enough, I started working on the main feature which has become one of the hardest user experience and user interface problems I've ever faced: how to add a menu item to a restaurant and rate it easily.
On first glance, you would think this would be an easy problem to solve: ask the user to select the restaurant they were at, add the menu items they ate, rate the menu items, it's solved. Wrong. No matter how many iterations of how I create this user flow, there was always some mental irritation when logging these items into the app. As I had other features that I wanted to have in the app, I made the decision to create the "least irritating" way to log a rating: user adds/selects the restaurant, adds/selects menu item(s), then the user would be able to rate the individual menu items along with an optional photo upload for the item, and then it would save the records for the restaurant and the menu items. This flow was good enough that once I got used to it, it didn't really bother me (unless I forgot to log the food, and I had a backlog of ratings to do. More on this later).
The next feature I worked on was getting it so that a user could add friends and they would be able to see their friends' ratings. This introduced the idea of public/private ratings, because maybe a user would want to rate an item but they don't want anyone else to see it.
Then I thought, "I also eat a ton of protein bars and know which ones taste good and which ones taste bad", so the next feature to add was rating a food product. I ended up just having a manual add for the food products as I didn't want to continue spending so much time integrating external services to the app as I hadn't published the app to the app stores yet.
Then I shipped the product out, had the website up with the marketing pages as well as the pages required to release an Apple App Store application, and also had the application be hosted on the website as well. Then the app was submitted to the Apple App Store and was approved with no feedback.
Afterwards, I started promoting the app to my friends and family to be beta testers, and was only successful in getting a handful of them to try out the app. Luckily, as I kept working on the app, the feedback they provided gave me things to work on.
The next feature I focused on was a bill split feature. This was brought on mostly because I frequently ate out with the friends that I had beta testing the app, so splitting the bill was something we did often and I wanted to make it easier to keep track of and also not think about when requesting money.
After that feature was good enough, I then worked on a "list feature", where a user could "star" the food they really liked and share it with friends and the public. This would make it easier for a user to share their list of recommended foods.
More and more features were added onto the app, until finally I had added on AI/LLM features to the app and then one of my friends that was beta testing the app asked me "what was the point of the app? there's so many things going on", and I realized that I had made a mistake making the app this way.
The result
Here is how the app ended up looking like before I sunsetted the project.
The result with the last feedback I got was that I had done too much for the app. Initially, the idea was to try to get to mass market, but along the way, I decided I wanted this app for myself, and added all the features and benefits I had ever wanted for the app. This in turn made it quite fun for me to work on, along with learning how to vibe code with coding agents and understanding the strengths and weaknesses of the modern landscape of how software will probably be built. However, the goal of mass market stopped being a reality after I kept adding feature after feature. And thus, I eventually decided to end the project and made the repository public for people to use and for my portfolio.
Personal ratings

Ratings on the map

Want to Try

More features

Bill splitting

Logging food photos

Friends’ ratings

What I learned
From doing this project, I gained a lot of experience in using the modern LLMs and learning how to become a "1-person company" in terms of creating a product from scratch, having agents delegate to sub-agents to work on specific things, while also realizing that UX/UI work is still a human problem, as although the design work output from LLMs are getting better, it doesn't work well when you try to actually use it. I also learned if I were to attempt to build a consumer product again, I need to make sure there's a way to market the application with a single sentence, and make it focused on that feature, rather than putting all the features in the world into a single product.
Overall, project was a lot of fun and helped me through interesting times. The main problem I faced while working on this project was in making something fun and usable to users, and to that end, I made it as good as it will get. If I were willing to spend more money on this project and actually make it into a revenue-generating product, I would have been more willing to spend money on LLM APIs to analyze the group of pictures provided by the user, and it would then be able to detect the date the pictures were taken, the location of the pictures being correlated near Google Places location, menu items being processed via image and be associated based on the LLM recognition of the food item. But alas, I did not want to spend that money.
This was a great first attempt at making a consumer product, and provided me with a lot of experience in creating it. However, I probably won't be doing this on my own again unless I somehow have my own marketing channel or learn how to market via user generated content, because it is a painful road to go on if you want to make money off consumers these days.
Onboarding walkthroughs
These in-app tutorials walked users through the features. Select a video to play or pause the walkthrough.