GSoC 2026: Proposal Draft: AI-Generated note graphs

Hi, I'm preparing a proposal for the AI-Generated note graphs project (#2 on the ideas list).

I've been contributing to Joplin for the past few weeks, some of those prs are

  • #14401: Error logged on first startup
  • #14411: Remove empty hidden divs from ENEX imports
  • #14449: Store note history settings in sync info
  • #14535: Call unmount in Note.test.tsx tests to suppress act warnings
  • #14557: Invisible cursor in legacy editor when using dark theme in separate window
  • #14642: ENEX import no longer breaks bullet items with a line break into separate paragraphs
  • #14703: Validate password on re-enable encryption after master password cleared

This work touches different packages so I've built a solid understanding of how the Joplin codebase is structured.

So for this upcoming project, after looking at how Joplin's architecture works, I'm going with a Joplin plugin approach rather than integrating it into the core app. I’m going with plugin approach because Joplin's plugin system already has first-class support for exactly this kind of thing, the plugin Data API gives us everything we need and this approach will keeps AI dependencies out of the core.

The important part for this project is how AI Analysis needs to be done for notes. I came up with optimal approach where:

First pass with embeddings: to quickly cluster notes and compute similarity edges. This is cheap and can be done locally.

Second pass with LLM: only for high-similarity pairs and within-cluster analysis. This is where we get the rich labels and descriptions. By pre-filtering with embeddings, we dramatically reduce the number of LLM calls needed.
(This is the topic I need more thoughts and feedback on)

Before creating a final proposal and PoC I would love to hear thoughts on scope, preferred architecture or if someone suggests core feature, why core over plugin approach is better.

1 Like

Hello, we've recently updated the template for GSoC draft proposals. Please update your post as described here:

2 Likes