Demo · synthetic data · substrate-shape illustration
This is what a substrate-built govtech product looks like when running. UI is realistic; data is synthetic; click-throughs don't navigate. To see how this product was built, return to /build.
Open applications
1,247
↑ 84 new today · 312 awaiting decision
Decisions issued · 30d
4,832
92.1% within statutory deadline
Audit events · 24h
12,418
hash-chained · 0 chain breaks · last verify 03:00 UTC
Active citizens
184,303
all eIDAS LoA-substantial or higher
Recent applications · last 8
| Time | Application | Citizen | Type | Officer | Status |
|---|---|---|---|---|---|
| 12:47:21 | APP-2026-058312 | ssn:****1842 | permit · class B | officer.lena | approved |
| 12:46:54 | APP-2026-058311 | ssn:****0925 | benefit · housing | officer.tomás | review |
| 12:46:08 | APP-2026-058310 | ssn:****6431 | permit · class A | officer.lena | approved |
| 12:45:33 | APP-2026-058309 | ssn:****2218 | registration · birth | officer.aino | complete |
| 12:44:51 | APP-2026-058308 | ssn:****8770 | appeal · 2025-014 | officer.tomás | scheduled |
| 12:44:02 | APP-2026-058307 | ssn:****0143 | benefit · disability | officer.aino | review |
| 12:43:18 | APP-2026-058306 | ssn:****5559 | permit · class B | officer.lena | rejected |
| 12:42:44 | APP-2026-058305 | ssn:****3094 | registration · marriage | officer.aino | approved |
Audit trail · last 6 events
tamper-evident · GDPR Art. 30 compliant by construction- 12:47:21officer.lenaissued decision: APPROVED APP-2026-058312 · hash=8f3a...d2c1 · prev=12fe...88a7
- 12:47:21audit-chainappended event, verified link to previous block #12,418 · merkle root verified at 03:00 UTC
- 12:46:54eidas-gateverified citizen identity LoA=substantial · provider=BankID · cert valid
- 12:45:33language-switchrendered page in citizen language fi-FI · accessible to WCAG 2.1 AA
- 12:43:18officer.lenaissued decision: REJECTED · with reasoning APP-2026-058306 · cited statute §14.2 · appealable
- 12:42:44audit-chaindaily integrity verification 12,418 events · 0 breaks · re-verified at 03:00 UTC
● 8 corpus-derived tests passing
§47.6 / §65.1 / §66 · provenance per testBelow: a slice of the test stubs the substrate injected into this product based on its §66 fingerprint. Each traces back to a corpus signature with full audit chain visible at /evidence.
- ✓
audit_chain_hash_unbroken.test.ts
↳ expect-chain|audit_event.prev_hash.matches(prior.hash) · tamper-evidence · §47.6 strength-3 jackpot · public + fix-commit + runtime
- ✓
eidas_loa_substantial_or_higher.test.ts
↳ comparison-gte|citizen.eidas_loa.>=substantial · eIDAS Art. 8 · §47.6 strength-2 · fix-commit corpus · auth-libs
- ✓
wcag_aa_contrast.test.ts
↳ comparison-gte|color_contrast_ratio.>=4.5 · accessibility · WCAG 2.1 AA · universal · 38 repos
- ✓
csrf_token_verified.test.ts
↳ expect-chain|csrf_token.verified · CWE-352 · universal · 23 repos · auth-libs
- ✓
regex-match_xss_decision_html.test.ts
↳ regex-match|html_output|escaped · CWE-79 · §47.6 strength-3 jackpot
- ✓
membership_open_redirect.test.ts
↳ !membership|redirect_url.host|allowed_hosts · CWE-601 · CVE-2024-29981 · §65.1 rising-CWE inferred · Wire 2 fired
- ✓
ssrf_url_allowlist.test.ts
↳ regex-match|outbound_url|^https://[a-z0-9.-]+.gov.fi/ · CWE-918 · §47.6 strength-2 · fix-commit corpus
- ✓
missing_authz_officer_role.test.ts
↳ expect-chain|user.role.is_authorized_for(decision) · CWE-862 · CVE-2024-12100 · §47.6 strength-2 · Wire 4 fired