Skip to content

How are AI-built apps doing in Germany, Austria and Switzerland?

AI App Radar DACH

Every three months we passively scan — the way a browser would — the discoverable population of AI-built web apps with a German, Austrian or Swiss connection and publish the shares. No hostnames, no screenshots, nothing attributable to a single site: only numbers over groups of at least 20 apps, citable under CC-BY 4.0.

n = 442 discoverable AI apps with a DACH connection · run Panel 2026-10-22 · closed on 22 October 2026

100% of the 442 scheduled targets were reachable; only reachable apps count.

The check in a real browser ran for 90% of the apps. Findings that are only visible there count over those apps only.

Stop

1%

4 apps

Iterate

79%

349 apps

Go

20%

89 apps

What stands out

The most common findings in the sample. The share says how many apps triggered the rule — counted only over the apps where the rule could check at all. It does not say whether the finding holds in any individual case.

Defects

Findings of medium severity and above that describe an observed state — a readable table, a tracker before consent, user input rendered unfiltered. They decide the verdict.

  • Medium — SeverityRSC-ACC-004Accessibility violations in the rendered stateof 396 apps where the check could run77%
  • Medium — SeverityRSC-ARC-005Non-existent paths answer with 20071%
  • Medium — SeverityRSC-PRV-001Google Fonts loaded at runtime36%
  • Medium — SeverityRSC-PRV-006Data sent to third-country servicesof 396 apps where the check could run30%
  • Medium — SeverityRSC-ARC-001Content rendered client-side only24%
  • Medium — SeverityRSC-SCL-007Heavy first page loadof 396 apps where the check could run23%
  • Medium — SeverityRSC-SEC-035Browser writes directly to the database23%
  • High — SeverityRSC-PRV-003Mandatory legal pages not visible17%
  • Medium — SeverityRSC-PRV-007Trackers without a consent layer17%
  • Medium — SeverityRSC-PRV-017Service not named in the privacy policy15%
  • High — SeverityRSC-PRV-005Trackers fire before consentof 396 apps where the check could run13%
  • Medium — SeverityRSC-SCL-002Very large JavaScript bundle13%
  • Medium — SeverityRSC-SEC-019Role check inside the client bundle13%
  • High — SeverityRSC-PRV-008Tracking cookies set before consentof 396 apps where the check could run9%
  • High — SeverityRSC-SEC-078Shipped library with a known vulnerability8%

Hardening and hygiene

Missing protective layers and hygiene — a header, a DNS record. They show up on almost every site because hardly anyone sets them, and they never tip a verdict. Prevalence is not severity.

  • Low — SeverityRSC-SEC-092No CAA record99%
  • Medium — SeverityRSC-SEC-003No Content-Security-Policy98%
  • Low — SeverityRSC-SEC-005No clickjacking protection89%
  • Low — SeverityRSC-SCL-004No caching strategy65%
  • Low — SeverityRSC-ARC-004No canonical link45%
  • Low — SeverityRSC-SEC-087DMARC with `p=none`38%
  • Low — SeverityRSC-PRV-022Contact data in the shipped JavaScript33%
  • Low — SeverityRSC-SEC-004MIME sniffing not disabled31%
  • Low — SeverityRSC-SEC-024No Referrer-Policy31%
  • Low — SeverityRSC-SEC-093No security.txt — no contact for vulnerability reports26%
  • Low — SeverityRSC-ARC-006No robots.txt and no sitemap23%
  • Low — SeverityRSC-PRV-002US trackers embedded in the shipped code16%
  • Low — SeverityRSC-PRV-012Privacy policy: mandatory details not found14%
  • Low — SeverityRSC-PRV-011Imprint: mandatory details not found14%
  • Medium — SeverityRSC-SEC-084No SPF and no DMARC — email spoofing unprotected14%

By platform

PlatformStopIterateGo
Lovable183 apps0%73%27%
Base44122 apps2%86%12%
Bolt101 apps0%82%18%

By jurisdiction

JurisdictionStopIterateGo
Germany171 apps0%75%25%
Switzerland196 apps2%85%13%

Groups with fewer than 20 apps are not shown — not as “0%”, but not at all. From that few rows a single app could be picked out.

Run by run

Each run is one quarter. Shares only appear once a run reaches the threshold of 20 apps. The sample changes from run to run, and every row names its methodology version: rules changed between two versions. Trends are therefore hints, not proof.

RunStopIterateGo
DACH 2026-09 Lauf 3Numbers for this run (DACH 2026-09 Lauf 3)4 September 2026 · Methodology 2026.15 · 78 apps · 100% reachable0%77%23%
DACH 2026-09 Lauf 4Numbers for this run (DACH 2026-09 Lauf 4)4 September 2026 · Methodology 2026.16 · 118 apps · 100% reachable0%73%27%
DACH 2026-09 Lauf 7Numbers for this run (DACH 2026-09 Lauf 7)8 September 2026 · Methodology 2026.17 · 478 apps · 99% reachable1%86%13%
Panel 2026-10-01Numbers for this run (Panel 2026-10-01)2 October 2026 · Methodology 2026.33 · 454 apps · 99% reachable1%81%18%
Panel 2026-10-22Numbers for this run (Panel 2026-10-22)22 October 2026 · Methodology 2026.36 · 442 apps · 100% reachable1%79%20%

Methodology

The radar measures what is discoverable. Targets come from five public sources: the builder platforms' directories, public certificate logs (certificate transparency) and the Internet Archive's web archive (Wayback Machine) for builder subdomains such as *.lovable.app or *.bolt.host, the open web index Common Crawl (German-language pages only) and the scanning service urlscan.io, which shows apps on their own domain that load a builder platform's script. On top come targets found by an earlier retrieval that are less than 90 days old. Apps on their own domain without such traces are under-represented. Before scanning, we check reachability and DACH connection with a single request to the start page: a .de, .at or .ch domain ending, German page language, or a link to Impressum and Datenschutz — only such apps enter the sample. The correct reading is therefore “x% of the n discoverable apps with a DACH connection”, never “x% of German Lovable apps”. Attribution to DE, AT or CH happens after the scan via domain ending and legal findings; whatever cannot be attributed counts as not attributable and serves as a control group.

The scan is passive and browser-equivalent: it loads what any browser loads when opening the site, clicks nothing, fills in no form and creates no account. The user agent names us and this page, and robots.txt is respected — anyone who excludes us there is skipped.

What is loaded

  • HTML, bundles and HTTP headers
  • the page in a headless browser: trackers before consent, cookies, accessibility
  • publicly served source maps
  • robots.txt, sitemap and linked legal pages

Never

  • sensitive paths such as /.env or /.git
  • backend probes — database schema, row counts, buckets
  • creating accounts or testing login throttling

Only shares over groups of at least 20 apps are published. No hostname, no URL, no screenshot and no finding attributable to a single site. Internally the raw data carries a hash that never leaves the database; the target list expires 90 days after the last scan.

Before every new methodology version we check the scanner for false alarms on well-maintained professional sites — any severe hit there counts as a possible false alarm and is fixed first. Most recently on 7 September 2026 against 47 real sites: six kinds of false alarm, all fixed (methodology 2026.17). That is a false-alarm check, not a baseline. As a baseline, on 20 October 2026 we measured 16 well-maintained professional sites (including bsi.bund.de, admin.ch, heise.de, bahn.de, stripe.com) with the same pipeline, with the browser stage and twice each: 5 of 16 had no effective Content Security Policy (AI apps: 98 %), 10 of 16 no CAA record (AI apps: 99 %), 3 of 15 fired trackers before consent (AI apps: 15 %; AI values from run Panel 2026-10-01). The group is small and deliberately prominent, so it is an upper bound, not an average; we do not publish findings for individual sites. We do not yet publish a false-alarm rate per rule. The numbers here are shares over a sample, not proof about any individual app.

If you do not want your domain in the radar, remove it: prove control via DNS TXT, file or meta tag — we then delete all observations and the target and exclude the domain from every future run. Without DNS access, an email is enough.

Remove your domain

How to cite

decivo AI App Radar DACH, run Panel 2026-10-22, methodology 2026.36, decivo.de/scan/radar

This page always shows the latest run. If you cite a number, link the fixed address of this run instead: decivo.de/en/scan/radar/lauf/panel-2026-10-22

Numbers and JSON are available under CC-BY 4.0. Please cite as “decivo AI App Radar DACH” with a link. Raw numbers as JSON