Inspiration

There are two problems I wanted to solve:

  1. I often find it hard to remember all the things I learn about on a daily basis unless I take notes and remember to look back at them later. I wanted a way to make it easier for me to remember these things.
  2. LLMs are great for education, but in most cases, they just sit around passively until you go out of your way to ask it a question. I wanted to use them more proactively, actively taking notes and preparing questions for me without me needing to do anything extra on my end.

What it does

Goose keeps track of all the websites you visit. Whenever you visit one that looks like a learning resource that you might want to remember, it generates notes and practice problems in the background. It also keeps track of when you initially learned each topic in order to suggest when to revisit the topics using spaced repetition to help with long-term memory.

How I built it

Goose consists of three parts, all of which can be run locally: the backend, frontend, and Chrome extension.

The Chrome extension plays a very simple role, just forwarding the URLs that the user visits to the backend.

The backend was built using FastAPI. It uses a SQLite database to keep track of questions and stores notes as files on the user's system (meaning the user could use a Markdown editor like Obsidian if they want to manually edit the notes). It keeps a queue of resources that need to be processed; webpages that are not for learning are ignored. For each resource, it goes through the following process:

  1. The webpage is converted to Markdown using Markdowner.
  2. A gpt-oss-20b agent, implemented using the OpenAI Agents SDK, summarizes the webpage and uses tools to update or create new notes as necessary. The model runs locally using LM Studio and LiteLLM is used to connect the Agents SDK to the LM Studio server.
  3. Another gpt-oss-20b agent generates practice questions for the updated notes and stores them in the SQLite database.

The frontend is built using Next.js (generated using Orchids). It keeps track of the daily streak and which reviews have been completed using the browser's local storage.

Challenges I ran into

Giving the agents the right tools and prompts to work efficiently and generate good notes took a while, but I'm pretty happy with how it ended up.

Accomplishments that I'm proud of

I built this in 1 day which was pretty cool and fun to do! I also limited my AI use on the backend to make sure I got a good understanding of how to connect to locally-running models and how to set up agents.

What I learned

I learned how to use FastAPI (never used it before). I also learned how to run a model locally and use it for agentic tasks.

What's next for Goose

Some cool features would be:

  • hyperlinking between notes
  • support for non-Chrome browsers
  • instead of operating in the browser, operating natively on the computer so that it can take notes on PDFs you view too
  • sharing notes

Built With

Share this project:

Updates