# Projects by Manuel Cárdenas Prieto

> Small-model fine-tuning, AI agents, and research on AI and learning at Stanford. Previously an EdTech founder and math teacher.

## Now

<a id="coversatio"></a>

### Coversatio: an AI interview simulator

I benchmarked speech-to-text, text-to-speech, and LLM combinations to find the best balance of quality, latency, and cost. I also built the harness the interview agent runs on: an interviewer LLM paired with a validator LLM that keeps the interview on track. [Try a behavioral interview](https://coversatio.com/demo/behavioral).

<a id="drc-explorer"></a>

### DRC Explorer: a fully local AI agent (LFM 2.5 2.6b)

With [Prof. Jef Caers](https://profiles.stanford.edu/jef-caers), I'm building an agent that helps the government of the Democratic Republic of Congo (DRC) navigate 505 mining contracts and 4,618 ministerial legal acts. The documents can't leave the country's own hardware, so every model runs locally.

I first built a 150-question benchmark to compare models on accuracy and speed, which led us to LFM-2.5-2.6B. Liquid's d1-ultra decision model grades the answers, with a code check on citations. I built the harness loop and created custom tools for this small model to navigate the full corpus. It answers about a third of the benchmark: around 60% of the simpler questions (finding a contract, reading one document), but almost none of the questions that combine several documents. I'm now fine-tuning it on exactly those.

<a id="ai-and-learning"></a>

### How AI assistance affects learning across Bloom's taxonomy

I'm working on a paper with [Prof. Hari Subramonyam](https://profiles.stanford.edu/hariharan-subramonyam) that analyzes when generative AI supports learning and when it replaces the thinking you need to learn.

We compare people working with and without AI at three levels of Bloom's taxonomy: understand, analyze, and create. Afterwards we test everyone without AI: how much they remember, whether they understood the causes, and whether they can apply what they learned to new problems. Our hypothesis: AI boosts learning on creative tasks, but hurts it on typical school tasks like summarizing or analyzing a system.

I built the research platform the study runs on and developed the study materials, ready for up to 480 participants.

<a id="chessllm"></a>

### ChessLLM: teaching small models to play chess

My playground for learning post-training by doing it. I started with LFM2.5-1.2B solving puzzles: SFT, then GRPO with a curriculum and a process reward from a tagger I trained to fact-check its reasoning ([try the tagger](https://www.manoletre.com/chess/tagger)). Every version topped out near 15% of puzzles (and RL learned to game the reward), so I switched to Liquid's d1 decision models, trained with DAgger and with SFT on millions of Stockfish-labelled positions.

The best so far, d1-omni-600M, beats Stockfish at 1700 Elo 62.5% of the time with a small search, and solves 60% of my puzzle benchmark. [Play chess against it](https://www.manoletre.com/chess/d1) in your browser.

I wrote up [everything I tried and what worked](https://www.manoletre.com/chess.md). The models are on Hugging Face ([chess model](https://huggingface.co/manoletre/d1-omni-600M-chess), [tagger](https://huggingface.co/manoletre/chess-move-tagger)) and the code on GitHub ([chessLLM](https://github.com/manoletre/chessLLM), [tagger](https://github.com/manoletre/chess-moves-from-text)).

<a id="brief"></a>

### brief: a shared memory that keeps you accountable

I run several agents a day (grok bot, claude code, “normal” claude, etc.). Brief is a local MCP server they all write to: what I decided, built, got stuck on or learned.

Every morning, Brief starts an agent using my local claude CLI and compares that log with my objectives and writes me a blunt brief: what to do more of, less of, or stop, plus what to do today and some paper or article recommendations based on my work + objectives. Everything stays on my Mac. [It's open source](https://github.com/manoletre/brief).

<a id="explainer-video"></a>

### explainer-video: A Claude Code skill that turns a paper into a narrated explainer video.

It researches the paper or source that I mention, writes the script, animates it with ManimGX and voices it offline with LFM2.5-Audio, keeping the take whose transcript best matches the script. I use it to learn and understand the methods I try in my projects. [Get the skill on GitHub](https://github.com/manoletre/explainer-video), or watch two videos it made: [DAgger](https://github.com/manoletre/explainer-video/releases/download/v0.1.0/DAggerExplainer.mp4) and [Self-Evolving Curriculum](https://github.com/manoletre/explainer-video/releases/download/v0.1.0/SECExplainer.mp4).

## Stanford coursework

<a id="cs234"></a>

### Teaching a small model to make math animations

*CS234 · Reinforcement Learning*

I trained Qwen2.5-Coder-3B to turn a plain-language brief into [Manim](https://www.manim.community/) code, the library behind 3Blue1Brown's videos. Out of the box, only 2.5% of its code rendered into a video.

I built the instruction dataset, then generated examples with gemini-3-flash to improve the model manim generation via SFT, then ran DPO on preference pairs sampled from the SFT model. Together, SFT and DPO raised the share of code that actually renders into a video 10×, from 2.5% to 25%.

More in [the poster](https://www.manoletre.com/CS234_-_Poster.pdf) and [the code](https://github.com/manoletre/cs234).

<a id="cs231n"></a>

### Predicting school performance from satellite imagery

*CS231n · Deep Learning for Computer Vision*

I collected close-up and wide-area satellite imagery for every high school in Colombia, fixing wrong official coordinates along the way. Then I fine-tuned two vision transformers, combined by a stacking model, to predict whether a school scores above average on Colombia's national exam. It's right 75% of the time, and 66% when comparing only schools with similar socioeconomic backgrounds.

More in [the poster](https://www.manoletre.com/cs231n-final-poster.pdf) and [the code](https://github.com/manoletre/cs231n).

<a id="cs229"></a>

### Predicting when a small LLM hallucinates

*CS229 · Machine Learning*

With Carl Liu, I trained classifiers that predict when Liquid AI's LFM2-1.2B hallucinates. We quizzed it on [TriviaQA](https://huggingface.co/datasets/mandarjoshi/trivia_qa) and recorded its attention activations, final-layer signals and token probabilities for every answer. Token probabilities were the most accurate signal.

We also looked at which of these signals are still available when the model is quantized, which matters if you want to use the classifier in deployment.

More in [the poster](https://www.manoletre.com/CS229_poster_4x3_final.pdf) and [the code](https://github.com/manoletre/cs229-project).

## Before Stanford

<a id="hablopro"></a>

### Hablo.pro: a voice-first language tutor

My mom wanted to practice English, I wanted to practice Japanese, and OpenAI had just released its first realtime voice model. So I built a tutor you learn languages by talking. [Open hablo.pro](https://hablo.pro/) to try it.

It launched as the [#1 education product of the week on Product Hunt](https://www.producthunt.com/products/hablo-pro) and won its first paying subscribers. I paused the project when I started at Stanford. It taught me how to ship a consumer product, listen to users, and build software that actually teaches. [The code is on GitHub](https://github.com/manoletre/hablopro-speak).

<a id="educo"></a>

### Educo: generative AI for teachers

As the technical founder I built generative AI tools for schools, from a lesson-planning assistant for teachers to a WhatsApp tutor for students that gained early traction.

We raised $100k from [Platanus Ventures](https://platan.us), a Chilean accelerator that backs ~1% of applicants. After a year and a half I moved on, with a hard-earned lesson in selling to schools, where the buyer (the principal) isn't the user (teachers and students).

<a id="teaching"></a>

### Math teacher

I learned how to hold the attention of an audience that will do anything but listen. I loved teaching and seeing the impact of my work first hand.

<a id="techdalo"></a>

### Techdalo: financing technical education for Colombian youth

Alongside my CS degree, I co-founded Techdalo. We raised $15k to fund technical courses for young Colombians, then helped them land jobs afterwards. I led an international team of 11 volunteers: 3 in Colombia and 8 in Germany.
