Project Info
Inspiration
Starting university was the first time many of us began fully funding our meal and snack habits—and these expenses definitely add up. Both personal experience and the familiar stereotype that college students love free food inspired us to build a central platform to discover nearby restaurant and snack deals for anyone looking to try new food and save money.
What it does
cheap bananas! locates free and discounted food, including BOGOs, special, seasonal, and new customer offers, near the user's location. We blended Bright Data's power to web scrape data in real time with Letta's persistent, shareable, and self-adaptive memory to create an app above other snack and meal apps by providing comprehensive, up-to-date, and intelligent recommendations that provides the most recent & local meal deals and events with food for users.
How we built it
We used Letta's agent builder, running Claude Opus 4.1, to create our agents that use Bright Data to scrape the web. We used HTML, Python, and JavaScript to code the UI and link to Letta, and Google Maps API to access the user's location and support the interface.
Challenges we ran into
Efficiency was one of the biggest hurdles when we built our platform. The need to link many services introduced significant latency, which exacerbated the event's overloaded wifi, leading to query timeouts and high webscraping response times. We explored different ways to divide and conquer query work including distributing the workload amongst multiple specialized agents simultaneously, unifying them with Letta's shared memory. We also spent time ironing out the links between the UI and the backend given the complex queries and agents needed.
Accomplishments we're proud of
Integrating various apps to work together, especially giving Letta Bright Data's power to elevate our application's reach and accuracy was one of our greatest accomplishments. Integrating UI locational features, including multiple location displays and interactions is also a source of pride for us.
What we learned
The breadth of knowledge needed for our project brought us to many new areas of knowledge, including ideation and brainstorming techniques, agentic project architecture/design, connecting services through various APIs, SDKs, and MCPs, and fluency with important UI design elements.
What's next
for cheap bananas Our goals for cheap bananas! include increasing the range and efficiency of our queries by migrating to Bright Data SDK, as well as leveraging Letta's persistent memory to create more personalized recommendations.
cheapbananas
Inspiration
Starting university was the first time many of us began fully funding our meal and snack habits—and these expenses definitely add up. Both personal experience and the familiar stereotype that college students love free food inspired us to build a central platform to discover nearby restaurant and snack deals for anyone looking to try new food and save money.
What it does
cheap bananas! locates free and discounted food, including BOGOs, special, seasonal, and new customer offers, near the user's location. We blended Bright Data's power to web scrape data in real time with Letta's persistent, shareable, and self-adaptive memory to create an app above other snack and meal apps by providing comprehensive, up-to-date, and intelligent recommendations that provides the most recent & local meal deals and events with food for users.
How we built it
We used Letta's agent builder, running Claude Opus 4.1, to create our agents that use Bright Data to scrape the web. We used HTML, Python, and JavaScript to code the UI and link to Letta, and Google Maps API to access the user's location and support the interface.
Challenges we ran into
Efficiency was one of the biggest hurdles when we built our platform. The need to link many services introduced significant latency, which exacerbated the event's overloaded wifi, leading to query timeouts and high webscraping response times. We explored different ways to divide and conquer query work including distributing the workload amongst multiple specialized agents simultaneously, unifying them with Letta's shared memory. We also spent time ironing out the links between the UI and the backend given the complex queries and agents needed.
Accomplishments that we're proud of
Integrating various apps to work together, especially giving Letta Bright Data's power to elevate our application's reach and accuracy was one of our greatest accomplishments. Integrating UI locational features, including multiple location displays and interactions is also a source of pride for us.
What we learned
The breadth of knowledge needed for our project brought us to many new areas of knowledge, including ideation and brainstorming techniques, agentic project architecture/design, connecting services through various APIs, SDKs, and MCPs, and fluency with important UI design elements.
What's next for cheap bananas
Our goals for cheap bananas! include increasing the range and efficiency of our queries by migrating to Bright Data SDK, as well as leveraging Letta's persistent memory to create more personalized recommendations.
Built With
brightdata css flask google-maps html javascript letta python react
Try it out:
Installing Node.js: Node
Installing Flask: Flask
- Change directory to backend folder in project directory
- Download .venv folder:
python3 -m venv .venv - Activate .venv (virtual environment):
. .venv/bin/activate - Install required modules in the virtual environment:
pip install -r requirements.txt
Running frontend:
- Change directory to the frontend folder
- Run
npm installto install the required modules - Run
npm run devto run the development website
Analysis
View
Metric
- 16
- 16
- 8
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- CSSIn code
- FlaskIn code
- HTMLIn code
- JavaScriptIn code
- PythonIn code
- ReactIn code
- TypeScriptIn code
7 of 7 appear in the indexed code.
AI coding agents
No AI coding agent signals were found in this repository.
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
203 KB
Source files
90
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
20ben/cheapbananas
101 files · 314 KB · @ ea487d7
Structure
Interface
52 files · 51%Screens, components and styles rendered to the user.
API & routing
3 files · 3%Request entry points: routes, handlers and controllers.
Application logic
31 files · 31%Domain rules, services and shared utilities.
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here — open the file browser to check anything the diagram implies.
Languages
- HTML43%
- TypeScript35%
- Python16%
- JavaScript2%
- Markdown2%
- CSS1%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
backend/requirements.txt
pypi · 28- annotated-types
- anyio
- asyncio
- blinker
- certifi
- charset-normalizer
- click
- colorama
- Flask
- flask-cors
- h11
- httpcore
- httpx
- httpx-sse
- idna
- itsdangerous
- Jinja2
- letta-client
- +10 more
frontend/package.json
npm · 13- leaflet
- react
- react-dom
- react-leaflet
- +9 more
requirements.txt
pypi · 13- blinker
- certifi
- charset-normalizer
- click
- colorama
- Flask
- idna
- itsdangerous
- Jinja2
- MarkupSafe
- requests
- urllib3
- Werkzeug
backend/package.json
npm · 2- leaflet
- react-leaflet
Declared in the repository’s manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
This project’s features have not been analysed yet.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.