Updated the application to use all 36 official CMU dining locations from the CMU Eats data instead of the previous 8 hardcoded locations.
Replaced the entire file with:
- Comprehensive parser functions to handle various hour formats from CMU Eats
- All 36 CMU dining locations with accurate weekly hours
- Support for complex schedule patterns:
- 24-hour locations (Stephanie's - Market C)
- Day ranges (Monday–Friday, Saturday–Sunday)
- Multiple time windows per day (e.g., Nourish: 10:30 AM - 3:00 PM, 3:30 PM - 6:00 PM)
- Closed days (CLOSED)
- Special hours (Shabbat closures, weekend variations)
- Split hours (e.g., Friday: 8:00 AM - 1:00 PM, 2:00 PM - 11:59 PM)
Parsing Functions:
parseTime()- Converts "8:00 AM" to 24-hour format (8)parseDayRange()- Handles "Monday–Friday", "Saturday–Sunday", "Daily", etc.parseHoursString()- Main parser for complete hour strings from CSV
components/NutritionModal.tsx:
- Updated placeholder examples from "Resnik, Entropy+" to "Entropy+, The Exchange"
- Updated help text from "Resnik, Entropy, Cohon" to "Entropy+, Au Bon Pain, The Exchange"
app/api/generate-plan/route.ts:
- Updated example output in system prompt from "Breakfast at Resnik" / "Resnik Cafe" to "Breakfast at Entropy+" / "Entropy+"
README.md:
- Updated dining locations section from 8 locations to comprehensive list of all 36
- Updated example favorite dining options
- Added note about Shabbat hours and weekend variations
QUICKSTART.md:
- Updated sample configuration to use current restaurant names
PROJECT-SUMMARY.md:
- Updated dining location count from 8 to 36
- Added detailed description of location coverage
- Updated known limitations note about static hours
The application now includes:
- Stephanie's - Market C (24/7)
- Scotty's Market By Salem's
- Stack'd Underground
- Stack'd Dessert Bar
- The Grill At Scotty's
- Salem's Hot Bar
- Au Bon Pain At Skibo Café
- El Gallo De Oro
- Entropy+
- Revolution Noodle
- Millie's Coffee 'n' Creamery
- Rohr Café - La Prima
- De Fer Coffee & Tea
- Nourish
- Capital Grains
- The Exchange
- Schatz Dining Room
- Taste Of India
- Hunan Express
- The Edge Cafe & Market
- Sweet Plantain
- Fire And Stone
- Tahini
- Zebra Lounge
- La Prima Espresso (Wean Hall)
- Redhawk Coffee
- Ola Ola
- Ciao Bella
- Shake Smart
- Crisp And Crust
- Rohr Commons - Tepper Eatery
- Wild Blue Sushi
- Forbes Avenue Subs
- Tepper Taqueria
- Tepper Taqueria Express
- E.a.t. (Evenings At Tepper)
- More Options: Students have 36 dining locations to choose from instead of 8
- Accurate Hours: Each location has precise operating hours for each day of the week
- Real CMU Data: Uses official CMU Eats data instead of estimates
- Better Scheduling: Claude AI can now find meals at more locations across different times
- Special Hours: Properly handles weekend hours, Shabbat closures, and other variations
24-Hour Location:
Input: "Saturday: Open 24 hours"
Output: { day: "Saturday", startHour: 0, endHour: 24 }
Day Range:
Input: "Monday–Friday: 8:00 AM - 6:00 PM"
Output: [
{ day: "Monday", startHour: 8, endHour: 18 },
{ day: "Tuesday", startHour: 8, endHour: 18 },
...
]
Multiple Windows:
Input: "Daily: 10:30 AM - 3:00 PM, 3:30 PM - 6:00 PM"
Output: 14 windows (2 per day × 7 days)
Closed Days:
Input: "Saturday: CLOSED; Sunday: 12:00 PM - 8:00 PM"
Output: [{ day: "Sunday", startHour: 12, endHour: 20 }]
All parsing was verified to work correctly:
- ✅ 24-hour locations parsed correctly
- ✅ Day ranges (Monday–Friday) work properly
- ✅ Multiple time windows per day handled
- ✅ Closed days are filtered out
- ✅ Weekend/weekday variations respected
- ✅ Special hours (Shabbat) parsed correctly
The data structure remains the same (DiningLocation type unchanged), so:
- ✅ All existing components work without modification
- ✅ API contracts remain the same
- ✅ TypeScript types are consistent
- ✅ Claude AI prompt receives the same data format
Original CSV: /Users/oliverali/Downloads/cmu_eats_hours.csv
- 36 restaurants with official weekly hours from CMU Eats