Independent Product · 2026
CurbOcular
Turning fragmented city data into actionable parking decisions. An independent product that helps Chicago drivers understand street-cleaning schedules, compare nearby streets, and plan where to park.
- Product thinking
- End-to-end design
- Design × Technology × Data
- AI-Assisted Development
Search
Add to Calendar
Where to park
Edit Search
New Search
Couldn't find
Project Overview
Chicago makes street-cleaning schedules publicly available, but finding the right dates requires navigating wards, sections, maps, and separate documents.
I built CurbOcular to simplify that process—helping drivers find upcoming street cleaning, compare nearby areas, and plan where to park.
Role
Product Strategy, UX/UI Design, AI-assisted Development
Platform
Web App
Status
Live · 100+ users
Tools
Figma, Cursor, Claude, Next.js, Supabase, GA4
The Opportunity
After receiving a street-cleaning ticket, I realized that even knowing the schedule wasn't enough. I had forgotten to move my car.
When planning a trip, I faced another challenge: finding a nearby street without scheduled cleaning throughout my absence.
I also learned that a neighbor manually added nearby streets' schedules to a personal calendar—a time-consuming workaround that still didn't guarantee they'd remember to move the car.
The opportunity wasn't just to make schedules easier to find. It was to help people turn them into practical parking decisions.

Product Strategy
Progressive Disclosure
Start with the user's location, then help them decide what to do next.
By analyzing the user journey map, I realized that the three user needs can share one starting point. I organized the experience around a familiar action: searching an address.

Rather than overwhelming users with every feature upfront, I placed relevant actions alongside the schedule results.
A deliberate trade-off: Calendar, not notifications
I considered email subscriptions and browser notifications, but both introduced additional privacy and management complexity.
Instead, users can select relevant dates and export them to their own calendars—without creating an account or sharing an email address.
The goal is to help users avoid tickets, not maximize website visits.
Key Design Decisions
Replace administrative complexity with address-first search
Users shouldn't need to know their Ward or Section to find a schedule.
CurbOcular resolves an address to geographic coordinates, identifies the relevant district, and retrieves its upcoming cleaning dates.
Combine map context with precise results
The map helps users understand where nearby areas are located. The accompanying list makes individual results easier to compare.
Selecting an area highlights its corresponding list item without scrolling the page, preserving the map as the primary spatial reference.
Design for the entire trip, not just the next cleaning date
A one-mile default radius balances nearby alternatives with practical walking distance. Users can adjust the distance and date range to find areas without scheduled cleaning throughout their absence.
CurbOcular identifies cleaning schedules, not guaranteed parking availability. This boundary helps avoid presenting incomplete information as certainty.
Turn information into an actionable reminder
Users select the schedule dates they need and download a calendar file. Each event includes a link back to CurbOcular's alternative-parking experience.
This gives users a practical reminder without requiring an account or a separate notification system.
System Thinking & Implementation
From fragmented datasets to one search experience
I used AI-assisted development with Cursor and Claude to build the product using Next.js, Supabase, and Vercel.
Initially, each lookup requested data directly from the source API. I introduced Supabase-backed caching and scheduled daily updates to reduce repeated requests and improve the lookup experience.
The interface also displays the last successful data-update time.

Measurement & Learning
I implemented GA4 events to track the core product journey:
- cleaning_schedule_success
- where_to_park_click
- where_to_park_search_success
- calendar_download_success
These events help measure successful lookups, alternative-area searches, and calendar downloads.
Because CurbOcular is a low-frequency utility, daily engagement alone would be misleading. I would prioritize successful task completion and repeat use across different cleaning cycles.
The product is live and has attracted approximately 100+ users through organic discovery and word of mouth. Formal usability testing and validated outcome measurement remain future priorities.
Reflection: From finding information to supporting decisions
CurbOcular challenged me to rethink how public information should be organized around people's actual needs.
I took the product from an everyday frustration to a live application, making deliberate decisions about information architecture, geographic context, privacy, and data uncertainty.
The next step is to validate how users interpret the map, investigate ambiguous street boundaries, and evaluate task completion across a full cleaning season.
My key takeaway: Good product design doesn't just make information accessible. It helps people use that information to make better-informed decisions.