All agents

AI Contract Memory

Ingests your contracts (PDF, DOCX, or pasted text), extracts every obligation, renewal, and risk clause with a cited source excerpt, and keeps watch — auto-renewal notice deadlines, cross-contract conflicts, a transparent 0–100 risk score, and scheduled portfolio reports. AI-assisted monitoring, not legal advice.

AI Contract Memory (agent #19, Operations + Finance) runs your contract portfolio so nothing buried in a signed agreement surprises you. Upload contracts (up to 10MB each) in the Contracts console and the agent extracts header terms and clauses — obligations, renewals, terminations, payments, liabilities — each with a verbatim source excerpt, then scores every contract 0–100 with an explicit rubric. On each scheduled sweep it extracts new uploads (up to 3 per run), re-checks deadlines inside your alert window (auto-renewals use the REAL deadline: renewal date minus notice days), scans the portfolio pairwise for contradictions, and saves a risk report with charts. Everything is grounded in the actual contract text by hard rule; findings are items to verify against the source document — this is not legal advice and does not replace your lawyer.

What it does

This agent replaces the contract spreadsheet nobody maintains. When you upload a contract, in-platform extraction turns it into text (PDF via unpdf, DOCX via a built-in reader, or pasted text; scanned/image-only PDFs yield almost no text and are flagged for review rather than guessed at). contract_extract then reads the full text in ~12,000-character chunks and returns strict JSON per chunk: header terms (counterparty, parties, dates, auto-renewal flag + notice days, value, a short summary) and clauses, each with kind, severity, optional due date, and a verbatim source excerpt under 300 characters. A fixed severity rubric is applied consistently — critical for auto-renewals whose cancellation-notice deadline is near, uncapped liability/indemnity, or exclusivity/non-competes binding you; high for counterparty termination-for-convenience, payments due under 30 days, liability caps over 2x contract value, or unilateral price rises. The contract's risk score is then pure arithmetic, not vibes: min(100, 25 per critical + 10 per high + 4 per medium), with dismissed clauses excluded — re-grade any clause via contract_flag_risk and the score recomputes.

Then it keeps watch. contract_deadlines surfaces everything due inside your alert window: open time-bound clauses plus auto-renewal cancellation deadlines computed as renewal date (or end date) minus the notice period — the last day you can still act — with severity escalating as the window closes (critical at ≤14 days left). contract_conflicts compares contracts pairwise (up to the 10 most recent active contracts, max 10 pairs per run, skipping pairs already carrying a pending conflict alert) for contradicting payment terms, exclusivity, territories, or IP ownership, and files a high-severity alert naming both contracts. Each run ends with contract_make_report — portfolio KPIs, highest-risk contracts, a 90-day deadline schedule, pending alerts, and charts — and, if autonomy is set to push, an Operations Manager task per critical item. Every extraction and report is metered, every report carries the disclaimer: AI-extracted terms — verify against the source document; not legal advice.

How it works

Your Business
1
Ingest
Upload PDF/DOCX or paste text in the Contracts console (10MB per file). Format is sniffed from magic bytes; PDF text comes via unpdf, DOCX via a built-in ZIP/XML reader, and the extracted text is stored in your workspace's R2 storage. Files yielding under 200 characters are flagged as likely scanned/image-only and stay in 'review' — no OCR guessing.
2
Extract with citations
contract_extract reads the stored text in ~12,000-character chunks (200,000-character cap per contract) and returns strict JSON per chunk: header terms (counterparty, dates, auto-renewal + notice days, value, summary) and clauses — obligation, renewal, termination, payment, liability, risk — each with a verbatim source excerpt. Duplicates from chunk overlap are deduped; re-running replaces the previous extraction.
3
Score by rubric
Each clause gets a severity from a fixed rubric (critical = closing auto-renew notice window, uncapped liability, exclusivity/non-compete; high = termination-for-convenience, payment due <30 days, liability cap >2x value, unilateral price rises). The contract's risk score is min(100, 25·critical + 10·high + 4·medium), dismissed clauses excluded — contract_flag_risk re-grades a clause and recomputes it.
4
Watch the real deadlines
contract_deadlines lists open time-bound clauses plus auto-renewal cancellation-notice deadlines — computed as renewal date (or end date) MINUS notice days, the last day you can still cancel or renegotiate. Severity escalates as it approaches: critical at ≤14 days left, high at ≤30. Anything new inside your alert window becomes a pending alert via contract_create_alert.
5
Detect cross-contract conflicts
contract_conflicts compares contracts pairwise — payment terms, exclusivity, territory, IP — across the 10 most recent active contracts (max 10 pairs per run) or any two you name. Pairs that already have a pending conflict alert are skipped; each finding files a high-severity alert naming both contracts and the nature of the clash.
6
Report and escalate
contract_make_report saves the portfolio report — KPIs (active contracts, total value, deadlines in 30 days, open high/critical clauses, pending alerts), highest-risk contracts, the 90-day deadline table, and charts (deadlines by month, contracts by risk band, value by counterparty). With autonomy set to push, ops_create_task raises an Operations Manager task per critical item; with an alert email configured, contract_send_digest emails the pending alerts and upcoming deadlines to that address and marks the emailed alerts as sent. The run closes with record_output.
Outcomes delivered

Setting it up — owner / admin

  1. 1
    Subscribe and deploy
    Subscribe from the marketplace and deploy from /dashboard/agents/[id]. No external tools are required — upload, extraction, alerts, and reports all run in-platform.
  2. 2
    Upload your first contracts
    Open the Contracts console at /dashboard/contracts and upload 2–3 agreements (text-based PDF, DOCX, or pasted text; 10MB each). Scanned image-only PDFs are detected and flagged — paste the text instead for those.
  3. 3
    Fill the config fields
    Set Portfolio context (your business, currencies, and what 'risky' means to you — it sharpens extraction and severity), the Alert window (7 / 14 / 30 / 60 days ahead; 30 is the default), and Autonomy (Report only, or Also push critical items to the Operations Manager).
  4. 4
    Run the first extraction
    Hit 'Run extraction now' in the console (or Run now on the deployment page). Watch clauses land with source excerpts, risk scores compute, and any deadlines inside the window become alerts.
  5. 5
    Set the schedule
    A weekly sweep is typical: each run extracts up to 3 new uploads, re-checks deadlines, scans for conflicts, and saves a fresh portfolio report. Extraction also runs on demand right after an upload.
  6. 6
    Wire in Operations (optional)
    Switch Autonomy to 'push to ops' once you trust the severities — critical items (e.g. a closing auto-renewal notice window) then arrive as tasks in the Operations Manager with the contract name and due date.

Using it day to day — your team

  1. 1
    Scan the Portfolio tab
    The Contracts console (/dashboard/contracts) lists every contract with counterparty, type, key dates, value, and its 0–100 risk score. Open one to see every extracted clause with its severity, due date, and the verbatim source excerpt to verify against.
  2. 2
    Work the Deadlines tab
    Everything due soon, chronologically — payment and obligation due dates plus auto-renewal notice deadlines already computed as renewal date minus notice days, with days-left and severity.
  3. 3
    Triage Alerts
    Deadline, renewal, conflict, and risk alerts stay pending until you dismiss them. Conflict alerts name both contracts and the nature of the contradiction.
  4. 4
    Correct the machine
    Confirmed that liability cap is fine, or a concern is moot? Re-grade the clause (or mark it done/dismissed) and the contract's risk score recomputes from the formula — your judgment overrides the extraction.
  5. 5
    Ask the portfolio questions
    Chat with the agent using its read-only tools (contract_search / contract_get / contract_deadlines): 'which contracts have exclusivity?', 'what renews in Q3?'. Answers cite contract names and source excerpts — and are framed to verify, never as legal advice.
  6. 6
    Read the Reports
    Each sweep saves a portfolio risk report — KPIs, highest-risk contracts, the 90-day deadline schedule, and charts — in the console's Reports tab.

Use cases

Never miss an auto-renewal
The agent extracts both the renewal date and the notice period, computes the real deadline (renewal minus notice), and alerts inside your window while you can still cancel or renegotiate — escalating to critical when 14 days or fewer remain.
Find the buried risk
Uncapped indemnity in §9.2, a non-compete you forgot, unilateral price-rise rights — extracted with the verbatim excerpt, graded by an explicit rubric, and rolled into a recomputable 0–100 score per contract.
Catch contradictions between agreements
Two contracts with conflicting payment terms, overlapping exclusive territories, or incompatible IP clauses: pairwise conflict detection flags the pair as a high-severity alert naming both contracts and the clash.
Contract visibility without a CLM suite
Ops and finance teams get a living portfolio — searchable by clause keyword, scored, deadline-tracked, and reported on a schedule — without buying a contract-lifecycle platform or hiring counsel to make a spreadsheet.

What to expect

  • A living contract portfolio with per-contract 0–100 risk scores from an explicit, recomputable rubric
  • Every obligation, renewal, termination right, payment term, and liability clause extracted with a verbatim source excerpt to verify against
  • Deadline and auto-renewal alerts computed as renewal date minus notice days — raised while you can still act
  • Cross-contract conflict alerts (payment terms, exclusivity, territory, IP) naming both contracts
  • Scheduled portfolio risk reports with KPIs and charts, plus optional Operations Manager tasks for critical items — always carrying the not-legal-advice disclaimer

Metrics to watch

  • Pending alerts — the live queue of deadlines, renewals, conflicts, and risks awaiting a decision
  • Deadlines in the next 30 days — the report KPI to keep at zero surprises
  • Open high/critical clauses — the portfolio's concentrated risk, and the first number to negotiate down
  • Risk-band distribution — how many contracts sit critical (75+) / high (50+) / medium (25+) across the portfolio, run over run
  • Extraction coverage — contracts still un-extracted (each sweep handles up to 3), plus scanned files stuck in 'review' needing pasted text
  • Metered usage — extractions and reports per month against your tier limits

FAQ

Is this legal advice?
No — and the system enforces that framing. It is AI-assisted contract monitoring: every extracted term must come from the actual contract text and carries a verbatim source excerpt so you can verify it, every report ends with the disclaimer, and chat answers about your portfolio are framed as items to check against the source document. It replaces the tracking spreadsheet, not your lawyer — involve counsel for decisions that matter.
What file types work, and what about scanned PDFs?
Text-based PDF, Word (.docx), and plain/pasted text, up to 10MB per file (200,000 characters of text per contract). Scanned image-only PDFs yield almost no extractable text — anything under 200 characters is flagged and the contract stays in 'review' rather than being guessed at. There's no OCR in v1; paste the text instead.
How is the risk score computed?
Arithmetic, not a black box: min(100, 25 points per critical clause + 10 per high + 4 per medium), with dismissed clauses excluded. Severities come from a fixed rubric (e.g. critical = closing auto-renew notice window, uncapped liability, exclusivity/non-compete). Re-grade any clause and the score recomputes immediately.
How do auto-renewal alerts work?
The agent extracts both the renewal date and the notice period, and the deadline engine computes the actionable date as renewal date (or end date) minus notice days — because that's the last day you can still cancel. Deadlines inside your configured alert window become pending alerts, with severity critical at 14 or fewer days left and high at 30 or fewer.
What exactly does conflict detection compare?
Each pair's key terms — payment and liability clauses plus anything matching exclusivity, non-compete, territory, or IP — are compared for real contradictions. A portfolio scan covers the 10 most recent active contracts (max 10 pairs per run), skips pairs that already have a pending conflict alert, and files a high-severity alert per finding naming both contracts and the nature of the clash.
Where are my contracts stored, and can the agent invent terms?
Originals and extracted text live in your workspace's private R2 storage, tenant-isolated like all MNKI data; deleting a contract removes the files, clauses, and alerts. The agent operates under an absolute rule that every term it states must come from a tool result grounded in the contract text — extraction only includes clauses actually present, each with its excerpt.