Project Info
Inspiration
"You can learn everything." The direction of AI has been taken down a darker path for a tool originally intended to act as an intelligent computer that aids humans. Tools such as interview cheating assistants or deepfake content generators used to slander others or spread misinformation have slowly started gaining traction and set a scary precedent for the future of AI. Our team wanted to look at ways to give AI a more human-supportive viewpoint. We reflected on our own struggles, and felt that habits are difficult to form. This gave way to Mentora, our project built to help anyone build stronger habits. AI can be a great assistant when prompted correctly. You can ask it for advice, have it generate schedules for you, and can even provide words of support. We utilize this quality of LLMs to create an application that gives users an easy way to interface with AI to build strong habits, tying together multiple strategies and tools.
What it does
Mentora comprises of a dashboard with a live assistant, skill trees and various skills a user can choose to develop or strengthen. Skill tree roadmaps are generated stemming from the goals or habits the user chooses. We make use of Letta to create a persistent memory for the AI assistant that collects data trends and uses them to craft responses or provide suggestions.
How we built it
Our project relies mainly on Letta as the backbone. We use TypeScript for the front end and various AI LLMs such as Claude for the brains behind the agent.
Accomplishments we're proud of
We were able to learn the ins and outs of Letta within a very short time frame and fully implement it within our project, creating an end product very close to prod-level.
What's next
We want to continue building Mentora to iron out the early-stage code bugs and to add on more features, along with developing it for more platforms such as a mobile web-app capable of sending notifications along with setting calendar reminders.
Analysis
View
Metric
- 16
- 2
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
- FastAPIIn code
- FirebaseIn code
- FlaskIn code
- Next.jsIn code
- OpenAIIn code
- PythonIn code
- ReactIn code
- Tailwind CSSIn code
- TypeScriptIn code
- Vercel AI SDKIn code
11 of 11 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
302 KB
Source files
84
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
EugeneVuong/calhacks12
102 files · 1.0 MB · @ 1805977
Structure
Interface
75 files · 74%Screens, components and styles rendered to the user.
API & routing
1 file · 1%Request entry points: routes, handlers and controllers.
Application logic
4 files · 4%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
- TypeScript98%
- CSS1%
- Markdown1%
- Python0%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
frontend/package.json
npm · 66- @dagrejs/dagre
- @dnd-kit/core
- @dnd-kit/modifiers
- @dnd-kit/sortable
- @dnd-kit/utilities
- @icons-pack/react-simple-icons
- @letta-ai/vercel-ai-sdk-provider
- @radix-ui/react-avatar
- @radix-ui/react-checkbox
- @radix-ui/react-collapsible
- @radix-ui/react-dialog
- @radix-ui/react-dropdown-menu
- @radix-ui/react-hover-card
- @radix-ui/react-label
- @radix-ui/react-popover
- @radix-ui/react-scroll-area
- @radix-ui/react-select
- @radix-ui/react-separator
- +48 more
backend/pyproject.toml
pypi · 16- fastapi
- flask
- flask-cors
- httpx
- letta-client
- livekit
- livekit-agents
- livekit-agents[openai]
- livekit-api
- livekit-plugins-deepgram
- livekit-plugins-tavus
- openai
- pydantic
- python-dotenv
- requests
- uvicorn
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.
Feature verification
TypeScript frontendVerified
We use TypeScript for the front end
Claimed on Devposthigh confidencefrontend/tsconfig.json— TypeScript project configuration presentfrontend/src/app/page.tsx— .tsx components throughout frontend/src implement the app in TypeScript
Live AI chat assistant via LettaCode-supported
Dashboard includes a live assistant, using Letta as the backbone for the agent
Claimed on Devpostmedium confidencefrontend/src/app/api/letta/route.ts:41— API route calls streamText with lettaCloud() provider and a hardcoded agentId, streaming responses back to the clientfrontend/src/components/chatbox/chat.tsx:107— Chatbot component posts to /api/letta and streams the SSE response into the message list
Skills dashboard (view/select skills to develop)Code-supported
Various skills a user can choose to develop or strengthen
Claimed on Devpostlow confidencefrontend/src/components/goals/skill-tree.tsx:22— SkillTree component renders a clickable grid of skill cards with status/details, but it is a presentational component expecting skills/links props; no caller was found wiring in real user data
Backend agent/API implementation (Python)Claimed only
Implied backend serving the Letta agent and app logic (backend/ directory with letta-client, fastapi, livekit dependencies)
Claimed on readmehigh confidencebackend/src/backend/__init__.py— The only backend source file is empty; compiled __pycache__ artifacts reference letta.py, letta_client.py, main.py, openai.py, loophole.py that no longer exist as source files in this clonebackend/pyproject.toml:12— letta-client, fastapi, livekit, openai dependencies are declared but there is no corresponding implementation code in backend/src
Letta persistent memory for trend-based suggestionsClaimed only
Letta is used to create a persistent memory for the AI assistant that collects data trends and uses them to craft responses or suggestions
Claimed on Devpostmedium confidenceREADME setup/project structure documentationClaimed only
Setup and Project Structure sections in README
Claimed on readmehigh confidenceREADME.md— README's Setup and Project Structure sections just contain placeholder text 'Add here'
Skill trees / roadmap generation from goalsClaimed only
Skill tree roadmaps are generated stemming from the goals or habits the user chooses
Claimed on Devposthigh confidencefrontend/src/components/goals/react-flow-skill-tree.tsx:18— The React Flow skill tree component only renders a static hardcoded demo graph (nodes 1-7), not data derived from user goalsfrontend/src/app/page.tsx:5— Home page imports generateRoadmap from '@/lib/api' and createRoadmap/subscribeToRoadmap from '@/lib/roadmap-service', but neither module exists anywhere in frontend/src/lib, so this roadmap-generation flow cannot execute
Voice agent (LiveKit/Tavus)Claimed only
Implied by livekit-agents/livekit-plugins-tavus/livekit-plugins-deepgram dependencies and a dedicated voice_agent module
Claimed on readmemedium confidencebackend/src/backend/voice_agent/README.md— voice_agent directory contains only an empty README, no implementation code
Claude/LLM-powered agent brainsBlocked
Various AI LLMs such as Claude for the brains behind the agent
Claimed on Devpostlow confidence
An AI agent derived these features from the project’s Devpost page and readme, then searched the code for each one. Verified features are backed by cited code; claimed-only features had no supporting code, which is not by itself proof a feature is missing.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.