NOTE 3—REVENUE

The majority of our revenue is derived from contracts that can span from a few months to several years. We enter into contracts that can include various combinations of services, which, depending on contract type, are sometimes capable of being distinct. If services are determined to be distinct, they are accounted for as separate performance obligations. A performance obligation is a promise in a contract to transfer a distinct good or service to the client and is the unit of account. A contract’s transaction price is allocated to each distinct performance obligation and recognized as revenue when, or as, the performance obligation is satisfied. The majority of our contracts have a single performance obligation as the promise to transfer the individual services is not separately identifiable from other promises in the contracts and, therefore, is not distinct. For contracts with multiple performance obligations, the Company allocates the transaction price to each performance obligation using our best estimate of the standalone selling price, or SSP, of each distinct product or service in the contract. The Company establishes SSP based on management’s estimated selling price or observable prices of products or services sold separately in comparable circumstances to similar clients.

Our contracts may include promises to transfer multiple services and products to a client. Determining whether services and products are considered distinct performance obligations that should be accounted for separately versus together may require judgment.

Contract Balances

The timing of revenue recognition, billings and cash collections result in billed accounts receivables, unbilled receivables (contract assets) and customer advances and deposits (contract liabilities). Our clients are billed based on the type of arrangement. A portion of our services is billed monthly based on hourly or daily rates. There are also client engagements in which we bill a fixed amount for our services. This may be one single amount covering the whole engagement or several amounts for various phases, functions or milestones. Generally, billing occurs subsequent to revenue recognition, resulting in contract assets. However, we sometimes receive advances or deposits before revenue is recognized, resulting in contract liabilities. Contract assets and liabilities are generally reported in the current assets and current liabilities sections of the consolidated balance sheet, at the end of each reporting period, based on the timing of the satisfaction of the related performance obligation(s). For multi-year software sales with annual invoicing, we perform a significant financing component calculation and recognize the associated interest income throughout the duration of the financing period. In addition, we reclassify the resulting contract asset balances as current and noncurrent receivables as receipt of the consideration is conditional only on the passage of time and there are no performance risk factors present. See the table below for a breakdown of contract assets and contract liabilities.

  ​ ​ ​

December 31,

  ​ ​ ​

December 31,

  ​ ​ ​

2025

  ​ ​ ​

2024

Contract assets

$

14,489

$

18,335

Contract liabilities

$

9,788

$

10,058

Non-current contract assets of $1.3 million as of December 31, 2025 and $2.7 million as of December 31, 2024 are included in “Other assets” on the Consolidated Balance Sheet.

Revenue recognized for the year ended December 31, 2025 that was included in the contract liability balance at January 1, 2025 was $8.4 million and represented primarily revenue from our fixed-fee, research, and subscription contracts.

Remaining performance obligations

As of December 31, 2025, the Company had $118.9 million of remaining performance obligations, the majority of which are expected to be satisfied within the next year.

Out-of-Period Adjustment

In conjunction with the Company’s close process for the second quarter of 2024, management identified a $0.5 million error related to revenue incorrectly recognized during the third quarter of 2022. Accordingly, the Company recorded a $0.5 million adjustment in the second quarter of 2024 to reduce revenue. Management evaluated the pre-tax impact of this error of $0.5 million on the Company’s previously reported interim and annual financial statement for Q3 2022 and full year 2022 consolidated financial statements and determined that the impact of this misstatement is not material to the consolidated financial statements for any interim or annual periods.

Historical Timeline

Fiscal YearFiled
2025Mar 6, 2026Showing above
2024Mar 13, 2025
2023Mar 8, 2024
2022Mar 10, 2023
2021Mar 11, 2022
2020Mar 12, 2021
2019Mar 11, 2020
2018Mar 15, 2019

About Revenue Disclosures

Revenue disclosures under ASC 606 explain how a company identifies performance obligations, allocates transaction prices, and determines when revenue is recognized. This section is essential for understanding whether reported revenue reflects genuine economic activity or aggressive accounting choices. Analysts examine the mix of point-in-time versus over-time recognition, which directly affects revenue timing and comparability.

Key signals: rising contract liabilities (deferred revenue) suggest strong future revenue visibility, while declining contract assets may indicate slowing project milestones. Watch for variable consideration estimates — rebates, returns, and performance bonuses that require management judgment. Significant changes in disaggregated revenue by geography or product line can reveal shifting business mix before it appears in headline numbers. Compare revenue growth against contract liability growth to assess sustainability, and scrutinize any changes in the timing of recognition that coincide with earnings pressure.