Inspiration

My inspiration for this project came firstly from noticing the general unfairness and bias in the games rating industry, (A lot came directly from this video's analysis https://youtu.be/YGfEf8-SNPQ?si=xbuAYM-2lpkgc9jL). Seeing this provoked me to do a webscrape of my own of metacritic (the biggest game critic site, with IGN) and plot the graphs myself (said graphs can be seen in the "Why we're here" section of the project) and indeed the bias is clear. At this point I already knew how hard it was to make a game, as I saw many developer devlogs and podcasts, so I knew that having to develop with critics in mind was just a hindrance to an already difficult process. Then I realized how difficult proper marketing was, and how even if you went through the entire process of making the game, it would be useless without a way to market it. So, the idea for Indielens came to me and I realized that this project could kill two birds with one stone by providing proper marketing (since the rating would be respected) and solving unfairness (since player achievement, hours, and similarity are taken into account for scoring).

What it does

It allows users to give scores to particular video games, but instead of the score being a basic mean for all users, each user has a specific weighting based on their engagement and profile's match with the game. As a baseline for engagement, a user with 200 hours and 100% achievement in the game will have their ratings be worth 10x more on average than someone with 2h and 1% achievement. The exact numbers will still be adjusted, and will become specific for each game. Nevertheless, Indielens is the next evolution for videogame scoring. It is the evolution from basic equality in rating to equity.

How we built it

Built using C++ and visual studio, with the curl library to get steam data and mySQL to store the data. We will be migrating to smartSQL shortly. The frontend is built with React and Vite, providing a modern, responsive interface. The Node.js Express server acts as a bridge between the frontend, C++ backend, and database. We've integrated Raindrop SmartInference for AI-powered game description summarization and personalized recommendations, and Vultr AI Inference for explaining weight calculations in natural language.

Challenges we ran into

A big challenge was the fairness of the weighting. The system can't undervalue hours or overvalue achievements, everything must be properly fair. However, what "fair" or "balanced" means is not an objective criterion here, so we had to iterate extensively on the mathematical formulas to achieve what we determined to be fair. This required balancing multiple competing factors: ensuring the 10x engagement ratio between highly engaged players and casual players, preventing manipulation through the achievements-per-hour penalty, and making sure profile matching accurately reflects genuine similarity without over-weighting popular genres.

Another major challenge was integrating multiple systems (C++ backend, Node.js bridge, React frontend, MySQL database, Steam API) while maintaining performance and data consistency. We also faced the complexity of migrating to Raindrop Platform's SmartSQL while maintaining backward compatibility.

Additionally, ensuring that scores are properly distributed (no game should have a perfect 100 rating) required implementing a normalization algorithm that compresses high scores while maintaining meaningful differentiation between games.

Accomplishments that we're proud of

We're proud of creating a mathematically rigorous weighting system that successfully balances multiple factors (engagement, profile match, anti-manipulation) while remaining explainable and transparent to users. The system successfully differentiates between casual players and deeply engaged players without being punitive.

We're also proud of building a complete, production-ready application from scratch, from the C++ mathematical backend to the polished React frontend. We think that demonstrates real innovation in game rating systems. The integration of AI features (Raindrop SmartInference and Vultr AI) adds intelligent explanations that help users understand how their ratings are weighted.

The web scraping and data visualization work that revealed the bias in Metacritic and IGN was a significant accomplishment, providing concrete evidence for why IndieLens is needed. Creating a system that serves both players (better game discovery) and developers (credible marketing data) is something we're very proud of.

Finally, we're proud of the comprehensive documentation and migration planning for Raindrop Platform. While documentation itself isn't an accomplishment per se, we think it's indicative that IndieLens is going places and will go on to achieve great things beyond this hackathon.

What we learned

A big thing we learned was how important marketing is to everything. It was the whole reason for creating IndieLens, because clearly without it a whole project can fall apart. We hope to take that into account when marketing IndieLens in the future.

We also learned that fairness in algorithmic systems is more nuanced than we initially thought. What's mathematically "fair" might not feel fair to users if it doesn't account for how people actually play games. This forced us to iterate extensively on our formulas and test with real Steam library data to find the right balance.

Finally, we learned about the complexity of integrating multiple platforms and APIs. Working with Steam's API, MySQL, C++ CLI processes, Node.js, and React taught us valuable lessons about system architecture, error handling, and maintaining data consistency across different technologies.

What's next for IndieLens

We want to add more sophisticated developer analytics, showing developers not just their scores but insights into which player profiles love their games, engagement patterns, and how their games compare to similar titles. This will make IndieLens an even more powerful marketing tool.

Also, we're looking into possibly completing a migration to Raindrop's SmartSQL, SmartBuckets, and SmartMemory for better performance and scalability.

And perhaps most importantly, we do need to add mobile functionality. The site currently doesn't work with the formatting on mobile properly. So this is a matter which we will focus on right after this hackathon.

Long-term, we envision IndieLens becoming the standard for indie game discovery, with potential integrations into Steam store pages and partnerships with indie game festivals and showcases. We also want to expand beyond Steam to include games from other platforms like Epic Games Store and GOG.

IndieLens was built by João Monte Alto Lopes (development) and Pedro Monte Alto (project management and coordination). We worked together throughout the hackathon period, with João handling the technical implementation while I managed the project scope, documentation, and submission. Together we are team Monte Alto.

Built With

Share this project:

Updates

Submission history