Concept

General-purpose retrieval-augmented generation. Feed it knowledge, ask anything in natural language — the model never has to guess; it cites what you provided.
General-purpose RAG. Ingest URLs and files. Ask anything.

General-purpose retrieval-augmented generation. Feed it knowledge, ask anything in natural language — the model never has to guess; it cites what you provided.

Public URLs and local files (TXT, MD, PDF, DOCX) are parsed, chunked, and embedded into a single semantic vector store. Mixed sources, one knowledge base.

Built on MongoDB Atlas Vector Search with OpenAI-compatible embeddings. Answers stay grounded in the documents you fed it — sourced retrieval, no hallucinated facts.
Over 3,600 family photographs, behind one password.

A private vault for my family’s digitized photographs, more than 3,600 of them. The gallery lays them out in rows that keep every photo’s real proportions and draws them in batches as you scroll. Search and filters live in the URL, so any view can be shared. The screenshots show the public demo, which runs the same gallery on sample photos.

Open a photo and it fills the screen: zoom and pan by wheel, pinch or keyboard, swipe to the next one, with its neighbours already loaded. Each photo can carry a caption, a year and the people in it, and many photos can be edited at once.
There is no database: Cloudinary is the only store, and captions and people live as metadata on each photo. The password is kept as a scrypt hash and a visit is a signed session cookie; five failed attempts lock a client out for fifteen minutes. More than 560 unit tests and 200 end-to-end tests run against a mock of Cloudinary, and accessibility checks fail the run on any violation.
The battle was lost. The world is broken. You are what comes after.

The epic battle against the villain already happened. We lost. Half the kingdom fell; the capital is now the enemy’s fortress. This isn’t the rise of a hero — it’s what comes after the fall.

A turn-based JRPG with active timing. Combat is precise, deliberate, and doesn’t forgive complacency. Every encounter is a small declaration: this place is still worth fighting for.

Up to twenty-two playable heroes, each rooted in their own town. Recruit them as you push back through the country. Each carries the weight of a place — and that place’s expectations.

Liberate cities in the order you choose. Different routes meet different heroes, surface different stories, leave different scars. There is no canonical path.

Kintsugi: the art of repairing broken pottery with gold lacquer. The cracks remain visible, glowing. The world that was won’t be back, not entirely. What it becomes is on you.
In development. No public devlog yet — work on combat, narrative, and the first liberation arc is ongoing.