I was teaching Biology, and I would see the same problem every year.
They all had textbooks. A few had coaching material, if their families could afford it. A very small number of students had random notes written somewhere privately. Almost none of them had a digital corpus created in a way that would help them learn Biology easily — notes that were made especially for their syllabus, for their level, by someone who has himself done a Board Exam.
I had literally years worth of those materials in handwritten form on various paper sheets and notebooks and even old lectures and teaching material — everything from junior to senior high school level in Biology and Chemistry. My problem wasn't that great material was non-existent. It was that it existed in only one format — it existed only on my sheets of papers handwritten by me, accessible to only those students who happen to be studying under me.
So I asked myself a simple question. How do I make all this stuff available to every single student, in every nook and cranny of the country, absolutely for free?
This entire project of BioNotes (bionotes.in) was born out of that single question. Everything else that I have done since then is simply trying to get a better answer to this question.
The Experiment: What If I Digitized Everything?
Being a teacher and an AI user myself, I realized early on that the introduction of AI into the field of education would revolutionize the way content is being reproduced on an industrial scale. However, there was one major difference between AI knowing biology and AI knowing how to teach a 14-year-old kid this particular syllabus.
By default, an AI algorithm does not understand the limitations of a syllabus. When faced with the task of explaining a particular concept, an AI will use its full knowledge and give a college-level explanation when you just need three sentences and a picture for a middle-schooler. An AI does not understand what exactly the board examiner expects from the student when answering this question. It has no intuition based on the experience of grading a few thousand of these answers previously.
I did not just leave it at that and generate content blindly. Instead, I used my personal handwritten notes to guide it through the process:
- Curriculum-based, page by page – creating the content strictly aligned to the boards' syllabi, not just to the general knowledge about biology. * Validating all the way – anytime the AI went out of the curriculum limits, I adjusted it. * Creating a question bank based on exam experience – I used my experience as a board examiner to create the questions at the right level of difficulty.
The whole process took six to seven months of daily efforts. This is the non-automated and time-consuming part of the story, but also the most crucial one since it explains why BioNotes are the curated educational materials and not just another AI-generated website for studying. Once the process was finished, I decided to make the content openly available in a public GitHub repository.
Building What Didn't Exist
GitHub raw markdown won’t help a student preparing for board examinations through a phone screen. I had to provide a reading experience that would be equivalent to a high-quality textbook and not to a programming document.
Firstly, I tried to find an easy solution. Obsidian is an excellent tool for note-taking. However, I could not possibly ask hundreds of students to set up a vault and plugins on their end. Notion is a widely used service, but it was running too slow on the low-end mobile devices that my students owned. Moreover, it did not have the features I needed.
Thus, I created what I needed to create. A special reader made with Next.js, Fumadocs, Tailwind, and MDX that runs on Cloudflare Pages from bionotes.in. It wasn’t the goal to develop the website; the main goal was to eliminate any obstacle that can make the student stop reading his notes.
It was the same approach remove the excuse, however insignificant that dictated nearly all future actions.
Text to Video: Meeting Students Where They Actually Study
Reading notes is one thing. Many topics in biology can hardly be understood without seeing how something happens. I wanted to have the curriculum available not only as text but as video too. Making videos by myself for each of several hundred chapters was not possible.
At first, it was not realistic, in any way. I ran my computer nonstop for nearly a month in order to render frames during all that time and manually generate thumbnails and sync to make a video library out of it. It did work, but it was definitely not a system — it was a person and a machine that operated right at their capacity.
I built that system: the open-source library create-easy-slide-videos atop of Remotion that allows you to compile markdown notes directly into slide videos. The entire pipeline is now on Hugging Face Spaces and narration is also automatically generated: biology news get scripted by Gemini, narrated by cloud-based TTS engine and synchronized with slides frame by frame, with the end product automatically uploaded to YouTube.
The idea here is not to prove some automation video pipeline. The idea is that a month of my time should not be the bottleneck between a lesson and a student who wants to view it.
Staying Free, Staying Online
It all began on Vercel, but as it progressed, it became clear to me the obvious dilemma: free hosting has its limitations, and any project that aims to stay free forever should not be dependent on limitations it might eventually outgrow. That is why all of it got migrated to an architecture that was designed to run completely within free tier and scale up without using servers. The entire site became a static export on Cloudflare Pages with builds being performed with GitHub Actions to overcome resource limitations of Cloudflare and with images being stored in a Hugging Face bucket to keep traffic on the main site close to zero.
There is nothing fancy about it. This is just how "free, forever" looks like when traffic comes.
The same reasoning led me to push the system even further, to an uptime guarantee that hobby projects do not usually need. I have implemented an edge routing layer – a Cloudflare Worker as a gateway – because I do not want the availability of the platform to depend on any particular host being available. In case of failure of the primary Cloudflare deployment, the traffic automatically switches through the Vercel mirror, then Netlify, and I get a Discord notification about the incident immediately. Pages are served from the edge with the help of caching static assets, and when the secondary mirror was faced with a hard file-size limit of its search index, I have written a build script that strips the index from it prior to deploying it, so that the mirror does not fail to build at all.
It is not a technical challenge which prompted me to develop this; although it is. This is the result of realizing that "biology education should be treated as public infrastructure" is just an empty slogan if this infrastructure becomes unavailable due to technical problems of some providers.
Making the Curriculum Legible to AI, Not Just Students
BioNotes currently has three interfaces to the same set of educational materials:
- A student reads it on the website. A student asks a bot about it on Telegram or Discord. An AI agent reads it as structured markdown.
This interface was created deliberately, not accidentally, since the modern-day AI bots have problems with crawling the websites full of JavaScript, and so I had to create a special pathway for them: a build process generates over 800 markdown files, and an agent requesting the page with Accept: text/markdown header receives it without rendering, along with llms.txt structure. This is all possible because of Pinecone vector index making this curriculum semantically searchable, and a remote MCP server making this index available for AI tools such as Claude and Cursor.
"It'd be easy to say 'I built an MCP server,'" there are many thousands of those now. Instead, what I built is less common: a teacher-curated, syllabus-based curriculum that AI systems could read, cite, and reason about without hallucinating outside of the bounds that I set up for it from the very beginning. That curation process from phase one is not done once the content is turned into something machine-readable; rather, it becomes even more important as an error in that material repeated by an AI to a thousand students in an instant becomes a much more significant problem than an error in material taught once by a teacher to a single student.
That same idea goes for the creation of diagrams as well. There are plenty of ideas that have a real spatial nature in Biology: pathways an electron takes through Photosystem II, a molecule's path through a cycle. So I created the ability for the system to reason over those diagrams structurally, breaking down those images into their constituent parts which are saved as graph relationships in Supabase, allowing a student or a bot to ask "trace this pathway" and getting back an explanation of the process along with an image with the pathway traced out rather than a paragraph trying to describe a picture.
Meeting Students Where They Already Are
Of course, those are the tools that live behind the website; two bots are present where the actual action is happening. On Telegram, a serverless bot helps students solve biology problems using the same Pinecone and graph search engines as the site does, answering voice and photograph textbook questions without collecting usage data on a tracker database. In the BioNotes Discord community, another bot helps students solve syllabus Q&As by querying the site's own search engine and summarizing the answer for the channel.
Neither of those is its own product, but rather the same curated curriculum accessible through the channel that the student uses.
Keeping the Lights On
Even the simplest and most lightweight system built on free hosting still requires someone monitoring it, which is why a few small automation scripts keep the system alive: emails sent to the domain are parsed and forwarded to a private Discord channel, video rendering Spaces are regularly pinged to avoid downtime, and a daily traffic/uptime report is sent to a small ESP32 e-ink screen placed on my desk.
What's Still Experimental
Some of what I'm working on now targets students the project was created for in the first place – those who lack reliable internet connection. I'm developing an offline-first version of the site that downloads the entire curriculum, benchmarking a more rapid runtime for the next iteration of the build, as well as an automated glossary of complex botanical terms with straightforward definitions attached. It hasn't been implemented yet, but the direction remains the same as the one the entire project was moving in since its very beginning – removing the next excuse.
Built to Outlive Any Single Service
If the goal of "free, forever" education really is that of providing free education to everyone for all time, then the concept of permanence becomes mandatory. Therefore, the codebase and curriculum are continuously mirrored through GitLab, Codeberg, and Bitbucket, as well as uploaded as static snapshots to Zenodo, the Internet Archive, and SourceForge. If the bionotes.in domain disappears tomorrow, whether due to domain lapping, shutdown of a hosting provider, or simply me personally going on a long holiday – the curriculum will remain accessible from publicly and permanently archived copies.
That is not a back-up plan. That is the actual point.
Biology for All
Stop memorizing. Start visualizing.
That was the teaching philosophy that guided the development of this project from its very beginnings, and that's the same teaching philosophy that guides it right until the end. Every single system mentioned above – the reader, the videos, edge routing, the bots, the AI layer, the archives – was developed solely for one reason: because a biology teacher understood that the good biology education should not be dependent on the financial standing of the students' families, and did whatever he had to do to keep it that way.
No matter where a student accesses the BioNotes – on a budget phone in a distant village, by asking the bot on Telegram, or by having AI tutor read the curriculum directly – the question raised in the beginning gets answered finally: the notes found their way to every corner for free.
Top comments (0)