Files
boc/landvex-site/methodology/index.html
T
Bernt 48ea61cdcc docs: add quixzoom-auth-core product to AAMOS
- Product documentation in docs/products/
- Updated MEMORY.md with product info
- quiXzoom Auth Core as AAMOS Identity product
2026-07-14 09:58:53 +00:00

1390 lines
69 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Methodology — How Landvex Works | LandveX</title>
<meta name="description" content="How Landvex produces physical business intelligence — from global field observation through AI normalization, intelligence scoring, contradiction.">
<link rel="canonical" href="https://www.landvex.com/methodology/">
<meta name="robots" content="index, follow">
<!-- Open Graph -->
<meta property="og:type" content="website">
<meta property="og:url" content="https://www.landvex.com/methodology/">
<meta property="og:title" content="Methodology — How Landvex Works">
<meta property="og:description" content="From field observation to decision intelligence. How the Landvex pipeline turns physical reality into actionable scores and contradiction reports.">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta property="og:image" content="https://www.landvex.com/og-image.jpg">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="How Landvex Works — Methodology">
<meta name="twitter:description" content="From field observation to decision intelligence. The Landvex pipeline explained.">
<!-- Favicons -->
<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="manifest" href="/site.webmanifest">
<style>
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
:root {
--bg-dark: #f5f5f7;
--blue: #0066FF;
--blue-dark: #0052CC;
--blue-glow: rgba(0, 102, 255, 0.15);
--text-dark: #0a0a0a;
--text-body: #3a3a3a;
--text-muted: #6B6B6B;
--text-light: #1d1d1f;
--text-dim: #6B6B6B;
--surface: #ffffff;
--surface-2: #f5f5f7;
--border: rgba(0,0,0,0.08);
--radius-sm: 8px;
--radius-md: 14px;
--radius-lg: 24px;
}
html { scroll-behavior: smooth; }
body {
font-family: -apple-system, BlinkMacSystemFont, 'Inter', 'Helvetica Neue', sans-serif;
background: #fff;
color: var(--text-body);
line-height: 1.6;
-webkit-font-smoothing: antialiased;
}
a { color: inherit; text-decoration: none; }
/* NAV */
nav {
position: fixed; top: 0; left: 0; right: 0; z-index: 100;
display: flex; align-items: center; justify-content: space-between;
padding: 0 40px;
height: 64px;
background: rgba(0,0,0,0.92);
backdrop-filter: blur(16px);
-webkit-backdrop-filter: blur(16px);
border-bottom: 1px solid var(--border);
}
.nav-logo {
font-size: 18px;
font-weight: 700;
letter-spacing: -0.3px;
color: #1d1d1f;
}
.nav-links {
display: flex; gap: 32px; list-style: none;
}
.nav-links a {
font-size: 14px;
color: var(--text-dim);
transition: color 0.2s;
}
.nav-links a:hover { color: #1d1d1f; }
.btn {
display: inline-flex; align-items: center; gap: 6px;
padding: 10px 22px;
background: var(--blue);
color: #1d1d1f;
font-size: 14px;
font-weight: 600;
border-radius: var(--radius-md);
border: none;
cursor: pointer;
transition: background 0.2s, transform 0.15s;
}
.btn:hover { background: var(--blue-dark); transform: translateY(-1px); }
.btn-outline {
background: transparent;
border: 1.5px solid rgba(0,0,0,0.18);
color: var(--text-light);
}
.btn-outline:hover { background: rgba(0,0,0,0.04); transform: translateY(-1px); }
.btn-lg { padding: 14px 30px; font-size: 16px; border-radius: var(--radius-md); }
/* HERO */
.hero {
background: var(--bg-dark);
padding: 140px 24px 96px;
text-align: center;
position: relative;
overflow: hidden;
}
.hero::before {
content: '';
position: absolute;
top: -120px; left: 50%; transform: translateX(-50%);
width: 900px; height: 600px;
background: radial-gradient(ellipse at center, rgba(0,102,255,0.12) 0%, transparent 70%);
pointer-events: none;
}
.hero-eyebrow {
display: inline-flex; align-items: center; gap: 8px;
background: rgba(0,102,255,0.1);
border: 1px solid rgba(0,102,255,0.25);
color: #5599ff;
font-size: 12px;
font-weight: 600;
letter-spacing: 0.08em;
text-transform: uppercase;
padding: 6px 16px;
border-radius: 100px;
margin-bottom: 28px;
}
.hero h1 {
font-size: clamp(38px, 6vw, 68px);
font-weight: 800;
letter-spacing: -2px;
line-height: 1.07;
color: #1d1d1f;
max-width: 820px;
margin: 0 auto 24px;
}
.hero-sub {
font-size: clamp(16px, 2vw, 19px);
color: var(--text-dim);
max-width: 620px;
line-height: 1.7;
margin: 0 auto 48px;
}
/* PIPELINE OVERVIEW */
.pipeline {
background: var(--bg-dark);
padding: 0 24px 80px;
}
.pipeline-inner {
max-width: 1140px;
margin: 0 auto;
display: flex;
align-items: stretch;
gap: 0;
overflow-x: auto;
}
.pipeline-step {
flex: 1;
min-width: 160px;
display: flex;
flex-direction: column;
align-items: center;
text-align: center;
position: relative;
}
.pipeline-step:not(:last-child)::after {
content: '→';
position: absolute;
right: -14px;
top: 28px;
font-size: 20px;
color: rgba(0,102,255,0.5);
z-index: 1;
}
.pipeline-num {
width: 56px; height: 56px;
border-radius: var(--radius-full);
background: rgba(0,102,255,0.1);
border: 2px solid var(--blue);
display: flex; align-items: center; justify-content: center;
font-size: 13px; font-weight: 800;
color: var(--blue);
margin-bottom: 16px;
letter-spacing: 0;
}
.pipeline-step h3 {
font-size: 13px;
font-weight: 700;
color: #1d1d1f;
letter-spacing: -0.2px;
line-height: 1.3;
}
/* SECTION COMMON */
.container { max-width: 1140px; margin: 0 auto; }
.section-label {
font-size: 12px; font-weight: 700; letter-spacing: 0.1em;
text-transform: uppercase; color: var(--blue);
margin-bottom: 12px;
}
.section-title {
font-size: clamp(26px, 3.5vw, 40px);
font-weight: 800;
letter-spacing: -1.2px;
line-height: 1.1;
color: var(--text-dark);
margin-bottom: 14px;
}
.section-sub {
font-size: 17px;
color: var(--text-muted);
max-width: 560px;
line-height: 1.7;
}
/* LAYER SECTIONS */
.layer {
padding: 80px 24px;
border-bottom: 1px solid #1a1a1a;
}
.layer:nth-child(even) {
background: #f8f9fc;
}
.layer-inner {
max-width: 1140px;
margin: 0 auto;
display: grid;
grid-template-columns: 1fr 1fr;
gap: 64px;
align-items: start;
}
.layer-inner.reverse {
direction: rtl;
}
.layer-inner.reverse > * {
direction: ltr;
}
.layer-header {}
.layer-header .layer-num {
display: inline-flex;
align-items: center;
gap: 10px;
margin-bottom: 20px;
}
.layer-num-badge {
width: 36px; height: 36px;
border-radius: var(--radius-full);
background: var(--blue);
color: #1d1d1f;
font-size: 14px;
font-weight: 800;
display: flex; align-items: center; justify-content: center;
flex-shrink: 0;
}
.layer-num-label {
font-size: 12px;
font-weight: 700;
letter-spacing: 0.1em;
text-transform: uppercase;
color: var(--blue);
}
.layer-header h2 {
font-size: clamp(24px, 3vw, 36px);
font-weight: 800;
letter-spacing: -1px;
line-height: 1.1;
color: var(--text-dark);
margin-bottom: 14px;
}
.layer-header p {
font-size: 16px;
color: var(--text-muted);
line-height: 1.7;
}
/* FEATURE LIST */
.feature-list {
display: flex;
flex-direction: column;
gap: 16px;
}
.feature-item {
background: #fff;
border: 1px solid #e8eaf0;
border-radius: var(--radius-md);
padding: 20px 24px;
display: flex;
gap: 16px;
align-items: flex-start;
transition: border-color 0.2s, box-shadow 0.2s;
}
.layer:nth-child(even) .feature-item {
background: #fff;
}
.feature-item:hover {
border-color: rgba(0,102,255,0.25);
box-shadow: 0 4px 20px rgba(0,102,255,0.06);
}
.feature-icon {
width: 36px; height: 36px;
background: rgba(0,102,255,0.08);
border-radius: var(--radius-sm);
display: flex; align-items: center; justify-content: center;
font-size: 18px;
flex-shrink: 0;
}
.feature-item h4 {
font-size: 15px;
font-weight: 700;
color: var(--text-dark);
margin-bottom: 4px;
letter-spacing: -0.2px;
}
.feature-item p {
font-size: 14px;
color: var(--text-muted);
line-height: 1.55;
}
/* OUTPUT SECTION */
.output-section {
background: var(--bg-dark);
padding: 96px 24px;
}
.output-header {
text-align: center;
margin-bottom: 60px;
}
.output-header .section-title { color: #1d1d1f; }
.output-header .section-sub { color: var(--text-dim); margin: 0 auto; }
.output-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 20px;
max-width: 1140px;
margin: 0 auto;
}
.output-card {
background: var(--surface);
border: 1px solid var(--border);
border-radius: var(--radius-lg);
padding: 28px 28px;
transition: border-color 0.25s, transform 0.2s;
}
.output-card:hover {
border-color: rgba(0,102,255,0.35);
transform: translateY(-3px);
}
.output-icon {
width: 44px; height: 44px;
background: var(--blue-glow);
border: 1px solid rgba(0,102,255,0.25);
border-radius: var(--radius-md);
display: flex; align-items: center; justify-content: center;
font-size: 20px;
margin-bottom: 18px;
}
.output-card h3 {
font-size: 17px;
font-weight: 700;
color: #1d1d1f;
margin-bottom: 8px;
letter-spacing: -0.3px;
}
.output-card p {
font-size: 14px;
color: var(--text-dim);
line-height: 1.6;
}
.output-card .cite-note {
margin-top: 14px;
padding-top: 14px;
border-top: 1px solid var(--border);
font-size: 12px;
color: rgba(255,255,255,0.75);
font-style: italic;
}
/* DIMENSIONS BAND */
.dimensions-band {
background: #e8f0fe;
padding: 64px 24px;
}
.dimensions-inner {
max-width: 1140px;
margin: 0 auto;
}
.dimensions-header {
text-align: center;
margin-bottom: 48px;
}
.dimensions-header .section-title { color: #1d1d1f; }
.dimensions-header .section-sub { color: rgba(255,255,255,0.75); margin: 0 auto; }
.dimensions-grid {
display: grid;
grid-template-columns: repeat(6, 1fr);
gap: 16px;
}
.dim-card {
background: rgba(0,0,0,0.03);
border: 1px solid rgba(0,0,0,0.09);
border-radius: var(--radius-md);
padding: 20px 16px;
text-align: center;
transition: background 0.2s, border-color 0.2s;
}
.dim-card:hover {
background: rgba(0,102,255,0.1);
border-color: rgba(0,102,255,0.3);
}
.dim-icon { font-size: 24px; margin-bottom: 10px; }
.dim-name { font-size: 13px; font-weight: 700; color: #1d1d1f; line-height: 1.3; }
.dim-scale { font-size: 11px; color: rgba(255,255,255,0.75); margin-top: 4px; }
/* CTA BAND */
.cta-band {
background: var(--blue);
padding: 72px 24px;
text-align: center;
}
.cta-band h2 {
font-size: clamp(26px, 4vw, 42px);
font-weight: 800;
letter-spacing: -1.2px;
color: #1d1d1f;
margin-bottom: 14px;
}
.cta-band p {
font-size: 18px;
color: rgba(0,0,0,0.8);
margin-bottom: 36px;
max-width: 560px;
margin-left: auto;
margin-right: auto;
}
.btn-white {
background: #fff;
color: var(--blue);
font-weight: 700;
}
.btn-white:hover {
background: rgba(0,0,0,0.92);
transform: translateY(-1px);
}
/* FOOTER */
footer {
background: var(--bg-dark);
border-top: 1px solid var(--border);
padding: 40px 40px;
}
.footer-inner {
max-width: 1140px; margin: 0 auto;
display: flex; align-items: center; justify-content: space-between;
flex-wrap: wrap; gap: 20px;
}
.footer-logo { font-size: 17px; font-weight: 700; color: #1d1d1f; }
.footer-copy { font-size: 13px; color: var(--text-muted); }
.footer-links { display: flex; gap: 24px; align-items: center; }
.footer-links a { font-size: 14px; color: var(--text-muted); transition: color 0.2s; }
.footer-links a:hover { color: #1d1d1f; }
.footer-social {
width: 32px; height: 32px;
border: 1px solid var(--border);
border-radius: var(--radius-md);
display: flex; align-items: center; justify-content: center;
transition: border-color 0.2s, background 0.2s;
}
.footer-social:hover { border-color: rgba(0,0,0,0.25); background: rgba(0,0,0,0.04); }
.footer-tagline { font-size: 12px; color: var(--text-muted); margin-top: 4px; }
/* PDF DOWNLOAD BUTTON */
.pdf-download-btn {
display: inline-flex; align-items: center; gap: 10px;
background: rgba(0,0,0,0.08);
border: 1.5px solid rgba(0,0,0,0.2);
color: #1d1d1f;
font-size: 14px; font-weight: 600;
padding: 12px 24px;
border-radius: var(--radius-md);
margin-top: 20px;
transition: background 0.2s, border-color 0.2s, transform 0.15s;
cursor: pointer;
}
.pdf-download-btn:hover {
background: rgba(0,0,0,0.14);
border-color: rgba(0,0,0,0.35);
transform: translateY(-1px);
}
.pdf-download-btn svg { flex-shrink: 0; }
/* DATA QUALITY */
.dq-section { background: #f8f9fc; padding: 96px 24px; }
.dq-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; margin-top: 48px; }
.dq-card {
background: #fff;
border: 1px solid #e0e6f0;
border-radius: var(--radius-lg);
padding: 32px 28px;
position: relative;
overflow: hidden;
}
.dq-card::before {
content: '';
position: absolute; top: 0; left: 0; right: 0;
height: 3px; background: var(--blue);
}
.dq-card-icon { margin-bottom: 18px; }
.dq-card h3 { font-size: 18px; font-weight: 800; color: #0a0a0a; margin-bottom: 10px; letter-spacing: -0.3px; }
.dq-card p { font-size: 14px; color: #555; line-height: 1.65; margin-bottom: 16px; }
.dq-standards { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 8px; }
.dq-standards li {
display: flex; align-items: flex-start; gap: 10px;
font-size: 13px; color: #444; line-height: 1.5;
}
.dq-standards li::before {
content: '';
width: 6px; height: 6px; border-radius: var(--radius-full);
background: var(--blue); flex-shrink: 0; margin-top: 6px;
}
/* CONTRADICTION FLOW DIAGRAM */
.flow-section { background: #f5f5f7; padding: 96px 24px; }
.flow-diagram {
max-width: 820px; margin: 56px auto 0;
display: flex; flex-direction: column; align-items: center; gap: 0;
}
.flow-node {
width: 100%; max-width: 540px;
background: var(--surface); border: 1px solid var(--border);
border-radius: var(--radius-md); padding: 20px 28px;
display: flex; align-items: center; gap: 16px;
}
.flow-node.flow-trigger { border-color: rgba(0,102,255,0.4); background: rgba(0,102,255,0.07); }
.flow-node.flow-detect { border-color: rgba(245,158,11,0.4); background: rgba(245,158,11,0.06); }
.flow-node.flow-rank { border-color: rgba(239,68,68,0.35); background: rgba(239,68,68,0.06); }
.flow-node.flow-redteam { border-color: rgba(139,92,246,0.4); background: rgba(139,92,246,0.07); }
.flow-node.flow-output { border-color: rgba(34,197,94,0.4); background: rgba(34,197,94,0.07); }
.flow-node-icon { width: 40px; height: 40px; border-radius: var(--radius-md); display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
.flow-node-text h4 { font-size: 14px; font-weight: 700; color: #1d1d1f; margin-bottom: 3px; }
.flow-node-text p { font-size: 12px; color: rgba(255,255,255,0.75); line-height: 1.5; }
.flow-arrow { display: flex; align-items: center; justify-content: center; height: 32px; }
.flow-arrow svg { opacity: 0.4; }
.flow-split {
display: grid; grid-template-columns: 1fr 1fr; gap: 16px;
width: 100%; max-width: 540px; margin: 0;
}
.flow-split .flow-node { max-width: 100%; }
.flow-split-arrow { display: flex; align-items: center; justify-content: center; height: 32px; position: relative; width: 100%; max-width: 540px; }
.flow-split-arrow::before, .flow-split-arrow::after {
content: '';
position: absolute; top: 50%; width: 25%;
height: 1px; background: rgba(0,0,0,0.15);
}
.flow-split-arrow::before { right: calc(50% + 8px); }
.flow-split-arrow::after { left: calc(50% + 8px); }
/* RESPONSIVE */
@media (max-width: 900px) {
nav { padding: 0 20px; }
.nav-links { display: none; }
.layer-inner { grid-template-columns: 1fr; gap: 40px; }
.layer-inner.reverse { direction: ltr; }
.output-grid { grid-template-columns: 1fr 1fr; }
.dimensions-grid { grid-template-columns: repeat(3, 1fr); }
.pipeline-inner { gap: 16px; }
}
@media (max-width: 600px) {
.hero { padding: 120px 20px 72px; }
.layer { padding: 56px 20px; }
.output-grid { grid-template-columns: 1fr; }
.dimensions-grid { grid-template-columns: repeat(2, 1fr); }
.footer-inner { flex-direction: column; text-align: center; }
.pipeline-step:not(:last-child)::after { display: none; }
.container { padding: 0 16px !important; box-sizing: border-box; }
.pipeline-inner { padding: 0 4px; }
}
</style>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Landvex",
"item": "https://www.landvex.com/"
},
{
"@type": "ListItem",
"position": 2,
"name": "Methodology",
"item": "https://www.landvex.com/methodology/"
}
]
}
</script>
<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/">
<link rel="alternate" hreflang="it" href="https://landvex.it/">
<style>
@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>methodology</span>
</nav>
<!-- NAV -->
<nav>
<a class="nav-logo" href="/">LandveX</a>
<ul class="nav-links">
<li><a href="/">Home</a></li>
<li><a href="/#how-it-works">How it works</a></li>
<li><a href="https://www.landvex.com/#contact">Contact</a></li>
</ul>
<a class="btn btn-outline" href="https://www.landvex.com/#contact">Get in touch →</a>
</nav>
<!-- HERO -->
<section class="hero">
<div class="hero-eyebrow">Methodology</div>
<h1>How Landvex works.</h1>
<div style="background:#fef3c7;border:1px solid #f59e0b;border-radius: var(--radius-md);padding:12px 18px;margin:16px 0;font-size:.875rem;color:#92400e;"><strong>Pre-launch:</strong> All methodology documentation describes the system as designed for August 2026 launch. No live intelligence is being generated or sold at this time.</div>
<p class="hero-sub">Five interlocked layers — from global field observation to verified intelligence. Every output is sourced, explained, and challenged before delivery.</p>
<div style="display:flex;gap:14px;flex-wrap:wrap;justify-content:center;">
<a class="btn btn-lg" href="https://www.landvex.com/#contact">Request a briefing &rarr;</a>
<a class="pdf-download-btn" href="/methodology/landvex-methodology-2026.pdf">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" 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>
Download methodology PDF &rarr;
</a>
</div>
</section>
<!-- PIPELINE OVERVIEW -->
<section class="pipeline">
<div class="pipeline-inner">
<div class="pipeline-step">
<div class="pipeline-num">01</div>
<h3>Observation<br>Layer</h3>
</div>
<div class="pipeline-step">
<div class="pipeline-num">02</div>
<h3>Normalization<br>Layer</h3>
</div>
<div class="pipeline-step">
<div class="pipeline-num">03</div>
<h3>Intelligence<br>Layer</h3>
</div>
<div class="pipeline-step">
<div class="pipeline-num">04</div>
<h3>Contradiction<br>Engine</h3>
</div>
<div class="pipeline-step">
<div class="pipeline-num">05</div>
<h3>Red Team<br>Analysis</h3>
</div>
<div class="pipeline-step">
<div class="pipeline-num"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><path d="M3 8L6.5 11.5L13 4.5" stroke="#22c55e" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg></div>
<h3>Verified<br>Output</h3>
</div>
</div>
</section>
<!-- PDF DOWNLOAD BLOCK -->
<section style="padding:0 24px;background:#fff;">
<div style="max-width:1140px;margin:0 auto;">
<div style="background:var(--blue);border-radius: var(--radius-lg);padding:32px 40px;display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap;margin:48px 0">
<div>
<h3 style="color: #1d1d1f;font-size:1.25rem;margin-bottom:6px">Landvex Intelligence Methodology</h3>
<p style="color:rgba(255,255,255,.75);font-size:.9375rem">8-page technical overview. How field observations become decision intelligence.</p>
</div>
<a href="/methodology/landvex-methodology-2026.pdf" style="background:#fff;color:var(--blue);font-weight:700;padding:14px 28px;border-radius: var(--radius-md);text-decoration:none;white-space:nowrap;flex-shrink:0">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" style="margin-right:6px;vertical-align:middle"><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>
Download PDF
</a>
</div>
</div>
</section>
<!-- LAYER 1: OBSERVATION -->
<section class="layer" id="observation">
<div class="layer-inner">
<div class="layer-header">
<div class="layer-num">
<div class="layer-num-badge">1</div>
<span class="layer-num-label">Observation Layer</span>
</div>
<h2>Eyes on the ground.<br>At global scale.</h2>
<p>Every Landvex intelligence product begins with physical observation. The quiXzoom contributor network gives us human eyes across more than 20 countries — not cameras, not satellites, but verified people on the ground documenting what is actually there.</p>
</div>
<div class="feature-list">
<div class="feature-item">
<div class="feature-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="#0066FF" stroke-width="2"><circle cx="12" cy="12" r="10"/><path d="M2 12h20"/><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"/></svg></div>
<div>
<h4>quiXzoom global contributor network</h4>
<p>Thousands of active field contributors across 20+ countries, deployable within hours to any target area. Local knowledge combined with structured data collection.</p>
</div>
</div>
<div class="feature-item">
<div class="feature-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="#0066FF" stroke-width="2"><rect x="3" y="3" width="18" height="18" rx="2"/><path d="M9 9h6v6H9z"/><path d="M9 1v2M15 1v2M9 21v2M15 21v2M20 9h2M20 15h2M2 9h2M2 15h2"/></svg></div>
<div>
<h4>AI-reviewed submissions</h4>
<p>Every submission is automatically reviewed for geographic accuracy, image quality, and specification compliance before it enters the pipeline. No human bias in the review gate.</p>
</div>
</div>
<div class="feature-item">
<div class="feature-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="#0066FF" stroke-width="2"><rect x="3" y="4" width="18" height="16" rx="2"/><circle cx="9" cy="10" r="2"/><path d="M15 8h2M15 12h2"/><path d="M7 16h10"/></svg></div>
<div>
<h4>Verified field agents, identity-verified once</h4>
<p>Every contributor completes a one-time identity verification. Verified status persists across all missions. Verification creates accountability and trace integrity for every observation.</p>
</div>
</div>
<div class="feature-item">
<div class="feature-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="#0066FF" stroke-width="2"><polygon points="1 6 1 22 8 18 16 22 23 18 23 2 16 6 8 2 1 6"/><line x1="8" y1="2" x2="8" y2="18"/><line x1="16" y1="6" x2="16" y2="22"/></svg></div>
<div>
<h4>Coverage: 20+ countries at launch</h4>
<p>Europe, Southeast Asia, and growing. Coverage expands continuously as the quiXzoom network scales. New markets are opened on request.</p>
</div>
</div>
</div>
</div>
</section>
<!-- LAYER 2: NORMALIZATION -->
<section class="layer" id="normalization">
<div class="layer-inner reverse">
<div class="layer-header">
<div class="layer-num">
<div class="layer-num-badge">2</div>
<span class="layer-num-label">Normalization Layer</span>
</div>
<h2>Raw observation becomes<br>structured data.</h2>
<p>Field observations arrive in different formats, from different contributors, across different contexts. The normalization layer converts everything into a consistent, comparable structured data point — stripping noise while preserving source integrity.</p>
</div>
<div class="feature-list">
<div class="feature-item">
<div class="feature-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="#0066FF" stroke-width="2"><path d="M21.21 15.89A10 10 0 1 1 8 2.83"/><path d="M22 12A10 10 0 0 0 12 2v10z"/></svg></div>
<div>
<h4>Every observation converted to a structured data point</h4>
<p>Unstructured field submissions are parsed into typed, schema-validated records. Location, object, condition, and change signal are extracted and stored independently.</p>
</div>
</div>
<div class="feature-item">
<div class="feature-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="#0066FF" stroke-width="2"><circle cx="11" cy="11" r="8"/><path d="m21 21-4.35-4.35"/></svg></div>
<div>
<h4>Entity extraction: location, object type, condition, change signal</h4>
<p>Each data point is tagged with what was observed, where, in what condition, and whether it represents a change from the prior state — the four axes of physical intelligence.</p>
</div>
</div>
<div class="feature-item">
<div class="feature-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="#0066FF" stroke-width="2"><circle cx="12" cy="12" r="10"/><polyline points="12 6 12 12 16 14"/></svg></div>
<div>
<h4>Temporal indexing: every observation timestamped and versioned</h4>
<p>Every data point is stored with a precise timestamp and version history. This enables change detection, trend analysis, and before/after comparisons at any granularity.</p>
</div>
</div>
<div class="feature-item">
<div class="feature-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="#0066FF" stroke-width="2"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg></div>
<div>
<h4>Source attribution maintained throughout</h4>
<p>Every data point retains a full audit trail back to the field submission, the contributor, the timestamp, and the mission brief. Nothing is anonymized into oblivion.</p>
</div>
</div>
</div>
</div>
</section>
<!-- DIMENSIONS BAND -->
<div class="dimensions-band">
<div class="dimensions-inner">
<div class="dimensions-header">
<div class="section-label" style="color:rgba(255,255,255,0.75)">Six scoring dimensions</div>
<h2 class="section-title" style="color: #1d1d1f; margin-bottom:10px">Every place scored on six axes.</h2>
<p class="section-sub" style="color:rgba(255,255,255,0.75); margin:0 auto">Observations aggregate into district, city, and regional scores across six dimensions — all on a 0100 scale, all updated continuously from August 2026.</p>
</div>
<div class="dimensions-grid">
<div class="dim-card" style="cursor:pointer;" onclick="location.href='#intelligence'" role="button" tabindex="0">
<div class="dim-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#0066FF" stroke-width="2"><path d="M9 18h6"/><path d="M10 22h4"/><path d="M12 2v1"/><path d="M12 7a5 5 0 0 1 5 5c0 2.5-2 4-2 6H9c0-2-2-3.5-2-6a5 5 0 0 1 5-5z"/></svg></div>
<div class="dim-name">Opportunity</div>
<div class="dim-scale">0100</div>
</div>
<div class="dim-card" style="cursor:pointer;" onclick="location.href='#intelligence'" role="button" tabindex="0">
<div class="dim-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#0066FF" stroke-width="2"><path d="m22 7-8.5 8.5-5-5L2 17"/><path d="M16 7h6v6"/></svg></div>
<div class="dim-name">Growth</div>
<div class="dim-scale">0100</div>
</div>
<div class="dim-card" style="cursor:pointer;" onclick="location.href='#intelligence'" role="button" tabindex="0">
<div class="dim-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#0066FF" stroke-width="2"><path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/><polyline points="9 22 9 12 15 12 15 22"/></svg></div>
<div class="dim-name">Commercial Vitality</div>
<div class="dim-scale">0100</div>
</div>
<div class="dim-card" style="cursor:pointer;" onclick="location.href='#intelligence'" role="button" tabindex="0">
<div class="dim-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#0066FF" stroke-width="2"><path d="M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z"/></svg></div>
<div class="dim-name">Infrastructure Stability</div>
<div class="dim-scale">0100</div>
</div>
<div class="dim-card" style="cursor:pointer;" onclick="location.href='#intelligence'" role="button" tabindex="0">
<div class="dim-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#0066FF" stroke-width="2"><path d="M2 12h20"/><path d="M13 2v20"/><path d="M21 12a9 9 0 0 1-9 9"/><path d="M3 12a9 9 0 0 0 9-9"/></svg></div>
<div class="dim-name">Tourism Potential</div>
<div class="dim-scale">0100</div>
</div>
<div class="dim-card" style="cursor:pointer;" onclick="location.href='#intelligence'" role="button" tabindex="0">
<div class="dim-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#0066FF" stroke-width="2"><path d="M6 3h12l4 6-10 13L2 9z"/><path d="M11 3 8 9l4 13 4-13-3-6"/><path d="M2 9h20"/></svg></div>
<div class="dim-name">Investment Confidence</div>
<div class="dim-scale">0100</div>
</div>
</div>
</div>
</div>
<!-- LAYER 3: INTELLIGENCE -->
<section class="layer" id="intelligence">
<div class="layer-inner">
<div class="layer-header">
<div class="layer-num">
<div class="layer-num-badge">3</div>
<span class="layer-num-label">Intelligence Layer</span>
</div>
<h2>Observations aggregate<br>into scores.</h2>
<p>Individual data points are aggregated into district, city, and regional intelligence scores. Scores are updated continuously as new observations arrive — not quarterly, not annually. The physical world changes in real time; the intelligence layer follows it.</p>
</div>
<div class="feature-list">
<div class="feature-item">
<div class="feature-icon"></div>
<div>
<h4>Observations aggregated into district / city / region scores</h4>
<p>Multiple observations from multiple contributors covering the same area are weighted, de-duplicated, and aggregated into a single composite score per dimension per area.</p>
</div>
</div>
<div class="feature-item">
<div class="feature-icon"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><path d="M2 8C2 11.3 4.7 14 8 14C10.5 14 12.7 12.5 13.7 10.3" stroke="#666" stroke-width="1.5" stroke-linecap="round"/><path d="M14 8C14 4.7 11.3 2 8 2C5.5 2 3.3 3.5 2.3 5.7" stroke="#666" stroke-width="1.5" stroke-linecap="round"/><path d="M13.5 7.5L14 10L11.5 9.5" stroke="#666" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><path d="M2.5 8.5L2 6L4.5 6.5" stroke="#666" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg></div>
<div>
<h4>Scores updated continuously as new observations arrive</h4>
<p>There is no batch cadence. Every validated observation triggers a score recalculation for the relevant area. Intelligence is always as fresh as the most recent field data.</p>
</div>
</div>
<div class="feature-item">
<div class="feature-icon"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="#0066FF" stroke-width="2"><path d="M18 20V10"/><path d="M12 20V4"/><path d="M6 20v-6"/></svg></div>
<div>
<h4>Six dimensions, one comparable scale</h4>
<p>Opportunity · Growth · Commercial Vitality · Infrastructure Stability · Tourism Potential · Investment Confidence. Bangkok vs Kuala Lumpur vs Milan — on the same axes, the same scale.</p>
</div>
</div>
</div>
</div>
</section>
<!-- LAYER 4: CONTRADICTION ENGINE -->
<section class="layer" id="contradiction" style="background:#001836; border-bottom-color: rgba(0,0,0,0.04);">
<div class="layer-inner" style="max-width:1140px; margin:0 auto; grid-template-columns: 1fr 1fr; gap:64px;">
<div class="layer-header">
<div class="layer-num">
<div class="layer-num-badge">4</div>
<span class="layer-num-label" style="color:rgba(255,255,255,0.75)">Contradiction Engine</span>
</div>
<h2 style="color: #ffffff">Official data vs.<br>observed reality.</h2>
<p style="color:rgba(255,255,255,0.75)">The most valuable intelligence is not confirmation — it is contradiction. The Contradiction Engine ingests official data sources and actively searches for conflicts with what our contributors actually observed. When the data says one thing and the ground says another, that is where the intelligence lives.</p>
</div>
<div class="feature-list">
<div class="feature-item" style="background:rgba(0,0,0,0.04); border-color:rgba(0,0,0,0.08);">
<div class="feature-icon"></div>
<div>
<h4 style="color: #ffffff">Official data ingested continuously</h4>
<p style="color:rgba(255,255,255,0.75)">National statistics, municipal open data, land registries, and transport authorities are continuously ingested and indexed against covered geographies.</p>
</div>
</div>
<div class="feature-item" style="background:rgba(0,0,0,0.04); border-color:rgba(0,0,0,0.08);">
<div class="feature-icon"></div>
<div>
<h4 style="color: #ffffff">Every official claim compared against observed reality</h4>
<p style="color:rgba(255,255,255,0.75)">For every official data point covering an area with observation coverage, the Contradiction Engine runs an automated comparison. Supporting evidence and contradicting evidence are catalogued separately.</p>
</div>
</div>
<div class="feature-item" style="background:rgba(0,0,0,0.04); border-color:rgba(0,0,0,0.08);">
<div class="feature-icon"></div>
<div>
<h4 style="color: #ffffff">Contradictions flagged, ranked by severity and economic impact</h4>
<p style="color:rgba(255,255,255,0.75)">Not all contradictions are equal. The engine ranks flagged conflicts by how severe the discrepancy is, and by the estimated economic significance of the affected area or asset class.</p>
</div>
</div>
<div class="feature-item" style="background:rgba(0,0,0,0.04); border-color:rgba(0,0,0,0.08);">
<div class="feature-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="#0066FF" stroke-width="2"><path d="M21.21 15.89A10 10 0 1 1 8 2.83"/><path d="M22 12A10 10 0 0 0 12 2v10z"/></svg></div>
<div>
<h4 style="color: #ffffff">Confidence scores from evidence weight</h4>
<p style="color:rgba(255,255,255,0.75)">Every contradiction report includes a confidence score calculated from the volume, recency, and source diversity of the supporting and contradicting evidence.</p>
</div>
</div>
</div>
</div>
</section>
<!-- LAYER 5: RED TEAM -->
<section class="layer" id="redteam">
<div class="layer-inner reverse">
<div class="layer-header">
<div class="layer-num">
<div class="layer-num-badge">5</div>
<span class="layer-num-label">Red Team Analysis</span>
</div>
<h2>Every conclusion<br>challenged before delivery.</h2>
<p>Before any major conclusion reaches a client, a second AI model actively attempts to disprove it. This is not a review — it is an adversarial process. If the conclusion survives, it is delivered. If it doesn't, it is revised or flagged.</p>
</div>
<div class="feature-list">
<div class="feature-item">
<div class="feature-icon"></div>
<div>
<h4>Every major conclusion challenged by a second model</h4>
<p>The primary analysis model produces a conclusion. A separate red team model, given the same evidence, is tasked with finding holes, alternative explanations, and disconfirming observations. The conclusion is only finalized after this adversarial review.</p>
</div>
</div>
<div class="feature-item">
<div class="feature-icon"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="#00C853" stroke-width="3"><path d="M20 6L9 17l-5-5"/></svg></div>
<div>
<h4>Supporting evidence listed</h4>
<p>Every delivered conclusion includes a full list of the observations, data points, and sources that support it — with source attribution and timestamps. Clients see what the conclusion is based on.</p>
</div>
</div>
<div class="feature-item">
<div class="feature-icon"></div>
<div>
<h4>Contradicting evidence listed</h4>
<p>Contradicting evidence is not suppressed. Every conclusion is delivered alongside the evidence that pushed against it. Where the red team found weaknesses, those are explicitly documented.</p>
</div>
</div>
<div class="feature-item">
<div class="feature-icon"></div>
<div>
<h4>Uncertainty quantified</h4>
<p>Confidence levels are expressed numerically, not as qualitative hedges. Clients know not just what Landvex concludes, but how certain that conclusion is and why.</p>
</div>
</div>
</div>
</div>
</section>
<!-- OUTPUT SECTION -->
<section class="output-section" id="output">
<div class="output-header">
<div class="section-label" style="color:rgba(255,255,255,0.75)">Output</div>
<h2 class="section-title" style="color: #1d1d1f; margin-bottom:12px">What Landvex delivers.</h2>
<p class="section-sub" style="color:var(--text-dim); margin:0 auto">Six output types. All sourced. All explained. All ready for decisions that cost money.</p>
</div>
<div class="output-grid">
<div class="output-card" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
<div class="output-icon"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="#0066FF" stroke-width="2"><path d="M18 20V10"/><path d="M12 20V4"/><path d="M6 20v-6"/></svg></div>
<h3>Scores (0100 per dimension)</h3>
<p>Composite intelligence scores per location, across six dimensions. Updated continuously from August 2026. Comparable across geographies and over time.</p>
<div class="cite-note">Every score cites contributing observations and source data.</div>
</div>
<div class="output-card" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
<div class="output-icon"></div>
<h3>Contradiction Reports</h3>
<p>Where observed reality conflicts with official data or investment thesis. Ranked by severity and economic significance. Evidence on both sides included.</p>
<div class="cite-note">Includes confidence score and source breakdown.</div>
</div>
<div class="output-card" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
<div class="output-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="#0066FF" stroke-width="2"><path d="M9 18h6"/><path d="M10 22h4"/><path d="M12 2v1"/><path d="M12 7a5 5 0 0 1 5 5c0 2.5-2 4-2 6H9c0-2-2-3.5-2-6a5 5 0 0 1 5-5z"/></svg></div>
<h3>Opportunity Reports</h3>
<p>Where physical conditions signal under-exploited potential. Targeted by geography, asset class, or decision type. Ranked by opportunity magnitude.</p>
<div class="cite-note">Field observations and trend data cited throughout.</div>
</div>
<div class="output-card" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
<div class="output-icon"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="#f59e0b" stroke-width="2"><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>
<h3>Risk Forecasts</h3>
<p>Where physical conditions signal emerging risk — before it appears in official statistics or financial reporting. Predictive scoring based on observed change velocity.</p>
<div class="cite-note">Uncertainty ranges included with every forecast.</div>
</div>
<div class="output-card" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
<div class="output-icon"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><path d="M3 13V10L10 3L13 6L6 13H3Z" stroke="#666" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><path d="M9 4L12 7" stroke="#666" stroke-width="1.5"/></svg></div>
<h3>Executive Summaries</h3>
<p>Decision-ready narratives structured around the client's specific question — not generic reports. Concise, direct, and directly linked to the decision being made.</p>
<div class="cite-note">Supporting data attached; key sources highlighted.</div>
</div>
<div class="output-card" style="cursor:pointer;border-color: rgba(0,102,255,0.25); background: rgba(0,102,255,0.06);" onclick="location.href='#contact'" role="button" tabindex="0">
<div class="output-icon" style="background: rgba(0,102,255,0.2); border-color: rgba(0,102,255,0.4);"></div>
<h3>All outputs cite sources<br>and explain reasoning</h3>
<p>There is no black box. Every Landvex output tells you what it concluded, what it was based on, what pushed against it, and how confident the conclusion is.</p>
<div class="cite-note">Because intelligence you can't verify is just opinion.</div>
</div>
</div>
</section>
<!-- DATA QUALITY SECTION -->
<section class="dq-section" id="data-quality">
<div class="container">
<div class="section-label">Data quality</div>
<h2 class="section-title" style="color:#0a0a0a">The standards behind every score.</h2>
<p class="section-sub">Intelligence is only as good as the data it is built from. Every observation in the Landvex pipeline is subject to explicit accuracy standards, a documented verification chain, and a confidence scoring system.</p>
<div class="dq-grid">
<div class="dq-card" style="cursor:pointer;" onclick="location.href='#data-quality'" role="button" tabindex="0">
<div class="dq-card-icon" style="cursor:pointer;" onclick="location.href='#data-quality'" role="button" tabindex="0">
<svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="#0066ff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"/><polyline points="22 4 12 14.01 9 11.01"/></svg>
</div>
<h3>Accuracy standards</h3>
<p>Every field observation is held to explicit accuracy requirements before it is admitted into the pipeline. Rejection rates are tracked and published internally as quality metrics.</p>
<ul class="dq-standards">
<li>Geo-location verified against reported coordinates</li>
<li>Photograph metadata validated (device, timestamp, GPS)</li>
<li>Submission reviewed by AI against mission brief</li>
<li>Duplicate detection across concurrent contributors</li>
<li>Outlier flagging when observation deviates significantly from area baseline</li>
</ul>
</div>
<div class="dq-card" style="cursor:pointer;" onclick="location.href='#data-quality'" role="button" tabindex="0">
<div class="dq-card-icon" style="cursor:pointer;" onclick="location.href='#data-quality'" role="button" tabindex="0">
<svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="#0066ff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg>
</div>
<h3>Verification chain</h3>
<p>Every observation has a complete audit trail. From contributor identity through submission review to final score contribution, every step is logged and immutable.</p>
<ul class="dq-standards">
<li>Contributor identity verified once, applied to all submissions</li>
<li>Submission hash logged at ingestion (tamper detection)</li>
<li>Review decision and reviewer logged with timestamp</li>
<li>Score contribution traceable back to source observations</li>
<li>Contradiction reports include full evidence chain on both sides</li>
</ul>
</div>
<div class="dq-card" style="cursor:pointer;" onclick="location.href='#data-quality'" role="button" tabindex="0">
<div class="dq-card-icon" style="cursor:pointer;" onclick="location.href='#data-quality'" role="button" tabindex="0">
<svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="#0066ff" 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>
<h3>Confidence scoring</h3>
<p>Every score, conclusion, and contradiction report carries a numerical confidence value. Confidence is calculated from evidence volume, recency, and source diversity &mdash; not subjective assessment.</p>
<ul class="dq-standards">
<li>Volume factor: more observations &rarr; higher confidence</li>
<li>Recency factor: older data decays on configurable half-life</li>
<li>Diversity factor: independent sources weighted above correlated ones</li>
<li>Contradiction penalty: conflicting evidence reduces confidence proportionally</li>
<li>All confidence values expressed numerically (0&ndash;100)</li>
</ul>
</div>
</div>
</div>
</section>
<!-- CONTRADICTION FLOW DIAGRAM -->
<section class="flow-section" id="contradiction-flow">
<div class="container" style="max-width:820px">
<div style="text-align:center">
<div class="section-label" style="color:rgba(255,255,255,0.75)">Contradiction Engine</div>
<h2 class="section-title" style="color: #ffffff">How we detect contradictions.</h2>
<p class="section-sub" style="color:rgba(255,255,255,0.75);margin:0 auto">A six-step pipeline that runs continuously against every area with active observation coverage. When official data and observed reality disagree, this is what happens.</p>
</div>
<div class="flow-diagram">
<!-- Step 1 -->
<div class="flow-node flow-trigger">
<div class="flow-node-icon" style="background:rgba(0,102,255,0.15)">
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="#5599ff" 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="17 8 12 3 7 8"/><line x1="12" y1="3" x2="12" y2="15"/></svg>
</div>
<div class="flow-node-text">
<h4>1. New field observations ingested</h4>
<p>Validated submissions enter the pipeline, tagged with location, object type, condition, and change signal</p>
</div>
</div>
<div class="flow-arrow">
<svg width="16" height="24" viewBox="0 0 16 24" fill="none"><path d="M8 0v20M2 14l6 8 6-8" stroke="rgba(0,0,0,0.3)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>
</div>
<!-- Step 2 -->
<div class="flow-node">
<div class="flow-node-icon" style="background:rgba(0,0,0,0.04)">
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="#888" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z"/><polyline points="22,6 12,13 2,6"/></svg>
</div>
<div class="flow-node-text">
<h4>2. Official data sources queried for same geography</h4>
<p>National statistics, municipal open data, land registries, and permit databases are checked for the affected area</p>
</div>
</div>
<div class="flow-arrow">
<svg width="16" height="24" viewBox="0 0 16 24" fill="none"><path d="M8 0v20M2 14l6 8 6-8" stroke="rgba(0,0,0,0.3)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>
</div>
<!-- Step 3 -->
<div class="flow-node flow-detect">
<div class="flow-node-icon" style="background:rgba(245,158,11,0.12)">
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="#fbbf24" 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="flow-node-text">
<h4>3. Contradiction detection: observed vs. official</h4>
<p>AI model compares observed conditions against official claims on matching dimensions (vacancy, activity, condition, growth)</p>
</div>
</div>
<div class="flow-arrow">
<svg width="16" height="24" viewBox="0 0 16 24" fill="none"><path d="M8 0v20M2 14l6 8 6-8" stroke="rgba(0,0,0,0.3)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>
</div>
<!-- Step 4: split -->
<div class="flow-split-arrow">
<svg width="16" height="24" viewBox="0 0 16 24" fill="none"><path d="M8 0v12M2 6l6 8 6-8" stroke="rgba(0,0,0,0.3)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>
</div>
<div class="flow-split">
<div class="flow-node" style="border-color:rgba(34,197,94,0.3);background:rgba(34,197,94,0.06)">
<div class="flow-node-icon" style="background:rgba(34,197,94,0.1)">
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="#4ade80" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg>
</div>
<div class="flow-node-text">
<h4>No contradiction</h4>
<p>Evidence supports official data &rarr; confidence score updated upward</p>
</div>
</div>
<div class="flow-node flow-rank">
<div class="flow-node-icon" style="background:rgba(239,68,68,0.12)">
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="#f87171" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/></svg>
</div>
<div class="flow-node-text">
<h4>Contradiction detected</h4>
<p>Divergence ranked by severity and economic significance</p>
</div>
</div>
</div>
<div class="flow-arrow">
<svg width="16" height="24" viewBox="0 0 16 24" fill="none"><path d="M8 0v20M2 14l6 8 6-8" stroke="rgba(0,0,0,0.3)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>
</div>
<!-- Step 5 -->
<div class="flow-node flow-redteam">
<div class="flow-node-icon" style="background:rgba(139,92,246,0.12)">
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="#a78bfa" 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="flow-node-text">
<h4>5. Red Team challenge</h4>
<p>Second AI model attempts to disprove the contradiction with alternative explanations. Conclusion revised or confirmed.</p>
</div>
</div>
<div class="flow-arrow">
<svg width="16" height="24" viewBox="0 0 16 24" fill="none"><path d="M8 0v20M2 14l6 8 6-8" stroke="rgba(0,0,0,0.3)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>
</div>
<!-- Step 6 -->
<div class="flow-node flow-output">
<div class="flow-node-icon" style="background:rgba(34,197,94,0.1)">
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="#4ade80" 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"/><line x1="16" y1="13" x2="8" y2="13"/><line x1="16" y1="17" x2="8" y2="17"/><polyline points="10 9 9 9 8 9"/></svg>
</div>
<div class="flow-node-text">
<h4>6. Contradiction Report delivered</h4>
<p>Client receives: finding, supporting evidence, contradicting evidence, severity rank, confidence score (0&ndash;100)</p>
</div>
</div>
</div>
</div>
</section>
<!-- CTA BAND -->
<section class="cta-band">
<h2>Ready to see it applied<br>to your decision?</h2>
<p>Tell us the question you need answered. We'll show you how Landvex can support it.</p>
<a class="btn btn-white btn-lg" href="https://www.landvex.com/#contact">Request a briefing →</a>
</section>
<!-- FOOTER -->
<!-- AMOS & AI Validation -->
<section style="background:#0a1628;padding:64px 0">
<div style="max-width:860px;margin:0 auto;padding:0 24px">
<div style="font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:rgba(255,255,255,.75);margin-bottom:12px">Analysis Engine</div>
<h2 style="font-size:1.75rem;font-weight:800;color: #1d1d1f;margin-bottom:16px">AMOS — Automated Multi-source Observation System</h2>
<p style="font-size:.9375rem;color:rgba(255,255,255,.7);line-height:1.7;margin-bottom:24px">
AMOS is the Landvex AI analysis engine. It receives validated field observations from the quiXzoom network,
cross-references them against official datasets and historical baselines, and produces the index scores,
contradiction flags and trend signals delivered to clients. AMOS does not generate or fabricate data —
it analyses, scores and flags discrepancies in what has been observed.
</p>
<div style="display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:32px">
<div style="background:rgba(0,0,0,.05);border-radius: var(--radius-md);padding:18px 20px">
<div style="font-size:.8rem;font-weight:700;color:rgba(255,255,255,.75);text-transform:uppercase;letter-spacing:.06em;margin-bottom:8px">What AMOS does</div>
<ul style="font-size:.875rem;color:rgba(255,255,255,.75);line-height:1.7;padding-left:16px;margin:0">
<li>Cross-references field observations with official statistics</li>
<li>Scores geographic areas on standardised 0100 index dimensions</li>
<li>Flags contradictions between reported and observed reality</li>
<li>Generates trend signals from change patterns in field data</li>
</ul>
</div>
<div style="background:rgba(0,0,0,.05);border-radius: var(--radius-md);padding:18px 20px">
<div style="font-size:.8rem;font-weight:700;color:rgba(255,255,255,.75);text-transform:uppercase;letter-spacing:.06em;margin-bottom:8px">What AMOS does not do</div>
<ul style="font-size:.875rem;color:rgba(255,255,255,.75);line-height:1.7;padding-left:16px;margin:0">
<li>Generate or invent observations not in field data</li>
<li>Make financial investment decisions</li>
<li>Replace engineering or safety inspections</li>
<li>Produce legally binding assessments</li>
</ul>
</div>
</div>
<div style="background:rgba(0,0,0,.06);border-radius: var(--radius-md);padding:20px 24px;border-left:3px solid #f59e0b">
<div style="font-size:.8rem;font-weight:700;color:rgba(255,255,255,.75);text-transform:uppercase;letter-spacing:.06em;margin-bottom:8px">AI Red Team</div>
<p style="font-size:.875rem;color:rgba(255,255,255,.7);line-height:1.65;margin:0">
Every AMOS contradiction flag is independently challenged by a second model before delivery.
The Red Team model is tasked with disproving the primary finding — a flag is only delivered
when it survives this adversarial check. This reduces false positives in contradiction detection.
Model performance metrics and Red Team rejection rates are available to enterprise clients under NDA:
<a href="mailto:enterprise@landvex.com" style="color:#f59e0b">enterprise@landvex.com</a>
</p>
</div>
</div>
</section>
<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>
</body>
</html>