AI App Radar DACH
How are AI-built apps doing in Germany, Austria and Switzerland?
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 = 454 discoverable AI apps with a DACH connection · run Panel 2026-10-01 · closed on 2 October 2026
99% of the 455 scheduled targets were reachable; only reachable apps count.
The check in a real browser ran for 86% of the apps. Findings that are only visible there count over those apps only.
1%
4 apps
81%
367 apps
18%
83 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 392 apps where the check could run76%
- Medium — SeverityRSC-ARC-005Non-existent paths answer with 20072%
- Medium — SeverityRSC-PRV-001Google Fonts loaded at runtime36%
- Medium — SeverityRSC-PRV-006Data sent to third-country servicesof 392 apps where the check could run33%
- Medium — SeverityRSC-SCL-007Heavy first page loadof 392 apps where the check could run25%
- Medium — SeverityRSC-ARC-001Content rendered client-side only25%
- Medium — SeverityRSC-SEC-035Browser writes directly to the database24%
- Medium — SeverityRSC-PRV-007Trackers without a consent layer17%
- Medium — SeverityRSC-PRV-017Service not named in the privacy policy16%
- Medium — SeverityRSC-PRV-002US tracking without visible consent16%
- High — SeverityRSC-PRV-003Mandatory legal pages not visible16%
- High — SeverityRSC-PRV-005Trackers fire before consentof 392 apps where the check could run15%
- Medium — SeverityRSC-SCL-002Very large JavaScript bundle14%
- Medium — SeverityRSC-SEC-019Role check inside the client bundle13%
- High — SeverityRSC-PRV-008Tracking cookies set before consentof 392 apps where the check could run12%
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 protection90%
- Low — SeverityRSC-SCL-004No caching strategy64%
- Low — SeverityRSC-ARC-004No canonical link46%
- Low — SeverityRSC-SEC-087DMARC with `p=none`38%
- Low — SeverityRSC-PRV-022Contact data in the shipped JavaScript33%
- Low — SeverityRSC-SEC-004MIME sniffing not disabled32%
- Low — SeverityRSC-SEC-024No Referrer-Policy32%
- Low — SeverityRSC-SEC-093No security.txt — no contact for vulnerability reports26%
- Low — SeverityRSC-ARC-006No robots.txt and no sitemap23%
- Low — SeverityRSC-PRV-012Privacy policy: mandatory details not found14%
- Medium — SeverityRSC-SEC-084No SPF and no DMARC — email spoofing unprotected14%
- Low — SeverityRSC-PRV-011Imprint: mandatory details not found13%
- Medium — SeverityRSC-SEC-085No DMARC record12%
By platform
| Platform | Apps | Stop | Iterate | Go |
|---|---|---|---|---|
| Lovable187 apps | 187 | 0% | 75% | 25% |
| Base44122 apps | 122 | 2% | 87% | 11% |
| Bolt110 apps | 110 | 0% | 84% | 16% |
By jurisdiction
| Jurisdiction | Apps | Stop | Iterate | Go |
|---|---|---|---|---|
| Germany172 apps | 172 | 0% | 77% | 23% |
| Switzerland204 apps | 204 | 1% | 87% | 12% |
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.
| Run | Closed | Methodology | Apps | Reachable | Stop | Iterate | Go |
|---|---|---|---|---|---|---|---|
| DACH 2026-09 Lauf 34 September 2026 · Methodology 2026.15 · 78 apps · 100% reachable | 4 September 2026 | 2026.15 | 78 | 100% | 0% | 77% | 23% |
| DACH 2026-09 Lauf 44 September 2026 · Methodology 2026.16 · 118 apps · 100% reachable | 4 September 2026 | 2026.16 | 118 | 100% | 0% | 73% | 27% |
| DACH 2026-09 Lauf 78 September 2026 · Methodology 2026.17 · 478 apps · 99% reachable | 8 September 2026 | 2026.17 | 478 | 99% | 1% | 86% | 13% |
| Panel 2026-10-012 October 2026 · Methodology 2026.33 · 454 apps · 99% reachable | 2 October 2026 | 2026.33 | 454 | 99% | 1% | 81% | 18% |
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 test the scanner against a control group of 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). 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 domainHow to cite
decivo AI App Radar DACH, run Panel 2026-10-01, methodology 2026.33, decivo.de/scan/radar
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