Project Info
This project did not submit a demo video on Devpost.
I'm so glad that I managed to finish my first full-stack project as a first-time hackathon attendee.
Inspiration
Local news deserts have been expanding rapidly across the U.S., with 3,300 newspapers closing over the past two decades. While short videos on emerging platforms offer quick updates, the MyCity portal serves as a reliable and accurate source of truth, helping people stay informed about what’s happening in their own cities.
What it does
MyCity is a web app—soon to be primarily mobile—that crawls selected official information sources at carefully chosen intervals to deliver timely updates. Drawing on the expertise of seasoned journalists to identify authoritative sources, the app uses one-shot and few-shot prompt engineering to guide its professional writing. The result is relevant, bite-sized, and unbiased information briefs—free of fluff.
How we built it
The stack includes Python, Claude API, SQLite, FastAPI, Vercel V0, and React.
Challenges we ran into
The two secret ingredients of this project—gathering meaningful information based on lived human experience and producing strong content—also posed the biggest challenges. Properly guiding LLMs in professional news writing requires extra onboarding time. For instance, when condensing lengthy documents such as city council meeting minutes, considerable effort went into prompting the Claude API to generate high-quality summaries. Well-crafted few-shot prompts were essential in these cases.
Accomplishments we're proud of
The current prototype includes content relevant to commuters, such as traffic updates and major public transportation alerts. In the Fremont city prototype, the current workflow can handle the daily output of two full-time journalists already. In a newsroom setting, this tool would allow professional journalists to focus on more creative and investigative tasks.
What's next
We plan to expand the Fremont MyCity prototype with additional local sources and features. Another section of the app will allow users to receive updates from various local event calendars. Users can like or skip events to build a personalized MyCity event calendar. In the next phase, we will also develop a mobile-first version of the app.
Project overview
MyCity is a full-stack project I built solo at the UC Berkeley AI Hackathon 2025, held on June 21–22. The prototype demonstrates a fully functional end-to-end workflow, covering data crawling, content generation, database integration, and a frontend web app. See link to my final submission here.
Inspiration
Local news deserts have been expanding rapidly across the U.S., with 3,300 newspapers closing over the past two decades. While short videos on emerging platforms offer quick updates, the MyCity app series serves as a reliable and accurate source of truth, helping people stay informed about what’s happening in their own cities.
What it does
MyCity is a web app—soon to be primarily mobile—that crawls selected official information sources at carefully chosen intervals to deliver timely updates. Drawing on the expertise of seasoned journalists to identify authoritative sources, the app uses one-shot and few-shot prompt engineering to guide its professional writing. The result is relevant, bite-sized, and unbiased information briefs—free of fluff.
Stack
Python, Claude API, SQLite, FastAPI, Node.js, React, and Vercel.
Key challenges
The two secret ingredients of this project—gathering meaningful information based on lived human experience and producing strong content—also posed the biggest challenges. Properly guiding LLMs in professional news writing requires extra onboarding time. For instance, when condensing lengthy documents such as city council meeting minutes, considerable effort went into prompting the Claude API to generate high-quality summaries. Well-crafted few-shot prompts were essential in these cases.
Accomplishments
The current prototype includes content relevant to commuters, such as traffic updates and major public transportation alerts. In the Fremont city prototype, the current workflow can handle the daily output of more than one full-time journalist already. In a newsroom setting, this tool would allow professional journalists to focus on more creative and investigative tasks.
What's next for MyCity
An ideal plan would include expanding the Fremont MyCity prototype with additional local sources and features. Another section of the app will allow users to receive updates from various local event calendars. Users can like or skip events to build a personalized MyCity event calendar. In the next phase, we will also develop a mobile-first version of the app. After that, it would be feasible to scale the app series and bring local news services to small cities across America.
Steps finished by the end of the hackathon
- Web crawling workflow set up
- Prompt engineering done for the writing of select topics
- Database created
- Working API connected to the database
- Basic frontend built

- Set up tutored writing via Claude API
Example text:
The Fremont City Council approved several major infrastructure and service spending items totaling over $9 million at their May 20 regular meeting. All items on the agenda passed unanimously during the meeting.
Key Items Approved:
• Road Repairs: $4.986 million contract for the 2025 Cape and Slurry Seal Project to maintain city streets
• Parkland Purchase: $800,000 to buy property at Fremont Boulevard & St. Leonards Way for parks
• Street Maintenance: $1.03 million annually for 7-year landscape maintenance contract for city streetscapes
• Equipment Purchases: $836,000 for two new street sweepers; $245,000 for Wi-Fi upgrades at city facilities
• Fuel Costs: $1.463 million annual contract for gasoline and diesel fuel for city vehicles
• Transportation Services: $510,000 annually for Lyft ride-hailing services and $120,000 for call center services for seniors and disabled residents through 2028
Mock main page:

Analysis
View
Metric
- 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
- Next.jsIn code
- PythonIn code
- ReactIn code
- Tailwind CSSIn code
- TypeScriptIn code
- FastAPIClaimed
- VercelClaimed
6 of 8 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
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
39 KB
Source files
12
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
Linlyo/CalHacks-table319-MyCity-Portal
48 files · 4.1 MB · @ 514a08b
Structure
Interface
7 files · 15%Screens, components and styles rendered to the user.
Application logic
7 files · 15%Domain rules, services and shared utilities.
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
- TypeScript64%
- Markdown14%
- Python12%
- CSS10%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
city-alerts-frontend/package.json
npm · 21- @radix-ui/react-scroll-area
- @radix-ui/react-slot
- @radix-ui/react-tabs
- axios
- class-variance-authority
- clsx
- lucide-react
- next
- react
- react-dom
- tailwind-merge
- +10 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.