FeaturesTrustSecurityPricingCompareConnect your AIBlogStart Free

Saudi Arabia

A model built in Arabic Excel should open the way it was built.

Documents in a Saudi deal arrive right to left, dated on the Umm al-Qura calendar, and priced in riyals. Most viewers get all three wrong and say nothing about it. Below is what each engine actually renders, reproduced rather than asserted.

The same cell, two engines

Every row below is a real Excel number format taken from our KSA test fixture. The value is 14131000 for the currency rows and Excel serial 45662, which is 5 January 2025, for the date rows. The middle column was produced by running ssf@0.11.2 locally: that is the standalone publication of the format engine SheetJS ships, and it sits underneath a large share of the spreadsheet viewers on the web.

Excel number formats rendered by ssf 0.11.2, reproduced locally on 4 August 2026, against the Umm al-Qura and Arabic-Indic renderings the format asks for.
CriterionWhat the format asks forssf 0.11.2Sifrsys
[$-2060401]#,##0.00Locale directive, no currency glyphArabic-Indic digits, no symbol$14,131,000.00١٤٬١٣١٬٠٠٠٫٠٠
[$-060401]dd/mm/yyyyHijri calendar id inside the locale tokenThe Hijri date05/01/202505/07/1446
B2dd/mm/yyyyExplicit Hijri calendar prefixThe Hijri date05/01/144405/07/1446
[$SAR-401]\ #,##0.00ISO code carried in the tokenSAR before the numberSAR 14,131,000.00SAR 14,131,000.00
[$⁧ر.س⁩-401]#,##0.00Riyal symbol carried in the tokenThe riyal symbolر.س14,131,000.00ر.س14,131,000.00
Excel number formats rendered by ssf 0.11.2, reproduced locally on 4 August 2026, against the Umm al-Qura and Arabic-Indic renderings the format asks for.

The last two rows matter as much as the first three. Those formats already rendered correctly, so we leave them exactly alone. The one thing worse than an unhandled format is a regressed one.

The dollar sign that was never in the file

Look at row one again. A cell formatted [$-2060401]#,##0.00 carries no currency glyph at all: there is nothing between the $ and the -. The token is a locale directive that packs three instructions, Arabic language, Umm al-Qura calendar, and a top nibble asking for the locale's own digits. The engine read the marker character as a symbol and printed an American dollar sign onto a Saudi balance sheet. In a diligence data room that is not a cosmetic defect. It is a fourteen million riyal line item wearing the wrong currency.

We drop empty-symbol locale tokens before formatting, and apply Arabic-Indic digits to the finished string so digits and separators convert together: ١٤٬١٣١٬٠٠٠٫٠٠ and not ١٤,١٣١,٠٠٠.٠٠. Half a conversion looks broken in a way that is worse than none.

Right to left is structural, not styling

A model built in Arabic Excel writes rightToLeft onto the sheet view. Column A belongs on the right edge. When a viewer ignores that flag, the label column lands on the far side of the screen from the numbers it labels, and the frozen header pane pins to the wrong edge, so the labels scroll away and leave a wall of unattributed figures.

  1. Read the flag
    sheetView rightToLeft on the sheet, readingOrder on the cell
  2. Mirror the grid
    Column A at the right edge, dir on the table rather than the scroller
  3. Move the origin
    Sticky columns pin right, so left becomes right
  4. Normalise the scroll
    Offset runs negative from the right edge; every measurement is absolute
What the viewer does with a right-to-left sheet. All four steps or the grid tears mid-scroll.

Cell-level reading order is resolved separately from sheet direction, so an English assumptions block inside an Arabic model keeps its own direction on the same sheet, which is what a bilingual model actually looks like.

What was measured

  • KSA number formats100%
  • Display strings100%
  • Merged cells100%
  • Alignment100%
  • Font styles100%
  • Fills99.7%
Viewer output scored against LibreOffice ground truth in real Chromium, across four producer dialects. Suite in tests/fidelity/, with a committed baseline that fails the build on regression.
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.
Product behaviour
In-query
A chunk outside the participant's permission is never selected, so no later code path can return it
Product architecture
11.7%
Watermark ink surviving the worst of 64 crops at 25%, all four fields legible
Watermark crop study

Bilingual diligence, one thread

A Riyadh process rarely runs in one language. The advisor's memo is in English, the commercial registration and the board minutes are in Arabic, and counsel asks in whichever language the document was in. Q&A threads are free text, so a question asked in Arabic can be answered in English inside one thread, under the same permission boundaries that govern documents.

When a participant asks the AI, the answer cites the exact page in the PDF or the exact cell range in the workbook, rendered as Q3_Model.xlsx · Revenue!B14:F34 with absolute 1-based sheet rows. Tapping the citation opens the workbook at that sheet and washes those cells. That matters more here than elsewhere: a partner who does not read Arabic needs to see the cell, not take the model's word for it.

The retrieval filter runs inside the SQL query, on tenant id and the per-participant document access function, rather than after retrieval or as an instruction in the prompt. On a sell side with three competing bidders in one room, that boundary is the product.

How the data is protected

Deal data is encrypted at rest and in transit, isolated per organisation by row-level security, and processed transiently with nothing kept. Every subprocessor and where it operates is published on the Trust Center. What is true today: buckets are private and never publicly readable, permissions resolve on the server, AI retrieval is fenced inside the SQL query, and every document view is written to a hash-chained audit log. The full residency and compliance position is here.

Cost

Flat published plans: Free, Pro at $29, Business at $79, Data Rooms at $149 with unlimited rooms, Plus at $349, Premium at $699, Unlimited at $1,499 a month, and Enterprise on a contract. AI is included in every paid tier rather than sold as an add-on, and there are no per-page fees, which is the pricing model that makes a document-heavy Saudi diligence unpredictable elsewhere. The 14-day trial needs no credit card, and the price-lock commitment means no surprise mid-contract increase, with 90 days notice for any change. Detail on pricing, including the Founding 10 terms: the first ten paying companies keep their signup price for the life of the subscription, and we move documents, folder structure and permission setup out of the current data room ourselves at no charge.

Related: Data rooms across the GCC · هذه الصفحة بالعربية · Cross-border MENA deals

Saudi Arabia FAQ

The questions a Riyadh deal team actually asks.

Deal data is encrypted at rest and in transit and isolated per organisation by row-level security in the database. Document processing is transient and keeps nothing, and your content is never used to train AI models. Our Trust Center publishes every subprocessor and where it operates.
Yes. Excel encodes the calendar 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 Umm al-Qura. Our golden fixture anchors on 5 January 2025, which is 5 Rajab 1446, and the fidelity suite fails the build if that cell drifts. Run the same date through ssf 0.11.2, the format engine SheetJS ships, and B2dd/mm/yyyy returns 05/01/1444: the day held, the month and the year did not.
The sheet keeps the direction its author gave it. When a sheet carries rightToLeft, the grid renders right to left, column A sits at the right edge, and frozen panes pin to the right rather than the left. Horizontal scroll offset runs negative in that mode, so every measurement taken from it is sign-normalised; doing the mirroring without that normalisation is what makes a grid tear halfway through a scroll. Cell-level reading order is handled separately, so an English assumptions block inside an Arabic model keeps its own direction on the same sheet.
Yes, across the forms a Saudi workbook actually uses: the Arabic symbol as a quoted literal, the ISO code in a currency literal, the locale-tagged symbol, and the bare locale directive. The bare directive is the subtle one. A cell formatted [$-2060401]#,##0.00 carries no currency glyph at all, and the widely used ssf format engine invents a US dollar sign against Arabic-Indic digits. We drop that empty token before formatting; tokens that carry a real symbol are left untouched.
Private buckets, permissions resolved on the server rather than in the browser, AI retrieval fenced inside the SQL query, and a hash-chained audit log of every document view. SOC 2 Type II readiness: the controls are built and mapped. A Data Processing Agreement, a completed security questionnaire and the subprocessor list are available from the Trust Center, which states the position line by line.
Yes. Questions and answers are free text, so a thread can be asked in Arabic and answered in English, or switch mid-thread, which is how bilingual deal teams work anyway. Threads carry the same permission boundaries as documents.

Test It On A Real Workbook

Upload the model nobody else renders properly.

Take the workbook with the Hijri maturity schedule and the Arabic-Indic totals, the one that opens wrong everywhere. Ten minutes on the free tier settles the question better than any page can.

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