Inspiration

The gap between the rich and the poor is widening as a result of the AI revolution. Vulnerable workers, particularly immigrants, hourly workers, and those in informal employment, are increasingly exploited through wage theft, illegal deductions, and hazardous working conditions as automation displaces workers and corporations gain more power. To defend ourselves, I created FinWise. Regardless of their income or educational background, every employee should be aware of their rights, be able to recognize when they are being defrauded, and have the resources to take action.

What it does

FinWise is a free macOS desktop app that helps workers protect themselves financially. It detects wage theft and exploitation patterns using ML, walks users through filing formal complaints with the correct government agency for their country, explains their legal rights across discrimination, privacy, and wrongful termination, and builds their financial literacy through lessons, quizzes, and an AI savings advisor. Everything is stored locally — nothing is uploaded to any server.

How we built it

I built FinWise entirely in Python using Tkinter for the UI. The worker protection engine combines an Isolation Forest anomaly detection model (scikit-learn) with a rule-based NLP keyword matcher that scans transaction memos for exploitation patterns like "housing deduct" or "recruitment fee." I integrated five OAuth providers (Google, Facebook, Microsoft, GitHub, WeChat), Supabase for cross-device sync, the US Department of Labor API for real employer violation data, OpenCorporates and Wikidata for company lookup, Google Translate for multi-language support, Twilio for SMS verification, and ReportLab for generating PDF complaint documents. The app is packaged as a native macOS .app using PyInstaller.

Challenges we ran into

Managing credentials across five OAuth providers was significantly more complex than expected — each provider has different token flows, scopes, and error handling requirements. Building the messaging system to work across devices required careful state syncing through Supabase while keeping sensitive data local. Getting the ML anomaly detection to produce meaningful results without real labelled training data meant building a synthetic BLS wage baseline to train against. And packaging everything into a single distributable .app with PyInstaller while handling macOS Gatekeeper restrictions took considerable iteration.

Accomplishments that we're proud of

I'm genuinely proud of the exploitation detection engine that combines unsupervised ML with rule-based NLP to surface real patterns of wage theft is something most financial apps don't attempt. I'm also proud that the entire app works offline with local-only storage, meaning workers can use it without fear of their employer ever finding out. And shipping a fully working macOS app with five OAuth providers, PDF generation, multi-language support, and a community messaging system in a single hackathon is something I'm genuinely proud of.

What we learned

I learned how deep the problem of wage theft actually goes — it affects tens of millions of workers globally and is vastly underreported. On the technical side, I learned how to build unsupervised anomaly detection without labelled data, how to handle multi-provider OAuth flows robustly, and how complex cross-device sync becomes when privacy is a hard constraint.

What's next for FinWise

I want to add real bank transaction import so the Worker Protection Check can run on a worker's actual pay history rather than demo data. I'm planning a mobile version so workers can access their rights and file reports from their phone. I also want to expand the legal rights database to cover more countries and add a community-sourced employer review system — so workers can warn each other about bad actors before taking a job.

Built With

  • deep-translator
  • facebook-oauth
  • github-oauth
  • google-oauth
  • google-translate-api
  • microsoft-oauth
  • numpy
  • opencorporates-api
  • pyinstaller
  • python
  • reportlab
  • scikit-learn-(isolation-forest-anomaly-detection)
  • smtp
  • supabase
  • tkinter
  • twilio-(sms)
  • us-department-of-labor-api
  • wechat-oauth
  • wikidata-api
Share this project:

Updates