Inspiration

Over the past year, UNC has been in the spotlight for protests on issues surrounding their ignorance towards houseworkers’ complaints about having to pay for parking, requests for higher wages, pleas for increased healthcare, etc. Our exposure to the real-world struggle of unionization and associated labor activism in traditional American capitalist environments inspired us to try to apply technology toward a solution.

We wanted to create an online safe space to bring voice to those in our community who many take for granted every day. Our primary concerns and related objectives of such a system include:

  • Privacy: Ensuring that the identity of the users remains confidential to allow for open discussion
  • Equity: Making it possible such that no small issue is ever drowned out by the crowd of concerns
  • Productive: Ensuring that this system could meaningfully allow for easier labor union tasks such as recruitment, unionization, activism, etc

What it does

Solidarity is a union management app intended for protecting and organizing unions. It allows union members to easily make secure and anonymous payments using cryptocurrency technology to the union group, allows union members to stay anonymous and protected from potential employer dissaproval, organizes the important talking points using NLP so no issue is left unanswered, plan events such as rallies that could be hushed if not done anonymously, and message other union members to discuss the issues they face in the workplace.

Solidarity’s key features include:

Anonymous Group Chats

Keeping members safe and connected

This protects users from any kind of threat of employer dissaproval, making it a safe and equitable space for open discussion. All users need to join their labor union on Solidarity is a username and password and an invite from the labor union director, who remains the sole person that can keep track of workers’ user identities. Additionally, the chat has symmetric encryption to protect the privacy of the users.

Upcoming Calendar Events

Helping organize protests, rally events, and other activism activities

This feature notifies users about events happening through their union. It also improves the success of such labor union events by giving the possibility to assess participation and interest in an event ahead of time as well as timely communication.

Member Logins/Invites

Ensuring that no unauthorized users are let in.

This feature effectively minimizes the information that users have to provide to the system while also ensuring that their information remains secure.

Simplified(!) Crypto Transactions

Funding that's anonymous.

Let’s be honest, most people have no idea what crypto or blockchain is. Solidarity immensely simplifies the process of setting up a crypto transaction where the user only needs to enter two things: their crypto wallet (such as MetaMask, Alchemy, etc) and the amount of Ethereum they would like to pay. When the user clicks the button to pay amount, a little popup appears with their wallet authenticator and after logging in and pressing confirm transaction the payment is securely sent!

Decentralized Database & Symmetric Encryption

Protecting Union data from hackers

These key features have been implemented to protect unions and their interests from union busters.

How we built it

Front-End:

Solidarity's frontend leverages React and TailwindCSS for an optimal user experience. React's component-based architecture and virtual DOM handling enable efficient, modular UI development. TailwindCSS, a utility-first CSS framework, offers customizable styling and responsiveness. Together, they create a visually appealing and highly interactive platform for Solidarity.

Database:

Solidarity leverages the power of Gun.js, a decentralized, distributed, and real-time database system. The choice to use Gun.js as the foundation for Solidarity's database stems from its ability to support a peer-to-peer (P2P) network architecture, which has a multitude of advantages over traditional centralized database systems.

In a P2P network, each node connected to the network serves as a part of the database, sharing the responsibility of storing and maintaining data. This distributed structure enables greater resilience to failure, as data is replicated across multiple nodes. Consequently, if one node goes offline, the network can continue to function without any significant impact on its overall performance.

One of the primary benefits of using a decentralized database like Gun.js is the increased security and privacy it provides. In Solidarity, we have further bolstered the security of Gun.js by implementing symmetric encryption for messages exchanged in union chats. This additional layer of encryption guarantees that only authorized users with the correct decryption keys can access and read the content of these messages, thereby preserving the anonymity and confidentiality of user interactions.

Beyond its security features, Gun.js also offers real-time data synchronization, which is crucial for creating seamless and highly responsive user experiences. By propagating changes across the network instantaneously, Gun.js ensures that all users have access to the most up-to-date information. This real-time capability is especially valuable for Solidarity, as it enables rapid communication and collaboration among users.

Crypto

Solidarity's crypto transactions are powered by Ethers.js, a robust Ethereum library. This integration facilitates seamless interactions with the Ethereum blockchain, allowing users to send and receive Ether, manage wallets, and interact with smart contracts. Ethers.js enhances Solidarity's frontend by providing a secure and intuitive way to union donations or dues for our user base.

Machine Learning

We utilized Co:here’s technology to assess, organize, and log the topics that users talk about on Solidarity. We made use of the “embed” technology to convert each system message into a numerical vector representation and then created a k-means clustering system to group each topic. We make use of Annoy to highlight import keywords that will likely spark progress in discussion and then we follow that by utilizing Co:here’s “generate” technology to assign labels for organizing the different discussion topics through assigning AI-generated labels. These are useful because it prevents user concerns from being drowned out by the crowd.

During our testing of the system on a fake labor union conversation our AI logged that discussion included the following topics: 'Conflict', 'activities that involve being outdoors', 'government', 'health and safety', 'equality and inclusion in the workplace', 'time management', 'location', 'progress', 'relationships', 'personal well-being', 'temperature', 'politics', 'collective action', and 'labor rights'.

Challenges we ran into

We encountered difficulties updating certain frontend states based on user actions and experienced challenges deploying the Gun.js server, leading to a local demo only. Going forward, we read deeper into the Gun.js docs and will continue to work on deploying the server.

Accomplishments that we're proud of

We successfully implemented key features using new technologies, such as the decentralized database, symmetric encryption, and fast crypto payments with Ethers, achieving Solidarity's primary goals of protecting unions.

What we learned

We learned a lot about Gun.js and P2P networks. This was a new concept for us coming into this hackathon, so we are glad we were able to successfully implement it! Additionally, we learned a lot about different NLP tasks and how to use them to solve real-world problems.

What's next for Solidarity

Next steps include:

  • Refining the frontend for better design and user experience.
  • Implementing an enhanced administrator system for group management.
  • Although the application has the capability for end-to-end encryption, we would like to fully implement it.
  • Introducing multiple chat rooms within unions for focused discussions.
  • Adding private messaging for confidential conversations and admin communication.
  • Leveraging NLP to analyze chat content and maintain a record of past topics to ensure no issue is overlooked.

Built With

Share this project:

Updates