Activity

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
Qi An

Shipped this project!

Hours: 8.15
Cookies: 🍪 169
Multiplier: 20.7 cookies/hr

ESDF is a small app that allows anyone to remap keys, such as WASD to ESDF. It is made in Python, and compiled to an exe. This idea was for my friend who broke their W key and had to play Roblox on the arrow keys, which can be quite tedious since Roblox currently doesn’t offer any way to remap movement keys.

While Python is easy to code, it can be slightly inefficient, but I believe the performance drawbacks are quite negligible. Would also like to make the settings UI native in the future, and add more game selection. Overall, I think this ship was a success!

Qi An

Rather big devlog, but here’s a rough breakdown of what I finished:

  • Keybinds (f8) to toggle between on and off!
  • ESDF can now turn on automatically when you launch a selected game (from the settings panel)
  • Icon in the system tray shows status
  • Settings and custom presets are now persistent
  • Launches on boot 🚀
  • Compiled app to a windows exe (app only works on windows right now)
Attachment
Attachment
0
Qi An

The settings UI is now fully functional and persistent! Configurations now save between restarts. Doing this in plain HTML is quite a chore, and the code is a little messy, but I guess it works anyways :/

Will work on the core functionality of the app (which is to remap keys) soon. Already experimented with a library and have a rough idea of how to make it all work together. Gonna be in the next devlog though

0
Qi An

Decided on the tech stack and designed the UI! The app will run on Python and use PythonWebview to show a web-based UI. In addition, there’s a tray icon for easy access that would enable or disable the app.

The idea would be to have predefined or custom presets that activate automatically when a selected game is launched. This behaviour can be changed to always activate when the app is launched or only activate when the tray is clicked.

Attachment
0