Inspiration

One of our team members is currently enrolled in a labor studies course and was surprised to learn how exploitative many major corporations can be. Further investigation revealed that numerous companies not only exploit labor but also bend environmental laws to their advantage. Motivated to address this issue, we created EcoScan, an app that helps users find environmentally friendly and ethical products.

What it does

EcoScan allows users to scan a product's barcode using their device's camera. The app then gathers information about the product and its brand, displaying an EcoScore, the item’s carbon footprint, and a custom ethics score. It also provides insights into the brand's environmental and ethical practices, helping users make informed purchasing decisions based on the company’s actions.

How we built it

We developed EcoScan using Reflex, a full-stack Python framework. We integrated various APIs for data collection, including Google Gemini for Environmental, Social, and Governance (ESG) data. This data was processed using NLTK’s sentiment analysis model, with results further refined through a custom sigmoid function to generate a unique ethics score.

Design-wise, we used Figma for prototyping and visual planning. The actual implementation involved extensive use of Tailwind CSS and custom CSS classes, allowing us to closely align our final product with the initial Figma designs.

Challenges we ran into

A lot of our challenges that we ran into was with using Reflex, as it's a relatively new framework without many examples out there as others, such as React or Next.js. All of us had never used it before, and we spent a lot of time reading the docs for Reflex. We ran into a lot of challenges with styling our elements, as the combination of Python and CSS was new to us, and had a decent learning curve.

Another major issue we ran into was with passing information between states using Reflex. Due to Reflex running React under the hood, there were very strict typing requirements for the states that were passed between pages. However, this was very difficult to navigate with Python, as the loose typing in Python lead to a lot of vague errors that took hours to debug. Ultimately we were able to find work arounds, but it was quite frustrating.

Accomplishments that we're proud of

We're very proud that we got EcoScan to work, and the fact that it can identify most products by just scanning their barcode. We were able to learn an entirely new framework with minimal examples in such a short time, and actually build a working, cool product! We're also very happy with the fact that our product has the potential to make a difference, especially in helping the environment, and fighting ethical concerns.

What we learned

We learned a lot about styling through CSS and default parameters. We also learned the Reflex framework, which is something that is really convenient for the future. We learned a lot about using Gemini API calls, and also different Sentiment Analysis models. We also gained a lot of experience in validating and parsing large JSON files, and learned more about different corporations, and their environmental and ethical impacts.

What's next for EcoScan

We believe that EcoScan has a large potential, and could be used by users all across the world. In the future, we plan to implement dynamic recommendations for more sustainable and ethical products based on what the user scanned, in order to alert them of more sustainable choices. Additionally, this technology is applicable in wide variety of forms, such as a shopping companion extension that tells you how good or bad the products on the website you're currently shopping on are. We know that there are a lot of people out there who care about ethics and the environment, and we think that EcoScan could be a valuable tool in every shopper's toolbox to make sure that we are only giving our money to the best companies.

Built With

Share this project:

Updates