6989a98d75
- Arkitektur: docs/auth/passwordless-architecture.md - Backend: iom/quixzoom-auth-service/ (FastAPI + Redis) - Webb: quixzoom-market-pages/se/login/ (QR-kod + polling) - App: iom/quixzoom-app/src/features/auth/ (push + deep links) Flöde: QR-kod → app-godkännande → webb-inloggad
322 lines
18 KiB
HTML
322 lines
18 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover">
|
|
<title>Trust Centre — Landvex</title>
|
|
<meta name="description" content="Landvex Trust Centre: infrastructure security, data quality guarantee, contributor verification chain, DPA, penetration testing, and responsible disclosure.">
|
|
<link rel="canonical" href="https://landvex.com/trust/">
|
|
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
|
|
<link rel="icon" type="image/x-icon" href="/favicon.ico">
|
|
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
|
|
<link rel="alternate" hreflang="x-default" href="https://landvex.com/">
|
|
<link rel="alternate" hreflang="en" href="https://landvex.com/"> <link rel="stylesheet" href="/assets/css/landvex-complete.css">
|
|
<style>
|
|
:root {
|
|
--bg: #F2F2F7;
|
|
--surface: #FFFFFF;
|
|
--surface2: #F2F2F7;
|
|
--label: #000000;
|
|
--label2: #3C3C43;
|
|
--label3: rgba(60,60,67,0.65);
|
|
--separator: rgba(60,60,67,0.29);
|
|
--accent: #0066FF;
|
|
--font: -apple-system, "SF Pro Text", "Helvetica Neue", sans-serif;
|
|
--font-display: -apple-system, "SF Pro Display", "Helvetica Neue", sans-serif;
|
|
--radius-lg: 16px;
|
|
--radius-sm: 10px;
|
|
}
|
|
@media (prefers-color-scheme: dark) {
|
|
:root {
|
|
--bg: #000000;
|
|
--surface: #1C1C1E;
|
|
--surface2: #2C2C2E;
|
|
--label: #FFFFFF;
|
|
--label2: #EBEBF5;
|
|
--label3: rgba(235,235,245,0.65);
|
|
--separator: rgba(84,84,88,0.65);
|
|
}
|
|
}
|
|
* { box-sizing: border-box; margin: 0; padding: 0; -webkit-font-smoothing: antialiased; }
|
|
body {
|
|
font-family: var(--font);
|
|
background: var(--bg);
|
|
color: var(--label);
|
|
padding: env(safe-area-inset-top, 20px) env(safe-area-inset-right, 20px) env(safe-area-inset-bottom, 40px) env(safe-area-inset-left, 20px);
|
|
max-width: 680px;
|
|
margin: 0 auto;
|
|
}
|
|
header { padding: 32px 0 24px; text-align: center; }
|
|
header .logo { font-family: var(--font-display); font-size: 28px; font-weight: 700; letter-spacing: -0.5px; color: var(--accent); }
|
|
header h1 { font-family: var(--font-display); font-size: 22px; font-weight: 700; color: var(--label); margin-top: 6px; }
|
|
header p { font-size: 13px; color: var(--label3); margin-top: 4px; }
|
|
.card { background: var(--surface); border-radius: var(--radius-lg); padding: 20px; margin-bottom: 12px; }
|
|
.card-title { font-family: var(--font-display); font-size: 17px; font-weight: 600; color: var(--label); margin-bottom: 12px; }
|
|
p, li { font-size: 15px; line-height: 1.6; color: var(--label2); }
|
|
ul { padding-left: 20px; margin-top: 8px; }
|
|
li { margin-bottom: 6px; }
|
|
.row { display: flex; align-items: flex-start; gap: 16px; padding: 12px 0; border-bottom: 0.5px solid var(--separator); }
|
|
.row:last-child { border-bottom: none; }
|
|
.row-icon { width: 36px; height: 36px; border-radius: var(--radius-md); display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
|
|
.blue { background: rgba(0,102,255,0.12); }
|
|
.green { background: rgba(52,199,89,0.12); }
|
|
.orange { background: rgba(255,149,0,0.12); }
|
|
.red { background: rgba(255,59,48,0.12); }
|
|
.purple { background: rgba(175,82,222,0.12); }
|
|
.teal { background: rgba(50,173,230,0.12); }
|
|
.row-content { flex: 1; }
|
|
.row-label { font-size: 15px; font-weight: 600; color: var(--label); }
|
|
.row-sub { font-size: 13px; color: var(--label3); margin-top: 2px; line-height: 1.5; }
|
|
a { color: var(--accent); text-decoration: none; }
|
|
footer { text-align: center; padding: 24px 0 8px; font-size: 13px; color: var(--label3); }
|
|
footer a { color: var(--accent); }
|
|
.stat-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin-top: 0; margin-bottom: 12px; }
|
|
.stat-box { background: var(--surface); border-radius: var(--radius-lg); padding: 16px; text-align: center; }
|
|
.stat-val { font-family: var(--font-display); font-size: 22px; font-weight: 700; color: var(--label); }
|
|
.stat-lbl { font-size: 12px; color: var(--label3); margin-top: 3px; }
|
|
.chain-step { display: flex; align-items: flex-start; gap: 16px; padding: 10px 0; border-bottom: 0.5px solid var(--separator); }
|
|
.chain-step:last-child { border-bottom: none; }
|
|
.chain-num { width: 28px; height: 28px; border-radius: var(--radius-full); background: rgba(0,102,255,0.12); color: var(--accent); font-size: 13px; font-weight: 700; display: flex; align-items: center; justify-content: center; flex-shrink: 0; margin-top: 2px; }
|
|
.chain-content { flex: 1; }
|
|
.chain-label { font-size: 14px; font-weight: 600; color: var(--label); }
|
|
.chain-sub { font-size: 13px; color: var(--label3); margin-top: 2px; line-height: 1.5; }
|
|
@media (max-width: 640px) {
|
|
.hero h1 { font-size: 2rem !important; }
|
|
.hero p { font-size: 1rem !important; }
|
|
.card { padding: 1.5rem !important; }
|
|
.grid { grid-template-columns: 1fr !important; }
|
|
.btn { padding: 0.75rem 1.5rem !important; font-size: 1rem !important; }
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<nav aria-label="breadcrumb" aria-label="Main navigation">
|
|
<a href="/" >Home</a> / <span>trust</span>
|
|
</nav>
|
|
|
|
<header class="lv-header">
|
|
<div class="logo"><a href="https://landvex.com/" >Landvex</a></div>
|
|
<h1>Trust Centre</h1>
|
|
<p>Infrastructure, data quality, and security for enterprise clients</p>
|
|
</header>
|
|
|
|
<div class="stat-grid">
|
|
<div class="stat-box">
|
|
<div class="stat-val">AES-256</div>
|
|
<div class="stat-lbl">Encryption at rest</div>
|
|
</div>
|
|
<div class="stat-box">
|
|
<div class="stat-val">TLS 1.3</div>
|
|
<div class="stat-lbl">Encryption in transit</div>
|
|
</div>
|
|
<div class="stat-box">
|
|
<div class="stat-val">85%+</div>
|
|
<div class="stat-lbl">AI approval rate target</div>
|
|
</div>
|
|
<div class="stat-box">
|
|
<div class="stat-val">EU-only</div>
|
|
<div class="stat-lbl">AWS eu-north-1</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="card" id="infrastructure">
|
|
<div class="card-title">Infrastructure Security</div>
|
|
<div class="row">
|
|
<div class="row-icon blue">
|
|
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="#0066ff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="11" width="18" height="11" rx="2"/><path d="M7 11V7a5 5 0 0 1 10 0v4"/></svg>
|
|
</div>
|
|
<div class="row-content">
|
|
<div class="row-label">Encryption at rest — AES-256</div>
|
|
<div class="row-sub">All stored data — intelligence outputs, client configurations, contributor records — is encrypted with AES-256 using AWS KMS-managed keys with automated annual rotation.</div>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="row-icon green">
|
|
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="#34c759" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/></svg>
|
|
</div>
|
|
<div class="row-content">
|
|
<div class="row-label">Encryption in transit — TLS 1.3</div>
|
|
<div class="row-sub">All API and web traffic is encrypted with TLS 1.3. TLS 1.0 and 1.1 are not supported. HSTS is enforced on all production endpoints.</div>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="row-icon teal">
|
|
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="#32ade6" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><line x1="2" y1="12" x2="22" y2="12"/><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10z"/></svg>
|
|
</div>
|
|
<div class="row-content">
|
|
<div class="row-label">AWS eu-north-1 — Stockholm</div>
|
|
<div class="row-sub">Landvex runs exclusively on AWS eu-north-1 (Stockholm, Sweden). Data does not leave the European Union in normal operation. Network isolation via VPC with restricted security group rules and no public database access.</div>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="row-icon purple">
|
|
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="#af52de" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="2" width="20" height="8" rx="2" ry="2"/><rect x="2" y="14" width="20" height="8" rx="2" ry="2"/><line x1="6" y1="6" x2="6.01" y2="6"/><line x1="6" y1="18" x2="6.01" y2="18"/></svg>
|
|
</div>
|
|
<div class="row-content">
|
|
<div class="row-label">SOC 2 Type II infrastructure</div>
|
|
<div class="row-sub">Landvex operates on AWS infrastructure certified to SOC 2 Type II and ISO 27001. AWS compliance artefacts are available on request via <a href="mailto:compliance@landvex.com">compliance@landvex.com</a>.</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="card" id="data-quality">
|
|
<div class="card-title">Data Quality Assurance</div>
|
|
<div class="row">
|
|
<div class="row-icon orange">
|
|
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="#ff9500" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="22 12 18 12 15 21 9 3 6 12 2 12"/></svg>
|
|
</div>
|
|
<div class="row-content">
|
|
<div class="row-label">85%+ AI approval rate target</div>
|
|
<div class="row-sub">Landvex targets a minimum 85% approval rate for submitted intelligence. Each submission is reviewed by the Landvex AI engine before acceptance. The approval rate is tracked per project and included in delivery reports.</div>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="row-icon blue">
|
|
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="#0066ff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="8"/><line x1="21" y1="21" x2="16.65" y2="16.65"/></svg>
|
|
</div>
|
|
<div class="row-content">
|
|
<div class="row-label">Human review available</div>
|
|
<div class="row-sub">For projects requiring higher assurance, human review can be added as a quality layer alongside AI review. Available on enterprise contracts. Contact your account manager to activate.</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="card" id="verification-chain">
|
|
<div class="card-title">Verification Chain</div>
|
|
<p>Every intelligence output delivered to enterprise clients passes through four verification stages.</p>
|
|
<div class="chain-step">
|
|
<div class="chain-num">1</div>
|
|
<div class="chain-content">
|
|
<div class="chain-label">Contributor identity verification</div>
|
|
<div class="chain-sub">All contributors (Zoomers) complete KYC identity verification before their first payout. Only verified contributors may submit intelligence.</div>
|
|
</div>
|
|
</div>
|
|
<div class="chain-step">
|
|
<div class="chain-num">2</div>
|
|
<div class="chain-content">
|
|
<div class="chain-label">GPS validation</div>
|
|
<div class="chain-sub">GPS coordinates are validated against the mission target location at submission time. Out-of-range submissions are automatically rejected.</div>
|
|
</div>
|
|
</div>
|
|
<div class="chain-step">
|
|
<div class="chain-num">3</div>
|
|
<div class="chain-content">
|
|
<div class="chain-label">AI quality review</div>
|
|
<div class="chain-sub">The Landvex AI engine reviews each submission for technical quality, specification compliance, and instruction adherence before acceptance.</div>
|
|
</div>
|
|
</div>
|
|
<div class="chain-step">
|
|
<div class="chain-num">4</div>
|
|
<div class="chain-content">
|
|
<div class="chain-label">Delivery</div>
|
|
<div class="chain-sub">Only approved submissions are delivered to enterprise clients. Payout to the contributor is triggered on approval. Rejected submissions are not delivered and not paid.</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="card" id="dpa">
|
|
<div class="card-title">Data Processing Agreement</div>
|
|
<div class="row">
|
|
<div class="row-icon blue">
|
|
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="#0066ff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/></svg>
|
|
</div>
|
|
<div class="row-content">
|
|
<div class="row-label">Available on request</div>
|
|
<div class="row-sub">A GDPR Art. 28 compliant Data Processing Agreement is available for all enterprise contracts. Standard Contractual Clauses for non-EEA clients are also available. Request via: <a href="mailto:legal@landvex.com">legal@landvex.com</a></div>
|
|
</div>
|
|
</div>
|
|
<p>Full DPA documentation: <a href="/dpa/">/dpa/</a></p>
|
|
</div>
|
|
|
|
<div class="card" id="security">
|
|
<div class="card-title">Security Programme</div>
|
|
<div class="row">
|
|
<div class="row-icon red">
|
|
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="#ff3b30" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"/><line x1="12" y1="9" x2="12" y2="13"/><line x1="12" y1="17" x2="12.01" y2="17"/></svg>
|
|
</div>
|
|
<div class="row-content">
|
|
<div class="row-label">Penetration testing — annual</div>
|
|
<div class="row-sub">Landvex commissions independent penetration testing of its platform annually. Reports are available to enterprise clients under NDA. Contact <a href="mailto:compliance@landvex.com">compliance@landvex.com</a> to request.</div>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="row-icon orange">
|
|
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="#ff9500" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/></svg>
|
|
</div>
|
|
<div class="row-content">
|
|
<div class="row-label">Responsible disclosure</div>
|
|
<div class="row-sub">Security vulnerability reports: <a href="mailto:security@landvex.com">security@landvex.com</a>. We acknowledge within 48 hours. Good-faith security research is welcomed; we do not pursue legal action against researchers acting responsibly.</div>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="row-icon teal">
|
|
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="#32ade6" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><polyline points="12 6 12 12 16 14"/></svg>
|
|
</div>
|
|
<div class="row-content">
|
|
<div class="row-label">Security overview</div>
|
|
<div class="row-sub">Full technical security documentation: <a href="/security/">/security/</a></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="card" id="data-lineage-subprocessors">
|
|
<div class="card-title">Data Lineage & Sub-processors</div>
|
|
<div class="row">
|
|
<div class="row-icon blue">
|
|
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="#0066ff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="16 18 22 12 16 6"/><polyline points="8 6 2 12 8 18"/></svg>
|
|
</div>
|
|
<div class="row-content">
|
|
<div class="row-label"><a href="/data-lineage/">Data Lineage</a></div>
|
|
<div class="row-sub">How data moves through the Landvex pipeline — field capture through intelligence delivery. Every transformation step documented.</div>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="row-icon purple">
|
|
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="#af52de" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"/><circle cx="9" cy="7" r="4"/><path d="M23 21v-2a4 4 0 0 0-3-3.87"/><path d="M16 3.13a4 4 0 0 1 0 7.75"/></svg>
|
|
</div>
|
|
<div class="row-content">
|
|
<div class="row-label"><a href="/subprocessors/">Sub-processors</a></div>
|
|
<div class="row-sub">Third-party processors engaged by Landvex AB. GDPR Article 28 compliant. Updated when sub-processors change.</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="card">
|
|
<div class="card-title">Related Documents</div>
|
|
<div class="row">
|
|
<div class="row-icon blue">
|
|
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="#0066ff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/></svg>
|
|
</div>
|
|
<div class="row-content">
|
|
<div class="row-label"><a href="/dpa/">Data Processing Agreement</a></div>
|
|
<div class="row-sub">GDPR Art. 28 DPA and Standard Contractual Clauses.</div>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="row-icon green">
|
|
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="#34c759" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/></svg>
|
|
</div>
|
|
<div class="row-content">
|
|
<div class="row-label"><a href="/compliance/">Compliance</a></div>
|
|
<div class="row-sub">GDPR, infrastructure certifications, and questionnaire process.</div>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="row-icon teal">
|
|
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="#32ade6" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/></svg>
|
|
</div>
|
|
<div class="row-content">
|
|
<div class="row-label"><a href="/data-quality/">Data quality</a></div>
|
|
<div class="row-sub">Methodology, accuracy metrics, and quality guarantees.</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<footer class="lv-footer" role="contentinfo">
|
|
<p><a href="https://landvex.com/">Landvex</a> · <a href="/privacy/">Privacy</a> · <a href="/compliance/">Compliance</a> · <a href="/dpa/">DPA</a> · <a href="/data-lineage/">Data Lineage</a> · <a href="/subprocessors/">Sub-processors</a> · <a href="/security/">Security</a> · <a href="/cookie-policy/">Cookies</a></p>
|
|
<p>© 2026 Landvex AB · Org.nr 559141-7042 · Tyresö, Sweden · <a href="mailto:compliance@landvex.com">compliance@landvex.com</a></p>
|
|
</footer>
|
|
|
|
</body>
|
|
</html>
|