Abhimanyu Prasad
ResearchOpen sourceProjectsAbout

Projects

PURVA

What it is: Bhojpuri sentiment resources built from AI-model disagreement.

Why I built it: Bhojpuri has tens of millions of speakers and almost no labelled data.

What I did: I built the pipeline, collected the text, ran the open-model committee on free GPUs, and released a model and a dataset.

My role: Lead. Prof. Deepak Kumar Rakesh (NIT Bhopal) mentored the work. Dr. Amit Kumar joined through Prof. Rakesh and reviewed an early draft, then left the project voluntarily.

Builds on: Bhojpuri sentiment models · Led to: Stanza Bhojpuri

2,100+ downloads (across all my models and datasets)

11 Bhojpuri websitesCollect, clean, deduplicateCheck language ID by handFive models label every sentenceCombine votes: majority vote and Dawid-SkeneHuman check on a held-out test setTrain classifiers, release everything
From the PURVA repository README.
Code↗bhojpuri-sentiment-model↗Bhojpuri-Behavioral-Corpus-8K↗

Axiom OS

What it is: A bare-metal Rust kernel that checks a file's integrity every time it is read, not just once at boot.

Why I built it: A file can be changed after it has been checked.

What I did: I built on Philipp Oppermann's blog_os tutorial. I learned Rust in 2024 and started the kernel offline in 2025. I added per-read checking, then per-block Merkle checking.

Design guidance: Prof. Subodh Kumar (IIT Delhi) guided the design by email over about two months. He pointed me to profiling with hardware performance counters, a Merkle tree, and checking per block with lazy updates. I wrote all the code.

Patent: An Indian patent application covers the per-read checking method.

Led to: model-integrity-bench

Code↗

model-integrity-bench

What it is: The per-block checker from Axiom, applied to AI model files.

Why I built it: Model files can change on disk after they have been checked.

What I did: I built the checker and benchmarked it. The results are on the Research tab under the IEEE AIoT workshop paper.

My role: Sole developer.

Builds on: Axiom OS · Led to: IEEE AIoT paper, Patent application

1 µs100 µs10 ms2.8 µs146 µsDTLN0.36 MiB2.6 µs6.1 msMobileNetV213.3 MiB2.8 µs45 msResNet-5097.8 MiB
Yellow: one checked 4 KiB block. Dark: hashing the whole file. Log scale, laptop (Intel i5-5200U).
Code↗
Shipped

tokcost

What it is: A small Rust command-line tool that counts tokens and estimates LLM cost locally.

Why I built it: I saw my father's office spend money on LLM tokens without knowing how many it used.

What I did: I wrote it and published it on crates.io (version 0.1.0).

My role: Sole developer.

crates.io↗Code↗

ShodhX Research

What it is: A GitHub organization an earlier collaborator and I use for shared research code. It is not a registered organization.

Why I built it: So joint projects like PURVA have one home that isn't tied to one person's account.

My role: Co-founder.

GitHub↗

Tokenizer cost for Bhojpuri and Maithili

What it is: A study, in progress, with a PhD collaborator. Across 9 tokenizers on FLORES-200, Bhojpuri costs about 1.2× and Maithili about 1.3× as many tokens per word as Hindi under Indic-trained tokenizers.

Why I built it: Bhojpuri and Maithili cost more tokens per word than Hindi, which means more compute and money for the same sentence.

What I did: Measured how many tokens each word costs in Bhojpuri, Maithili, Hindi, Marathi, Nepali and English, across 9 tokenizers, on the 1,012 parallel sentences of FLORES-200. Checked that the languages have the same characters per word, so the gap isn't caused by longer words.

My role: I built the measurement scripts and ran the analysis.

Builds on: Stanza Bhojpuri · Led to: PURVA paper (TMLR)

The repository is private.

Check my work