ANTON · my own pages
Looking for the app? praviel.com. PRAVIEL's other pages are further down, under What I am building.
AI/ML and software engineer in San Francisco. I build LLM systems, the software around them, and the tests that say whether either works.
- AI/ML and software engineer. Master's in artificial intelligence from the Institute of Science Tokyo, where I trained speech recognition models on supercomputers. Since then: production document AI at Quantiphi, LLM agents and jailbreak research at a small company of my own, and full-stack work from the backend to both app stores.
- Founder and lead engineer of PRAVIEL, a lessons-first app that teaches ancient languages as living, speakable systems. I designed it, I built it, and I run it.
- I publish small open-source tools: for engineers who build with language models (eval statistics, agent traces, PII masking, MCP linting), for developers at large, for speedrunners, and for anyone who wants to know what time it is in Babylon. They are below, under Opera minora.
- I send fixes to other people's projects too, among them Luau and raylib. All my pull requests, live.
- Native in English, Russian, and Ukrainian; Japanese earned over four years in Tokyo; Chinese barely past counting to ten. Five living languages is decent training for reviving the silent ones, which these days I am learning myself: Latin, Ancient Greek, Hebrew, Sanskrit, and the rest of the syllabus.
- I care about evidence, provenance, and shipping. Order depends on the day.
- In San Francisco, in person. Open to AI/ML and software engineering work, full time or contract, and always open to a conversation about languages. anton@praviel.com
PRAVIEL rests on one small heresy: the old languages are not dead, only unspoken, and unspoken is a curable condition. My test for a lesson is plain: not whether you can parse an old language, but whether you can say it aloud and be understood.
Under the hood: one Flutter and Dart codebase carries the app to iPhone, Android, and the web; the marketing site is Next.js on Node at praviel.com; the AI tutors keep their sources in order. The languages remain the hard part.
Also on the bench. A private research stack for systematic trading, under QuantGenAI: seven repositories that keep market data, research, laboratory, execution, and monitoring apart, with versioned contracts between them and a risk kernel allowed to refuse anything the laboratory approved. The interesting part is not a strategy. It is that the apparatus is calibrated against planted effects and against deliberately contaminated data, so it can tell a real result from an artifact of how the panel was assembled, and I have turned it on my own best finding more than once and lost. Nothing there has earned the right to trade, and nothing claims to have.
A growing shelf of small tools, MIT-licensed, and most of them run in the browser with nothing to install. Many serve the people who build with language models, others serve developers at large or PRAVIEL's world, and a few are for players who suspect the game is lying to them. The whole shelf, with pictures: antonsoo.github.io/officina.
errorbars Error bars for LLM evals, and how many questions you actually need. |
tracelens Every model call, tool call, token, and dollar of an agent run, on one timeline. |
veil Reversible masking of personal data in LLM calls, restored even mid-stream. |
fieldproof Document extraction that shows its work: every field tied to the words it came from. |
horologium What time is it in Babylon? Thirteen ancient calendars, live, on an Antikythera-style dial. |
splitscope Reads a speedrunner's splits and prices the odds of the next personal best. |
The rest of the shelf:
| Repository | What it is |
|---|---|
| contextscope | What fills an LLM context window, and why the prompt cache keeps missing. |
| mcplint | Lints an MCP server's tools the way the model reads them. |
| trainspotter | Reads a training run's logs and names what went wrong. |
| flakemap | Finds the flaky tests in a CI history, with honest error bars. |
| logdelta | Diffs logs by meaning, to show what the failing run did that the good one did not. |
| ghostchars | Finds the characters you cannot see: Trojan Source, invisible Unicode, smuggled prompts. |
| planisphere | A printable star wheel for any latitude and any century, the sky over Babylon included. |
| gnomon | Designs a working sundial for any place on Earth, ready to print or laser-cut. |
| tonemirror | Draws your pitch contour over a reference voice, for tones and pitch accent, Ancient Greek among them. |
| stutterscope | The stutter that an average frame rate hides. |
| am-i-unlucky | Exact drop-rate and pity math: unlucky, or is it the system? |
Editors print Tacitus' shorter works together as his opera minora: the Agricola, the Germania, the Dialogus. These are mine, and a good deal cheerier.
Earlier machine-learning work. A few public pieces from before the shelf:
| Repository | What it is |
|---|---|
| pneumonia-detection-xray-resnet | A ResNet that reads chest X-rays for signs of pneumonia. |
| DiplomAI | An LLM and speech-recognition assistant that defuses an argument in real time. |
| LLM-Powered-Text-Enhancement-Suite | An LLM toolchain for rewriting, correcting, and sharpening prose. |
| customer-churn-prediction-streamlit | Predicting who is about to leave, while there is still time to ask them to stay. |
| codegen-llm | Experiments in teaching models to write code worth keeping. |
Every script baked to vector paths: the Arabic joins, the Sanskrit ligates, the Hebrew runs right to left. Egyptian hieroglyphs live in the app.
The first row's adjective is Pliny's: he files Archimedes under machinalis scientia (Natural History 7.125).
A new line each morning, set by a script in this repo, from people considerably wiser than me. The small word in the lower margin is the catchword: tomorrow's first word, the way scribes kept their quires in order.
GitHub sees only my open half; the busiest repositories are private. Roman numerals make any figure look deliberate.
A serpent once grazed the offerings at Anchises' tomb, and Aeneas wondered if it was the spirit of the place (Aeneid 5.84-96). This one grazes on commits.
Two ideas sit in the drawer and receive the occasional weekend visit: a proper game for learning ancient languages, with a world in it rather than flashcards with confetti, and an app that finally teaches music theory the way theory deserves. Neither has moved to the bench; PRAVIEL holds the floor. Good seeds keep.









