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
Share this project:

Updates