Inspiration
Tuali already gives store owners powerful tools — promotions, loyalty points, suggested orders, and coupons. However, these tools work in isolation. A tendero using the app today has no way to connect all this information toward a single business goal, such as increasing their average ticket or growing their weekly sales.
Many store owners, especially those with lower digital literacy, navigate each feature independently with no guidance on what to do next or how their decisions affect their business performance. AVA was born from a simple question: what if Tuali had a growth agent that knew you, your neighborhood, and your goals — and told you exactly what to do each week?
What it does
AVA is an AI-powered growth agent built as a plugin on top of the existing Tuali app. It connects Tuali's existing tools and directs them toward the store owner's personal business goal.
Core features include goal setting, where the store owner defines a business objective and AVA personalizes every recommendation around it. Proactive insights are generated automatically when the app opens, delivering three actionable recommendations based on real purchase history, zone benchmarks, and active promotions. The conversational agent uses AI with tool calling — the store owner asks a question and AVA queries their real purchase data, compares them to neighboring stores, checks substitution history, and responds with specific product names and quantities. Progress tracking converts every recommendation into an action that the store owner can mark as completed or skipped, with a weekly completion rate tracked against their goal. Smart notifications include delivery alerts, stock warnings, weekly reminders, and goal milestone updates.
How we built it
The backend is a Node.js and Express microservice with six API endpoints covering chat, insights, goals, actions, voice, and notifications. The AI agent uses the Groq API with the llama-3.3-70b-versatile model and function calling — the model decides which tools to call, queries MongoDB, and synthesizes a personalized response in Spanish.
The data layer uses MongoDB Atlas with four collections seeded from real Tuali data: 56,398 unique customer profiles with purchase patterns, 178 CEDIS zone benchmarks with top products and average tickets, 497 historical substitution records, and a catalog of 2,573 products with sales velocity data.
The frontend is built with React Native and Expo SDK 54, featuring five screens for home insights, chat, goal management, progress tracking, and notifications. The app connects to the backend via ngrok for the live demo.
Challenges we ran into
API quota management was our biggest challenge. We hit Groq's 100,000 daily token limit mid-hackathon due to extensive testing, and had to switch to the llama-3.1-8b-instant model which carries a higher daily allowance.
Running a backend inside Windows Subsystem for Linux while testing on a physical iOS device required configuring ngrok tunneling correctly, fixing URL format issues, and adding browser-warning bypass headers to every API call from the frontend.
Expo SDK 54 introduced breaking changes across several core packages. We had to migrate audio playback from expo-av to expo-audio, adapt expo-file-system to use its legacy import path, and update the notification trigger format to use the new SchedulableTriggerInputTypes enum.
Processing 1,016,686 order detail rows in Python required optimized pandas aggregations and careful handling of NaN values and numpy type serialization to produce clean MongoDB documents.
What we learned
Building AI agents with tool calling is more about data architecture than prompt engineering. The quality of the MongoDB schemas directly determines the quality of the model's responses. Personalization at scale requires precomputed aggregations — querying millions of rows on every chat message is not viable. Designing the system to be LLM-agnostic from the start saved significant time when we needed to swap providers under pressure.
What's next for AVA
Real delivery tracking integration with Tuali's logistics data for live proximity alerts, loyalty points tied to goal completion to close the loop between growth advice and rewards, cohort analytics to compare store performance across similar stores in the same zone, and a promotor integration that generates a personalized brief for Tuali's field team before each store visit.
Built With
- expo-audio
- expo-notifications
- expo-router
- expo.io
- express.js
- groq
- mongodb-atlas
- node.js
- pandas
- python
- react-native
- typescript
Log in or sign up for Devpost to join the conversation.