Inspiration
When we first met each other at the start of the hackathon, we were excited to build something but were unsure of what. After reviewing the NCR challenges, we knew that we wanted to compete for one of the categories but were unsure of which one. As a result, our project is a combination of multiple objectives: we sought to gamify retail while also using blockchain technologies.
What it does
Our service consists of several components. It starts by web scraping useful product data from Amazon and storing it in a database for quick access. We then built a virtual world where users can interact with stores in a revolutionary way. They upload a portrait photo of their face, which is then converted into a customized avatar. They can then use this avatar to roam the map, interact with virtual stores, and play fun minigames for prizes. When a business joins our platform, a virtual store is generated to house its products. The shelves are automatically stocked based on web scraped data in our database. Product images are transformed using style transfer algorithms to better match the aesthetic of our world. After engaging with a virtual store, the user will be redirected to an Amazon webpage where they can finish their purchase. In addition to the above, we also built an Ethereum smart contract to allow for coupon NFTs. Users can play simple minigames throughout our virtual world for a chance of earning a coupon. Upon earning a coupon, our platform will award them a non-fungible token with the coupon’s information through the smart contract. They will then be able to transfer and trade these coupon tokens with other users. We believe that these ideas have the potential for transforming the future of retail.
How we built it
Our platform is built using a variety of technologies. Our primary programming language was Python for its ease of use and versatility. We built our web crawler with the help of Scrapper’s API and stored the data in a Sqlite3 database. For our style transfer algorithm, we played around with the parameters of the popular Pyxellate algorithm until we achieved pleasant results on a diverse set of images. The virtual world is built using Pygame, a popular 2D game engine for python. The background image was edited using the Tiled software. We designed a custom TileMap system just for Pygame to allow the player to better navigate the world. We also designed custom GUIs in Pygame for our stores. Our Ethereum smart contract was written in Solidity and deployed to the Ropsten Test Network using Remix. This allowed us to test our contract without having to spend real ether. Instead, we just had to get free ether from the Ropsten faucet. Our python scripts are able to access our smart contract using Web3 library for Python.
Challenges we ran into
The first challenge we ran into was being unable to web scrape Amazon due to recent policy changes. We were able to resolve this issue by using Scrapper’s API. The next issue we encountered was struggling to master recently released Python libraries for making games. As a result, we chose Pygame, a well-documented library with a very active community. Despite being an older library, it was still able to give us good results. We also encountered issues with the style transfer algorithm. Some of its outputs were not as pleasant as we had hoped they would be. It took a lot of fine-tuning to get acceptable results. The largest challenge was integrating all of our creations together to build a final product. In the end, we are happy with the outcome.
Accomplishments that we're proud of
We are proudest of the synergy between all the components of our service. Connecting our web scraping code, our database, and our virtual world was a difficult and time-consuming process. Launching our app and seeing these different systems working well with each other brings us pleasure. We are especially proud of our coupon NFT system, as we designed it at a relatively late stage in our development process. When errors appeared, we were afraid that we might have to discard it. Seeing it become fully integrated with all our other components was extremely satisfying.
What we learned
We all gained a new level of familiarity with the technologies we worked with over these past 36 hours. Despite using neither Solidity nor Pygame for the past 3 years, I now feel as if I am an expert on these topics. As a whole, we gained several useful software engineering and collaboration skills that will be useful in our educational and professional careers.
What's next for Retro Mall
The next big step for Retro Mall is refining the graphics and GUIs. We intend to transform the world from a 2d world to a 3d world. The style transfer algorithms need further fine-tuning and our code needs significant cleaning. We also need to examine our smart contract thoroughly for any vulnerabilities that might compromise the safety of our users’ tokens. We might also be able to extrapolate some useful information from examining users’ behavioral patterns using machine learning algorithms. In order for our service to become truly compatible with the metaverse of the future, we need to enable massively multiplayer interactions. These two improvements would push our platform’s capabilities to the next level.
Built With
- blockchain
- ethereum
- infura
- metamask
- pygame
- python
- pyxellate
- scikit-image
- scrapper
- smart-contracts
- solidity
- sqlite
- style-transfer
- tiled
- web3

Log in or sign up for Devpost to join the conversation.