Settings

OBSCURA Case

E-discovery on your own computer.

This browser’s Pro key was not accepted: the subscription behind it has ended. Renew or subscribe below.

Case onlyUS$2 a month, 7 days free EverythingUS$5 a month, 7 days free

US$2 a month or US$19 a year for Case, or US$5 a month or US$48 a year for everything. 7 days free. Stripe takes a card, and nothing is charged if you cancel before they end.

Case in the light theme: the sample case searched for "variation notice" or liquidat*, six documents listed, a Word attachment open with the phrase marked, and the coding panel with Responsive and Hot tickedCase in the dark theme: the same search, the Word attachment open with its hit marked, coded Responsive and Hot

Case at work

Taken from Case itself, with its sample: an invented construction dispute of two custodians’ mailboxes and a shared drive, which you can load with one button once Case is open.

From two mailboxes to a production. The sample matter is loaded, and the overview shows the thirteen duplicates found and the four threads rebuilt. The search term report runs six searches at once. A Boolean search opens the Word attachment with its hits marked, and keys code it Responsive and Hot. On the site meeting minutes every hit is boxed for redaction and a passage is boxed by hand. The Responsive documents are produced as NGB000001 to NGB000004 with their load files, and the people map shows who wrote to whom. Everyone in it is invented. Recorded in Case itself; there is no sound.
The search term report: six searches, each with its documents, hits, documents with families and unique documents, and a total rowThe same search term report in the dark theme
The search term report. Six searches at once: steel w/3 delivery finds two documents, four hits, three with their families. Each row opens its documents on Review.
The overview: 34 documents, 25 families, 21 unique after duplicates, 13 duplicates, threads, potentially privileged documents, and review progress by tagThe same overview in the dark theme
Where the case stands. The same messages in both mailboxes are thirteen duplicates, left out of review; four documents name the solicitors and are flagged; the progress bars move as you code.
The site meeting minutes open as the PDF they are, in redact mode: every hit of liquidated boxed with the reason Confidential, an amount boxed as Not relevant, and the coding panel listing both redactionsThe same redactions in the dark theme
Redacting on the page. Redact every hit boxed liquidat* on the minutes’ own page; the amount was boxed by hand. Each box has its reason, and nothing about the PDF itself has changed.
The Produce screen after a production: the next one numbered from NGB000019, the first listed with its Bates range, 17 documents, 18 pages and its manifest SHA-256, and the privilege log with the withheld email, its ground and its descriptionThe same Produce screen in the dark theme
A production made. Seventeen documents as NGB000001 to NGB000018, the solicitor’s advice withheld and in the privilege log; the next production carries on from NGB000019.
The people map of the sample: Dana Okafor, Priya Raman, Tom Aldous and Sam Petrov joined by lines as thick as the emails between them, Dana pressed and her links drawn in blueThe same people map in the dark theme
Who wrote to whom. The sample’s correspondence from its emails’ headers. The larger the circle, the more of the others someone sits between; Dana’s links are drawn in blue.
Everything it does

Load a matter’s email and documents, review and redact them, and produce them with Bates numbers. Nothing is uploaded. Find the duplicates and the threads, search with Boolean and proximity, code for review, and produce the load files a review platform imports; build the chronology, see who wrote to whom, and bind exhibits, with every step in an audit trail. No server holds your client’s documents. For small firms, in-house legal teams, investigators and newsrooms.

Before you start: One browser holds a case: reviewers pass case files to each other rather than working in one live. What else it does not do

Compared with Relativity.

What it does

A case is a matter’s documents, the people they came from, and what the reviewers have decided about them. Everything below happens in the browser tab, in workers of its own, so the page stays usable while ten thousand documents go through.

Loading

Drop files, folders or zips on the Load screen, or choose them, and say whose they are. Each document is given a control number with your prefix (NGB-000001), a family, its custodian, its path and its file’s hashes. A zip inside a zip is opened too. A file that cannot be read is still listed, with the reason, so nothing goes missing quietly.

Email

EML and MBOX are read by the site’s MAILBOX and POSTBAG readers, MSG and winmail.dat by SATCHEL’s, and Outlook PST and OST by CABINET’s, which is checked against libpst on real Outlook files. From, to, cc, bcc, date, subject and the message ids are kept; pictures shown inside a message are not made documents of their own.

Documents

PDF text and document information through pdf.js; Word, Excel and PowerPoint text, comments, speaker notes and hidden sheets, with the author and dates each file records, from the current formats and from the 1997 to 2003 ones (.doc, .xls, .ppt), whose streams are read as Microsoft publishes them; text, CSV, RTF and web pages. A scanned PDF or a picture is set aside for OCR, which is slow and so is a step of its own.

Duplicates

Only the top of a family is compared; its attachments go with it. A file’s key is its SHA-256; an email’s is the SHA-256 of its sender, recipients, date, subject, body and attachments, because the same email saved from two mailboxes is two different files. The first copy loaded is kept; the rest point at it, across the case and within each custodian, and the kept copy lists every custodian who holds it.

Near-duplicates

Drafts, versions and the same letter sent to two people are grouped around the largest of them, the pivot, when their text is at least 80% alike, or whatever share you set. Each document’s text is boiled down to a MinHash signature as it is read, so fifty thousand documents are grouped in seconds, not compared pair by pair. Review shows a near-duplicate against its pivot word by word, with what only one of them says marked, and gives the similarity.

Threads and inclusive emails

Every message id a message names is joined to its own, so replies to a message that was never loaded still land in one thread. Each thread is ordered by date, with how deep each reply is, and shown beside the message. A message whose words are all quoted in a later one is marked as held in it; the rest are inclusive, and Review can show only those, so a thread is read once, not once a reply. A message whose attachment the reply dropped stays inclusive.

The index

A real inverted index, with the position of every word, built in a worker and kept with the case so it opens in a second or two. Words are matched without regard to case or accents (Café finds cafe), and a search runs in milliseconds.

Search

steel w/5 delay, notice pre/3 programme, "site meeting", negligen*, (crane OR steel) AND NOT tag:none, from:hollis-law.example, custodian:"Dana Okafor" date:2024-03..2024-04, near:pivot, inclusive:yes, recieve~ for a word within one letter, /\d{3}-\d{2}-\d{4}/ for a regular expression over the text, lang:fr, cluster:3. The filters above the list do the same without typing. A search that cannot be read says where.

Analytics

Worked out in the tab from the case’s own index, with nothing sent anywhere. Prioritised review ranks what is not coded by how likely it is to be Responsive, by logistic regression on the documents’ words trained from the coding (as Cormack and Grossman’s baseline model implementation for continuous active learning does), and ranks again as coding goes on; its precision, recall and AUC come from five-fold cross-validation. An elusion sample of what is not coded gives the recall, with its interval, and a stopping report says how. Clusters, More like this and related words come from latent semantic analysis of the same vectors; categories suggest the rest of the documents to tags from the ones coded with them, each accepted by a person; each document’s language is found from its words. Highlighting marks sets of words in every document as it is read.

Locked files and Outlook items

A PDF or a zip with a password is kept, and Review asks for the password where its text would be; given, the PDF is read and the zip’s contents come in as its family. Zips encrypted with ZipCrypto or WinZip’s AES are both read. The password stays in the tab’s memory to try on the next locked file, and is never saved. A .pst’s calendar entries, contacts, tasks and notes are documents of their own kinds, each with its fields as its text and an .ics or .vcf made from them.

Review

J and K move through the list, 1 to 9 tag, N finds the next document not coded, H the next hit, O shows the original. Responsive and Not responsive are one answer. Notes are kept as you type. Every change is written to the browser’s database at once.

Batches

The documents not yet coded, or whatever a search found, split into batches of the size you choose for a named reviewer, without splitting a family, each with its progress.

Working as a team, without a server

Save the case, or a review set of some of it, as one file. Another reviewer opens it in their own browser, codes, and sends back a coding file. Merging it takes what only they changed, keeps what you agree on, and shows every document you both changed, to keep yours, theirs or both.

The case file

A zip anyone can open: the case, a line of JSON for each document, the coding, the redactions, the productions and bundles made, the chronology, the audit trail, each document’s text, each original once by its SHA-256, and a manifest with the SHA-256 of every part. Opening one checks every part before anything is kept; a file changed by one byte is refused.

Redaction

On a PDF or a picture, drag a box over what is to go, on the page itself; on an email, a Word file or anything else, select the words in its text. Redact every hit covers every hit of the search at once. Each redaction has a reason (privileged, personal data, confidential, not relevant) and is kept as data beside the document: the original is never changed, and a redaction taken away is gone.

Productions

Choose the documents by tag or by search, with their families, without duplicates, and with privileged documents withheld behind a slip sheet. Each page gets a Bates number (your prefix, first number, digits, and where on the page) and any endorsement. Every page is a picture, with the redactions painted in solid black before it is written, so there is nothing under them. Each page is looked at: one with colour on it goes out as a colour JPEG, and one without as a black and white Group 4 TIFF at 300 or 200 dpi, as the usual protocols ask; or every page one way, if you choose. Spreadsheets can go out native.

Load files

A Concordance DAT (the usual delimiters: ASCII 20, þ and ®) with Bates ranges, attachment ranges, custodians, email fields, dates, hashes and links to the text, natives and PDFs, and an Opticon OPT for the images, each page’s TIFF or JPEG named line by line, as Relativity, Everlaw and Concordance import them; the DAT says how many of each document’s pages are in colour. A word that was redacted is taken out of the text files, and a load file value that contains one is written [REDACTED].

Productions received

Choose the other side’s volume on Load, zipped or as a folder. Its DAT and OPT are checked first against what the formats require: every row the header’s width, the Bates numbers without a gap or an overlap, family ranges that hold their documents, each document’s images matching its range, every linked file there, each problem listed by line. Each row becomes a document numbered by its own Bates number, in its family, with its metadata; its page images (Group 4 or LZW TIFF, JPEG, PNG) are put together as one PDF, each image’s SHA-256 kept, and a native is checked against the MD5 the DAT gives. Case reads its own load files back the same way before it writes them.

Quality control

On Batches, a random sample of the documents with any tag, of those not coded (an elusion test) or of one reviewer’s coding, sized from a confidence and margin of error, and drawn as the documents ranked lowest by the SHA-256 of a seed and their control number, so anyone can draw it again. Y and X answer it on Review; the error rate comes with its Wilson interval, carried to the whole set.

Tag groups and tag sets

Tags in groups, shown under their headings in the coding panel; a group can take one answer only, so Confidential and Highly confidential, say, cannot both be on. Six sets to start a matter from, and a case’s own set saved as a file another case opens.

Privilege log

Every document withheld, or redacted as privileged, with its date, author and recipients, the privilege claimed and a description you write, saved as CSV and as PDF, on its own or in the production with its Bates numbers.

The production’s seal

The volume is one zip with a manifest listing the SHA-256 of every file in it and the manifest’s own SHA-256 beside it; the case keeps each production’s manifest SHA-256, its Bates range and each document’s numbers. A PDF of each document, when asked for, is opened again as it is made and checked to have no text at all.

Chronology

Case suggests events from what it already knows: each email by when it was sent, each file by when it says it was made and last saved, and every date written in a document’s text, with the words around it. Nothing goes in until you pin it. A pinned event keeps its documents by control number, and its date, words and basis (documented, reported, inferred, disputed) can all be changed. It saves as TIMELINE’s file, as a CASEMAP matter that shows the gaps, or as CSV.

People

A map of who wrote to whom, from the From, To and Cc of the kept copy of each email (Bcc if you ask): one person to an address, whatever names they used, a line as heavy as the messages between two people. The arithmetic is LINK’s: betweenness by Brandes’ method, which finds the person who sits between two groups with few messages of their own, and the people and links the correspondence would fall apart without. Filter it by custodian, dates and copies; press a person to review their emails; save it as SVG or CSV, which LINK opens.

Exhibits

The documents with a tag, or a search’s results, bound into one PDF by the site’s EXHIBIT: an index at the front whose entries link to each exhibit, a sticker on each one’s first page, and a number on every page. A PDF or a picture goes in as it is; an email or an Office file goes in as its text laid out on pages; anything redacted goes in as pages drawn with the redactions painted out, and is described without its subject.

The audit trail

Every load, coding change, redaction, merge, export, production and bundle is written down as it happens, with who and when. Each entry holds the SHA-256 of the one before it, so changing, removing or reordering any entry breaks every one after. The trail goes into the case file; opening the file checks it link by link and refuses a file whose trail does not check, even one whose manifest was remade to match. It can be saved as CSV or JSON lines and checked with a few lines of code of your own.

Organisations and pace

Every domain in the case’s email with its people and the messages it sent and received, which organisations wrote to which, and the privilege screen’s domains and webmail marked. The Overview draws the documents coded each day and by whom, from the audit trail, and how long what is left takes at that pace.

Chain of custody

For each file the case was loaded from: who it was received from and by, when and how, and every hand-over since, each written to the audit trail; saved as CSV and as a PDF to sign, with the file’s SHA-256 and the trail’s last.

Coding in, and plug-ins

Coding from another platform or a spreadsheet comes in by control or Bates number, shown before it changes anything. Reports and load files of your own are a few lines of JavaScript, run in a worker that can reach no address and sees the case’s metadata and coding, never a document’s text.

The matter file

The review, its coding, tags and productions, in the matter’s one encrypted file beside Practice’s matter, PDF Studio’s working files and the invoices in Books. Case opens its own part and leaves the others sealed; coding coming back is reviewed one change at a time and lands only on a document with the same control number and SHA-256. How it works

Lists out

The document list, with control numbers, families, custodians, metadata, hashes, duplicates, threads, tags and notes, and the search term report, each as CSV for a spreadsheet.

Files it reads

KindReadNotes
EML, MBOXYesGmail’s Takeout, Thunderbird, Apple Mail; an attached email becomes a document of its own
MSG, winmail.datYesBodies in plain text, HTML or Outlook’s compressed RTF
Outlook PST, OSTYesEmail, and calendar entries, contacts, tasks and notes as documents of their own, each with an .ics or .vcf made from its fields. Not the Outlook 97 to 2002 format, nor files made with Outlook’s “high” encryption; both are named rather than guessed at
PDFYesText of up to 2,000 pages, author, title and dates; a scanned PDF read by OCR, to its first 50 pages or as many as you choose, to 2,000. A PDF with a password once you give it
Word, Excel, PowerPointYes.docx, .xlsx, .pptx: text, comments, speaker notes and hidden sheets, author and dates. The 1997 to 2003 formats (.doc, .xls, .ppt): a Word file’s text with its headers, footnotes and comments, every sheet’s cells with formulas as their values, each slide’s text and notes, and the author and dates. Not a file protected with a password, nor Word 6 or 95 and Excel 5 or 95; each is named rather than guessed at
Text, CSV, RTF, web pagesYesA web page’s words, with nothing in it run; shown sealed, with nothing fetched
PicturesBy OCRJPEG, PNG, GIF, WebP and BMP
ZIPYesZips inside zips too. An encrypted zip (ZipCrypto or WinZip AES) once you give its password
Anything elseNo textKept, hashed and listed

How big a case

Measured, not estimated: a generated case of email and documents loaded through the Load screen in Chrome on a four-core computer, by case-perf-test.mjs, which the site’s checks run.

DocumentsLoaded and indexedLongest pause of the pageA search
10,534 (17 MB)28 secondsan eighth of a secondunder 30 milliseconds
52,534 (86 MB)4 minutes 1 secondhalf a second, a few timesunder a third of a second

Those times include finding the near-duplicates and inclusive emails, which the same test measures: for the 52,534 documents, 17 seconds, of which grouping every document’s signature took 1.2 seconds and looking through the 30,010 emails in threads the rest. Grouping again at another threshold took 1.4 seconds, with the page never pausing for more than a tenth of a second.

Producing is measured by the same test: the first thousand of those documents, one page each, produced as the Produce screen makes them by default (each page looked at for colour, black and white ones as Group 4 TIFFs at 300 dpi, text, the load files and logs) took 109 seconds, 9.1 pages a second, with the page’s longest pause under a fifth of a second. On a busier run of the same test it was 4.5 pages a second.

Ten thousand documents is comfortable. Fifty thousand works, more slowly, and is as far as it has been tested; past that, split the matter into more than one case. What limits it is the computer: the documents, their text and the index are kept in the browser’s own storage on this disk, which browsers allow a share of the free space, and a case file can be saved up to 2 GB.

What it cannot do yet

Said now, so that nobody pays to find out.

  • The people map is the headers. It knows who an email was addressed to, not who read it or who is named inside it, and a person with two addresses is two people until the addresses are the same. The chart draws the 120 busiest people; the table and the files hold everyone. Its arithmetic takes about two seconds for 2,000 people and 20,000 links.
  • The chronology suggests; it does not decide. A date found in a text is found by how it is written, and one that could be either way round (04/05/2024) is suggested day first and marked. The chronology’s times are in UTC; Review shows a document’s in the case’s time zone, with the UTC time beside it.
  • An audit trail proves it was not changed, not that it is true. It shows the trail you were handed is the one the case file was sealed with, entry for entry. Someone with the case in their own browser could start a new case and a new trail; it is not a signature.
  • Produced pages are made from the text. A PDF’s pages are drawn as they are, and a picture is placed on a page; an email, a Word, Excel or PowerPoint file or a web page is produced as its text laid out on pages, not as it looked in its own program. Produce it native as well when its look matters, if it needs no redaction.
  • Redacting a PDF takes out whole pieces of its text. The picture of the page is covered exactly where the box is; its text file loses every piece of text the box touches, which on some PDFs is a whole line. A redacted scan or picture goes out with no text, because its OCR text says nothing of where each word was.
  • Productions are slow beside a server. Every page is drawn and written in this tab, at four to eight pages a second at 300 dpi on a four-core computer: ten thousand pages is a matter of twenty to forty minutes. Pages, not documents, are what take the time; a production of more than 2 GB must be made as more than one volume.
  • Colour is decided by counting pixels. A page goes out in colour when at least two in ten thousand of its pixels are clearly coloured: a logo or a red stamp is enough, a faint tint is not, and a grey photograph goes out black and white, as a Group 4 TIFF always is. Pages are single-page files; there is no multi-page TIFF.
  • One browser holds a case. There is no server, so two reviewers do not see each other’s coding as they work: they hand files to each other. A reviewer’s coding file merges in by itself where only one of you changed a document; where both did, a person chooses whose to keep. Clearing the browser’s data for this site deletes its cases; keep a case file.
  • Near-duplicates are by words, not by meaning. Two texts are alike when their runs of three words are, estimated from 128 values to within about four points; a document of fewer than seven words is not compared, and the look of a page does not count. Threads come from message ids, not from subjects alone, and a quotation that was edited makes the earlier message inclusive, because it is no longer all there.
  • Analytics is arithmetic on words. The ranking, the clusters, concept search and the categories all work from which words a document uses and how often, not from reading it: a document that says the same thing in other words can be missed, and one full of the right words ranked high. The ranking needs documents coded each way to learn from, and its cross-validated figures are rough until there are a few hundred; they say how well it ranks, not that the review is complete. Only an elusion sample, reviewed by a person, estimates recall, and only as well as that person codes it. Clusters depend on how many are asked for. Languages are told by their commonest words for sixteen written in the Latin alphabet and by their alphabet for nine more; Danish and Norwegian can be taken for each other, and a short document is undetermined. A regular expression is stopped after eight seconds on any 300 documents.
  • Patterns are patterns. Dates, amounts and addresses are found by the way they are written, so an unusual form is missed and a number that looks like a date is found. A date such as 04/05/2024 could be either way round and is marked so.
  • Productions received come as a DAT and an OPT. Not IPRO’s LFP or Summation’s DII. A received document’s text is the producing party’s text file, redacted as they redacted it; a page image that is not TIFF, JPEG or PNG is not put in its PDF.
  • A quality control sample is a simple random sample. It is not stratified, and its margin of error holds once the whole sample is checked.
  • The privilege screen is a screen. It flags documents that name the people and domains you give it; deciding what is privileged is yours.
  • OCR is slow. A few seconds a page on a laptop, in English unless you choose another language; a PDF is read to its first 50 pages unless you choose more, and a stopped reading carries on from the next page.
  • Very large files. A single file over 512 MB is read from the disk as it is needed rather than into memory, and is given a SHA-256 but no MD5.

Where your documents are

On this computer, in this browser’s storage for obscuraos.com, and in the case files you save. The page’s code comes from the site to a Pro key; your documents never go the other way, and the page’s security policy would stop them if anything tried. Redacting for discovery and hash sets and MD5 are guides on the same ground.

Case

OBSCURA CaseOpening the case on this computer…