Inspiration
A startup founder signs an NDA with a Fortune 500 partner. Three months later, the partner's legal team claims the document they received had different terms. There's no audit trail. No proof of when the watermark was applied. No cryptographic record of who generated what, and when.
The founder loses the deal. Possibly the company.
This isn't a horror story — it's the default state of legal document workflows in 2026. Every year, $1.5 trillion in commercial contracts are disputed, delayed, or voided — not because of bad intent, but because of broken process. Agreements are drafted in Word, emailed as attachments, and signed with no tamper-evidence whatsoever. A PDF can be edited and re-saved invisibly. "I sent it Tuesday" is not a legal defense.
We built Foxit Sentinel Pro to make that story impossible.
What it does
Foxit Sentinel Pro is an auditable agreement orchestrator — it takes a legal template, injects the right data via AI autofill, generates a cryptographically-secured PDF through Foxit's API, and logs every single action in an immutable ledger. In under 30 seconds.

| Before Sentinel Pro | After Sentinel Pro |
|---|---|
| 3.4 days average turnaround | < 30 seconds end-to-end |
| No tamper evidence | SHA-256 hash logged at every step |
| Manual copy-paste errors | AI autofill from deal context |
| "I think I sent v3" | Immutable ledger with timestamps |
| PDF emailed as attachment | Linearized for instant web streaming |
Here's what the audit ledger looks like in practice:
Template Selected → SHA-256: a3f9c2d1... → 09:14:22 UTC
Data Injected → SHA-256: b71e4d88... → 09:14:23 UTC
PDF Generated → SHA-256: c88f0134... → 09:14:51 UTC
Watermark Applied → SHA-256: d02a7c55... → 09:14:54 UTC
Linearized → SHA-256: e19b3f90... → 09:14:57 UTC
Every hash is a cryptographic fingerprint of the document at that exact moment. If anything changes, the chain breaks.
How we built it
The core pipeline calls the Foxit PDF Services API at three stages:
- HTML → PDF — A populated legal template (NDA, MSA, Offer Letter) is rendered server-side into a pixel-perfect PDF via
/pdf-services/api/documents/create/pdf-from-html. - Watermarking — The PDF is immediately stamped with
CONFIDENTIAL — ID: [unique hash]via/pdf-services/api/pdf-watermark, applied server-side so it cannot be stripped. - Linearization — The secured PDF is optimized for fast web streaming via
/pdf-services/api/documents/optimize/pdf-linearize.
The frontend is built with React 19 + Framer Motion for fluid animations and a premium feel. The backend runs as Vercel Serverless Functions — all API logic lives in api/_lib/ as plain ES Modules, ensuring Foxit client code is bundled correctly within the serverless boundary.
The audit ledger uses SHA-256 hashing at each pipeline stage, creating a tamper-evident chain of custody for every document.
Challenges we ran into
- The serverless bundling problem: Vercel's serverless functions can't resolve modules from parent directories. Fix: move backend logic into
api/_lib/as plain JS modules, no TypeScript compilation. - Foxit API polling required a polling loop with a 60-attempt timeout and graceful fallback.
- Crypto polyfill:
crypto.randomUUID()requires explicit import in Node.js serverless environments.
Accomplishments we're proud of
- Fully live, production deployment on Vercel
- Complete Foxit API pipeline working end-to-end
- Immutable audit ledger for verifiable document integrity
- Director Mode — self-driving demo recorded as
.webm - Solved hard serverless bundling challenges
What we learned
- "It works locally" ≠ "It works in production." Simplification often beats extra config.
- Security features can be invisible to the user — watermark, hash chain, linearization.
What's next for Foxit Sentinel Pro
- Public Blockchain Anchoring — Audit hashes to Polygon or Solana
- Foxit eSign Integration — Direct pipeline from linearized PDF into eSign workflows
- Multi-party Real-time Signing — Co-signing with status tracking
- Mobile Verification App — QR-code scanner for on-site hash verification
Built With
- api
- axios
- css
- express.js
- foxit
- framer
- lucide
- motion
- node.js
- react
- services
- tailwind
- typescript
- vite


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