Building Judgment into Financial Models
Financial models are built on formulas, but many decision points can’t be reduced to a clear formula with clean inputs. Will this client renew? Will this borrower prepay? These decisions depend on a mosaic of context that calls for judgment.
Super-fast decision models like Jev from TypeSafe AI or GPT-6 Luna through OpenAI’s Decisions API can make these decisions from messy underlying data, including unstructured sources like CRM notes. Combined with Orcaset, they let financial models apply that judgment across thousands of decisions in seconds.
Example Scenario: Contract-Level Revenue Projections
Traditional revenue forecasts rely on manager input or historical retention rates to estimate contract renewals and sizing. Neither approach is both fast and granular.
Bottom-up by client: Produces the most detailed near-term projections, but takes days or weeks to collect from sales managers and isn’t an option in many M&A or investment scenarios.
Historical estimates: Rely on backward-looking averages. History may be too thin, or too different from current conditions, to support forward-looking projections.
With a decision model, firms can skip the sales managers survey. They can use data they already have in their CRM, product logs, and finance systems to build client-level renewal estimates for thousands of contracts directly into their revenue models.
Example Implementation
Consider an enterprise software company that sells multi-year licenses. It has 1,000 clients with an average ACV of $57,324. Each client has CRM notes, usage trends, and contract details sourced from Salesforce and product logs. For this demo, details for all 1,000 clients were generated with the following content format.
Field | Value |
|---|---|
Client name | Axiom Grid |
Current term | 2022-09-01 to 2027-09-01 |
ACV | $275,000 |
Client since | 2015 |
TTM usage growth | -4% |
CRM note 2026-01-09 | Enterprise IT is consolidating vendors; we are on the keep list so far. |
CRM note 2026-04-16 | A small business unit was divested and those seats came off the contract. |
CRM note 2026-07-23 | No champion risk. Ops lead has used the product since the 2015 original deal. |
CRM note 2026-09-10 | Renewal is a year out. They expect flat scope unless the divestiture reverses. |
The data for Axiom Grid shows a slight decrease in usage but a clear CRM signal for renewal in 2027. Given the client’s long tenure and the CRM notes, it’s reasonable to project that Axiom will renew next year at a similar ACV.
At each contract’s renewal date, the Orcaset revenue model asks Jev for a renewal decision based on the client’s data. If the client renews, Jev also estimates the change in ACV. If it terminates, Jev classifies the most likely reason.

Adding up all contracts gives total revenue, shown here by client cohort based on the year each client first signed.
Running this report, including the calls to Jev for all 1,000 contract renewals, takes only about 2.3 seconds.
Orcaset exposes calculation traces for review. As a gut check, the trace for Axiom shows that Jev projects a 2027 renewal at a flat ACV, which is a reasonable assumption given the client information above.
Since Jev also classifies the reason for each termination, it’s simple to break down projected churn by cause. Traditional statistical approaches can’t provide this kind of breakdown because they don’t look at individual client details.
Categorization like this lets analysts dissect financials using unstructured data, such as CRM notes and company profiles, that traditional models can’t use.
Zooming Out
Contract renewals are just one example. The same approach works for any judgment call that can’t be reduced to a clean formula. Decision models let financial models draw directly on notes, emails, and other context that analysts would otherwise weigh by hand.
Because Orcaset models are code, each call to Jev sits alongside the rest of the calculation, where it can be traced and reviewed like any other assumption.
The full model and client data are available on GitHub.