Transcripts U.S.
Attorneys receive deposition transcripts that even the marketplace cannot read
Transcripts U.S. sells access to deposition transcripts that court reporting agencies hold. We added PIN protected encryption to its live marketplace, so payment and audit still run through the platform but only the paying attorney can open the file.
Government, Legal & DefenseLegal transcript marketplaceAI added to a live product
The challenge
Transcripts are confidential legal records, and the client required that platform admins could never open them, while delivery still had to be paid for, tracked and released by the agency.
What we did
Key pairs created in each user's browser and locked by a PIN, a content key per transcript, and release in the agency's browser after payment, inside the existing request flow.
The outcome
The platform delivers transcripts its own admins cannot open, a requirement the client checked off before the pilot, with payment, release and audit still on the platform.
- Admin access to transcripts
- None, by design
- File on the platform during discovery
- None, until a paid request is released
- Decrypts in
- The paying attorney's browser only
- Kept on the platform
- Stripe payment, release and audit per request
The starting point
Transcripts U.S. runs a two sided marketplace where attorneys request, pay for and download deposition transcripts held by court reporting agencies. Requests, Stripe payment, fulfillment and delivery already ran through the platform, and attorneys now discover transcripts through title page details alone.
What had to change
Transcripts are confidential legal records, and the client's own checklist required that platform admins could never open their contents. Delivery still had to be paid for, tracked and released by the agency.
What could not break
- Platform admins can never open a transcript's contents
- Release and download happen only after payment
- The agency stays the one who releases each transcript
- All fulfillment stays inside the platform, tracked by Request ID
- A decrypted transcript never passes through the platform's servers
The calls we made
We took the operator out of the trust chain while keeping the sale, the release and the audit trail inside the platform.
- 01
Keys created and locked in the browser
Each user sets a 4 digit PIN, and their browser creates a key pair and encrypts the private key with that PIN before it leaves the device, so the platform stores only encrypted private keys and never the PIN.
Ruled outA platform held master key in a cloud key service, which would still let the operator decrypt transcripts.
- 02
No file on the platform until release
During discovery attorneys see only title page details, so the transcript itself first reaches the platform when the agency releases a paid request, already encrypted with its own content key.
Ruled outHaving agencies upload transcripts at the start, which would store them on the platform through discovery, even encrypted.
- 03
The agency stays the release authority
The agency enters its PIN to release each paid request, and its browser locks the content key so only the paying attorney's private key can open it.
Ruled outAutomatic release on payment, which would mean storing the agency's PIN or private key and break the design.
- 04
Keep payment and audit on the platform
Encryption changes who can read the file, not how it is sold, so the Request ID, Stripe checkout at the agency's price and audit events stay where they were.
How the system fits together
What we built
Decryption in the attorney's browser
The attorney enters their PIN, and the transcript decrypts and displays in their browser, while every step stays recorded against the Request ID.
PIN protected key pairs
Every user sets a 4 digit PIN at onboarding, and the browser creates a public and private key pair and encrypts the private key with that PIN before it leaves the device.
A content key per transcript
At release, the agency's browser generates a random content key, encrypts the transcript with it and locks that key with the paying attorney's public key.
Release only after payment
Release opens only once the request is paid at the agency's price, and the agency confirms it with its PIN, so the readable file and key never reach the server.
An honest PIN warning
Because the platform never holds a PIN, onboarding tells agencies and attorneys plainly that a lost PIN can mean lost access to their encrypted transcripts.
How it works
Discover
Attorneys find a transcript through title page details while the file stays with the agency.
Pay
The agency approves and prices the request, and the attorney pays through Stripe.
Release
The agency enters its PIN, and its browser encrypts the transcript and locks its key for the attorney.
Open
The attorney enters their PIN, and the transcript decrypts only in their browser.
A closer look
Request ID TUS-000007
Status Released after payment
During discovery title page fields only, no file
Transcript encrypted in the agency's browser with its own content key
Content key locked with the paying attorney's public key
Agency private key encrypted with the agency's PIN
Attorney private key encrypted with the attorney's PIN
PINs never stored
Payment Stripe checkout at the agency's price
Readable copy none on the platform's serversWhat changed
The marketplace now delivers transcripts that its own admins cannot open, a requirement the client checked off its list before the pilot. Payment, release and audit still run through the platform, under one Request ID per request.
- None to transcript contents
- Admin access
- Admin access requirement checked off
- Client checklist
Under the hood
- Datics role
- AI added to a live product
- Encryption
- A public and private key pair per user, a content encryption key per transcript, and private keys encrypted with a 4 digit PIN in the browser.
- Data boundary
- The platform stores only encrypted files, encrypted private keys and locked content keys; PINs are never stored and decrypted transcripts never pass through its servers.
- Deployment
- Serverless AWS with Lambda, API Gateway, Cognito, S3 and SQS, defined in AWS CDK, with development and production in separate AWS regions.
- Payments and audit
- Stripe checkout at the agency confirmed price, and audit events queued through SQS against each Request ID.
Cloud and infrastructure
Apps and APIs
Also in the stack
How it shipped
A requirement on the checklist
The client's checklist required release and download only after payment, with platform admins unable to open transcript contents, and asked us how to move files from agency to attorney without admin access.
Design and review
We set out the PIN, key pair and content key design in the technical implementation document, and weighed alternatives such as a platform held key and automatic release against it.
Built into the release flow
Encryption joined the existing Request ID, Stripe checkout and release steps, with a PIN for every user at onboarding and release tied to the agency's PIN.
Demos and pilot
Recorded attorney, agency and admin walkthroughs followed, and the client checked the admin access requirement off its list before the pilot.
Our answer to their question
The client asked for our recommendation on secure agency to attorney transfer without admin access, and this design was the answer, built against its own checklist.
A document their advisors could read
When the client's advisors asked for a clear technical document, we wrote up what is built, the AWS architecture and this encryption design, step by step.
What this unlocked
An enterprise court reporting firm asked that agencies keep custody of the file itself, so the next step explores delivery where the agency remains the custodian and the platform keeps metadata, payment and audit, configurable per agency.
Related work
Have a product with the same kind of constraints?
Tell us what already exists and what you want it to do. We will tell you what it takes.
