CompareSG

How many Singapore businesses use AI?

Pick a sector to see how many of its businesses used AI in 2023, 2024 and 2025, next to all businesses. IMDA and SingStat data, to 2025.

Sector

Each number is the share of businesses in that sector that used AI in the year: IMDA's survey of enterprises, as published by IMDA and SingStat. The ten sectors are the ones IMDA shows.

How many businesses used AI?

All businesses in Singapore. Each dot is one business in every 100. A filled dot used AI; a part-filled dot is a fraction of one.

2023
4.4
in every 100 used AI
2024
14.7
in every 100 used AI
2025
23.5
in every 100 used AI

In 2025, 23.5 in every 100 Singapore businesses used AI, up from 14.7 in 2024 and 4.4 in 2023.

Did every sector jump in 2025?

Two bars for each sector: pale is 2024, dark is 2025, in every 100 businesses in that sector. The number on the right is how many points higher 2025 was. Rows marked "too close to order" are within 1 point of the rows next to them, so they are not ranked. Click a row to pick that sector.

20242025Scale: in every 100 businesses, 0 to 50

Nine of the ten sectors rose by at least 4.5 points between 2024 and 2025. Construction rose by 0.2 points (7.4 to 7.6), so it is the one that did not jump. All businesses: 14.7 in 2024, 23.5 in 2025 (up 8.8 points).

How has AI use changed since 2017?

All businesses in Singapore, one bar for each year from 2017 to 2025. Each bar is how many in every 100 used AI. Bars start at zero. IMDA's sector figures only start in 2023, so this chart always shows all businesses.

0102030
1.33.53.73.93.33.54.414.723.5
2017’172018’182019’192020’202021’212022’222023’232024’242025’25

From 1.3 in every 100 in 2017, the rate stayed between 3.3 and 3.9 from 2018 to 2022, then rose to 4.4 in 2023, 14.7 in 2024 and 23.5 in 2025.

Fun finds

Which sectors more than doubled in a year?
Wholesale, retail and manufacturing
Between 2024 and 2025 wholesale trade went from 6.6 to 15.3 in every 100 businesses, retail trade from 8.9 to 18.9 and manufacturing from 8.9 to 18.0. No other sector doubled.
Do bigger businesses use AI more?
70.4 in every 100 bigger firms, 23.4 in every 100 smaller ones
IMDA splits businesses into SMEs (small and medium enterprises) and bigger firms, which it calls non-SMEs. In 2025, 70.4 in every 100 of the bigger firms used AI, against 23.4 in every 100 SMEs, about three times as many. Both groups rose since 2023: bigger firms from 44.0 and SMEs from 4.2.
Do firms build their own AI tools?
89.6 in every 100 buy them ready made
Of firms already using AI, 89.6 in every 100 used commercial tools with no customisation, 28.3 used commercial tools with some customisation and 23.0 used tools built in-house or by an outsourced developer. They add up to more than 100, so firms used more than one kind.

The short version

23.5 in every 100 Singapore businesses used AI in 2025, up from 14.7. Every sector rose, but construction by only 0.2. By sector, IMDA and SingStat.

What we did. We took the share of businesses using AI from two sources: SingStat's annual table for all businesses (2017 to 2025) and IMDA's Singapore Digital Economy (SGDE) 2025 and 2026 publications for ten sectors (2023 to 2025), business size, reasons, tools and results. The 2024 sector rates are the same in both publications. We typed the sector figures from IMDA's charts and checked every one against the text of the PDF page.

What we found. In 2025, 23.5 in every 100 businesses used AI, up from 14.7 in 2024 and 4.4 in 2023. By sector, information and communications was highest (46.8), then professional services (34.5) and finance and insurance (27.6); construction was lowest (7.6). Between 2024 and 2025 all ten sectors went up: nine by 4.5 points or more, construction by 0.2. Wholesale trade, retail trade and manufacturing more than doubled. Among non-SMEs (the bigger firms) 70.4 in every 100 used AI, against 23.4 among SMEs (small and medium enterprises).

What to keep in mind. These are survey results, and IMDA does not publish sample sizes or margins of error, so we do not put sectors within a point of each other in an order (retail trade, manufacturing, and accommodation and food services). "Using AI" is IMDA's definition. We say nothing about why rates rose or whether a business should use AI. For 2023, SingStat has 4.4 and IMDA's 2026 chart has 4.3; we use SingStat's.

By Ben (opens in a new tab). Updated . Data: IMDA (SGDE 2025 and 2026) and SingStat, to 2025.

Questions people ask

How many Singapore businesses use AI?

In 2025, 23.5 in every 100 businesses used AI, up from 14.7 in 2024 and 4.4 in 2023 (SingStat, from IMDA's survey of all enterprises). From 2017 to 2022 the rate stayed between 1.3 and 3.9 in every 100: 1.3 in 2017, then 3.5, 3.7, 3.9, 3.3 and 3.5 in 2022. Among businesses with 10 or more employees it was 34.6 in 2025, up from 21.4 in 2024.

Which sector uses AI the most, and which the least?

Information and communications (I&C): 46.8 in every 100 businesses in 2025. Then professional services (34.5) and finance and insurance (27.6), then real estate and admin & support (25.8). Retail trade (18.9), manufacturing (18.0) and accommodation and food services (17.7) are within a point of each other, so we do not put them in an order. Wholesale trade is 15.3, transportation and storage 11.4 and construction 7.6, the lowest of the ten.

Did every sector's AI use rise in 2025?

All ten sectors had a higher rate in 2025 than in 2024. Nine rose by 4.5 points or more (in points: information and communications 10.9, retail trade 10.0, manufacturing 9.1, professional services 8.8, wholesale trade 8.7, real estate and admin & support 7.8, accommodation & food services 7.4, finance & insurance 5.0, transportation & storage 4.5). Construction rose by 0.2, from 7.4 to 7.6. IMDA does not publish sample sizes or margins of error, so we do not read a rise of 0.2 as a real change either way.

Which sectors more than doubled their AI use in a year?

Three, between 2024 and 2025: wholesale trade (6.6 to 15.3 in every 100 businesses), retail trade (8.9 to 18.9) and manufacturing (8.9 to 18.0). No other sector doubled. For all businesses the rate went from 14.7 to 23.5, up 8.8 points.

Do bigger businesses use AI more?

By IMDA's split, yes. IMDA splits businesses into SMEs (small and medium enterprises) and non-SMEs, the bigger ones. In 2025, 70.4 in every 100 non-SMEs used AI, against 23.4 in every 100 SMEs, about three times as many. In 2023 it was 44.0 against 4.2. Among all businesses with 10 or more employees it was 34.6 in 2025, against 23.5 for all businesses.

What do businesses that do not use AI say holds them back?

IMDA asked firms that had not adopted AI, and these were the top five answers in 2025 (2023 in brackets), as shares of those firms: do not see the need due to small business 54.7 (57.4); no budget, or the investment is too high 29.2 (35.1); iT infrastructure not ready for AI 26.2 (39.5); lack of skills or talent to use AI 24.1 (30.8); poor awareness or understanding of the technology 19.1 (25.6). They add up to more than 100, so firms gave more than one. In 2025, 12.1 in every 100 of these firms said they planned to use AI in the next 12 months, against 5.6 in 2023.

What counts as using AI in this survey?

IMDA defines AI as a set of tools that let computers or machines do tasks that typically need human intelligence, with examples such as content generation, customer engagement, analytics and process automation. It also covers AI-enabled digital solutions, where AI is built into other software or platforms. The AI adoption rate is the share of firms that used AI under that definition (SGDE 2025, footnote 8, page 14).

How does Singapore compare with other countries?

Among businesses with 10 or more employees, Singapore was at 34.6 in every 100 in 2025, against an OECD average of 20.3 (IMDA, using OECD data). Denmark (42.0), Finland (37.8) and Sweden (35.0) were higher; Belgium (34.5) is within a point. The chart covers only countries with 2025 data. We did not check whether every country asked the same question, so treat the comparison with care.

What do businesses that use AI say about their tools and results?

These are shares of firms already using AI, from IMDA and MDDI surveys. Tools: commercial off-the-shelf AI tools, no customisation 89.6; commercial AI tools with some customisation 28.3; aI tools built in-house or outsourced 23.0. They add up to more than 100, so firms used more than one kind. Stage: growing the use of AI across the company 33.0; fully deployed or integrated across the company 6.6; early testing 37.9; implementing a first use case 22.6. Benefits named: productivity and process improvement 87.6; cost reduction and resource optimisation 44.0; retaining and engaging existing customers 28.7; acquiring new customers 27.8; contribution to revenue increase 24.5.

How does AI use compare with other digital tools?

In 2025, among all businesses: computers 95.0, internet 97.5, e-payment 95.6, cloud computing 41.0, AI 23.5 and data analytics 20.2 in every 100 (SingStat). AI use passed data analytics in 2025: in 2024 it was 14.7 against 16.7.

Where does the data come from?

All businesses, 2017 to 2025: SingStat's table M651551, Infocomm Usage By Enterprises, Annual, on data.gov.sg (IMDA is the source). By sector, size, reasons, tools and results: IMDA's Singapore Digital Economy (SGDE) 2025 and 2026 publications. Details are in the boring bit below.

Does this say why AI use rose, or what a business should do?

No. It sets out what the surveys found. IMDA does not publish sample sizes or margins of error, so we do not put sectors that are within a point of each other in an order.

The numbers behind it

Share of businesses using AI, by sector (in every 100)
Sector202320242025Change, 2024 to 2025 (points)2025 divided by 2024
Information & communications (I&C)12.135.946.810.913.04
Professional services5.125.734.58.813.42
Finance & insurance11.022.627.65.012.21
Real estate and admin & support4.718.025.87.814.33
Retail trade4.48.918.910.021.24
Manufacturing2.38.918.09.120.22
Accommodation & food services2.310.317.77.417.18
Wholesale trade2.46.615.38.723.18
Transportation & storage1.86.911.44.516.52
Construction2.57.47.60.210.27
All businesses (SingStat)4.414.723.58.815.99
Share of businesses using AI, by year and size (in every 100)
YearAll businesses (SingStat)10 or more employees (IMDA)SMEs (IMDA)Non-SMEs (IMDA)
20171.3not publishednot publishednot published
20183.5not publishednot publishednot published
20193.7not publishednot publishednot published
20203.9not publishednot publishednot published
20213.37.8not publishednot published
20223.58.8not publishednot published
20234.49.74.244.0
202414.721.414.562.5
202523.534.623.470.4
Reasons given by firms that had not adopted AI (top five answers; share of those firms)
Reason20252023
Do not see the need due to small business54.757.4
No budget, or the investment is too high29.235.1
IT infrastructure not ready for AI26.239.5
Lack of skills or talent to use AI24.130.8
Poor awareness or understanding of the technology19.125.6
Planning to use AI in the next 12 months12.15.6
Firms already using AI: tools, stage and benefits (share of those firms)
Topic and answerShare
Tools: Commercial off-the-shelf AI tools, no customisation89.6
Tools: Commercial AI tools with some customisation28.3
Tools: AI tools built in-house or outsourced23.0
Stage: Growing the use of AI across the company33.0
Stage: Fully deployed or integrated across the company6.6
Stage: Early testing37.9
Stage: Implementing a first use case22.6
Benefit named: Productivity and process improvement87.6
Benefit named: Cost reduction and resource optimisation44.0
Benefit named: Retaining and engaging existing customers28.7
Benefit named: Acquiring new customers27.8
Benefit named: Contribution to revenue increase24.5
Employers' view of workers' AI skills in firms already using AI (share of workers)
Level20242025
Do not know how to use AI33.628.2
Can use AI for general tasks43.547.6
Can use AI for intermediate tasks17.819.3
Can develop or deploy AI for complex tasks5.15.0
Workers able to use AI in some capacity66.471.9
Businesses with 10 or more employees using AI, 2025 (in every 100)
Country or group2025
Denmark42.0
Finland37.8
Sweden35.0
Singapore34.6
Belgium34.5
OECD average20.3
Digital tools used by all businesses (in every 100, SingStat)
Tool20242025
Computers93.995.0
Internet97.297.5
Cloud computing36.041.0
E-payment94.295.6
Data analytics16.720.2
Artificial Intelligence14.723.5

The boring bit

Where the data comes from

Two sources. All businesses, 2017 to 2025: SingStat's table M651551, "Infocomm Usage By Enterprises, Annual", on data.gov.sg. The dataset names the Infocomm Media Development Authority (IMDA) as its source and the Singapore Department of Statistics as its manager, and was last updated on 20 Apr 2026. We used its row "Business Usage Of Artificial Intelligence" (nine yearly values) and, for the FAQ, five other rows for 2024 and 2025.

By sector, size, reasons, tools and results: IMDA's Singapore Digital Economy (SGDE) 2025 and 2026 publications, read as PDFs on 13 Oct 2026. SGDE 2025: Figure 7 (page 14) and Figure 8 (page 15). SGDE 2026: Figure 8 (page 11), Figures 9 and 10 (pages 12 and 13), Figures 11 and 12 (page 14), Figures 13 and 14 (page 15) and Figures 15 and 16 (page 16). The charts on tools and stage (Figures 13 and 14) name MDDI as their source; the others name IMDA. Where the two sources overlap they agree for 2024 (14.7) and 2025 (23.5). For 2023 the SingStat file has 4.4 and IMDA's 2026 chart (Figure 9) has 4.3; the page uses the file's.

What is not claimed

  • We do not say why AI use rose, why sectors differ, or whether a business should use AI.
  • These are survey estimates. IMDA's publications give no sample sizes or margins of error. So we do not read differences under 1 point as an order (retail trade, manufacturing, and accommodation and food services are shown without one), and we do not read a rise of 0.2 in construction as a real change either way.
  • "Using AI" is IMDA's definition (see the questions above). We did not check how the survey question was worded in each year, or whether the sample changed between years, so we do not say how much of the rise is a change in what businesses do.
  • The sector groups are IMDA's. "Information & communications (I&C)" is SSIC 58 to 63, and "Real estate and admin & support" is one group. Sectors that IMDA's charts do not show are not on this page. Each sector rate is a share of that sector's businesses, so the ten rates do not add up to the all-business rate.
  • The split into SMEs and non-SMEs is IMDA's, and we did not check its definition. Reasons, tools, stage, benefits and workers' skill levels are shares of firms that had not adopted AI or of firms that had, not of all businesses.
  • The country comparison uses IMDA's chart, which has only countries with 2025 data. We did not check that every country asked the same question.
  • 2020 and 2021 were years of COVID-19 restrictions. We say nothing about whether they changed the survey or AI use.
  • IMDA or SingStat could revise past figures after 13 Oct 2026.

Coverage

All 9 yearly values of the SingStat AI row, and all 30 sector figures (10 sectors, 3 years) from the two sector charts. Nothing was left out or estimated. The sector figures were typed from the chart labels and checked by script against the text of the PDF pages, in the order the charts print them.

Report an error. Corrections are logged publicly with a date.

How we did it
Reading PDF chartsCross-checksDifferences in whole tenthsRounding half up
  1. Downloaded the SingStat file from data.gov.sg and read its AI row.
  2. Typed the sector rates from the charts in IMDA's two publications (text taken from the PDFs with pdftotext).
  3. Checked them by script. Each chart's numbers, in the order the chart prints its sectors, must equal what we typed. The 2024 rates must be the same in both publications. The 2024 and 2025 all-business rates must equal IMDA's chart. Every other figure must appear on the PDF page it comes from.
  4. Worked out the changes in whole tenths of a point, so there are no rounding slips, and the group of sectors within 1 point of the next one down (they are not put in an order).
  5. Wrote the page from those numbers. The picker only chooses which sector to show; every sentence is built from the checked data.
Show the Python code
"""prep_ai.py - builds data/data.json for the CompareSG AI-by-sector page.
Run (inside the build folder):  python3 -I prep/prep_ai.py <out.json>
Inputs (all in data/):
  infocomm_usage.csv  SingStat table M651551 "Infocomm Usage By Enterprises, Annual" (IMDA data), downloaded from data.gov.sg on 13 Oct 2026.
  sgde2025.txt, sgde2026.txt  pdftotext -layout of IMDA's Singapore Digital Economy (SGDE) 2025 and 2026 publications (pages are split by form feed).
The sector rates and the other figures are typed below from the charts. Before anything is written, every typed number
is checked against the text of the page it comes from, the sector charts are checked in the order they print, the 2024 rates
are checked to be the same in both publications, and the all-business series is checked against the SingStat file. Standard library only."""
import csv, json, os, re, sys
from collections import Counter
HERE = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
rd = lambda f: open(os.path.join(HERE, 'data', f), encoding='utf-8').read()
R25, R26 = rd('sgde2025.txt').split('\f'), rd('sgde2026.txt').split('\f')     # printed page n is R[n-1] in both
pg = lambda rep, n: rep[n - 1]
def has(rep, n, num, near=None):                    # the number is on that page (as a whole number, not part of a longer one)
    t = pg(rep, n)
    ok = re.search(r'(?<![\d.])' + re.escape(num) + r'(?![\d])', t) is not None
    assert ok and (near is None or near in t), ('not found', n, num)

# id, name, short name, "businesses in ...", 2023, 2024, 2025 (% of enterprises using AI). 2023 and 2024: SGDE 2025 Fig 8 p15. 2024 and 2025: SGDE 2026 Fig 11 p14.
SECTORS = [
 ('ic',     'Information & communications (I&C)', 'Info & comms',        'information and communications',  12.1, 35.9, 46.8),
 ('prof',   'Professional services',              'Professional',        'professional services',             5.1, 25.7, 34.5),
 ('fin',    'Finance & insurance',                'Finance',             'finance and insurance',            11.0, 22.6, 27.6),
 ('re',     'Real estate and admin & support',    'Real estate & admin', 'real estate and admin & support',   4.7, 18.0, 25.8),
 ('retail', 'Retail trade',                       'Retail',              'retail trade',                      4.4,  8.9, 18.9),
 ('mfg',    'Manufacturing',                      'Manufacturing',       'manufacturing',                     2.3,  8.9, 18.0),
 ('food',   'Accommodation & food services',      'Hotels & food',       'accommodation and food services',   2.3, 10.3, 17.7),
 ('whole',  'Wholesale trade',                    'Wholesale',           'wholesale trade',                   2.4,  6.6, 15.3),
 ('trans',  'Transportation & storage',           'Transport',           'transportation and storage',        1.8,  6.9, 11.4),
 ('constr', 'Construction',                       'Construction',        'construction',                      2.5,  7.4,  7.6),
]
# the order each chart prints its sectors, with the label the publication uses
ORDER26 = [('ic', 'I&C'), ('prof', 'Professional Services'), ('fin', 'Finance & Insurance'), ('re', 'Real Estate and Admin & Support'), ('retail', 'Retail Trade'),
           ('mfg', 'Manufacturing'), ('food', 'Accommodation & Food Services'), ('whole', 'Wholesale Trade'), ('trans', 'Transportation & Storage'), ('constr', 'Construction')]
ORDER25 = [('ic', 'I&C'), ('prof', 'Professional Services'), ('fin', 'Finance & Insurance'), ('re', 'Real Estate and Admin & Support'), ('food', 'Accommodation & Food Services'),
           ('mfg', 'Manufacturing'), ('retail', 'Retail Trade'), ('constr', 'Construction'), ('trans', 'Transport & Storage'), ('whole', 'Wholesale Trade')]
S = {s[0]: s for s in SECTORS}

def chart_numbers(rep, page, start, labels):        # the percentages in a chart, in print order, after checking the sector labels print in the expected order
    t = pg(rep, page); a = t.index(start); b = t.index('Source: IMDA', a); body = t[a:b]
    pos = [body.index(lab) for _, lab in labels]
    assert pos == sorted(pos), ('labels out of order', start)
    return [float(x) for x in re.findall(r'(\d+\.\d)%', body)]
n26 = chart_numbers(R26, 14, 'Figure 11:', ORDER26)
assert n26 == [x for k, _ in ORDER26 for x in (S[k][6], S[k][5])], ('Fig 11 (SGDE 2026) does not match', n26)       # each sector: 2025 then 2024
n25 = chart_numbers(R25, 15, 'FIGURE 8:', ORDER25)
assert n25 == [x for k, _ in ORDER25 for x in (S[k][5], S[k][4])], ('Fig 8 (SGDE 2025) does not match', n25)         # each sector: 2024 then 2023
assert Counter(n26[1::2]) == Counter(S[k][5] for k, _ in ORDER26)                                                    # 2024 rates: SGDE 2026 ...
assert Counter(n25[0::2]) == Counter(S[k][5] for k, _ in ORDER25)                                                    # ... equal SGDE 2025's

# all businesses: SingStat (IMDA data). Row "Business Usage Of Artificial Intelligence".
rows = list(csv.reader(open(os.path.join(HERE, 'data', 'infocomm_usage.csv'), newline='', encoding='utf-8')))
head = rows[0]; assert head[0] == 'DataSeries'
byname = {r[0]: dict(zip(head[1:], [float(x) for x in r[1:]])) for r in rows[1:]}
ai = {int(y): v for y, v in byname['Business Usage Of Artificial Intelligence'].items()}
assert sorted(ai) == list(range(2017, 2026))
# IMDA's SGDE 2026 (Fig 9, p12) agrees for 2024 and 2025. For 2023 it prints 4.3 where the SingStat file has 4.4; the page uses SingStat's.
has(R26, 12, '23.5'); has(R26, 12, '14.7'); has(R26, 12, '4.3'); assert ai[2025] == 23.5 and ai[2024] == 14.7 and ai[2023] == 4.4

size = {'sme': {2023: 4.2, 2024: 14.5, 2025: 23.4}, 'non': {2023: 44.0, 2024: 62.5, 2025: 70.4},
        'ten': {2021: 7.8, 2022: 8.8, 2023: 9.7, 2024: 21.4, 2025: 34.6}, 'all_imda': {2021: 3.3, 2022: 3.5, 2023: 4.3, 2024: 14.7, 2025: 23.5}}
for v in size['sme'].values(): has(R26, 11, '%.1f' % v)
for v in size['non'].values(): has(R26, 11, '%.1f' % v)
for v in list(size['ten'].values()) + list(size['all_imda'].values()): has(R26, 12, '%.1f' % v)
barriers = [('Do not see the need due to small business', 54.7, 57.4), ('No budget, or the investment is too high', 29.2, 35.1),
            ('IT infrastructure not ready for AI', 26.2, 39.5), ('Lack of skills or talent to use AI', 24.1, 30.8), ('Poor awareness or understanding of the technology', 19.1, 25.6)]
for lab, a, b in barriers: has(R26, 14, '%.1f' % a); has(R26, 14, '%.1f' % b)
plan = {2025: 12.1, 2023: 5.6}; has(R26, 15, '12.1'); has(R26, 15, '5.6')
tools = [('Commercial off-the-shelf AI tools, no customisation', 89.6), ('Commercial AI tools with some customisation', 28.3), ('AI tools built in-house or outsourced', 23.0)]
phases = [('Growing the use of AI across the company', 33.0), ('Fully deployed or integrated across the company', 6.6), ('Early testing', 37.9), ('Implementing a first use case', 22.6)]
benefits = [('Productivity and process improvement', 87.6), ('Cost reduction and resource optimisation', 44.0), ('Retaining and engaging existing customers', 28.7),
            ('Acquiring new customers', 27.8), ('Contribution to revenue increase', 24.5)]
for _, v in tools + phases: has(R26, 15, '%.1f' % v)
for _, v in benefits: has(R26, 16, '%.1f' % v)
prof = {'rows': [('Do not know how to use AI', 33.6, 28.2), ('Can use AI for general tasks', 43.5, 47.6), ('Can use AI for intermediate tasks', 17.8, 19.3), ('Can develop or deploy AI for complex tasks', 5.1, 5.0)], 'some': {2024: 66.4, 2025: 71.9}}
for _, a, b in prof['rows']: has(R26, 16, '%.1f' % a); has(R26, 16, '%.1f' % b)
has(R26, 16, '71.9'); has(R26, 16, '66.4')
oecd = [('Denmark', 42.0), ('Finland', 37.8), ('Sweden', 35.0), ('Singapore', 34.6), ('Belgium', 34.5), ('OECD average', 20.3)]
for name, v in oecd: assert re.search(name.split()[0] + r'\s+' + re.escape('%.1f' % v), pg(R26, 13)), name
digital = {k.replace('Business Usage Of ', ''): (byname[k]['2024'], byname[k]['2025']) for k in byname}

# checks on the shape of the data that the sentences on the page rely on
q = lambda x: round(x * 10)                          # tenths, so points are exact
gain = {k: q(S[k][6]) - q(S[k][5]) for k in S}
assert all(S[k][4] < S[k][5] < S[k][6] for k in S), 'every sector rose each year'
assert [s[0] for s in sorted(SECTORS, key=lambda s: -s[6])] == [s[0] for s in SECTORS], 'table is in 2025 order'
assert min(g for k, g in gain.items() if k != 'constr') == 45 and gain['constr'] == 2, 'nine sectors gained 4.5 points or more; construction gained 0.2'
doubled = [k for k in S if q(S[k][6]) >= 2 * q(S[k][5])]; assert sorted(doubled) == ['mfg', 'retail', 'whole'], doubled
close, cur = [], [SECTORS[0][0]]                    # sectors whose 2025 rate is within 1 point of the next one down form a group that is not ranked
for a, b in zip(SECTORS, SECTORS[1:]):
    if q(a[6]) - q(b[6]) < 10: cur.append(b[0])
    else: close.append(cur); cur = [b[0]]
close.append(cur); close = [c for c in close if len(c) > 1]; assert close == [['retail', 'mfg', 'food']], close
assert q(size['non'][2025]) > 2 * q(size['sme'][2025]) and q(ai[2025]) > q(byname['Business Usage Of Data Analytics']['2025']) > 0
assert q(byname['Business Usage Of Data Analytics']['2024']) > q(ai[2024]) and q(ai[2025]) > q(byname['Business Usage Of Data Analytics']['2025'])

out = {'sectors': [{'id': s[0], 'name': s[1], 'short': s[2], 'in': s[3], 'v': {'2023': s[4], '2024': s[5], '2025': s[6]}} for s in SECTORS],
       'all': {str(y): ai[y] for y in sorted(ai)}, 'size': {k: {str(y): v for y, v in d.items()} for k, d in size.items()},
       'barriers': barriers, 'plan': {str(k): v for k, v in plan.items()}, 'tools': tools, 'phases': phases, 'benefits': benefits,
       'prof': {'rows': prof['rows'], 'some': {str(k): v for k, v in prof['some'].items()}}, 'oecd': oecd, 'digital': digital,
       'facts': {'doubled': doubled, 'close': close[0], 'gain': gain}}
json.dump(out, open(sys.argv[1], 'w'), indent=1)
print('ok: sector charts match both publications in print order; 2024 rates agree; SingStat all-business series', [ai[y] for y in sorted(ai)])
print('gain, tenths of a point:', gain); print('more than doubled:', doubled, ' too close to order:', close[0])

What could make it wrong: a typing slip that the checks do not catch, a chart that IMDA later corrects, or a sector label that means something slightly different in the two publications.

No machine learning was needed. The question was "how many, and in which sector", which reading and checking the published figures answers directly.

Sources: IMDA Singapore Digital Economy (SGDE) 2025 and 2026 publications, from IMDA (opens in a new tab), read 13 Oct 2026; SingStat table M651551 (opens in a new tab) and the data.gov.sg dataset (opens in a new tab). Contains information from Infocomm Usage By Enterprises, Annual accessed on 13 Oct 2026 from the Singapore Department of Statistics via data.gov.sg, made available under the Singapore Open Data Licence version 1.0 (opens in a new tab). Figures from IMDA's publications are used as facts, with the publication, figure and page named.