The ML Platform Behind Uber's AI
Michelangelo AI: Uber's end-to-end machine learning platform.
Translation pending
Upload a Chinese CSV, name your languages, get the file back with translation columns.
Developer toolsTypeScript · CSSGitHub @dylancliangOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Chat-based agent that translates Chinese (Simplified) CSV columns into any language. It picks which columns to translate, asks for approval, translates with Claude, and checks and repairs its own output. Next.js on Vercel.
Loading the full README.
Read the full README ↗Upload a CSV with Chinese text, name the languages you want, and get the same file back with a translated column for each language. The agent picks which columns need translating, shows its plan, translates, checks its own work, and marks anything it couldn't fix.
The app has a How it works page covering the agent design, trade-offs, technology choices and next steps.
You need: a GitHub account, a Vercel account (sign up with GitHub), and an Anthropic API key from console.anthropic.com.
translation-agent, and create it.
On the empty repo page, choose uploading an existing file, drag in everything from this folder, and commit.
(Or with git: git init && git add . && git commit -m "Translation agent" && git remote add origin <repo URL> && git push -u origin main.)translation-agent repo. Vercel detects Next.js; leave the build settings as they are.ANTHROPIC_API_KEY = your keytranslation-agent-yourname.vercel.app. Open it and press Try the sample file in English and German.Every later push to GitHub redeploys automatically. If you change an environment variable, redeploy from the Vercel dashboard.
| Variable | Default | What it does |
|---|---|---|
TRANSLATE_MODEL | claude-sonnet-5-5 | Model used for translation |
FAST_MODEL | claude-haiku-5-5 | Cheaper model for quick decisions (language names, unclear columns, follow-ups) |
MOCK_AI | off | 1 replaces the AI with an obviously fake stand-in for local testing. Never set it on the live site. |
Requires Node.js 20 or newer.
npm install
cp .env.example .env.local # then put your API key in .env.local
npm run dev # open http://localhost:3000
No key yet? MOCK_AI=1 npm run dev lets you click through the whole flow with fake translations.
npm test runs the pipeline on the sample file with a stand-in AI and checks column picking, deduplication, placeholder repair, flagging and the output layout.
app/page.tsx the chat screen
app/how-it-works/page.tsx design write-up
app/api/*/route.ts the four server calls that use the API key
lib/pipeline.ts the agent's workflow (runs in the browser)
lib/columns.ts rules for picking columns
lib/validate.ts automatic checks on each translation
lib/csv.ts reading UTF-8 / GBK files, writing Excel-friendly CSV
lib/server/llm.ts Claude calls with structured output
components/ plan, progress, result and trace panels
public/sample_input.csv 100-row test file (made by scripts/make_sample.py)
scripts/test-pipeline.ts end-to-end test with a stand-in AI