| Components of contract assets and contract liabilities | 
 The components of contract assets and contract liabilities consisted of the following: 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 
 | 
September 30, | 
 | 
December 31, | 
 
 | 
2023 | 
 | 
2022 | 
 
 | 
(in thousands) | 
 
| Contract assets - current: | 
 | 
 | 
 | 
 
| Unbilled revenue | 
$ | 
9,944  | 
 | 
 | 
$ | 
5,706  | 
 | 
 
 | 
 | 
 | 
 | 
 
| Total contract assets - current | 
$ | 
9,944  | 
 | 
 | 
$ | 
5,706  | 
 | 
 
 | 
 | 
 | 
 | 
 
| Contract assets - long-term: | 
 | 
 | 
 | 
 
| Unbilled revenue - long-term | 
$ | 
2,411  | 
 | 
 | 
$ | 
1,287  | 
 | 
 
| Contract assets - long-term | 
590  | 
 | 
 | 
681  | 
 | 
 
Total contract assets - long-term(1)
  | 
$ | 
3,001  | 
 | 
 | 
$ | 
1,968  | 
 | 
 
 | 
 | 
 | 
 | 
 
| Contract liabilities - current: | 
 | 
 | 
 | 
 
| Deferred revenue - current | 
$ | 
6,621  | 
 | 
 | 
$ | 
6,783  | 
 | 
 
 | 
 | 
 | 
 | 
 
| Total contract liabilities - current | 
$ | 
6,621  | 
 | 
 | 
$ | 
6,783  | 
 | 
 
 | 
 | 
 | 
 | 
 
| Contract liabilities - long-term: | 
 | 
 | 
 | 
 
 | 
 | 
 | 
 | 
 
| Other contract liabilities - long-term | 
$ | 
96  | 
 | 
 | 
$ | 
109  | 
 | 
 
| Total contract liabilities - long-term | 
$ | 
96  | 
 | 
 | 
$ | 
109  | 
 | 
 
  
Changes in short-term and long-term contract assets and contract liabilities for the nine months ended September 30, 2023 were as follows: 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 
 | 
Contract Assets | 
 | 
Contract Liabilities | 
 
 | 
(in thousands) | 
 
| Balance as of January 1, 2023 | 
$ | 
7,674  | 
 | 
 | 
$ | 
6,892  | 
 | 
 
| Billings or revenue recognized that was included in the beginning balance | 
(2,955) | 
 | 
 | 
(6,117) | 
 | 
 
| Changes in contract assets or contract liabilities, net of reclassification to receivables | 
8,617  | 
 | 
 | 
5,757  | 
 | 
 
| Cumulative catch-up adjustment arising from changes in estimates to complete | 
(92) | 
 | 
 | 
49  | 
 | 
 
| Cumulative catch-up adjustment arising from contract modifications | 
(208) | 
 | 
 | 
149  | 
 | 
 
| Changes in costs to fulfill and amortization of commission costs  | 
(91) | 
 | 
 | 
—  | 
 | 
 
| Changes in contract commission costs | 
—  | 
 | 
 | 
(13) | 
 | 
 
| Balance as of September 30, 2023 | 
$ | 
12,945  | 
 | 
 | 
$ | 
6,717  | 
 | 
 
  
 |