48ea61cdcc
- Product documentation in docs/products/ - Updated MEMORY.md with product info - quiXzoom Auth Core as AAMOS Identity product
516 lines
29 KiB
HTML
516 lines
29 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>Data Lineage — Landvex</title>
|
||
<meta name="description" content="Complete data lineage documentation for Landvex intelligence outputs. From field capture to delivered intelligence — every step documented.">
|
||
<link rel="canonical" href="https://www.landvex.com/data-lineage/">
|
||
<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://www.landvex.com/">
|
||
<link rel="alternate" hreflang="en" href="https://www.landvex.com/">
|
||
<link rel="alternate" hreflang="sv" href="https://landvex.se/">
|
||
<link rel="alternate" hreflang="de" href="https://landvex.de/">
|
||
<link rel="alternate" hreflang="fr" href="https://landvex.fr/">
|
||
<link rel="alternate" hreflang="en-GB" href="https://landvex.co.uk/">
|
||
<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; }
|
||
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); }
|
||
|
||
/* Pipeline steps */
|
||
.pipeline { display: flex; flex-direction: column; gap: 0; }
|
||
.step { display: flex; align-items: flex-start; gap: 14px; padding: 16px 0; border-bottom: 0.5px solid var(--separator); cursor: pointer; transition: opacity 0.15s; }
|
||
.step:last-child { border-bottom: none; }
|
||
.step:hover { opacity: 0.85; }
|
||
.step-num-wrap { display: flex; flex-direction: column; align-items: center; flex-shrink: 0; }
|
||
.step-num { width: 32px; height: 32px; 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; }
|
||
.step-line { width: 1.5px; flex: 1; min-height: 12px; background: rgba(0,102,255,0.18); margin-top: 4px; }
|
||
.step:last-child .step-line { display: none; }
|
||
.step-icon { width: 36px; height: 36px; border-radius: var(--radius-md); display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
|
||
.step-body { flex: 1; }
|
||
.step-label { font-size: 15px; font-weight: 600; color: var(--label); }
|
||
.step-sub { font-size: 13px; color: var(--label3); margin-top: 3px; line-height: 1.55; }
|
||
.step-detail { margin-top: 10px; display: none; }
|
||
.step-detail.open { display: block; }
|
||
.step-detail ul { padding-left: 18px; }
|
||
.step-detail li { font-size: 13px; color: var(--label3); margin-bottom: 5px; line-height: 1.5; }
|
||
.step-toggle { font-size: 12px; color: var(--accent); margin-top: 5px; font-weight: 500; user-select: none; }
|
||
|
||
/* Colors */
|
||
.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); }
|
||
.indigo { background: rgba(94,92,230,0.12); }
|
||
.pink { background: rgba(255,45,85,0.12); }
|
||
|
||
/* Audit + residency */
|
||
.info-block { background: rgba(0,102,255,0.06); border-left: 3px solid var(--accent); border-radius: 0 var(--radius-sm) var(--radius-sm) 0; padding: 14px 16px; margin-bottom: 12px; }
|
||
.info-block p { font-size: 13px; color: var(--label2); line-height: 1.6; }
|
||
.info-block strong { color: var(--label); font-weight: 600; }
|
||
|
||
/* CTA */
|
||
.cta-row { display: flex; justify-content: center; margin: 16px 0 4px; }
|
||
.cta-btn { display: inline-block; background: var(--accent); color: #1d1d1f; font-size: 15px; font-weight: 600; padding: 13px 24px; border-radius: var(--radius-md); text-decoration: none; transition: opacity 0.15s; }
|
||
.cta-btn:hover { opacity: 0.88; }
|
||
|
||
/* Related docs */
|
||
.row { display: flex; align-items: flex-start; gap: 12px; 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; }
|
||
.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; }
|
||
@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" style="padding: 10px 20px; color: rgba(235,235,245,0.6); font-size: 14px;">
|
||
<a href="/" style="color: #007AFF; text-decoration: none;">Home</a> / <span>data-lineage</span>
|
||
</nav>
|
||
|
||
<header>
|
||
<div class="logo"><a href="https://www.landvex.com/" style="color:inherit;text-decoration:none;">Landvex</a></div>
|
||
<h1>How data moves through Landvex.</h1>
|
||
<p>From field capture to delivered intelligence — every step documented</p>
|
||
</header>
|
||
|
||
<div class="info-block">
|
||
<p><strong>Full traceability.</strong> Every intelligence output can be traced back to its source observations. This document describes each transformation step, the controls applied, and the data retained at each stage.</p>
|
||
</div>
|
||
|
||
<div class="card">
|
||
<div class="card-title">8-Step Pipeline</div>
|
||
<div class="pipeline" id="pipeline">
|
||
|
||
<div class="step" onclick="toggleStep(this)">
|
||
<div class="step-num-wrap">
|
||
<div class="step-num">1</div>
|
||
<div class="step-line"></div>
|
||
</div>
|
||
<div class="step-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="12" cy="12" r="3"/><path d="M3 7V5a2 2 0 0 1 2-2h2"/><path d="M17 3h2a2 2 0 0 1 2 2v2"/><path d="M21 17v2a2 2 0 0 1-2 2h-2"/><path d="M7 21H5a2 2 0 0 1-2-2v-2"/></svg>
|
||
</div>
|
||
<div class="step-body">
|
||
<div class="step-label">Field Capture</div>
|
||
<div class="step-sub">Zoomer photographs target via quiXzoom app with GPS lock and EXIF metadata.</div>
|
||
<div class="step-toggle">Show details</div>
|
||
<div class="step-detail">
|
||
<ul>
|
||
<li>Zoomer accepts mission in quiXzoom app</li>
|
||
<li>GPS coordinates locked at capture start</li>
|
||
<li>Photo taken with full EXIF metadata: device model, timestamp, GPS coordinates, focal length</li>
|
||
<li>Submission uploaded with: image, GPS trace, timestamp, device fingerprint, mission ID</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="step" onclick="toggleStep(this)">
|
||
<div class="step-num-wrap">
|
||
<div class="step-num">2</div>
|
||
<div class="step-line"></div>
|
||
</div>
|
||
<div class="step-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="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"/><circle cx="12" cy="7" r="4"/></svg>
|
||
</div>
|
||
<div class="step-body">
|
||
<div class="step-label">Identity Verification</div>
|
||
<div class="step-sub">Submitting Zoomer must be KYC-verified before any payout eligibility is established.</div>
|
||
<div class="step-toggle">Show details</div>
|
||
<div class="step-detail">
|
||
<ul>
|
||
<li>KYC verification is completed once, before the contributor's first payout</li>
|
||
<li>Each submission is linked to a verified contributor ID</li>
|
||
<li>Contributor ID is a pseudonymised hash — it is not stored in the intelligence output delivered to clients</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="step" onclick="toggleStep(this)">
|
||
<div class="step-num-wrap">
|
||
<div class="step-num">3</div>
|
||
<div class="step-line"></div>
|
||
</div>
|
||
<div class="step-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="step-body">
|
||
<div class="step-label">GPS Validation</div>
|
||
<div class="step-sub">Submitted coordinates validated against mission target with tolerance thresholds.</div>
|
||
<div class="step-toggle">Show details</div>
|
||
<div class="step-detail">
|
||
<ul>
|
||
<li>Submitted coordinates validated against mission target coordinates</li>
|
||
<li>Tolerance: <50 metres for standard missions; <10 metres for precision missions</li>
|
||
<li>GPS accuracy class assigned: coarse / balanced / precise</li>
|
||
<li>Submissions outside tolerance: auto-rejected or flagged for human review</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="step" onclick="toggleStep(this)">
|
||
<div class="step-num-wrap">
|
||
<div class="step-num">4</div>
|
||
<div class="step-line"></div>
|
||
</div>
|
||
<div class="step-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"><rect x="2" y="3" width="20" height="14" rx="2"/><path d="M8 21h8M12 17v4"/></svg>
|
||
</div>
|
||
<div class="step-body">
|
||
<div class="step-label">AI Image Review</div>
|
||
<div class="step-sub">Automated quality scoring across specification compliance, technical quality, and content relevance.</div>
|
||
<div class="step-toggle">Show details</div>
|
||
<div class="step-detail">
|
||
<ul>
|
||
<li>Image analysed for: specification compliance, technical quality, content relevance</li>
|
||
<li>Object detection confirms the target is present in frame</li>
|
||
<li>Quality score assigned on a scale of 0–100</li>
|
||
<li>Submissions below threshold: rejected with a reason code</li>
|
||
<li>Approval rate target: 85% or above</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="step" onclick="toggleStep(this)">
|
||
<div class="step-num-wrap">
|
||
<div class="step-num">5</div>
|
||
<div class="step-line"></div>
|
||
</div>
|
||
<div class="step-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="step-body">
|
||
<div class="step-label">Human Review (edge cases)</div>
|
||
<div class="step-sub">AI-borderline submissions routed to a human reviewer with full decision logging.</div>
|
||
<div class="step-toggle">Show details</div>
|
||
<div class="step-detail">
|
||
<ul>
|
||
<li>AI-borderline submissions (score 40–60) routed to a human reviewer</li>
|
||
<li>Reviewer applies the mission specification to reach a final decision</li>
|
||
<li>Decision logged with reviewer ID and timestamp</li>
|
||
<li>Appeals process available for rejected submissions</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="step" onclick="toggleStep(this)">
|
||
<div class="step-num-wrap">
|
||
<div class="step-num">6</div>
|
||
<div class="step-line"></div>
|
||
</div>
|
||
<div class="step-icon indigo">
|
||
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="#5e5ce6" 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="step-body">
|
||
<div class="step-label">Normalisation</div>
|
||
<div class="step-sub">Approved submissions converted to structured data points with full source attribution.</div>
|
||
<div class="step-toggle">Show details</div>
|
||
<div class="step-detail">
|
||
<ul>
|
||
<li>Approved submissions converted to structured data points</li>
|
||
<li>Entity extraction: location, object type, condition class, change signal</li>
|
||
<li>Temporal indexing: observation timestamped; version history maintained</li>
|
||
<li>Source attribution preserved throughout the normalisation process</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="step" onclick="toggleStep(this)">
|
||
<div class="step-num-wrap">
|
||
<div class="step-num">7</div>
|
||
<div class="step-line"></div>
|
||
</div>
|
||
<div class="step-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"><line x1="18" y1="20" x2="18" y2="10"/><line x1="12" y1="20" x2="12" y2="4"/><line x1="6" y1="20" x2="6" y2="14"/></svg>
|
||
</div>
|
||
<div class="step-body">
|
||
<div class="step-label">Intelligence Aggregation</div>
|
||
<div class="step-sub">Observations aggregated by geographic unit; index scores calculated with confidence weighting.</div>
|
||
<div class="step-toggle">Show details</div>
|
||
<div class="step-detail">
|
||
<ul>
|
||
<li>Observations aggregated by geographic unit: district, city, region</li>
|
||
<li>Index scores calculated: Opportunity, Growth, Vitality, Infra Stability, Investment Confidence</li>
|
||
<li>Contradiction detection: aggregated observations compared against official data sources</li>
|
||
<li>Confidence scores calculated from: observation count, recency, and cross-validation results</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="step" onclick="toggleStep(this)">
|
||
<div class="step-num-wrap">
|
||
<div class="step-num">8</div>
|
||
<div class="step-line"></div>
|
||
</div>
|
||
<div class="step-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="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="7 10 12 15 17 10"/><line x1="12" y1="15" x2="12" y2="3"/></svg>
|
||
</div>
|
||
<div class="step-body">
|
||
<div class="step-label">Output and Delivery</div>
|
||
<div class="step-sub">Intelligence reports generated with full source citations and traceable audit trails.</div>
|
||
<div class="step-toggle">Show details</div>
|
||
<div class="step-detail">
|
||
<ul>
|
||
<li>Intelligence report generated with source citations</li>
|
||
<li>Each data point is traceable to its source observations via an audit trail</li>
|
||
<li>Delivery formats: web dashboard, API, structured report (PDF / JSON / CSV)</li>
|
||
<li>Data retention: per client contract — default is intelligence outputs retained 3 years, raw observations 90 days post-delivery</li>
|
||
<li>Deletion: right to erasure supported; deletion confirmed within 30 days</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
|
||
<div class="card" id="audit-trail">
|
||
<div class="card-title">Audit Trail</div>
|
||
<div class="info-block" style="margin-bottom:0;">
|
||
<p>Every intelligence output can be traced back to its source observations. On request, Landvex provides a complete audit package including: observation timestamps, GPS accuracy classes, AI review scores, human review decisions, normalisation logs, and aggregation methodology.</p>
|
||
<p style="margin-top:8px;">Contact: <a href="mailto:legal@landvex.com">legal@landvex.com</a></p>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="card" id="data-residency">
|
||
<div class="card-title">Data Residency</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">EU-only — AWS eu-north-1, Stockholm</div>
|
||
<div class="row-sub">All data is stored in the EU on AWS eu-north-1 (Stockholm, Sweden). No data is transferred outside the EU without explicit client instruction and appropriate safeguards in place.</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="card">
|
||
<div class="card-title">Request Documentation</div>
|
||
<p style="font-size:14px;color:var(--label2);margin-bottom:16px;">Enterprise clients may request a complete data lineage package for their contract, including normalisation logs and aggregation methodology.</p>
|
||
<div class="cta-row">
|
||
<a href="/contact/" class="cta-btn">Request data lineage documentation for your contract</a>
|
||
</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="/subprocessors/">Sub-processors</a></div>
|
||
<div class="row-sub">Third-party processors used in the Landvex pipeline. GDPR Article 28 compliant.</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"><a href="/trust/">Trust Centre</a></div>
|
||
<div class="row-sub">Infrastructure security, data quality guarantee, and verification chain.</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="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 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"><a href="/data-quality/">Data Quality</a></div>
|
||
<div class="row-sub">Methodology, accuracy metrics, and quality guarantees.</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<footer>
|
||
<div class="footer-container" style="max-width:1200px;margin:0 auto;padding:48px 24px 32px;">
|
||
<!-- Main Footer Grid -->
|
||
<div style="display:grid;grid-template-columns:repeat(4,1fr);gap:40px;margin-bottom:48px;">
|
||
|
||
<!-- Column 1: Products -->
|
||
<div>
|
||
<h4 style="font-size:13px;font-weight:600;color:#0A0A0A;margin-bottom:16px;text-transform:uppercase;letter-spacing:0.5px;">Produkter</h4>
|
||
<ul style="list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:12px;">
|
||
<li><a href="/infrastructure-monitoring/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">VIMS</a></li>
|
||
<li><a href="/intelligence/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Intelligence</a></li>
|
||
<li><a href="/reality-alerts/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Reality Alerts</a></li>
|
||
<li><a href="/enterprise/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Enterprise</a></li>
|
||
<li><a href="/pilot/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Pilotprogram</a></li>
|
||
</ul>
|
||
</div>
|
||
|
||
<!-- Column 2: Solutions -->
|
||
<div>
|
||
<h4 style="font-size:13px;font-weight:600;color:#0A0A0A;margin-bottom:16px;text-transform:uppercase;letter-spacing:0.5px;">Lösningar</h4>
|
||
<ul style="list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:12px;">
|
||
<li><a href="/verticals/bridge-inspection/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Broinspektion</a></li>
|
||
<li><a href="/verticals/road-monitoring/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Vägövervakning</a></li>
|
||
<li><a href="/verticals/infrastructure/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Infrastruktur</a></li>
|
||
<li><a href="/verticals/utilities/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Utilities</a></li>
|
||
<li><a href="/use-cases/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Användningsfall</a></li>
|
||
</ul>
|
||
</div>
|
||
|
||
<!-- Column 3: Resources -->
|
||
<div>
|
||
<h4 style="font-size:13px;font-weight:600;color:#0A0A0A;margin-bottom:16px;text-transform:uppercase;letter-spacing:0.5px;">Resurser</h4>
|
||
<ul style="list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:12px;">
|
||
<li><a href="/blog/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Intelligence Insights</a></li>
|
||
<li><a href="/guides/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Guider</a></li>
|
||
<li><a href="/developers/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Developer API</a></li>
|
||
<li><a href="/status/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Systemstatus</a></li>
|
||
<li><a href="/reports/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Rapporter</a></li>
|
||
</ul>
|
||
</div>
|
||
|
||
<!-- Column 4: Company -->
|
||
<div>
|
||
<h4 style="font-size:13px;font-weight:600;color:#0A0A0A;margin-bottom:16px;text-transform:uppercase;letter-spacing:0.5px;">Företag</h4>
|
||
<ul style="list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:12px;">
|
||
<li><a href="/about/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Om oss</a></li>
|
||
<li><a href="/careers/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Karriär</a></li>
|
||
<li><a href="/press/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Press</a></li>
|
||
<li><a href="/contact/" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">Kontakt</a></li>
|
||
<li><a href="https://www.quixzoom.com" target="_blank" rel="noopener" style="font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;">quiXzoom →</a></li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Divider -->
|
||
<div style="border-top:1px solid #E5E5E5;padding-top:32px;">
|
||
|
||
<!-- Legal & Compliance Row -->
|
||
<div style="display:flex;justify-content:space-between;align-items:flex-start;flex-wrap:wrap;gap:24px;margin-bottom:24px;">
|
||
<div style="display:flex;flex-wrap:wrap;gap:16px 24px;">
|
||
<a href="/privacy/" style="font-size:12px;color:#6E6E73;text-decoration:none;">Privacy</a>
|
||
<a href="/terms/" style="font-size:12px;color:#6E6E73;text-decoration:none;">Terms</a>
|
||
<a href="/cookie-policy/" style="font-size:12px;color:#6E6E73;text-decoration:none;">Cookies</a>
|
||
<a href="/compliance/" style="font-size:12px;color:#6E6E73;text-decoration:none;">Compliance</a>
|
||
<a href="/trust/" style="font-size:12px;color:#6E6E73;text-decoration:none;">Trust Centre</a>
|
||
<a href="/dpa/" style="font-size:12px;color:#6E6E73;text-decoration:none;">DPA</a>
|
||
<a href="/sla/" style="font-size:12px;color:#6E6E73;text-decoration:none;">SLA</a>
|
||
<a href="/security/" style="font-size:12px;color:#6E6E73;text-decoration:none;">Security</a>
|
||
<a href="/accessibility/" style="font-size:12px;color:#6E6E73;text-decoration:none;">Accessibility</a>
|
||
<a href="/responsible-disclosure/" style="font-size:12px;color:#6E6E73;text-decoration:none;">Responsible Disclosure</a>
|
||
</div>
|
||
<div style="display:flex;gap:16px;">
|
||
<a href="https://www.linkedin.com/company/landvex" target="_blank" rel="noopener" style="color:#6E6E73;" title="LinkedIn">
|
||
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z"/><rect x="2" y="9" width="4" height="12"/><circle cx="4" cy="4" r="2"/></svg>
|
||
</a>
|
||
<a href="https://x.com/landvex" target="_blank" rel="noopener" style="color:#6E6E73;" title="X">
|
||
<svg width="18" height="18" viewBox="0 0 24 24" fill="currentColor"><path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-4.714-6.231-5.401 6.231H2.746l7.73-8.835L1.254 2.25H8.08l4.253 5.622 5.912-5.622Zm-1.161 17.52h1.833L7.084 4.126H5.117z"/></svg>
|
||
</a>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Company Info Row -->
|
||
<div style="display:flex;justify-content:space-between;align-items:flex-end;flex-wrap:wrap;gap:16px;">
|
||
<div>
|
||
<div style="font-size:12px;color:#86868B;line-height:1.6;">
|
||
<strong style="color:#0A0A0A;">Landvex Inc.</strong> · Houston, Texas · USA<br>
|
||
<strong style="color:#0A0A0A;">Landvex AB</strong> · Org.nr 559141-7042 · Tyresö, Sweden · EU<br>
|
||
<a href="mailto:contact@landvex.com" style="color:#86868B;text-decoration:none;">contact@landvex.com</a> ·
|
||
<a href="mailto:security@landvex.com" style="color:#86868B;text-decoration:none;">security@landvex.com</a>
|
||
</div>
|
||
<div style="font-size:11px;color:#86868B;margin-top:8px;line-height:1.5;">
|
||
Field data powered by <a href="https://www.quixzoom.com" style="color:#86868B;text-decoration:underline;">quiXzoom</a> ·
|
||
<a href="/data-lineage/" style="color:#86868B;text-decoration:underline;">Data Lineage</a> ·
|
||
<a href="/subprocessors/" style="color:#86868B;text-decoration:underline;">Sub-processors</a> ·
|
||
<a href="/methodology/" style="color:#86868B;text-decoration:underline;">Methodology</a>
|
||
</div>
|
||
</div>
|
||
<div style="font-size:12px;color:#86868B;">
|
||
© 2026 Landvex Inc / Landvex AB. All rights reserved.
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
</footer>
|
||
|
||
<script>
|
||
function toggleStep(el) {
|
||
var detail = el.querySelector('.step-detail');
|
||
var toggle = el.querySelector('.step-toggle');
|
||
if (!detail) return;
|
||
var isOpen = detail.classList.contains('open');
|
||
detail.classList.toggle('open', !isOpen);
|
||
toggle.textContent = isOpen ? 'Show details' : 'Hide details';
|
||
}
|
||
</script>
|
||
|
||
</body>
|
||
</html>
|