CLAUSEWATCH
How it works
ClauseWatch watches the dates in the contracts you already have. You upload them; it reads them, works out the last day you can give notice, and re-reads all of them every night against that night’s date. Here is what that looks like, step by step.
Upload the drawer
Drag in the PDFs. There is nothing to connect in version one — no OAuth, no mailbox scope, no admin consent, no security review to schedule — and a contract is read the moment it lands. Watching a Google Drive folder instead of uploading is the next thing on the roadmap.
It locates the clauses that carry a deadline
It reads 5 clauses out of every document:
- The effective date — when the term started.
- The term end — when the current term runs out.
- The notice period — how many days of warning the other side is owed.
- Whether it renews automatically, and for how long.
- Any price uplift that applies on renewal.
Each one is located in the sentence that governs it, which is why a date in the payment-terms paragraph is never reported as the term end — and why “commences on January 1 and ends on December 31” yields two different clauses out of one sentence. The paragraph and the page number are kept with the value and travel with it everywhere it is shown.
It works out the last day you can act
The notice deadline is the term end minus the notice period. It is computed only when both of those were actually located in your document; if either is missing, the contract reports not found naming which one, rather than a deadline derived from a default. There are 6 named reasons a clause can come back not found, and every one of them is a different thing for you to do about it.
It re-reads everything, every night
A pass runs at 06:00 UTC and re-reads every watched contract against that night's date — up to 500 of them in a run, resuming at the oldest unread if it hits that ceiling rather than skipping anything. The clauses never move. The calendar does, and the night it crosses a notice deadline is the night that matters.
In the morning you get what changed
The queue is a diff, not a list. A contract in the same state tonight as it was last night raises nothing at all, which is why the queue is short enough to work through with coffee. Each row states the transition — notice window open, notice window closing, deadline passed, or a date that stopped being readable — and carries the paragraph it was read from.
Anything outbound waits behind a kill window
Approving a row drafts a notice and stages it for 90 seconds. The kill window lives in the dispatcher's own query, not in a caller's check, so there is no code path that sends one early — and never more than 25 notices go out in a day. The Kill button sits on the row for the whole time.
Every read, raise, approval, kill and send is written to the activity ledger with the evidence it acted on, so the record of what went out includes the sentence it was based on.
What it will not do
It will not tell you a date your contract does not contain. Every located value is re-read out of its own quoted span before it is returned, and one whose quote does not contain it is destroyed rather than downgraded. That check has no flag, no allowlist and no way to turn it off — a hallucinated renewal date reads perfectly and would be the one defect that ends this product.
Weighing this against the alternatives? See how it differs from a contract lifecycle platform in ClauseWatch vs Concord and ClauseWatch vs Ironclad, and from a repository with reminders in ClauseWatch vs Trackado and ClauseWatch vs ContractSafe.
Want to see it on a real drawer? See the live demo →
For the whole category at once — eleven tools, each with the price it publishes on its own pricing page, and the state notice windows that decide whether an auto-renewal is enforceable at all — see contract renewal tracking software compared.