Mesa AI  banner

Mesa AI

21 devlogs
91h 5m 7s

Most AI study tools lack any curriculum rigour, where the quizzes and notes they generate often seem too general or just miss the mark. To solve this, Mesa AI was made for real test questions, where summary notes and quizzes are based on actual su…

Most AI study tools lack any curriculum rigour, where the quizzes and notes they generate often seem too general or just miss the mark. To solve this, Mesa AI was made for real test questions, where summary notes and quizzes are based on actual subject requirements. Quiz attempts are also marked instantly, giving you direct feedback. This was a side project I’ve developed throughout my first semester and Flavourtown. Check out the demo to try it out now for freeeeeeeeeeee!!! (I appreciate your support ;p)

This project uses AI

GitHub Copilot for debugging and solving TypeScript errors, along with creating utility functions like relativeTime. Also used auto-completion to speed up coding time. v0 was used for the design of the landing page. All other art and pages are hand-written, including the README.

Demo Repository

Loading README...

Qi An

Shipped this project!

Hours: 91.09
Cookies: 🍪 1857
Multiplier: 20.38 cookies/hr

All the projects and tests drowned me towards the end, but at least I managed to ship! I would love to have added flashcards and podcasts to notebooks, but I really ran out of time :(

Notebooks are still a great way to learn with AI, though! Quizzes seem sufficient for me, and they save progress on the go. The reason why this project took so long was that I was trying to learn how to use more industry tools, like better-auth and neon postgres db. Additionally, this project is quite large with tons of server actions running entirely on NextJS server functions and React components to better organise how my project is written (instead of dumping it in 1 file and calling it a day). Pretty proud of how smooth Mesa AI works when Google cooperates (their api is in the drain rn)!

Qi An

Landing page!

  • Unfortunate I ran out of time, so the basic design of the landing page was made with v0 😭
  • At least it isn’t gradient sloooppp! I can guarantee the rest of the app is human written though.
  • Anyways it looks really pretty, but since i’m on a time crunch, redesigning it myself would probably be in a future update.

This is gonna be the last devlog before I ship. Fingers crossed! 🤞

Attachment
Attachment
Attachment
Attachment
0
Qi An

Tutorial 🚀

  • Added an onboarding tutorial (watch the video) that guides new users on how to use Mesa AI
  • Some performance bumps with images and unused imports
  • Also added class settings
  • Finally, added a notice on the Gemini api being wildly unstable right now

Changelog

Attachment
0
Qi An

Account settings

  • Added the account settings dialog (finally)
  • Name can be edited now
  • Passwords can be changed
  • Social login can be managed
  • Passkey support too!

Social login and passkey both extend to the login and signup pages, making logging into Mesa AI even easier.

  • Also started migrating chat to openrouter (gemini API is giving me a ton of latency problems)
  • See if I have time to migrate notebooks too (needs more work, entirely new rag api has to be made)

Next up, class settings!

Attachment
Attachment
Attachment
0
Qi An

Housekeeping! 🧺

Fixed up most dead links and added WIP notices to every feature not done yet.

  • Included a beautiful beta update notice that shows only once!
  • Will be used to show an update log in the future.
  • Additionally added admin and passkey plugins for use later on

Changelog

Attachment
Attachment
0
Qi An

Mobile friendly!

  • Made Mesa AI finally visible on small devices. While the experience isn’t optimal, it’s finally possible to view notebooks and chats on the go.
  • Social sign in such as google has also been added, and links automatically to existing accounts.

Next step would be working on proper account management and dashboard.

  • Due to time constraints, flashcards, podcasts and other features on notebooks will be added after flavourtown ends.
  • Topics would also be put on hold
  • Notebooks, quizzes and chats should already be sufficient to master topics! As of right now, Mesa AI is basically usable.
Attachment
Attachment
Attachment
Attachment
0
Qi An

Some tidying up… 🧹

  • Moved quiz stuff into the right folders
  • Completely migrated to class-based filestores instead of notebook-based, reducing cost and time.
  • Added all the colorsss!!! (There are i think 7 or 8 now)
  • Subject-based instructions: Notes or quizzes made with science now ask science questions. History notes now prioritise dates, etc.
    Gonna explore with a new drawing quiz type that allows you to submit a whiteboard for marking! Could be useful in calculation questions or well-annotated diagram questions.
Attachment
Attachment
0
Qi An

Quiz 📋

  • Added full quiz functionality!
  • Quiz attempts save, allowing you to view them anytime
  • There are 4 current types: multiple-choice, true-false, short-answer and long-answer (Quite self-explanatory)
  • Explanations are provided for all types, and AI marking is available for text types.
  • Future plans to add a drawing type that allows AI to mark drawing diagrams, or perhaps even mark rough workings.
  • Also plan to add subject specific instructions at some point.

For now, just see these beautiful screenshots of the brand new quiz interface!!!

Attachment
Attachment
Attachment
Attachment
0
Qi An

Notebook but better

No more janky cache, notebook now uses file search to semantically determine which chunks of a source is useful, reducing input token cost, latency and improve accuracy.

  • Combined with gemini-3.1-flash-lite-preview, notebook generation is significantly faster now.
  • Unfortunately the base gemini 3 flash model is still extremely broken hence i can’t test with that.
0
Qi An

Chat is mostly done!

  • Chat is a better way to interact with AI on your uploaded notes. With chat, you can easily start conversations on the go.
  • Full fallback model management (demonstrated in the 2nd attempt). When a model takes too long (gemini 3 flash cause of some weird google issues rn), Mesa will fallback to gemini 2.5, and then finally chat gpt.
  • Subject-based instructions and study modes (Homework, Tutor, Answers) will be next on the todo list.
  • Will also add auto-generated chat names soon.

Filesearch API

I apparantly missed this out when planning notebook. Apparantly google has a built in RAG system that can choose portions of the sources to look at instead of me having to send all of the files at once.

Based on some quick tests, most of the processing is now done on upload (about 30s?) while queries and followup questions would take only 5-10s (on gemini 2). Haven’t implemented this in the notebook logic yet though.

Changelog

Attachment
Attachment
Attachment
Attachment
0
Qi An

Chaaaaat! 🗣️💬

  • Huge devlog cause i forgot to make one initially
    I finished up Chat in notebooks! Notebook chats now take all your sources along with the cache to answer simple questions regarding sources.

How to use: Something like summarising key concepts, or drafting a table of definitions would be perfect. Chats also save, and can be easily renamed or deleted.

  • Supports text, math and tables
  • Supports files directly uploaded or linked from Mesa Drive (You see how the drive works now!!!)
  • Syncs and uses notebook sources :p

⚠️ A little performance issue: Responses are taking FAR too long! Needs investigation, but gemini appears to be taking well over 30 seconds to even start generating a response.

Also worked a little on standalone chats which are just chats that aren’t attach to a notebook, and takes in sources manually. Will have different modes for different tasks, like guided learning, homework, getting answers, or general queries.

Took really long cause ui is kinda hard to figure out man, especially with my janky solution with google cache :(

Attachment
Attachment
0
Qi An

Another notebook update

  • Actually made the notebook page show a list of notebooks (will be image instead of an orange box)
  • Solved tons of bugs, including sending the same files twice on every generation! Cut time down to about 30s as compared to 1min+
  • Polished up file selector UI
  • Added note length selector too!

Will work on chats next, including hopefully uploading files (need to find a way to do it)

Attachment
Attachment
Attachment
0
Qi An

Notebook is almost there!

Refactored most of the notebook code to better mirror the way i coded drive.

Also had to switch everything to new types, especially the new file type since files are linked to mesa drive now. Made sure the fundemental notebook functions still work (probably buggy)

  • Will update the mesa drive selector to be bigger and support more actions like uploading files directly.

Anyhow here’s a screenshot after 2 hours of editing like 20 files 😭

Attachment
0
Qi An

Oops, hotifx :p (for drive)

Forgot to make files class-specific! Also fixed/changed move item dialog:

  • Added creating folders
  • Fixed moving to root drive and moving to same place
  • Removed the ability to move to iself
  • Removed open from row actions (too buggy)

Also started working on the file selector that will be used by notebooks. Don’t have any screenshots yet though

Attachment
Attachment
0
Qi An

Mesa Drive is now done!

I should REALLY make more regular devlogs but here we go anyways:

Intention/Context

Mesa Drive allows users to easily organise all source material, such as class notes, slides, summaries, etc. Websites may come in the future.

These source materials will be in a many to many relationship with notebooks, flashcards and quizzes. Allows for sources to be renamed, moved, or deleted easily.

Full CRUD functionality

From the previous devlog, I’ve finished creating, reading, updating and deleting of folders and files. Folders are just 0 byte files, while files have a parentId linked to folder ids.

Will hopefully be able to add drag and drop at some point and also adding from Google Drive!

Next steps

Implement the new FileBrowser with notebook sources. This will be the first step into storing notebooks.
When files can be linked, notebooks storing can be done easier and lay the groundwork for the storing of chats, flashcards and quizzes.

** Nerdy details:**
Notebooks and files will be in a many-to-many relationship such that notebooks can have multiple files, and files can be linked to multiple notebooks.

Till next time :D

0
Qi An

Mesa.. Drive??

Laying the groundwork for Mesa Drive, which will store all the user’s notes, slides, and documents. These are real files, not the arbitrary library files like flashcards or quizzes.

  • Reworked the file system. Files are uploaded to R2, and an accompanying file row is added to files in the database.
  • This ensures that renaming or deleting files when they are eventually linked to topics won’t lead to any conflicts.
  • Also reduces calls to r2 which can get pricey!

Right now, only folder creation works. I’ll be working on uploading and actually navigating through folders in my next devlog.

Attachment
0
Qi An

Notebook, classes and topics

Forgive me, but I completely forgot about devlogging 😭.

Firstly, notebook

The past week,

  • I’ve added preliminary chat to the notebook, allowing you to ask questions about your sources.
  • Along with that, files are cached for 15 mins on Google’s servers. Initially it costs more, but due to the high frequency the files were be used by ai, it ends up being a cost saving!
  • Also added sick new animations to show topics being generated and automatically embedding images :)

Some concerns: It’s considerably slower than before. I’m still working on finding out why.
Since I was away from home, I forgot to link hackatime up and only realised when i was done (it took like 5 hours)

Classes

The temporary dashboard works now. Had to write an icon picker for Lucide with the help of AI (I’m being honest) cause i was really confused about what React-Window actually does. I made the search function myself, though!

Creating and deleting classes also works, along with a beautiful class sidebar that collapses to icons.

Topics

Again, only added creating and deleting topics. Can be done through the sidebar for now

Next steps

Linking notebook creation to classes and managing notebooks by class. May also want to link them to topics at some point.

Attachment
Attachment
Attachment
0
Qi An

Mesa Notebook isn’t just a mockup anymore! It works by uploading sources, then generating a summary. Only the summary notes works, tools are still wip.


The summary will be customisable in the next devlog, allowing users to adjust note length, focus on specific topics, or simply use natural language to describe exactly how the notes should be.

Right now, the notebook doesn’t save, but sources persist. Will be added to each subject’s dashboard once I get the tools to work.

Until next time! 🚀

Attachment
0
Qi An

The demo is now an AI notebook, inspired by NotebookLM from Google.

  • Users will upload sources such as class notes or slides
  • AI automatically generates a set of notes (might be editable, haven’t figured that out)
  • Users can use tools to make flashcards, podcasts that read out the notes, quizzes to test knowledge and finally chat to ask questions about the set of notes.
  • Ideally highlighting certain lines can also trigger the chat input.
    .
    Uploading sources works with Cloudflare R2, and that’s about all that works right now :( Will be working on the notebook panel next!
Attachment
0
Qi An

Worked on a temporary dashboard that currently displays mock data, and a test demo to figure out prompts before I actually work on the quiz UI.

Have to work around vercel’s serverless function payload limit preventing me from uploading files in production, so I’ll have to explore cloudflare r2 for that. Would likely be the base for the document manager later on!

Attachment
Attachment
0
Qi An

The start 🚩


This project was started to help students, like myself, cope with numerous content-heavy subjects.

Considering current LLMs’ rather incredible context length and reasoning skills, I found it is the best time create an “AI tutor” of sorts, as a gap between self-study and a real teacher. It is in no capacity meant to replace school or classes, but rather help students digest information effectively.

Goal setting

The goal for this project is to aid students in grasping content-heavy subjects by providing adaptive learning (challenges are generated on the fly to better suit each learner’s profile) and AI-powered memorisation tools like flashcards, quizzes, and practice tests.

By the end of this project, I hope to have created a low-cost yet powerful AI learning tool to better assist struggling students with fewer resources or heavier learning requirements.

Everything else

Anyways, here’s what I did in this devlog:

  1. Started the Nextjs project
  2. Linked a Neon database
  3. Set up better-auth authentication with email verification and sign up

I’ll be tackling sign in and a dashboard in the next devlog. Check the attachment for some Figma leaks!

Attachment
Attachment
0