Key Facts
- ✓ The web application was conceived specifically to address the confusion caused by a recent subway outage in San Francisco.
- ✓ Development relied heavily on 'vibe coding,' a method where AI assistants generate the majority of the source code based on developer prompts.
- ✓ The system ingests real-time images of subway circuit diagrams that are publicly accessible via the SF Muni Central website.
- ✓ A significant technical hurdle involved manually enabling PyTorch's GPU support after discovering it was disabled in the AI-generated script.
- ✓ The complete project, named munimet.ro, has been released to the public under the standard MIT open-source license.
- ✓ The application attempts to replicate the simple utility of the 'Do I Need an Umbrella' concept for public transportation decisions.
Quick Summary
A recent disruption in San Francisco's transit network sparked the creation of a novel web application designed to answer a simple commuter question: should I take the subway or a bus? Inspired by the utility of the "Do I Need an Umbrella" website, this new tool leverages machine learning to interpret real-time subway data.
The project, developed by an independent coder, demonstrates the practical application of AI in urban mobility. By analyzing publicly available circuit diagrams from the SF Muni Central system, the application aims to provide clearer insights for daily travelers navigating the city's complex transit infrastructure.
The Spark of Inspiration
The genesis of the project was a specific, frustrating experience: a subway outage that left commuters stranded and searching for answers. This incident highlighted a gap in accessible, predictive transit information. The developer sought to build a tool that could proactively answer the critical question of whether to rely on the subway system at any given moment.
Adopting a modern development philosophy, the creator decided to "vibe code" the application as much as possible. This approach involves using AI coding assistants to generate the bulk of the codebase, allowing the developer to focus on high-level architecture and problem-solving rather than writing every line of code manually.
- Triggered by a real-world subway service interruption
- Modeled after the simple utility of "Do I Need an Umbrella"
- Focused on the specific commuter dilemma: subway vs. bus
- Embraced a "vibe coding" methodology for rapid development
""Seemed like the right tool for the job, but it would have saved time if I'd built it from scratch myself.""
— Developer, munimet.ro
Building with AI Assistance
The development process began with Claude Code, an AI programming assistant, tasked with creating a background script. This script was designed to automatically download images of the real-time circuit diagrams available through the sfmunicentral.com domain, capturing the live state of the subway network.
Following data acquisition, the next step involved creating a tool to label these images. The AI generated an image labeler using the tkinter library. However, this phase proved more complex than anticipated, requiring substantial manual intervention before the labeling process could effectively begin.
"Seemed like the right tool for the job, but it would have saved time if I'd built it from scratch myself."
Despite the initial hurdles with the labeling tool, the project moved into its most technically interesting phase: transforming the labeled image data into actionable predictions using PyTorch. The AI assistant wrote the initial script for this machine learning component with relative speed, though it still required careful manual tweaking.
Technical Challenges & Refinements
As the machine learning model began processing the data, the developer encountered the inevitable nuances of working with neural networks. The AI-generated script flagged certain images as outliers, prompting the developer to engage in a process of second-guessing and manual review to ensure the model's accuracy.
In a moment of realization that many developers can relate to, a significant performance bottleneck was discovered deep into the development process. The initial script generated by Claude had not enabled PyTorch's GPU support, meaning the intensive image processing was running on the CPU instead of the graphics card.
"I'll admit I got embarrassingly far along before realizing that Claude hadn't enabled pytorch's GPU support; a real facepalm moment on my part."
This oversight required a manual fix to unlock the full computational power of the hardware, a crucial step for ensuring the application could process data efficiently and provide timely predictions to users.
Open Source Availability
The final result of this development journey is munimet.ro, a web application that serves as a machine learning-based status page for the local subway system. The project stands as a testament to the potential of combining AI tools with human oversight to solve practical, everyday problems.
For those interested in the technical implementation or wishing to contribute, the project is not a closed box. The complete source code has been made publicly available under an MIT license. This open-source approach invites scrutiny, collaboration, and adaptation by other developers in the community.
- Application Name: munimet.ro
- License: MIT (permissive open-source)
- Repository: Hosted on GitHub
- Primary Technologies: Python, PyTorch, Tkinter
Looking Ahead
The creation of munimet.ro illustrates a growing trend where individual developers can rapidly prototype complex applications using AI co-pilots. By addressing a specific pain point in urban transit, the project moves beyond a simple coding exercise to offer potential utility for San Francisco commuters.
While the application is currently a proof-of-concept, it highlights the accessibility of machine learning tools for solving niche problems. The willingness to share the codebase publicly ensures that the project can evolve, potentially inspiring similar tools for other transit systems or entirely different data visualization challenges.
""I'll admit I got embarrassingly far along before realizing that Claude hadn't enabled pytorch's GPU support; a real facepalm moment on my part.""
— Developer, munimet.ro










