-
-
Unsealed: upload a confusing official letter (PDF) and get what you owe, by when, and what to do, in plain language.
-
When a letter contradicts itself ($1,827 vs $1,872), Unsealed flags it and shows both passages instead of quietly picking a side.
-
Verified answers point to the exact line in the letter, highlighted in the document so you can check it yourself.
-
This letter contradicts itself on how to pay rent. Unsealed shows both passages and flags the conflict instead of picking a side.
-
Amount and due date are Verified, with the exact line highlighted in the letter. The unclear action is marked Unsure, not guessed.
Unsealed
Official letters bury the details that matter. Unsealed tells you what you owe, by when, and proves it with the exact line from the letter.
Inspiration
It's 11 p.m. A student opens a letter from the bursar's office. Three dates, two dollar amounts, and a paragraph that seems to say you owe money and also that you don't. Somewhere in there is a deadline. Miss it, and a hold goes on your account, a late fee gets added, and registration locks.
For a college student, especially a first-generation one with no one at home who has decoded these letters before, that's a real problem. Tuition statements, financial aid notices, and collection letters are written to be legally precise, not readable. And when the letter is confusing, the cost lands on the person least able to absorb it.
Rida Rahim and Muhammad Bin Zeeshan, two NYIT students, knew that feeling. They also knew that "just ask an AI" isn't a fix. A fluent summary is exactly how a wrong deadline gets believed, because the mistakes arrive in confident, well-written sentences. The two kinds of error aren't equal:
$$\text{cost}(\text{confidently wrong}) \gg \text{cost}(\text{``I'm not sure''})$$
A wrong deadline can cost real money. An honest "I'm not sure" costs a phone call. So they built around one rule: quote or abstain.
What it does
Upload a PDF and Unsealed answers the four questions every confusing letter leaves open: how much, by when, what do I have to do, and what happens if I don't?
Every answer is marked Verified, Unsure, or Not found. Verified answers show the exact words from the letter, highlighted right beside the answer, so you never have to take the AI's word for anything. And when a letter contradicts itself, say a summary that says $1,827 and a body that says $1,872, Unsealed doesn't quietly pick a side. It raises a warning with both passages, each one clickable.
How we built it
Rida built the backend and Muhammad built everything you see. They split the work up front and kept to it.
Grounding is enforced in code, not requested in a prompt. Qwen3-30B on Nebius Token Factory reads the letter and returns each answer with a supporting quote. A field only becomes Verified if that quote is actually found in the letter's text. A model that invents a plausible quote gets Unsure.
A second model checks the first. In parallel, NVIDIA Nemotron-3-Ultra, a different model family, hunts for contradictions and reports them as pairs of exact quotes. Disputed answers drop to Unsure, so one model's mistake isn't repeated by its own reviewer.
The interface treats doubt as a feature. The letter sits beside the answers, only confirmed passages are ever underlined, and "Unsure" and "Not found" are designed states, not error messages. Muhammad also built a second line of defense in the browser, so if a Verified answer's citation can't be located, the interface shows it as Unsure.
Challenges we ran into
Nobody graded their own homework. Muhammad wrote every blind test letter and kept the answer keys private, and he scored the N and C blind sets by hand. Rida never saw the answers until the numbers were in. So when the first blind run left five fields marked Verified despite conflicting evidence, there was no way to explain it away. That failure is the reason the independent checker exists.
Faster wasn't better. Nemotron Super was several times faster than Qwen, but it overclaimed a field in every run. The team took the slower model with zero dangerous errors and put the effort into making the 10 to 25 second wait feel designed instead of broken.
The checker cried wolf. Nemotron Ultra raised a false alarm on a clean letter until one added sentence ("leave out items you judge consistent") fixed it. The team labels that fix open-book, because it was tuned on a letter it had already seen.
The final exam wasn't a perfect score, and they published it anyway. On the preregistered blind set C (run with one documented protocol deviation), Unsealed earned 3 PASS, 3 SAFE and 2 FAIL. Both failures shared one flaw: after a conflict was caught, a disputed instruction or consequence still sounded too sure, especially in the summary. Rida fixed it, but the team chose not to rerun C, because a better score on letters they'd already seen would prove nothing.
Muhammad's audit found a bug in Rida's own code. An unparseable checker response was being reported as a clean check, the exact kind of false reassurance the project exists to prevent. Rida fixed it, and the timeline, including a protocol deviation, went into the repository for anyone to read.
What we learned
Honesty can be engineered. Asking a model nicely to be careful didn't work; making the code refuse unverified answers did. A wrong "Verified" and a safe "Unsure" are not the same miss, so the team counted them separately. And the person who builds a system should never be the one who grades it.
What's next
OCR for scanned letters, a proper field for money owed to you (refunds), and downgrading dependent consequences when the value they rest on is disputed.
So what are you waiting for?
Do you want to miss your rent payment? Do you want a hold on your account because a letter buried the deadline in paragraph four? We didn't think so.
Upload a letter. See exactly what it says, and exactly where. Try Unsealed today.
Built With
- accessibility
- ai-evaluation
- github
- llm
- natural-language-processing
- nebius
- nebius-token-factory
- nextjs
- node.js
- nvidia
- nvidia-nemotron
- qwen
- react
- typescript
- unpdf
- vercel
- zod

Log in or sign up for Devpost to join the conversation.