Inspiration
This started here in Chile, where arranging a property visit can be pretty informal. A real estate agent asked me for personal documents before a visit. I did not know him, and I was not comfortable sending them with no assurance about how they would be used or whether he might share them later.
I wanted to protect the file, mark the copy for that recipient, and have a way to recognize it if it appeared somewhere else. That is where the idea for DocTrace came from.
What it does
DocTrace turns PDFs, DOCX files, and images into protected PDFs ready to send. You can choose:
- Password: require a password to open the file.
- Confidential: add a recipient watermark to every page.
- Traceable: embed a unique ID in the page content, metadata, and PDF structure so a received copy can be checked against local history.
Everything happens on the device. DocTrace reopens and validates the output before the share sheet appears. Passwords are never saved, temporary files are removed, and no DocTrace account is required.
How I built it
I built DocTrace for iOS and Android with Kotlin Multiplatform and Compose Multiplatform. Shared Kotlin code handles the product rules, MVI state, local Room history, file conversion flow, and RevenueCat subscriptions. Platform adapters handle PDFBox on Android and PDFKit with Quartz on iOS, plus file pickers and native share sheets.
RevenueCat powers DocTrace Pro with weekly and annual plans. The first protected copy is free, so people can try the full flow before paying. Eligible users can also try the annual plan free for seven days.
Challenges
The hardest part was deciding what "success" means for a protected file. DocTrace writes the result atomically, reopens it with the password, renders control pages, validates the required trace channels, and only then records the operation and opens the share sheet.
The other big challenge was keeping the same experience across two platforms without hiding their differences. PDF engines, file access, and sharing stay native behind common interfaces.
What I learned
Security products need honest language. Passwords, restrictions, and watermarks reduce casual access and reuse, but they cannot stop screenshots or determined copying. DocTrace explains those limits and focuses on what it can guarantee: local processing, an untouched original, and a validated output.
Log in or sign up for Devpost to join the conversation.