An open source developer has released an Obsidian plugin that brings automated financial contract auditing to a local, privacy-first workflow. Revenue Auditor targets SEC credit agreements and complex financial contracts, using local AI inference and PDF extraction to parse documents without sending sensitive data to any external service.
The Problem It Addresses
Auditing financial contracts — particularly SEC credit agreements — is a labor-intensive process. Analysts need to extract expected values, default interest rates, payment schedules, and covenant terms from dense PDF documents, then cross-reference those figures against actual payment records to identify underpayments, discrepancies, and variances. The work demands precision, and the documents involved are often subject to strict confidentiality requirements that preclude uploading them to cloud-based AI services.
Revenue Auditor is built to address this exact gap. It runs entirely on the user's machine, processing PDF contents in memory and performing LLM inference through a locally hosted Ollama server. No contract text or financial data ever leaves the machine, which the developer describes as a privacy-first architecture with zero external API calls and no telemetry, analytics, or logging of sensitive data.
How the Plugin Works
The plugin requires Obsidian version 1.4.0 or newer and a locally running Ollama instance. Supported models include llama3.2, deepseek-r1, and mistral. Users install the plugin by downloading the release files and placing them in the .obsidian/plugins/revenue-auditor/ directory, then enabling it through Obsidian's Community Plugins settings.
Once installed, the user organizes their Obsidian vault into three directories. Contract PDFs go into 01_Contracts/, payment ledgers in CSV format go into 02_Payments/, and generated reports appear in Analysis/. The analysis folder contains an Audit_Index.md that serves as a real-time index of all completed audits, along with individual Audit_*.md reports for each contract reviewed.
To run an audit, the user opens the Command Palette, selects Revenue Auditor, and picks the contract PDF and corresponding payment CSV from the modal. The plugin then processes the contract through its Docling-based PDF extraction pipeline, sends the extracted content to the local Ollama model, and generates structured Markdown output.
Core Capabilities
Revenue Auditor delivers three primary functions. First, automated contract term extraction parses PDF credit agreements to pull out expected values, default interest rates, payment schedules, and covenant terms. Second, the payment reconciliation engine cross-references the extracted commitment figures against the actual payment records in the CSV file, instantly flagging underpayments, discrepancies, and variances. Third, the AI risk and penalty analysis generates structured Markdown tables that detail default triggers, late fees, and concealed penalty clauses.
The plugin also supports configurable settings. Users can set the Ollama endpoint address, select their preferred extraction model, and customize the extraction timeout for longer SEC filings that may require more processing time.
Why Local Processing Matters Here
The decision to process everything locally is not just a convenience — it is central to the plugin's usefulness in financial contexts. Credit agreements contain commercially sensitive terms, payment histories expose confidential financial positions, and regulatory filings are subject to compliance constraints that cloud-based processing may violate. By routing all text processing and LLM inference through a local Ollama server, Revenue Auditor eliminates the risk of data leakage that would disqualify cloud-based alternatives in regulated environments.
Distributed under the MIT License, Revenue Auditor is available on GitHub. For teams and individual auditors working with SEC credit agreements who need both automation and confidentiality, the plugin offers a working model of what local AI tooling can accomplish in a domain where data privacy is non-negotiable.