Turn signed Dropbox Sign contracts into a renewal countdown
Read the terms hiding inside your executed contracts, then track every auto renewal by the date your cancellation window shuts.
Build me an app that answers the question Dropbox Sign cannot: what did we actually agree to, and when does it renew. Dropbox Sign stores the executed PDF but holds no structured terms and offers no renewal view, so the notice date lives nowhere. This app is the post signature layer. It is about extracted obligations and renewal decisions, not about logging new signings.
Loading the register. A handler calls the Dropbox Sign List Signature Requests operation filtered to completed and signed requests, paginating through the full history rather than just the first page. For each request it calls Get Signature Request to pick up the counterparty signers and the signing dates. Store one row per signature request in the app's own persistence, keyed by the signature request id, so the register survives reloads and does not refetch everything on every visit. Re-running the load should update existing rows and add new ones without wiping anything that has been extracted or corrected.
View one is the register. Turn that flat list into a table I can search and filter by counterparty, document type and annual value, with the signing date and signer names visible. Each row should make it obvious whether its terms have been extracted yet or whether it is still just a signed file with no known obligations.
The important part is a Read this contract button on each row that kicks off a background agent for that single contract. The agent calls Get Signature Request Files as File URL to pull the executed PDF, reads the document, and extracts the terms nobody currently has anywhere: the counterparty legal name as written in the contract rather than the signer's display name, the effective date, the initial term length, whether it auto renews, the notice window for cancelling, the annual value with its currency, and the termination clause captured close to verbatim so a human can check it. The agent then writes all of that back into the app's persistence so the register fills in. Show live progress on the row while it runs, and never invent a value: if a term genuinely is not in the document, leave it blank and mark it unknown rather than guessing, because a confident wrong notice period is worse than an empty one.
Derive two dates in the app from the extracted terms and recompute them whenever a field changes. The expiry date is the effective date plus the initial term. The notice deadline is the expiry date minus the notice window. The notice deadline is the number that matters and it is the one the second view is built around.
View two is a renewal countdown board sorted by the date the notice window closes rather than by the expiry date, because that earlier date is the one people miss. Contracts currently inside their notice window are flagged loudest, since for those the decision is live right now. Anything that auto renews within the next ninety days is pulled to the top. Show the days remaining until the notice deadline as the primary number, with the expiry date as secondary supporting detail, and show the annual value so the size of the commitment is obvious at a glance.
Whoever owns renewals opens this monthly, so put a plain count of the decisions needed in the next thirty, sixty and ninety days across the top of the board. Plain counts, measured from the notice deadline rather than the expiry date.
I must be able to correct any extracted field by hand, inline on the row, because a human reading the clause always wins over the extraction. A corrected field is stored as human set and must never be overwritten if that contract is read again later. Make it visible which fields came from the document and which a person fixed, so the register carries its own trust signal.
From the board I want two actions. Export the filtered register to a finance spreadsheet using the Google Sheets Append Values operation, sending one row per contract and respecting whatever filter is currently applied rather than always dumping everything. And send a specific renewal warning to the owning team using the Slack Send a Message operation, naming the counterparty, the notice deadline, the annual value and what happens if the date passes, rather than a generic nudge.
One firm constraint on storage. The extracted terms live in the app's own persistence and are never round tripped through the spreadsheet. The Google Sheet is an export destination for finance only, never a source of truth the app reads back from.
What does this prompt do?
- Builds a searchable register of every contract that has been fully signed, with the counterparty and signing dates already filled in, so you finally have one list of what you agreed to.
- Gives each row a Read this contract button that sends an assistant into the executed PDF to pull out the terms nobody has written down anywhere: the legal entity name, start date, term length, whether it renews itself, the notice period, the annual value and the termination clause.
- Shows a countdown board ordered by the day your cancellation window closes rather than the expiry date, because that earlier deadline is the one people actually miss.
- Puts plain counts of the renewal decisions due in the next 30, 60 and 90 days at the top, and lets you export the filtered list to a finance spreadsheet or send a renewal warning to the team that owns the contract.
What do I need to use this?
- A Dropbox Sign account holding the signed contracts you want to track
- A Google account if you want to export the register to a finance spreadsheet
- A Slack workspace if you want renewal warnings sent to the team that owns the contract
- Nothing to prepare in advance: the app reads contracts you have already signed, including old ones
How can I customize it?
- Set the notice period the board assumes before a contract has been read, since 30 days is typical for monthly subscriptions, 60 for annual deals and 90 for enterprise agreements
- Decide what counts as high value so the biggest commitments sort to the top of the countdown board
- Choose which Slack channel receives renewal warnings and which spreadsheet the register exports into
- Adjust the 30, 60 and 90 day decision windows at the top if your business plans renewals on a different rhythm
FAQs
Does this change anything in Dropbox Sign?
What happens if a term gets read incorrectly?
Why sort by the notice date instead of the contract end date?
Will it pick up contracts we signed a long time ago?
Do I have to read every contract at once?
What if a contract does not say whether it auto renews?
Related templates
Stop buying stale lists. Reps run a saved search, work the results like an inbox, and only the accounts they approve ever reach your CRM.
Drag creators through Sourced to Wrapped on a board grouped by campaign, with audience stats on every card and a one-click brief for each creator.
Search creators for free, shortlist the best with your team, and spend an audit credit only when you decide someone is worth a closer look.
Pick a repricing rule, send an assistant out to check competitor pages, then approve the new prices that clear your margin floor.
See the projected bounce rate for any outbound send before it goes out, and keep the launch button locked until the list is clean enough to be safe.
One screen showing invited, completed, and shortlisted counts for every open role, plus the stalled invites that have quietly gone nowhere.
Stop finding out about a renewal after the window has already shut.
Your signed contracts already contain every notice deadline you are about to miss. This puts them on one screen, in the order they will bite.