About the Project
What Inspired StreetScore?
StreetScore was inspired by a simple problem: it can be difficult to understand which local service providers are actually reputable.
Traditional review systems often emphasize review volume, star ratings, or paid visibility, but those signals do not always tell the full story. We wanted to build a platform that makes local business reputation more transparent by combining multiple data points into one easy-to-understand REP Score.
StreetScore ranks service providers within neighborhoods so users can compare businesses based on more than just how many reviews they have.
How We Built It
StreetScore was built as a full-stack web application using Next.js, TypeScript, PostgreSQL, and Drizzle ORM.
PostgreSQL stores the underlying business, neighborhood, and scoring data, while Drizzle provides the database layer used by the application. We built a scoring system that combines reputation signals into a single REP Score, allowing businesses to be ranked and compared within their neighborhoods.
We also integrated Apache DataHub to add a metadata and analytics layer to the application. PostgreSQL stores the actual data, while DataHub provides context around the datasets, tables, and fields that power StreetScore.
To take that integration further, we connected DataHub Analytics Agent to the StreetScore data environment. Analytics Agent provides a way to interact with and analyze the underlying data through a natural-language analytics workflow, making the database more accessible without requiring every user to write SQL queries manually.
Together, these components create a pipeline where StreetScore's data can be stored, documented, understood, and analyzed rather than simply displayed.
What We Learned
One of our biggest takeaways was that building a data-driven application is about more than simply storing and displaying data.
Integrating DataHub taught us the value of data context and metadata. Understanding what a dataset represents, where its information comes from, and how its fields are used makes the underlying system easier to understand and trust.
Working with Analytics Agent also showed us how natural-language analytics can make structured data more accessible. Instead of requiring someone to understand the entire database schema before exploring the data, an analytics layer can help bridge the gap between a user's question and the underlying SQL data.
We also learned how different pieces of a modern data stack work together from a Next.js frontend and PostgreSQL database to Dockerized infrastructure, DataHub metadata, and Analytics Agent.
Challenges We Faced
One of our biggest challenges was combining and cleaning neighborhood and business data so that it could be used consistently for rankings. Different sources can contain different formats, fields, and levels of completeness, which required us to structure the data carefully before using it in the REP Score.
Another major challenge was integrating the DataHub ecosystem into an existing application. Getting DataHub and its supporting services running through Docker required us to troubleshoot configuration, networking, authentication, database connections, and service dependencies.
We also had to work through the additional complexity of connecting Analytics Agent to our data environment. This required understanding how the analytics layer communicates with the underlying database and how it fits into the broader DataHub architecture.
These challenges ultimately made StreetScore stronger. We learned that building a data product is not just about creating a frontend and database. It is about creating a system where data can be collected, structured, documented, analyzed, and ultimately understood by the people using it.
Why StreetScore Matters
StreetScore is our attempt to make local business reputation more transparent, understandable, and data-driven.
By combining reputation signals into a single REP Score, using DataHub to provide metadata and context, and incorporating Analytics Agent to make the underlying data easier to analyze, we created more than a traditional review platform.
We built a system designed to help users understand not only what a business's reputation is, but also where the data comes from, how it is structured, and why the results matter.