Inspiration
UCLA students often struggle with: Nutrition Confusion: Not knowing which dining hall foods meet their health goals Time Constraints: Difficulty planning balanced meals between classes Goal Achievement: Hitting specific calorie and protein targets for fitness Dietary Navigation: Finding suitable options for dietary restrictions
BCal solves these by providing instant, personalized meal recommendations with exact nutritional information and dining hall locations.
What it does
Intelligent Meal Planning Calorie & Macro Targeting: Precisely hits user-specified calorie and protein goals Smart Food Selection: Two-pass algorithm prioritizes protein-rich foods, then fills remaining calories Automatic Portion Suggestions: Recommends multiple servings when targets can't be met with single portions
Natural Language Understanding Conversational Interface: Understands natural requests like "I'm cutting, need 1800 calories with 120g protein" Preference Learning: Remembers dietary restrictions, food likes/dislikes, and health goals Context Awareness: Maintains conversation history for personalized recommendations
Comprehensive Nutrition Data Real UCLA Menu Items: Uses actual De Neve dining hall data with 40+ food items Complete Nutritional Profiles: Tracks calories, protein, carbs, fat, potassium, and iron Location-Specific Information: Shows exact dining hall locations (Kitchen, Grill, Pizzeria, etc.)
How we built it
Technology Stack
Frontend: Streamlit (Python web framework)
AI/ML: Amazon Bedrock with Nova Lite LLM
Backend: Python with dataclasses and CSV data processing
Cloud: AWS (Bedrock API integration)
Core Components
Data Layer: Food dataclass with nutrition facts and dining location tags
Business Logic: TDEE calculation, macro targeting, and meal planning algorithms
AI Layer: Natural language processing for intent extraction and preference understanding
UI Layer: Interactive chat interface with real-time meal plan generation
Smart Algorithms Protein-First Planning: Prioritizes high-protein foods when protein targets are specified Calorie Optimization: Fills remaining calories to hit targets within 10-15% accuracy Preference Filtering: Applies dietary restrictions and food preferences before selection
Challenges we ran into
Getting the AWS Bedrock API key and session token working was a bit of a pain The chatbot depends on multiple layers: Flask/FastAPI backend, Bedrock API calls, and UCLA-specific food databases which got messy. UCLA menus rotate daily/weekly and aren’t always published in a structured API which made scraping the data from the website difficult. Getting used to AWS features which we had never used started slow but eventually picked up.
Accomplishments that we're proud of
Winning the pitch competition on Saturday :)
What we learned
Splitting tasks (backend logic, frontend UI, AWS integration, data curation) worked well for parallel progress. We learned that integration points (e.g., API endpoints, data formats) must be defined early, or merging work gets messy
What's next for BCal
We plan on publishing the site for UCLA students to use and to possibly partner with local restaurants in the area. We also think that expanding BCal to other UC campuses such as UCSD and UCD would be good.
Built With
- aws-bedrock
- aws-novalite
- aws-qdeveloper
- claude
- python
- streamlit
Log in or sign up for Devpost to join the conversation.