Uxie is a free and open-source pdf reader with note-taking, annotations, collaboration, AI features (chat, flashcard generation with AI feedback), text-to-speech, OCR, and more. You can try it out or check the code.
Picture this: new sem just started, and you're already drowning in PDFs. Lectures, assignments, scanned notes, random textbook pages, all dumped into random folders. Then come the quizzes, midsems, endsems, with the same topic over and over again. You know you'll need proper notes later. So what do you do? Highlight some text, screenshot a few diagrams, copy-paste them into an app like Notion, then hope future-you can find it all during finals. It (kinda) works, but everything feels scattered. Notes are disconnected from the source, and organisation is just vibes at that point.
This started bothering me back in my first year. I really wanted a better way to study. I'm someone obsessed with finding the right tool for every little task (if you're curious, here's my whole setup). I tried every PDF reader app I could find. The closest I got to what I wanted was Highlights. Clean UI, worked really well. But a lot of useful features were behind a paywall, and most of the other decent web / electron apps used a library called react-pdf, which has this really annoying bug (super cool lib except for this 1 issue).
I really wanted to build a better one, but having zero coding experience, I figured someone else would eventually do it. But the thought never left me. A couple of years later, I had picked up full-stack dev, built a few apps, done a few internships. Around then, my uni launched a hackathon event called BuildSchool, a 10-week program where students pitch ideas, 10 teams get selected, and it ends with a big demo day.
Fun fact: we'd placed third in BuildSchool the year before with an app called Mentora.
It felt like the perfect chance, with chatgpt and gen-ai exploding everywhere, I knew I could build something more than just a PDF reader. I'd already seen apps that only did flashcards, or just AI chat, or only PDF annotations, and they were all doing really well. So I thought, why not combine all of that into one clean, nice experience? We pitched the idea, a PDF reader with annotations, note-taking and AI features, and got selected.
We called it Uxie, named after the knowledge pokémon. (credit to Theo for the idea of naming side projects after pokémons. idk a thing about pokémon, but i love this way of naming things haha)
About a week after getting selected, our university held a separate event, a 24-hour hackathon. One of the problem statements was vaguely close to what we had in mind for uxie. Not the same, but close enough to take a shot. We knew it probably would hurt our chances of winning the hackathon, but figured it was a good excuse to start building. So we went for it.
24 hours later, we built a decent product, it was rough, the UI was super basic, we skipped things like optimistic updates (highlighting text took a few seconds to reflect). But it worked. And somehow, we actually placed second! The judges really liked the idea, even with how clunky the product was.
That was all the validation we needed. If people liked it in that state, we knew we were onto something. We grinded so hard, we spent the next few weeks building out a much better version, fixed a ton of stuff, added features, and the mid-demo day program went really well.
But the final demo day didn't go as well as we hoped. Bunch of AI provider issues, we hit all sorts of rate limits, had to show pre-recorded demos. We placed second, which was cool, but it hurt. We knew the product deserved better.
I absolutely loved the product and wanted to keep improving it. I would literally be using Uxie to read something, get an idea, and i'd immediately go build it. It was super chaotic, but fun. Life got busy for a while, but a few months later I came back to the project and started fixing all the rough edges.
I added flashcard generation with AI feedback, built a text-to-speech feature that highlights the current sentence as it reads (easily the most time I've spent on a single feature, but super happy with how it turned out, still has a few issues. source code for that part if you're curious), added PDF background colors for readability, and kept polishing things bit by bit.
All of this was built by me, with very little help from ai (just copilot completions, ughh things were so much better when it was just that). Lately though (post opus-4.5), I've been shipping a ton of new features, mostly with ai doing the heavy lifting and me reprompting / making minor edits, getting it to output the way I want, with a lot of swearing at the llms (surprisingly effective).
As a result, shipped AI powered text-to-speech models running locally on webgpu with much better voice quality, bionic reading mode, rsvp reading mode, a "read-along" speech helper kind of tool that does TTS but in reverse, it'd highlights a word, uses local speech-to-text models, and only moves forward when the user says it correctly (also showing meaning / pronounciations / audio of it), helping users with reading and pronunciation, and a bunch of other cool stuff.
And some QoL improvements like: I have this habit where I keep clicking on lines while reading, and a lot of times they’re links, taking me to some other URL or a different section of the PDF, and I completely lose my flow. So I added a toggle in settings (entirely with ai) that disables links in the pdf completely. Tiny thing, but it saved me a surprising amount of time.
When it comes to building things, there's one quote I absolutely live by:
To make a product people love, you have to obsessively use it yourself. Deeply, properly, every single day.
I live by that. I’ve had tons of ideas in the past and even worked on a few, but nothing really stuck. This did, because it’s a problem i (and many people i know) keep facing.
That’s also where I feel a bit stuck now. I can’t, for the life of me, come up with a new idea I care about as much as uxie. Lately it’s started to feel like maybe the era of “just building another app” is fading. With ai getting this good, I keep coming back to the idea of personal software: small, oddly specific tools that solve very real problems in your own life, maybe a tiny “one second everyday” memory thing (like this), something super creative & fun.
Or maybe the next step would be pushing uxie further instead of starting something new. Maybe moving it to desktop or mobile (I mostly read on my iPad, though porting everything to react native sounds super painful, and the app approval process is… yeah), with everything happening locally: storage, highlights, embeddings, llms, all on device would be really fun.
Also I really want to build a proper offline document tts. I’ve been using Paper2Audio a bit and it’s v nice. Something similar, but with pdf highlighting w tts instead of the plain text version.
And now that LLMs are actually really good (never thought I’d ever say this out loud haha), all of this feels weirdly possible. Or maybe I should grind DSA and chill for a bit haha.
Anyways, today Uxie has 500+ active users (& around 200 stars on GitHub) and is easily the best thing I’ve built. It is fully open-source and free for anyone to use. What started off as a random itch I couldn't ignore somehow turned into something that actually helps people learn better.
Funny how that works.