FeaturesSecurityPricingCompareDevelopersBlogStart Free

MENA

Arabic is not written with one set of digits.

A Cairo target, a Casablanca subsidiary, a Dubai holding company and a lender in Paris. Three working languages, two numeral systems, two calendars, and a spreadsheet that has to render all of it the way its author wrote it.

Three digit sets, and only one of them is safe to guess

Arabic in the Mashriq, meaning Egypt, the Levant and the Gulf, is normally written with Arabic-Indic digits. Arabic in the Maghreb, meaning Morocco, Algeria and Tunisia, is normally written with the same digits as English. Same language, same script, different numerals, and a viewer that decides from the language tag alone will be wrong across half the region.

Three digit sets that look adjacent and are not. Excel carries the choice in the number format's locale token, so it is stated in the file rather than inferred from the language.
CriterionDigitsUnicodeWhere you meet it
Western0123456789U+0030Maghreb Arabic, and English and French documents everywhere
Arabic-Indic٠١٢٣٤٥٦٧٨٩U+0660Mashriq Arabic: Egypt, the Levant, the Gulf
Extended Arabic-Indic۰۱۲۳۴۵۶۷۸۹U+06F0Persian and Urdu. Not Arabic, and not interchangeable
Three digit sets that look adjacent and are not. Excel carries the choice in the number format's locale token, so it is stated in the file rather than inferred from the language.

Our substitution fires only when the locale token names Arabic and asks for native digits. Everything else renders Western. That is a deliberate restriction rather than an unfinished feature: a viewer that substitutes for any native-digit locale will stamp Arabic glyphs onto a Farsi cell, which is a confident, invisible error. A Western digit in a Persian model is obviously a fallback. An Arabic digit in a Persian model looks correct and is not.

When substitution does run, digits and separators convert together: ١٤٬١٣١٬٠٠٠٫٠٠, using the Arabic thousands and decimal separators, rather than ١٤,١٣١,٠٠٠.٠٠. A separator is converted only when it sits between two digits, so a currency literal such as ر.س in the same string is left alone.

Two calendars in one folder

A regional deal folder holds Gregorian dates on the lender documents and Hijri dates on locally filed Arabic material, sometimes in the same workbook. Excel says which is which inside the number format, either as the B2 prefix or packed into a locale token such as [$-060401]. We resolve the calendar id and render what the format asks for.

The common failure is not a crash. Run 5 January 2025 through ssf@0.11.2, the standalone publication of the format engine SheetJS ships, with the format B2dd/mm/yyyy, and it returns 05/01/1444. The Umm al-Qura date is 05/07/1446. A year and a half of error, rendered confidently, on a maturity schedule nobody re-checks. The full engine-by-engine rendering table is on the Saudi Arabia page.

A cross-border room in practice

The structure repeats: an operating company in Egypt or Morocco, a holding company in a Gulf free zone, lenders and sponsors outside the region, and counsel in two or three jurisdictions. Everyone reads a different subset of the documents and nobody should see the others.

  1. Local filings
    Arabic, often Hijri-dated, uploaded as filed
  2. Deal documents
    French or English, from advisors and lenders
  3. Per-group fencing
    Permissions resolved on the server for each bidder group
  4. Cited answers
    Page or cell reference a reader can open and check
A cross-border MENA process. The boundary between bidder groups is enforced in the database, not in the interface.

Citations are rendered as Q3_Model.xlsx · Revenue!B14:F34, with absolute 1-based sheet rows and column ranges. Tapping one opens the workbook at that sheet and washes those cells. In a room where half the participants cannot read half the documents, an answer that cannot be opened is an answer nobody can rely on.

Every page a participant opens carries a watermark burned into the image on the server before encoding, tiled, with their name, email, IP and timestamp. Two participants viewing the same page receive different bytes. Delete every overlay element in the browser and the identity is still in the pixels, because it was never an overlay.

30
Chunks of verbatim deal text, across 13 documents, that an unrelated signed-in user retrieved before the July 2026 lockdown
Measured. The filter itself is structural: asserted against pg_proc.prosrc in CI, with a denial suite that counts only SQLSTATE 42501 as a pass.
11.7%
Watermark ink surviving the worst of 64 crops at 25%, all four fields legible
Survives JPEG q50 and a 50% downscale
Streaming
Purpose-built OOXML parser. The maintained libraries either drop cell styles in streaming mode or hold the whole workbook in memory to keep them.
infrastructure/hetzner/worker/src/xlsx-model/

Cost

Flat published plans: a free tier, Teams at $399 a month, Pro at $999 a month, custom Enterprise. AI is included in every paid tier rather than sold as an add-on, and there are no per-page fees. For a cross-border process with four bidder groups and thousands of scanned filings, per-page pricing is the line item nobody can forecast. The 14-day trial takes no credit card. See pricing.

Related: Deals inside the GCC · هذه الصفحة بالعربية · Residency and compliance

MENA FAQ

What a cross-border team asks before the room opens.

No, and this is the detail that catches viewers out. Arabic in the Mashriq, meaning Egypt, the Levant and the Gulf, is normally written with Arabic-Indic digits, the ٠١٢٣ set at Unicode U+0660. Arabic in the Maghreb, meaning Morocco, Algeria and Tunisia, normally uses the same Western digits as English. Excel does not guess: the number format's locale token carries a digit-substitution field, and the file says which set it wants.
No, deliberately. Persian and Urdu use extended Arabic-Indic digits at U+06F0, which look similar but are a different set of code points. Our substitution only fires when the locale token names Arabic and asks for native digits. Every other script's native digits render as Western rather than being replaced with glyphs from the wrong alphabet, which is the failure mode we would rather have than a confidently wrong one.
Yes. A Maghreb transaction commonly runs on French deal documents, Arabic official filings and English lender material in the same process. Direction is read per sheet and per cell rather than from the reader's browser, so a workbook mixing Arabic labels with French notes keeps both directions on one sheet. Q&A threads are free text, so a question can be asked in one language and answered in another.
The one the file asks for. Excel packs the calendar into the number format, either as a B2 prefix or inside a locale token such as [$-060401]. Where the format asks for Hijri we render the Umm al-Qura date; where it asks for Gregorian we render Gregorian. The mistake to avoid is a viewer that renders one calendar for everything, and the common failure is silent: ssf 0.11.2, the format engine SheetJS ships, returns 05/01/1444 for a date whose Umm al-Qura value is 05/07/1446.
In the United States for the database, object storage and application hosting, with transient document processing in Germany. There is no MENA region. Every subprocessor and its country is published on our Trust Center. We hold no SOC 2 certification and no attestation under any regional data protection regime, and we will say so on the first call rather than let a security review discover it.
The AI's retrieval filter runs inside the SQL query, on tenant id and a per-participant document access function, rather than after retrieval or as an instruction in the prompt. A chunk outside the participant's permission is therefore never selected. That exclusion is structural, asserted against the deployed function's source in pg_proc.prosrc on every push, alongside a denial suite that counts only SQLSTATE 42501 as a pass. The measured half is the failure that prompted the lockdown: before July 2026 an unrelated signed-in user retrieved 30 chunks across 13 documents of verbatim deal text. Documents themselves are watermarked per viewer, burned into the page image before encoding.

Try It On The Hard File

Upload the workbook with three languages in it.

Arabic labels, French notes, a Hijri column and a Gregorian one. If it opens the way its author built it, you have your answer.

Free to start · No per-page fees · No credit card required

Start Free