Inspiration
Many AI-based apps use similar foundational patterns, with slight deviations catering them to specific domains or applications. We wanted to break the mold and attempt to use generative AI in a more creative and expansive way. Using an AI model to mediate and act upon everyone's day-to-day menial tasks would allow users to be at the forefront of productivity.
Thus, Maia was born! An AI Agent that filters only crucial information across a user's online platforms, summarizes the content into short attention span acceptable sizes, and can suggest and act upon tasks based upon the combination of all information it's obtained across these platforms.
What it does
- Filters user emails using an LLM to decide whether the content is necessary to present to the user.
- Summarizes email content into a single short sentence for easy information processing.
- Uses calendar availability to help decide future meeting times and create suggested responses for event conflicts.
- Generates highly relevant responses to emails and pre-fills the email content.
- Extracts useful links from emails and suggests actionable tasks with direct links to related content.
- Finds keywords that may relate to a future meeting and creates a direct link to create that event in Google Calendar.
How we built it
Backend:
- Python with FastAPI
- OpenAI API using GPT-4o-mini
- Gmail and Google Calendar API
Frontend:
- Next.js 14
- Tailwind CSS
- Framer motion
Challenges we ran into
The largest challenge was dealing with AI Agents. This technology is extremely new and is very inconsistent. Tasks would loop endlessly, reading web pages took over 15 seconds per page, API credits were spent extremely quickly, and much of it was hardware dependent. While this was originally a core part of our project, we were able to reduce scope to a point necessary to allow for a viable project without any of the experimental software.
As mentioned earlier, scope was a large concern, and we constantly had to reduce scope as the app complexity continued to grow.
Accomplishments that we're proud of
Despite not shipping an AI Agent as part of our final product, we were able to pivot our project into what we believe is a very interesting application of generative AI. Developing a master prompt to complete summarization, filtering, and action suggestion all at once was very satisfying. This was many of our first times dealing with OpenAI's API library, to which we were able to proceed successfully with.
What we learned
- AI can be very hit or miss
- Prompt engineering and considering all cases is extremely important when dealing with LLMs
- Scope creep sucks
- Spend less time finding the perfect project and spend that time perfecting a good project.
What's next for Maia
We were able to implement two other significant features for Maia, but due to time constraints, were unable to refine the features into acceptable functionality.
Here's a few plans we had for Maia! (Definitely wasn't part of scope creep):
- Web searching via Perplexity AI, allowing for richer task suggestions and more specific generated links (implemented but not refined)
- Passive recommendations, which would gain overarching context across all connected platforms, and find patterns and suggestions for the user outside of any actionable tasks. For example, it could recommend cookbooks at Indigo because of conversations it found with family members. (Implemented but not refined on the frontend)
- AI Agent, which would complete the suggested task for the user instead of the user needing to explicitly interact with the generated links. There are various implementations, but only time will tell how useful or consistent they will be in the future.
- Continued conversation, where a user can provide more direction or context to suggested tasks for more refined actions.
- Mobile app, allowing for more varied notification access.
- Link summarized notification back to original context origins.
Built With
- fastapi
- framer-motion
- gmail
- google-calendar
- javascript
- next.js
- openai
- perplexity
- python
- tailwind
- typescript
Log in or sign up for Devpost to join the conversation.