XML 42 R31.htm IDEA: XBRL DOCUMENT
v3.25.2

Segment reporting and concentrations (Tables) | 6 Months Ended
--- | ---
Jun. 30, 2025
Segment reporting and concentrations |
Reconciliation of Assets from Segment to Consolidated | The measure of segment assets is reported on the balance sheet as total consolidated assets shown in the table below (in thousands): ​
​ | ​ | ​ | ​ | ​ | ​ | ​
​ |  | June 30, 2025 |  | December 31, 2024*
Total assets: |  | ​ |  |  | ​ |
DDS | ​ | $ | 112,159 | ​ | $ | 91,588
Synodex | ​ |  | 4,828 | ​ |  | 4,790
Agility(1) | ​ |  | 15,636 | ​ |  | 17,071
Total Consolidated | ​ | $ | 132,623 | ​ | $ | 113,449
​ *Prior period segment assets of DDS, Synodex and Agility segments have been reclassified to align with the current period presentation, with no impact on the Company’s consolidated results.
(1) | Agility assets include goodwill of $2.1 million and $2.0 million for each of the periods ended June 30, 2025 and December 31, 2024, respectively.
(2) | Segment assets consist of cash, receivables, prepaid and other assets, property and equipment, right of-use-assets, deferred income tax and intangibles.
Segment information for other significant income statement | The table below shows segment information for other significant income statement items (in thousands): ​
​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​
​ | ​ | Three Months Ended June 30, 2025
​ |  | ​ | DDS | ​ | ​ | Synodex |  | Agility |  | Total
Revenues |  | $ | 50,576 |  | $ | 2,065 | ​ | $ | 5,752 | ​ | $ | 58,393
Direct operating costs (1) (3) | ​ | ​ | 31,177 | ​ | ​ | 1,618 | ​ | ​ | 2,575 | ​ | ​ | 35,370
Gross profit | ​ |  | 19,399 | ​ |  | 447 | ​ | ​ | 3,177 | ​ | ​ | 23,023
Selling and administrative expenses (2) (4) | ​ |  | 10,430 | ​ |  | 140 | ​ | ​ | 3,542 | ​ | ​ | 14,112
Segment operating income (loss) | ​ | ​ | 8,969 | ​ | ​ | 307 | ​ | ​ | (365) | ​ | ​ | 8,911
Interest income, net | ​ |  | (577) | ​ |  | - | ​ | ​ | - | ​ | ​ | (577)
Income (loss) before provision for income taxes | ​ | $ | 9,546 | ​ | $ | 307 | ​ | $ | (365) | ​ | $ | 9,488
​
​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​
​ | ​ | Three Months Ended June 30, 2024
​ |  | DDS | ​ | Synodex | ​ | Agility | ​ | Total
Revenues | ​ | $ | 25,410 |  | $ | 1,986 |  | $ | 5,157 |  | $ | 32,553
Direct operating costs (1) (3) | ​ |  | 19,331 | ​ |  | 1,530 |  |  | 2,341 |  |  | 23,202
Gross profit | ​ |  | 6,079 | ​ |  | 456 |  |  | 2,816 |  |  | 9,351
Selling and administrative expenses (2) (4) | ​ |  | 6,197 | ​ |  | 140 |  |  | 2,683 |  |  | 9,020
Segment operating income (loss) | ​ |  | (118) | ​ |  | 316 |  |  | 133 |  |  | 331
Interest (income) expense, net | ​ |  | 54 | ​ |  | - |  |  | 1 |  |  | 55
Income (loss) before provision for income taxes | ​ | $ | (172) | ​ | $ | 316 |  | $ | 132 |  | $ | 276
​
​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​
​ |  | Six Months Ended June 30, 2025
​ | ​ | DDS |  | Synodex |  | Agility |  | Total
Revenues |  | $ | 101,406 |  | $ | 4,079 | ​ | $ | 11,252 | ​ | $ | 116,737
Direct operating costs (1) (3) | ​ | ​ | 62,279 | ​ | ​ | 3,079 | ​ | ​ | 5,104 | ​ | ​ | 70,462
Gross profit | ​ | ​ | 39,127 | ​ | ​ | 1,000 | ​ | ​ | 6,148 | ​ | ​ | 46,275
Selling and administrative expenses (2) (4) | ​ | ​ | 22,025 | ​ | ​ | 427 | ​ | ​ | 6,640 | ​ | ​ | 29,092
Segment operating income (loss) | ​ | ​ | 17,102 | ​ | ​ | 573 | ​ | ​ | (492) | ​ | ​ | 17,183
Interest (income) expense, net | ​ | ​ | (705) | ​ | ​ | - | ​ | ​ | 1 | ​ | ​ | (704)
Income (loss) before provision for income taxes | ​ | $ | 17,807 | ​ | $ | 573 | ​ | $ | (493) | ​ | $ | 17,887
​
​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​
​ | ​ | Six Months Ended June 30, 2024
​ | ​ | DDS | ​ | Synodex | ​ | Agility | ​ | Total
Revenues |  | $ | 45,116 |  | $ | 3,857 |  | $ | 10,084 |  | $ | 59,057
Direct operating costs (1) (3) | ​ |  | 32,479 | ​ |  | 3,002 | ​ |  | 4,590 | ​ |  | 40,071
Gross profit | ​ |  | 12,637 | ​ |  | 855 | ​ |  | 5,494 | ​ |  | 18,986
Selling and administrative expenses (2) (4) | ​ |  | 11,992 | ​ |  | 263 | ​ |  | 5,070 | ​ |  | 17,325
Segment operating income | ​ |  | 645 | ​ |  | 592 | ​ |  | 424 | ​ |  | 1,661
Interest (income) expense, net | ​ |  | (31) | ​ |  | — | ​ |  | 2 | ​ |  | (29)
Income before provision for income taxes | ​ | $ | 676 | ​ | $ | 592 | ​ | $ | 422 | ​ | $ | 1,690
​
(1) | Direct operating costs consist of direct and indirect labor costs, occupancy costs, data center hosting fees, cloud services, content acquisition costs, depreciation and amortization, travel, telecommunications, computer services and supplies, realized (gain) loss on forward contracts, foreign currency revaluation (gain) loss, recruitment costs and other direct expenses that are incurred in providing services to our customers.
(2) | Selling and administrative expenses consist of payroll and related costs including commissions, bonuses, and stock-based compensation; marketing, advertising, trade conferences and related expenses; new services research and related software development expenses, software subscriptions, professional and consultant fees, provision for credit losses and other administrative overhead expenses.
(3) | Includes non-cash expenses which consist mainly of depreciation, amortization of capitalized software development costs and stock-based compensation expense.
(4) | Includes non-cash expenses which consist mainly of stock-based compensation expense.
Schedule of revenue by geographic region | Revenues for the three and six-month periods ended June 30, 2025, and 2024 by geographic region (determined based upon customer’s domicile), were as follows (in thousands): ​
​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​
​ | ​ | For the Three Months Ended | ​ | For the Six Months Ended
​ | ​ | June 30, | ​ | June 30,
​ |  | 2025 |  | 2024 |  | 2025 |  | 2024
United States | ​ | $ | 48,563 | ​ | $ | 23,804 | ​ | $ | 97,460 | ​ | $ | 41,673
Canada | ​ |  | 2,955 | ​ |  | 2,284 | ​ |  | 5,678 | ​ |  | 4,510
United Kingdom | ​ |  | 2,470 | ​ |  | 2,364 | ​ |  | 4,897 | ​ |  | 4,614
The Netherlands | ​ | ​ | 2,277 | ​ | ​ | 2,005 | ​ | ​ | 4,442 | ​ | ​ | 4,044
Others - principally other European countries | ​ |  | 2,128 | ​ |  | 2,096 | ​ |  | 4,260 | ​ |  | 4,216
Totals | ​ | $ | 58,393 | ​ | $ | 32,553 | ​ | $ | 116,737 | ​ | $ | 59,057
Schedule of long-lived assets by geographic region | Long-lived assets as of June 30, 2025 and December 31, 2024 by geographic region were comprised of (in thousands): ​
​ | ​ | ​ | ​ | ​ | ​ | ​
​ |  | June 30, |  | December 31,
​ |  | 2025 |  | 2024
United States | ​ | $ | 10,859 | ​ | $ | 10,182
​ | ​ |  | ​ | ​ |  | ​
Foreign countries: | ​ |  | ​ | ​ |  | ​
Canada | ​ |  | 6,442 | ​ |  | 6,265
United Kingdom | ​ |  | 772 | ​ |  | 806
Philippines | ​ |  | 3,435 | ​ |  | 3,532
India | ​ |  | 2,257 | ​ |  | 2,251
Sri Lanka | ​ |  | 721 | ​ |  | 587
Israel | ​ |  | 66 | ​ |  | 63
Germany | ​ | ​ | 4 | ​ | ​ | 4
Total foreign | ​ |  | 13,697 | ​ |  | 13,508
Totals | ​ | $ | 24,556 | ​ | $ | 23,690

X
- Definition Tabular disclosure of all significant reconciling items in the reconciliation of total assets from reportable segments to the entity's consolidated assets. + References Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef -Name Accounting Standards Codification -Topic 280 -SubTopic 10 -Section 50 -Paragraph 31 -Publisher FASB -URI https://asc.fasb.org/1943274/2147482810/280-10-50-31 Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef -Name Accounting Standards Codification -Topic 280 -SubTopic 10 -Section 50 -Paragraph 30 -Subparagraph (c) -Publisher FASB -URI https://asc.fasb.org/1943274/2147482810/280-10-50-30 + Details
Name: | us-gaap_ReconciliationOfAssetsFromSegmentToConsolidatedTextBlock
Namespace Prefix: | us-gaap_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration

X
- Definition Tabular disclosure of reconciliation of other items from reportable segments to their consolidated amount. Excludes reconciliation of revenue, profit (loss), and assets. + References Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef -Name Accounting Standards Codification -Topic 280 -SubTopic 10 -Section 50 -Paragraph 31 -Publisher FASB -URI https://asc.fasb.org/1943274/2147482810/280-10-50-31 Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef -Name Accounting Standards Codification -Topic 280 -SubTopic 10 -Section 50 -Paragraph 30 -Subparagraph (d) -Publisher FASB -URI https://asc.fasb.org/1943274/2147482810/280-10-50-30 + Details
Name: | us-gaap_ReconciliationOfOtherSignificantReconcilingItemsFromSegmentsToConsolidatedTextBlock
Namespace Prefix: | us-gaap_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration

X
- Definition Tabular disclosure of the names of foreign countries from which revenue is material and the amount of revenue from external customers attributed to those countries. An entity may also provide subtotals of geographic information about groups of countries. + References Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef -Topic 220 -SubTopic 10 -Name Accounting Standards Codification -Section S99 -Paragraph 2 -Subparagraph (SX 210.5-03(1)) -Publisher FASB -URI https://asc.fasb.org/1943274/2147483621/220-10-S99-2 Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef -Topic 280 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 41 -Subparagraph (a) -Publisher FASB -URI https://asc.fasb.org/1943274/2147482810/280-10-50-41 + Details
Name: | us-gaap_ScheduleOfRevenueFromExternalCustomersAttributedToForeignCountriesByGeographicAreaTextBlock
Namespace Prefix: | us-gaap_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration

X
- Definition Tabular disclosure of information concerning material long-lived assets (excluding financial instruments, customer relationships with financial institutions, mortgage and other servicing rights, deferred policy acquisition costs, and deferred taxes assets) located in identified geographic areas and/or the amount of revenue from external customers attributed to that country from which revenue is material. An entity may also provide subtotals of geographic information about groups of countries. + References Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef -Topic 220 -SubTopic 10 -Name Accounting Standards Codification -Section S99 -Paragraph 2 -Subparagraph (SX 210.5-03(1)) -Publisher FASB -URI https://asc.fasb.org/1943274/2147483621/220-10-S99-2 Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef -Name Accounting Standards Codification -Topic 280 -SubTopic 10 -Section 50 -Paragraph 41 -Publisher FASB -URI https://asc.fasb.org/1943274/2147482810/280-10-50-41 + Details
Name: | us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsByGeographicalAreasTableTextBlock
Namespace Prefix: | us-gaap_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration

X
- References No definition available. + Details
Name: | us-gaap_SegmentReportingAbstract
Namespace Prefix: | us-gaap_
Data Type: | xbrli:stringItemType
Balance Type: | na
Period Type: | duration