1M multi-lingual synthetic corporate emails to stress-test your RAG The Hugging Face dataset viewer for the Sinabis Group's "1M synthetic emails" dataset fails with an ArrowInvalid JSON parse error on row 0, preventing the 1 million multi-lingual synthetic corporate emails from being previewed in the browser. The traceback shows pandas' read_json raising "ValueError: Expected object or value" before pyarrow's read_json fails, so the dataset cannot be loaded for RAG stress-testing through the viewer. Duplicate https://huggingface.co/datasets/sinabis-group/sinabis-1m-synthetic-emails?duplicate=true The dataset viewer is not available for this split. Error code: FeaturesError Exception: ArrowInvalid Message: JSON parse error: Invalid value. in row 0 Traceback: Traceback most recent call last : File "/usr/local/lib/python3.14/site-packages/datasets/packaged modules/json/json.py", line 324, in generate tables df = pandas read json f File "/usr/local/lib/python3.14/site-packages/datasets/packaged modules/json/json.py", line 38, in pandas read json return pd.read json path or buf, kwargs ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.14/site-packages/pandas/io/json/ json.py", line 815, in read json return json reader.read ~~~~~~~~~~~~~~~~^^ File "/usr/local/lib/python3.14/site-packages/pandas/io/json/ json.py", line 1014, in read obj = self. get object parser self.data File "/usr/local/lib/python3.14/site-packages/pandas/io/json/ json.py", line 1040, in get object parser obj = FrameParser json, kwargs .parse File "/usr/local/lib/python3.14/site-packages/pandas/io/json/ json.py", line 1176, in parse self. parse ~~~~~~~~~~~^^ File "/usr/local/lib/python3.14/site-packages/pandas/io/json/ json.py", line 1392, in parse ujson loads json, precise float=self.precise float , dtype=None ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ValueError: Expected object or value During handling of the above exception, another exception occurred: Traceback most recent call last : File "/src/services/worker/src/worker/job runners/split/first rows.py", line 244, in compute first rows from streaming response iterable dataset = iterable dataset. resolve features File "/usr/local/lib/python3.14/site-packages/datasets/iterable dataset.py", line 4523, in resolve features features = infer features from batch self.with format None . head ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^ File "/usr/local/lib/python3.14/site-packages/datasets/iterable dataset.py", line 2768, in head return next iter self.iter batch size=n File "/usr/local/lib/python3.14/site-packages/datasets/iterable dataset.py", line 2972, in iter for key, pa table in ex iterable.iter arrow : ~~~~~~~~~~~~~~~~~~~~~~^^ File "/usr/local/lib/python3.14/site-packages/datasets/iterable dataset.py", line 2483, in iter arrow yield from self.ex iterable. iter arrow File "/usr/local/lib/python3.14/site-packages/datasets/iterable dataset.py", line 547, in iter arrow for key, pa table in iterator: ^^^^^^^^ File "/usr/local/lib/python3.14/site-packages/datasets/iterable dataset.py", line 430, in iter arrow for key, pa table in self.generate tables fn gen kwags : ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^ File "/usr/local/lib/python3.14/site-packages/datasets/packaged modules/json/json.py", line 327, in generate tables raise e File "/usr/local/lib/python3.14/site-packages/datasets/packaged modules/json/json.py", line 290, in generate tables pa table = paj.read json io.BytesIO batch , read options=paj.ReadOptions block size=block size File "pyarrow/ json.pyx", line 364, in pyarrow. json.read json File "pyarrow/error.pxi", line 155, in pyarrow.lib.pyarrow internal check status File "pyarrow/error.pxi", line 92, in pyarrow.lib.check status raise convert status status pyarrow.lib.ArrowInvalid: JSON parse error: Invalid value. in row 0 Need help to make the dataset viewer work? Make sure to review how to configure the dataset viewer https://huggingface.co/docs/hub/datasets-data-files-configuration , and open a discussion https://huggingface.co/datasets/sinabis-group/sinabis-1m-synthetic-emails/discussions/new?title=Dataset+Viewer+issue%3A+FeaturesError&description=The+dataset+viewer+is+not+working.%0A%0AError+details%3A%0A%0A%60%60%60%0AError+code%3A+++FeaturesError%0AException%3A++++ArrowInvalid%0AMessage%3A++++++JSON+parse+error%3A+Invalid+value.+in+row+0%0ATraceback%3A++++Traceback+%28most+recent+call+last%29%3A%0A++++++++++++++++File+%22%2Fusr%2Flocal%2Flib%2Fpython3.14%2Fsite-packages%2Fdatasets%2Fpackaged modules%2Fjson%2Fjson.py%22%2C+line+324%2C+in+ generate tables%0A++++++++++++++++++df+%3D+pandas read json%28f%29%0A++++++++++++++++File+%22%2Fusr%2Flocal%2Flib%2Fpython3.14%2Fsite-packages%2Fdatasets%2Fpackaged modules%2Fjson%2Fjson.py%22%2C+line+38%2C+in+pandas read json%0A++++++++++++++++++return+pd.read json%28path or buf%2C+ kwargs%29%0A+++++++++++++++++++++++++%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%0A++++++++++++++++File+%22%2Fusr%2Flocal%2Flib%2Fpython3.14%2Fsite-packages%2Fpandas%2Fio%2Fjson%2F json.py%22%2C+line+815%2C+in+read json%0A++++++++++++++++++return+json reader.read%28%29%0A+++++++++++++++++++++++++%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%5E%5E%0A++++++++++++++++File+%22%2Fusr%2Flocal%2Flib%2Fpython3.14%2Fsite-packages%2Fpandas%2Fio%2Fjson%2F json.py%22%2C+line+1014%2C+in+read%0A++++++++++++++++++obj+%3D+self. get object parser%28self.data%29%0A++++++++++++++++File+%22%2Fusr%2Flocal%2Flib%2Fpython3.14%2Fsite-packages%2Fpandas%2Fio%2Fjson%2F json.py%22%2C+line+1040%2C+in+ get object parser%0A++++++++++++++++++obj+%3D+FrameParser%28json%2C+ kwargs%29.parse%28%29%0A++++++++++++++++File+%22%2Fusr%2Flocal%2Flib%2Fpython3.14%2Fsite-packages%2Fpandas%2Fio%2Fjson%2F json.py%22%2C+line+1176%2C+in+parse%0A++++++++++++++++++self. parse%28%29%0A++++++++++++++++++%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%5E%5E%0A++++++++++++++++File+%22%2Fusr%2Flocal%2Flib%2Fpython3.14%2Fsite-packages%2Fpandas%2Fio%2Fjson%2F json.py%22%2C+line+1392%2C+in+ parse%0A++++++++++++++++++ujson loads%28json%2C+precise float%3Dself.precise float%29%2C+dtype%3DNone%0A++++++++++++++++++%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%0A++++++++++++++ValueError%3A+Expected+object+or+value%0A++++++++++++++%0A++++++++++++++During+handling+of+the+above+exception%2C+another+exception+occurred%3A%0A++++++++++++++%0A++++++++++++++Traceback+%28most+recent+call+last%29%3A%0A++++++++++++++++File+%22%2Fsrc%2Fservices%2Fworker%2Fsrc%2Fworker%2Fjob runners%2Fsplit%2Ffirst rows.py%22%2C+line+244%2C+in+compute first rows from streaming response%0A++++++++++++++++++iterable dataset+%3D+iterable dataset. resolve features%28%29%0A++++++++++++++++File+%22%2Fusr%2Flocal%2Flib%2Fpython3.14%2Fsite-packages%2Fdatasets%2Fiterable dataset.py%22%2C+line+4523%2C+in+ resolve features%0A++++++++++++++++++features+%3D+ infer features from batch%28self.with format%28None%29. head%28%29%29%0A++++++++++++++++++++++++++++++++++++++++++++++++++++++++%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%5E%5E%0A++++++++++++++++File+%22%2Fusr%2Flocal%2Flib%2Fpython3.14%2Fsite-packages%2Fdatasets%2Fiterable dataset.py%22%2C+line+2768%2C+in+ head%0A++++++++++++++++++return+next%28iter%28self.iter%28batch size%3Dn%29%29%29%0A++++++++++++++++File+%22%2Fusr%2Flocal%2Flib%2Fpython3.14%2Fsite-packages%2Fdatasets%2Fiterable dataset.py%22%2C+line+2972%2C+in+iter%0A++++++++++++++++++for+key%2C+pa table+in+ex iterable.iter arrow%28%29%3A%0A+++++++++++++++++++++++++++++++++++++++%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%5E%5E%0A++++++++++++++++File+%22%2Fusr%2Flocal%2Flib%2Fpython3.14%2Fsite-packages%2Fdatasets%2Fiterable dataset.py%22%2C+line+2483%2C+in+ iter arrow%0A++++++++++++++++++yield+from+self.ex iterable. iter arrow%28%29%0A++++++++++++++++File+%22%2Fusr%2Flocal%2Flib%2Fpython3.14%2Fsite-packages%2Fdatasets%2Fiterable dataset.py%22%2C+line+547%2C+in+ iter arrow%0A++++++++++++++++++for+key%2C+pa table+in+iterator%3A%0A+++++++++++++++++++++++++++++++++++++++%5E%5E%5E%5E%5E%5E%5E%5E%0A++++++++++++++++File+%22%2Fusr%2Flocal%2Flib%2Fpython3.14%2Fsite-packages%2Fdatasets%2Fiterable dataset.py%22%2C+line+430%2C+in+ iter arrow%0A++++++++++++++++++for+key%2C+pa table+in+self.generate tables fn%28 gen kwags%29%3A%0A+++++++++++++++++++++++++++++++++++++++%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%7E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%0A++++++++++++++++File+%22%2Fusr%2Flocal%2Flib%2Fpython3.14%2Fsite-packages%2Fdatasets%2Fpackaged modules%2Fjson%2Fjson.py%22%2C+line+327%2C+in+ generate tables%0A++++++++++++++++++raise+e%0A++++++++++++++++File+%22%2Fusr%2Flocal%2Flib%2Fpython3.14%2Fsite-packages%2Fdatasets%2Fpackaged modules%2Fjson%2Fjson.py%22%2C+line+290%2C+in+ generate tables%0A++++++++++++++++++pa table+%3D+paj.read json%28%0A++++++++++++++++++++++io.BytesIO%28batch%29%2C+read options%3Dpaj.ReadOptions%28block size%3Dblock size%29%0A++++++++++++++++++%29%0A++++++++++++++++File+%22pyarrow%2F json.pyx%22%2C+line+364%2C+in+pyarrow. json.read json%0A++++++++++++++++File+%22pyarrow%2Ferror.pxi%22%2C+line+155%2C+in+pyarrow.lib.pyarrow internal check status%0A++++++++++++++++File+%22pyarrow%2Ferror.pxi%22%2C+line+92%2C+in+pyarrow.lib.check status%0A++++++++++++++++++raise+convert status%28status%29%0A++++++++++++++pyarrow.lib.ArrowInvalid%3A+JSON+parse+error%3A+Invalid+value.+in+row+0%0A%60%60%60%0A%0A%0Acc+%40lhoestq+%40cfahlgren1. for direct support. Sinabis Oil – Synthetic Email Dataset More than 1.25 million emails from the everyday business of a fictional energy company. They span eight and a half years and four languages, and they include real attachments and calendar invitations. Every person, company and event is made up. The content was written by large language models, and the demo-gen generator built the structure around it. All figures in this file were computed from the files themselves as of 1 Oct 2026 . They are not target values from the configuration. At a glance | Emails | 1,251,102 13.1 GB, .eml per RFC 5322 | | Business cases | 376,417 : 262,776 email threads and 113,641 single emails | | Meetings | 9,470 meetings with 45,483 calendar emails, plus 3,020 standalone .ics files | | Document attachments | 57,890 : 33,467 PDF · 13,485 DOCX · 10,938 XLSX | | Time span | January 2018 to July 2026, about 146,000 emails per year | | Languages | English, German, French, Italian | | People | 140 employees in 15 departments, 60 external contacts | | Organisations | 1 main company + 39 others group companies, suppliers, authorities, customers | What it is about Sinabis Oil & Gas GmbH Wilhelmshaven, Germany, fictional runs drilling operations in the North Sea, a refinery, pipelines and tank farms. The emails show the day-to-day business of such an operation. There are 29 topics , including: North Sea drilling campaign · refinery turnaround · pipeline inspection · HSE incident report · IT security incident · data protection case · audit · supplier tender · CAPEX budget · shift planning · environmental permit · offshore emergency power · HR topics and more. About 12 % of the emails are private or informal exchanges between colleagues. Single emails are newsletters, memos, circulars, payment reminders and maintenance notices. Who is writing? | Group | Count | Examples | |---|---|---| | Sinabis Oil & Gas GmbH | 140 people, 15 departments | E&P, Drilling, Refinery, HSE, Procurement, IT, Legal/Compliance | | Sinabis group companies | 21 | Sinabis Logistik, Sinabis Finanzdienst, Sinabis Consulting | | Suppliers and service providers | 11 | Nordsee Rig Services, Baltic Drilling Supplies, Friesland Inspection | | Authorities | 4 | Landesbergamt Nord, Hafenbehörde Wattkant, Umweltagentur Küstenland | | Energy customers | 3 | Ostsee Stromwerk, Nordlicht Kraftwerke, Küstenstadt Wärme | Activity is unevenly distributed , like in a real mailbox: about 145 internal senders write 99 % of the internal emails, some of them tens of thousands each. People only appear during their period of employment. Language distribution The language of each email was determined from its subject and its own text, without the quoted history, using stop-word detection. Very short texts, such as calendar replies like "Accepted: …" or "Zugesagt: …", were assigned by their subject line. | Language | Main set | Earlier set | Total | Share | |---|---|---|---|---| | English | 481,765 | 199,677 | 681,442 | 54.5 % | | German | 306,392 | 32,991 | 339,383 | 27.1 % | | French | 102,762 | 26,694 | 129,456 | 10.3 % | | Italian | 97,069 | 3,752 | 100,821 | 8.1 % | | Total | 987,988 | 263,114 | 1,251,102 | | Every email is monolingual : subject, body, signature, disclaimer, legal notice and history header are all in the same language. Attachments by language | | | DOCX | XLSX | |---|---|---|---| | English | 20,021 | 6,690 | 5,323 | | German | 7,965 | 4,084 | 3,482 | | French | 3,365 | 1,352 | 1,128 | | Italian | 2,116 | 1,359 | 1,005 | Models used In the main set, the tag at the end of the file name …-V1.eml , …-QW.eml shows which model wrote the email. | Tag | Model | Emails | Share | |---|---|---|---| | V1 – V6 | Qwen3.6-35B-A3B AWQ, 4-bit | 781,765 | 62.5 % | | none | DeepSeek V4 Flash no thinking , incl. all 263,114 of the earlier set | 335,068 | 26.8 % | | QW | Qwen 3.6 | 88,786 | 7.1 % | | none , calendar | no LLM , rule-based | 45,483 | 3.6 % | The PDF, DOCX and XLSX attachments are real files. The model only supplies the content; the generator builds the files itself. Downloads The dataset is split into archives so you only need to download what you're interested in: | Archive | Contents | |---|---| | Sinabis Demo Dataset emails.zip | 1,251,102 .eml files | | Sinabis Demo Dataset chats.zip | chat/messenger conversations | | Sinabis Demo Dataset appointments.zip | standalone .ics calendar files | Each archive keeps the internal folder structure shown below. README.md and docs/ are plain files in the repo, not zipped. Folder structure . ├── README.md ├── docs/ │ └── generation/ │ ├── prompts.json │ ├── chat prompts.json │ └── company.json ├── Sinabis Demo Dataset emails.zip │ └── batch-0001 … batch-0031/ ├── Sinabis Demo Dataset chats.zip │ └── batch-0001 … batch-0002/ └── Sinabis Demo Dataset appointments.zip The batch folders only split the data so that no single folder holds a million files. They carry no meaning. How everything is linked Email threads