Terms of Service
Who offers ZENVORA
ZENVORA is the name of this translation product. The person who operates it has not published a legal entity name, address, country of registration, or registration number in this draft.
- Legal entity name
- Owner must complete this before publication.
- Registered address
- Owner must complete this before publication.
- Country of registration
- Owner must complete this before publication.
- Registration number
- Owner must complete this before publication.
Until those fields are filled in, “ZENVORA” and “the operator” mean the person who runs the server and the public website. That is not a company name.
The service
The tagline is: Different languages. One conversation.
You type in the ZENVORA app. A signed-in request to POST /v1/translate asks the server for a translation. The default provider is MyMemory. OpenAI is used for translation only when OPENAI_API_KEY is set on the server. Rewrite and smart replies also need that key. If the key or the plan is missing, the server returns an error. It does not invent a result.
English and Arabic are the first pair. The app can translate among the languages already in the product. Buttons in the app are English or Arabic. A greeting can use another language you choose.
Conversation mode translates each line inside the app. History and favourites stay with the account. Copy works in the app. Moving text into another app uses the phone’s copy and paste. ZENVORA does not open WhatsApp and does not read other apps, notifications, or screenshots.
The keyboard inside the app follows the language you type. It is not the phone’s system keyboard. An Android input method and a floating button exist as native source. They are not in Google Play, and they do not run on this website. The iOS keyboard extension is source only and cannot hold a sign-in session yet. There is no iOS floating bubble.
Learn as You Go on the website reviews words you saved. It is not a course, and it does not invent lessons. The phone app has no lesson mode. Glossaries, team invites, shared team history, organisation analytics, and priority support are not built. Paid plan cards list some of those gaps so they stay visible.
This website explains the product. On this static host it does not translate a sentence and it does not start a charge. Accounts and saved translations use the ZENVORA API on this website.
Accepting these terms
Creating an account requires an unchecked box that you tick to accept these terms and acknowledge the Privacy Policy. The server stores that choice with version 1.0 and the time you submitted the form. Opening this page does not count as acceptance. Logging in does not ask again and does not write a new consent row.
A separate unchecked box asks about product news. Leaving it empty still creates the account. There is no marketing email tool, so the box only records the choice.
If you do not accept these terms, do not create an account and do not send text for translation.
Changes
A later version of these terms will be a new version number and a new effective date. Old consent rows are kept as they were. They are not rewritten in place. Using the service after a new version is published does not, by itself, change the row that was stored at sign-up. A new acceptance is stored only when an account action sends one.
The version on this page is 1.0. The effective date is 31 October 2026 in Africa/Johannesburg. Last updated the same day.
Who can use it
The operator describes ZENVORA as a product for people of all ages. This build does not ask for a date of birth, does not show an age gate, and does not offer a parental dashboard or an identity check. This draft does not say that the product meets any children’s privacy law. A lawyer has to decide what else is required before launch.
You need an email address, a username, and a password to create an account. The server does not verify that the email belongs to you. Email verification is not implemented.
Accounts
One person signs in to one account. Team and Business prices can include a seat quantity on one Stripe subscription. Seats do not multiply the word allowance, and the app cannot invite teammates or assign seats to other people.
You can change the display name, username, password, and language settings. You cannot change the email in this build. Password reset does not send email. On the local server, if the account exists, the reset code is returned to the page that asked for it. The code expires in 30 minutes. The server does not send or receive mail.
Account security
You choose the password. It is stored as a slow hash, not as the password itself. A sign-in without Remember me lasts 24 hours. A sign-in with Remember me lasts 30 days. The server stores a hash of the session token. The phone app keeps the token in the device secure store. The website does not keep the raw token in local storage. The API sets an HttpOnly cookie. On an Android development build, a copy can also sit in private app preferences for the overlay and the Android keyboard. It is removed when you sign out. It is not stored in the Android Keystore.
Tell zenvorafounder@gmail.com if you think someone else is using your account. This page does not promise a particular response time.
Your messages
You keep your messages. ZENVORA does not claim ownership of the text you type or of the translation it returns. The intellectual property page describes the licence the service needs so it can translate, store history, and show the result back to you.
Do not send text you have no right to send. History is private to the account. Other accounts cannot read it through the API. It is not a separate encrypted vault, and it is not published as a public page.
Translation
The text you submit is sent to the translation provider. That is MyMemory by default, or OpenAI when the server is configured that way. Do not read any page here as a promise that your text is never shared with a third party. The AI and translation page says what that means, including that a translation can be wrong.
Plans and prices
Prices are US dollars. Other currencies are not offered. Local taxes may be added where a payment provider requires them. Stripe Tax is not enabled. Stripe collects no tax until the account has a tax registration. This draft does not calculate tax.
An account with no subscription is not a priced card. It includes 2,000 translated words a month and 1,000 characters per translation. It does not include rewrite or smart replies.
Individual is $9.99 a month, or $101.88 a year. The yearly price is charged once, up front. It is about 15% less than twelve payments of $9.99, a difference of $18. The allowance is 10,000 translated words a month. Rewrite is included. Smart replies are not.
Team is $29.99 per user a month, or $305.88 per user a year, charged once per user for the year. The difference from twelve monthly payments is $54 per user. The allowance is 100,000 translated words a month on the subscribing account. Rewrite and smart replies are included.
Business is $59.99 per user a month, or $611.88 per user a year, charged once per user for the year. The difference from twelve monthly payments is $108 per user. The allowance is 500,000 translated words a month on the subscribing account. Rewrite and smart replies are included.
Word allowances and prices are defined in the product file src/shared/pricing.ts. A paid plan allows 4,000 characters per translation. Favourites stop at 15 with no subscription and 500 on a paid plan. Saved history stops at 50, 2,000, 5,000, or 10,000 rows depending on the plan. The history request returns at most 200 of those rows.
Limits
The server counts words in the source text toward the monthly allowance. Rewrite and reply text, on plans that include them, count toward the same allowance. The same text repeated within 10 minutes is not counted twice. Refreshing the screen does not reset the count. There is no separate daily translation count.
The server also stops an account at 30 translation requests a minute. A separate in-memory limit of 30 requests a minute applies to some unsigned routes, using the address on the request. That address is not written into the application log.
Buying extra seats does not add words and does not invite other people.
Trial, renewal, and Premium
A 7-day trial exists only when Stripe is configured. It is placed on the Checkout Session. The Price in Stripe is not where the trial is set. Nothing is charged during the trial. The subscription renews at the disclosed price unless you cancel before renewal. Monthly plans renew every month. Annual plans renew once a year at the full annual amount.
If Stripe is not configured, checkout says payment is not set up. No trial starts and you are not charged.
Premium follows a signed Stripe webhook only. Statuses active and trialing are Premium. canceled keeps access until the current period end. past_due, unpaid, incomplete, and paused are not Premium. The success URL does not unlock Premium. Choosing a plan on a screen does not unlock Premium.
You can cancel any time. After you cancel, access stays until the period that already started ends. Details are on the billing and refund pages. This draft does not promise a refund and does not invent a rule that refunds are never available.
Payment and the stores
The website may use Stripe when the account service is reachable. The server creates the Checkout Session. The browser only receives the Checkout URL. Card numbers are entered on Stripe’s page. This website has no card form and no Stripe secret.
Digital subscriptions sold inside the iOS and Android apps must use Apple In-App Purchase and Google Play Billing. Those stores are not connected. POST /v1/billing/app-store and POST /v1/billing/play return 501 and do not start a purchase. The phone apps are not in the App Store or on Google Play. There is no extra trial for those stores because they are not connected.
Acceptable use and refusal
The acceptable use page says what not to do. The server can refuse a request that fails a limit, a password check, or a plan check. This draft does not describe a human moderation team. There is not one in this build.
Deletion, privacy, and availability
You can delete saved translations, export the account data the server holds, and delete the account. Account deletion requires the password. The retention page and the privacy policy describe what is removed and what a provider may still have.
The service is a development build. There is no uptime promise, no support hours, and no priority support. The public website is static files. The account database in this build is a SQLite file on the computer that runs the API.
Disclaimers, liability, and law
ZENVORA is a machine translation tool. A result can be wrong, incomplete, or unsuitable. It is not a certified translator and it is not advice for health, law, immigration, money, or an emergency. Read the translation note before you rely on a result.
To the extent a law allows a draft like this to say so, the operator does not promise a particular business result. This page does not set a dollar cap, does not name a court, and does not take away a right that the law does not let a contract take away. Those blanks stay blank until the owner and a lawyer complete them.
Governing law, venue, and dispute process: Owner must complete this before publication.
If a sentence in this draft cannot be used, the rest of the draft remains a draft. It is not a statement that the rest is legally effective. The whole set of legal pages should be read together. They do not claim that ZENVORA is legally compliant.
Contact
Support, privacy, and security: zenvorafounder@gmail.com. The server does not send or receive that mail. More blank fields are on the contact page.