Translate pure.
Ship secure.
Every translation that needs a human gets one, by name. Nothing ships that nobody vouched for.
Purelex translates the strings in your repository into every language you sell in, and hands the judgement calls to the people who actually speak them.
There is no signup form yet. Every route in ends in an email, and none of them needs a call, a card, or a meeting.
Your repository is the source of truth. Purelex reads the locale files that are already in it.
Your agents call it directly. No human in the loop unless one is needed.
Unchanged strings re-translate at no cost, forever.
Every human fix becomes a pin. You never review the same phrase twice.
Three people have to agree. Purelex asks each of them the right question.
Nothing new to learn
No dashboard, no export step, no ticket. Purelex reads the locale files already in your repository, and the GitHub Action fails your build the moment a placeholder drifts.
CLI · GitHub Action · MCPYour judgement, kept
Every correction you make becomes a pin that outranks the machine permanently. You build a terminology asset by working, not by maintaining a spreadsheet nobody reads.
Pins · exemplars · reviewer assignment per languageOne voice in every market
One pin store governs every string in the repository, so the word you chose for your core feature is the same word in German everywhere it appears.
One pin store per account and language pairEveryone claims quality. We enforce it.
After code is pushed, we inspect, translate, then send it out for approval. If updated, rewritten or outright declined, the string does not ship. Nothing reaches your customers without your approval.
{name} or a plural branch went missing. Counted per occurrence, so a repeated placeholder cannot silently drop one copy.A placeholder can never break
If a translation drops a variable or a plural branch, it does not ship. The file write is all or nothing, the CI check exits non-zero, and the run says which file and key. This is the one thing we refuse to make configurable.
Escalation is bounded, and logged
A string moves from instant to standard to certified to a human, in that order, never backwards. Every escalation records which condition failed, so a bad language pair is a fact you can look up rather than a feeling.
Certifies the right people read the materials
When a string reaches a person, the approval records who approved it, the exact text they approved, and when. Reviewers are identified by member id, never by email address in a log.
Corrections outrank the machine
A pinned translation is never machine-overwritten. If the English changes underneath a pin, Purelex will not quietly reuse it or quietly replace it. It stops and asks the person who set it.
One pipeline all teams, focused on the customer
Same pins, same escalation, same reviewers across every file Purelex reads. No upload, no export, no second copy of your content to keep in sync.
JSON
Flat or nested, i18next-style dot-path keys. Rewritten in place so the keys Purelex did not translate come back byte for byte.
.json · hosted, CLI and ActionApple String Catalogs
Multi-language catalogs with per-branch plurals, validated one localization at a time against the source.
.xcstrings · CLI and ActionAndroid resources
Plurals, string-arrays, escaping, CDATA, and translatable="false" respected rather than flattened.
Everything else
YAML, Markdown, gettext and XLIFF are named in the schema and have no adapter behind them. A format adapter is one file against a documented contract.
Tell us which format blocks youYou never pay for a reviewer
Charging per translator is how this industry got the reputation it has. No seats. No user limits. You pay for tokens. Bring the whole team: engineers, reviewers, agents, CI. Nobody is a line item, nothing is gated on headcount, and there is no platform fee.
Memory, pins and cache hits never meter, so everything you have already corrected stays free forever. You start paying when new tokens flow, and not before.
- Unlimited people, repositories, and locales
- Memory, pins, and cache hits are always free
- Re-translation of unchanged strings: $0.00
- Community support
Past the free work, you pay for the tokens each translation pass consumes. Nothing else is billable.
- All four tiers
- Sold in blocks. Sizes and prices are announced at launch
- Unlimited people, repositories, and locales
- Pins, exemplars, and reviewer assignment per language
- MCP connector
For teams who need the paperwork as much as the translations. Priced on obligations, not people.
- Data residency terms
- SSO and SCIM
- Reporting per release
- Audit export
- Named support
Enterprise items are contracted per deal, not switches we flip. Ask which are live today and which have a date; we will tell you either way.
| TIER | USE IT FOR | LATENCY | QA FLOOR | PER 1M TOKENS |
|---|---|---|---|---|
| t1_instantInstant | Internal tools, debug copy, anything a colleague reads once | < 2s | 0.80 | $5 |
| t2_standardStandard | Product UI. The default, and where most teams stay | ~ 20s | 0.90 | $20 |
| t3_certifiedCertified | Contracts, medical, financial. The top automated tier | ~ 90s | 0.95 | $60 |
| human_reviewHuman review | Brand lines and taglines. A translator writes the line and we pin it | 1 to 3 days | n/a | cost + 20% |
Prices read from config · qa floors are placeholders until the QA agent is calibrated · re-translating an unchanged string always costs $0.00, because cache hits never meter.
We see sentences, not your repository
Purelex has no connection to your source control. The CLI and the GitHub Action run inside your own CI, on the locale files you name. Nothing else in your repository is read, requested, or stored.
We hold no certifications and we are not going to draw badges for the ones we want. When a report exists you will be able to read it, not just see its logo.
- SCOPE
- No repository access, no installed app, no token on your account. You point the CLI or the Action at locale files and it reads those.
- RETENTION
- Source and target strings, pins, and the corrections behind them. Model results are cached for 30 days. Deletion is by request today; the schema cascades and a self-serve control is not built yet.
- TRAINING
- Your strings never train a model. Translation runs on Anthropic’s API, whose terms exclude API traffic from training, and your corrections are scoped to your account and never enter another customer’s prompt.
- REVIEW LINKS
- Approval links are single-use, single-purpose, and expire in 14 days. The read-only receipt link cannot approve anything and lasts 90 days.
- API KEYS
- A key can translate and read. It cannot approve, cannot pin, and cannot add a reviewer: all three refuse an API key on the REST API and on the MCP connector, and say where a person acts instead. An agent signing off on its own translation is the one thing the review loop exists to prevent, and a key that could add a reviewer could route those approvals to itself.
- AUDIT
- Every approval records who approved it, the exact final string, and when. Reviewer identity is stored as a member id; email addresses are deliberately never written to the event log.
How do you get started?
One way in, and it is free. No form to fill and no card. Bring a repository and the locale files you already have, and talk to us whenever you want to.
Put the gate in your CI first
purelex check locales/en.json "locales/*.json"
One command, one exit code, every placeholder violation listed with its file and key. It needs no server, no API key and no account, and the GitHub Action runs the identical code in your pipeline. Translation is the next step, and it is the part that needs a key.
- SHIPPED
- purelex scan · extract · check · the GitHub Action · placeholder integrity, per occurrence
- PRIVATE ALPHA
- hosted translation (JSON) · MCP connector and REST API · review links · pins and exemplars · token metering
- NOT YET
- per-dimension QA scores · the pull-request bot · translation memory import · self-serve signup, export and delete · data residency
Questions buyers actually ask
We already use a translation management system. What does migration look like?
Your locale files stay exactly where they are, in your repository, in the format they already use. There is no portal to upload them to and nothing to keep in sync afterwards, which removes the largest source of drift in a migration. What is not built yet is bulk import of an existing translation memory or glossary, so today your terminology decisions become pins as reviewers make them rather than arriving on day one. If you are sitting on a large memory, tell us before you plan the migration and we will give you a date rather than a maybe.
Who does the actual human review?
People you already employ, usually. A reviewer needs an email address and nothing else: no account, no password, no seat, no training. They receive a link, read one string, and approve it or rewrite it. Most teams assign the German-speaking engineer, the French salesperson, or a contractor they already work with. You can point several reviewers at the same language, and the first one to act resolves the string.
What happens when a translation is wrong and it already shipped?
You correct it the way you correct any other line in your repository, or you reopen the review link and rewrite it there. Either way the correction becomes a pin, and a pin is never machine-overwritten. The same mistake cannot recur in that language, and if the English later changes underneath the pin, Purelex stops and asks rather than quietly reusing your old wording or quietly discarding it.
How is this different from running an LLM against our locale files ourselves?
The translating is the easy part, and it is the part you would finish in a weekend. What you would then have to build is the placeholder integrity gate that counts every occurrence and fails the build, the format adapters that rewrite a file without disturbing the keys you did not touch, the escalation ladder, the reviewer routing and single-use links, the pin store that makes a correction permanent, and the metering that does not charge you twice for a string that did not change. That is the product.
Does it handle plurals, gender and right-to-left languages?
Yes, and it refuses to guess. A plural string is presented as one field per plural branch of the target language, in CLDR order, and an empty required branch blocks the submit rather than shipping a sentence with a hole in it. Placeholders are masked before translation and restored verbatim afterwards, then compared per occurrence, so a repeated variable cannot lose one copy. Right-to-left targets are rendered right-to-left with placeholders bidi-isolated, so they cannot be visually reordered into nonsense.
What does it cost to re-translate when we change one word?
Nothing, for every string that did not change. Memory hits, pinned strings and cache hits are billed at zero, always, and that is a product promise rather than an optimization we might revisit. You pay only for new and modified strings, at the tier you chose for that path. In practice the bill falls over time as pins accumulate, which is the opposite of how per-word pricing behaves.
Can our AI agents use it without a person involved?
Yes, up to the point where a person is the point. The MCP connector and the REST API are first-class surfaces, not an afterthought bolted onto a dashboard, and an agent key can translate a diff, read the queue and read its own usage without anyone in the loop. What it cannot do is approve, pin, or add a reviewer. All three refuse an API key outright, on the API and on the connector alike, and the error names the two places a person approves: the review link we email the assigned reviewer, and the review queue in the portal. Adding a reviewer is on that list because a reviewer receives signed links that approve, so a key able to add one could send those links to an address it controls. An agent signing off on its own translation is the one thing the review loop exists to prevent, so it is a refusal in the product rather than a role you could grant by mistake.
Who owns the translations and the terminology?
You do. The translations are files in your repository, in your format, and there is no format we could hold hostage even if we wanted to. Your pins and corrections are scoped to your account and never enter another customer’s prompts. Self-serve export and self-serve deletion are not built yet; both happen by request today, and the schema is already wired so that deleting an account removes its strings with it.
Your next release could ship in nine languages.
And the one sentence that needed a human will be waiting in somebody’s inbox, with the reason it stopped attached.