How review translation works
If you ship an app in more than a handful of countries, most of your reviews are written in a language someone on your team can't read. That's not an edge case — for a lot of apps it's the majority of the feedback. A review you can't read is a review you can't act on.
Reviewcast translates every incoming review before it reaches you, so what lands in Slack is already readable. Here's what happens in between.
The naive version doesn't work
The obvious approach is: fetch a review, translate it, post it. In practice that falls apart for three reasons.
- Cost. Translating every review on every poll — including the thousands you've already seen — burns through a translation budget fast.
- Latency. If translation happens inline with delivery and the translation service is slow, your review is slow too.
- Noise. Not everything needs translating. A review already in your workspace language shouldn't take a round trip through an API.
So the real pipeline is a little more careful.
Detect, dedupe, then translate
Every review that comes off the App Store or Google Play first goes through deduplication — we only ever process a review once, keyed by its store id. That single step removes the overwhelming majority of translation work, because most of what a poll returns is reviews we've already handled.
For genuinely new reviews, we detect the source language. If it already matches the destination channel's language, we skip translation entirely and pass the original through. If it doesn't, the text is sent to a neural machine-translation engine, and both the original and the translation are cached.
That cache matters more than it looks. The same review can be delivered to multiple channels, re-checked on later polls, and surfaced again in the dashboard — and it's only ever translated once.
Keeping it under two minutes
Translation is part of the delivery path, but it isn't allowed to block it indefinitely. The pipeline is built so that in over 99% of cases the translated text is ready before the review is posted, and reviews arrive readable on the first ping rather than getting edited in place a minute later.
The pieces that make that possible:
- A tight per-review timeout, so one slow translation can't hold up a batch.
- Caching that turns repeat work into a lookup.
- A silent-disable fallback: if translation is unavailable for any reason, the original text is delivered rather than the review being held back.
That last point is a principle we apply everywhere — a degraded feature should never stop the core job. A review in the wrong language is still infinitely more useful than a review that never arrives.
Every country, every language
The upshot is simple from your side: you set your workspace language once, and every review shows up in it — Japanese, Portuguese, Turkish, Korean, whatever your users wrote in — usually within a couple of minutes of being published. The machinery to make that feel effortless is the part we're proud of.