Project Info
Justice Hacks; [Sponsor - Unwrap] Best Insights Extracted from any public data source
U.S. Eco Glass
Inspiration
In our current political climate, it is incredibly difficult to decipher what our politicians and officials are supporting and what bills are being passed and put into law. With how little the US is currently invested in environmental policy this aspect of legislation is the least exposed to the public. We realized that most Americans might not actually be up to date with what US environmental policy is being enacted or looked at by the house and senate.
What it does
EcoGlass aims to make the US legislative process more accessible to the public, the very people that the system is supposed to be serving. With a focus on environmental policy, the website is able to give a streamlined look into the current climate policy, in limiting the scope the information is much more digestible by the average user.
How we built it
We started with an idea, this became a large structured plan on the scope of the website, what features we wanted to add and what our end goal should look like. From that point we chose our tech stack and modeled our data so we could process vast amount of data from the congress.gov API. At this point we delegated jobs and began building.
Challenges we ran into
Data ingestion.
Accomplishments we're proud of
Our bill similarity graph. Our usage of vector embeddings of bill data along with cosine similarity on subcategories allowed us to make digestible visualizations of what areas any given congress official is voting on and sponsoring. We implemented an unsupervised machine learning K-Means clustering algorithm to reduce the data from hundreds of data points to under 20, making visualization clear and easy to understand. This feature also allows the user to compare past congresses to the current congress and how US Climate Policy has changed and morphed over the last 30 years. The "Your Representatives" makes accountability a focus of our site. We believe being able to view the actions of the people that directly represent you, the user, is a tool of accountability and a force of good.
What we learned
Reliable data ingestion is HARD. When using managed services, running past server hardware limits is easy, and inefficient data pipeline design will break easy and is incredibly error prone. We eventually landed on a multi-step message queue system. This was a first for all of us. ##
What's next
We hope to improve our backend pipelines for data ingestion through things like improved fallbacks, logging and observability to make sure our data is always up to date. We also want to keep going back through the congress API to bring in data from before ~1990, as that is the limit of our current dataset. Other 3rd party integrations such as NewsAPI to bring in up to date data about public perception and coverage in environmental policy. Document stores. We want people to be able to use this site as a one-stop-shop, allowing people to directly view important documents through this site can push us towards this goal.
This repository has no readme, or GitHub could not be reached.
Analysis
View
Metric
- 23
- 10
- 3
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- CSSIn code
- JavaScriptIn code
- Next.jsIn code
- PythonIn code
- ReactIn code
- SQLIn code
- SupabaseIn code
- Tailwind CSSIn code
- TypeScriptIn code
- PostgreSQLClaimed
- VercelClaimed
9 of 11 appear in the indexed code. 2 claimed on Devpost could not be matched to code, which may simply mean the tool leaves no trace in the repository.
AI coding agents
- Claude CodeConfig · Commits
- CursorConfig
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
1.2 MB
Source files
212
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
eolaruhagen/cruzhacks-26-environmental-transparency
261 files · 16.5 MB · @ 6e146c5
Structure
Interface
31 files · 12%Screens, components and styles rendered to the user.
API & routing
5 files · 2%Request entry points: routes, handlers and controllers.
Application logic
85 files · 33%Domain rules, services and shared utilities.
+6 moreBackground jobs
4 files · 2%Work run outside a request: tasks, workers and schedules.
Data & schema
47 files · 18%Schema definitions, migrations and data access.
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here — open the file browser to check anything the diagram implies.
Languages
- TypeScript86%
- SQL5%
- Python5%
- CSS1%
- Markdown1%
- YAML1%
- Other (2)0%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
client/package.json
npm · 25- @supabase/supabase-js
- @tanstack/react-virtual
- @types/three
- clsx
- ml-kmeans
- next
- react
- react-dom
- recharts
- tailwind-merge
- three
- +14 more
news-pipline/package.json
npm · 9- @openrouter/sdk
- networkanalysis-ts
- pino
- pino-pretty
- postgres
- zod
- +3 more
bill-pipline/package.json
npm · 8- @cruzhacks/shared
- @openrouter/sdk
- @supabase/supabase-js
- pino
- pino-pretty
- zod
- +2 more
package.json
npm · 5- recharts
- supabase
- +3 more
supabase/maintenance/package.json
npm · 5- @cruzhacks/shared
- @supabase/supabase-js
- +3 more
bill-pipline/python/requirements.txt
pypi · 3- click
- en-core-web-sm
- spacy
packages/shared/package.json
npm · 3- @openrouter/sdk
- zod
- +1 more
Declared in the repository’s manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
This project’s features have not been analysed yet.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.