I built a native FSRS algorithm for Obsidian with AI flashcard generation

Hi everyone, Lucas here.

I come from the Anki world. For years, I swore by spaced repetition. It works. But I eventually hit a wall: Anki has no context. I was memorizing isolated facts effectively, but I was losing the bigger picture. The cards felt disconnected from where I actually did my thinking.

So, I migrated to Obsidian to keep my knowledge connected. Naturally, I tried to bridge the two using the popular Obsidian_to_Anki plugin.

It was a pain in the ass.

Trying to format flashcards directly inside Markdown files was a nightmare. I hated cluttering my notes with specific syntax, regex, or HTML tags just to get a card to show up. It felt fragile and messy. That is why I don’t like Remnote or Logseq. A note is a note, and a flashcard is a flashcard; we need to differentiate them.

I realized that if I wanted a smooth workflow, I needed the best of both worlds: Obsidian for the notes but an Anki-style backend for the cards.

So, I started building True Recall.

It’s a project in progress designed to bring a native, high-performance FSRS experience directly into your vault, but without polluting your Markdown files, simple import and export to Anki, etc.

Here is what it looks like currently:

r/ObsidianMD - I built a native FSRS algorithm for Obsidian with AI flashcard generation|750xauto

r/ObsidianMD - I built a native FSRS algorithm for Obsidian with AI flashcard generation|750xauto

How it works (and why I used SQLite)

Instead of forcing you to write cards inside your text files, I decided to use SQLite (the same approach Anki uses).

Clean Notes: Your Markdown stays clean. No regex or weird syntax required.

Linked Context: Each note creates its own ā€œdeckā€ of flashcards (you can still have more decks). When you review, you can instantly jump to the source note if you forget the context.

Key Features

- FSRS v6 Algorithm: I skipped the older algorithms. I’m implementing the latest FSRS v6 for maximum scheduling efficiency.

  • AI Generation: Since manual card creation is friction, I added an AI layer to generate conceptual questions automatically. Don’t worry, I know what I’m doing here; it’s not the same prompt as everywhere for flashcard making. I follow SuperMemo’s 20 rules and my own methodology.
  • Local-First: It runs locally in your vault.

I want to be transparent: This is very much an active beta. I’m building this daily to solve my own frustration with the context switching. There are still rough edges, but if you are tired of looking, this might be for you.

Is it free? (Open Source approach)

I want to be completely transparent about how this works, because I hate hidden costs as much as you do.

The Core is Free & Open Source: The plugin client is open source. You can create manual cards (later BYOK), use the full FSRS v6 scheduler, and review your cards locally inside Obsidian for free, forever.

Optional Cloud Features: There are paid features, but only for things that cost me server money: Cloud Sync and AI Generation.

No Lock-in: Since it’s local-first (SQLite), your data is yours.

This is a passion project to solve my own frustration with context switching. There are still rough edges, but if you are tired of looking for a clean SRS solution, this might be for you.

I’m looking for feedback from fellow users who want a cleaner way to do SRS.

https://www.truerecall.app/

Happy learning! Lucas

1 Like

You have no product. Why bother with all these bad marketing AI-slop? I like the storytelling and website theme though.

  • FSRS is free: Open Spaced Repetition Ā· GitHub. There are many plugins using it, like obsidian-better-recall. Even more can be found on obsidian.md/plugins.

  • Your website is comparing apples to oranges, which is pushing smart people away.

  • Why would anyone pay $120 per year to generate Anki cards via your server, if that is 1) not reliable; 2) can be done via free plugins just using paid providers; 3) can be done locally for free (via llama)?

  • SuperMemo’s 20 rules and my own methodology — I bet many plugins already do this. It can’t be the value proposition

  • Cloud Sync — as I see it, SQLite is an embedded database which can be used here for indexes and compression. Great! You first create an advantage of being ā€˜fast’ but then negate it by forcing users to pay for cloud sync. There is no need in cloud sync, if the cards and your runs are stored in a plenty of log_{date}_{device}.json, which then be used to rebuild an sqlite database on each start.

Your comment is the most valuable comment I have received about this plugin. Thank you so much for the best feedback. Now I know what I’ve done wrong; I will send you an update when I finish :slight_smile:

I know the way I presented this add-on was flawed; I was thinking more about the proper marketing than presenting the program itself. Lesson learned!

BTW, I need to rectify some points.

The plugin works perfectly offline without cloud sync, is fully functional as a standalone local app, BUT if you want to synchronize data and be up to date between many devices (including mobile phones), you have two options.

  1. Use your own server,
  2. Subscription model with my solution.

SQLite is the authoritative data source, not a cache or index. Users are not forced to pay for cloud sync; the plugin is fully functional as a standalone local application. The log file approach is technically feasible but has significant performance and complexity trade-offs