Inspiration
Valora began with a personal wake-up call. After being diagnosed with kidney stones and fatty liver, I became much more conscious of what I was eating.
Every meal brought new questions. I kept searching online and repeating my concerns, food preferences and restrictions to chatbots. I wanted a meal companion that remembered my context and helped turn it into practical everyday choices.
That became the idea behind Valora: make eating right easier, without starting every conversation from scratch.
What it does
Valora is a personal meal companion that helps you eat right, every day.
After onboarding and consent, it prepares a plan for the remaining meals today using saved food preferences, reported allergies, foods to avoid, cuisine choices and cooking-time limits.
Users can review their meals in Plan and continue the conversation in Chat. A request such as “I want something Italian tonight” can become a proposed dinner replacement. Changes require confirmation before saving, while other meals remain in place.
Valora also supports voice input and natural-language pantry updates. For example, “I have a kilogram of potatoes and two one-litre cartons of milk” becomes an editable draft for the user to review.
The app supports everyday healthy eating. It does not diagnose conditions or prescribe clinical diets.
How we built it
We built on our existing Valora foundation using Flutter and Dart for the application, Cloudflare Workers for the TypeScript backend, Cloudflare D1 for account-scoped storage and Google OAuth for authentication.
NVIDIA Nemotron, accessed through Nebius Token Factory, provides the language-model layer. We use nvidia/nemotron-3-super-120b-a12b through Nebius’s Chat Completions API for meal selection, conversational interpretation, supported preference-change proposals and pantry extraction.
Our approach combines prompt engineering, structured outputs and deterministic application checks. We did not fine-tune the model.
The flow begins with saved user preferences. Application code filters the supported recipe catalog against food restrictions and practical limits. Nemotron then selects among eligible recipes using the supplied context. The backend validates its selection before saving a plan or presenting a confirmation proposal.
For pantry updates, Nemotron interprets natural language into structured operations. The app displays those operations for review; the model never writes directly to account storage.
Qloo complements this flow with cuisine search and taste affinities. It supplies taste context, while Nemotron handles interpretation and selection. Neither service can override the application’s saved food-rule checks.
Nebius credentials remain on the backend. Inference uses consent checks, bounded requests, timeouts and validated responses, without requiring us to provision or manage GPU instances.
Challenges we ran into
The hardest challenge was turning fluent model output into reliable application behavior.
Food terminology exposed this quickly. Users describe ingredients through regional names, aliases, everyday phrases and voice transcripts. Those expressions must connect consistently to saved preferences and recipe ingredients.
We also needed to distinguish between a suggestion, a temporary request and a lasting preference. “Italian tonight” should influence dinner; it should not silently rewrite someone’s saved profile.
Natural-language pantry input introduced another challenge: preserving multiple items, quantities and packaging details in one sentence. Structured extraction needed validation and an editable confirmation step.
Finally, we learned that model quality cannot compensate for limited context or a small recipe catalog. Our MVP’s responses can still feel repetitive, and expanding recommendation depth is an important next step.
Accomplishments that we’re proud of
We brought Valora to a working Android MVP with saved preferences, first-day meal planning, conversational meal changes, voice input and pantry management.
We’re proud of connecting Nemotron inference to concrete, reviewable actions. The model helps interpret what users mean, while the application controls which changes are valid and when they are saved.
Nebius Token Factory made it practical to integrate hosted Nemotron inference into our existing Flutter and Cloudflare architecture without managing model-serving infrastructure.
We also established automated checks around provider failures, consent, recipe restrictions, persistence and confirmation flows.
What we learned
A useful personal assistant needs consistent context and dependable actions as much as a capable language model.
We learned that structured outputs and validation are essential, but overly restrictive routing and fixed response templates can make conversations feel generic. Finding the balance between useful conversation and controlled application actions remains an ongoing design challenge.
We also learned to keep taste relevance, ingredient suitability and research evidence separate. A meal can match someone’s preferred cuisine without establishing nutritional or clinical suitability.
These lessons give us a clearer direction for improving Valora beyond the hackathon MVP.
What’s next for Valora
Our immediate priorities are better conversational understanding, broader regional recipe coverage, less repetitive recommendations and stronger use of pantry and meal history.
We also want to add scheduled daily planning and notifications. Currently, planning is triggered when users open or resume the app.
We plan to improve our research-backed knowledge layer with better topic retrieval, source provenance and clear applicability limits.
Longer term, we want to explore a specialized on-device model for Valora’s use case. NVIDIA’s model ecosystem and Nebius infrastructure could support future evaluation, training experiments and hosted inference as we develop that approach.
Our goal remains simple: less time repeating your context, and more help deciding what to eat.
Built With
- android-speech-recognition
- cloudflare-d1
- cloudflare-workers
- dart
- flutter
- google-oauth-2.0
- nebius-token-factory
- nvidia-nemotron
- sqlite
- typescript
- vitest
Log in or sign up for Devpost to join the conversation.