Files
boc/landvex-site/verticals/logistics/index.html
T
Bernt 1a12fb870b dev-api: add developer portal, OpenAPI spec, and Flatenbadet case study
- New /developers/ page with API docs, SDKs, pricing, use cases
- OpenAPI 3.0 spec for Orders, Missions, Photos, Analytics
- Case study: Glasskiosken i Flatenbadet — complete ROI analysis
- Updated /order/ with recurring missions and frequency dropdown
2026-07-14 15:27:33 +00:00

786 lines
40 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Logistics Network Intelligence — Landvex</title>
<meta name="description" content="Network intelligence for logistics operators. Identify where your network is underperforming and where to invest in last-mile capacity.">
<link rel="canonical" href="https://www.landvex.com/verticals/logistics/">
<meta property="og:type" content="website">
<meta property="og:url" content="https://www.landvex.com/verticals/logistics/">
<meta property="og:title" content="Logistics Network Intelligence — Landvex">
<meta property="og:description" content="Network intelligence for logistics operators. Identify where your network is underperforming and where to invest in last-mile capacity.">
<meta property="og:image" content="https://www.landvex.com/og-image.jpg">
<meta name="twitter:card" content="summary_large_image">
<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">
<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: var(--bg-dark);
color: var(--text-light);
line-height: 1.6;
-webkit-font-smoothing: antialiased;
}
a { color: inherit; text-decoration: none; }
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(255,255,255,0.88);
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; }
.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 {
min-height: 90vh;
display: flex; flex-direction: column; align-items: center; justify-content: center;
text-align: center;
padding: 120px 24px 80px;
position: relative; overflow: hidden;
}
.hero::before {
content: '';
position: absolute;
top: -200px; 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(36px, 6vw, 68px);
font-weight: 800; letter-spacing: -2px; line-height: 1.05;
color: #1d1d1f; max-width: 820px; margin-bottom: 24px;
}
.hero-sub {
font-size: clamp(16px, 2vw, 19px);
color: var(--text-dim); max-width: 620px; line-height: 1.65;
margin-bottom: 40px;
}
.hero-ctas { display: flex; gap: 14px; flex-wrap: wrap; justify-content: center; }
section { padding: 96px 24px; }
.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: 16px;
}
.section-title {
font-size: clamp(28px, 4vw, 44px);
font-weight: 800; letter-spacing: -1.2px; line-height: 1.1;
color: #1d1d1f; margin-bottom: 16px;
}
.section-sub {
font-size: 17px; color: var(--text-dim);
max-width: 600px; line-height: 1.7;
}
/* USE CASES */
.use-case-grid {
display: grid; grid-template-columns: repeat(2, 1fr); gap: 20px;
margin-top: 48px;
}
.use-case-card {
background: var(--surface-2); border: 1px solid var(--border);
border-radius: var(--radius-lg); padding: 32px 28px;
transition: border-color 0.25s, transform 0.2s;
}
.use-case-card:hover { border-color: rgba(0,102,255,0.35); transform: translateY(-3px); }
.uc-icon {
width: 32px; height: 32px; margin-bottom: 16px;
color: var(--blue);
}
.use-case-card h3 { font-size: 17px; font-weight: 700; color: #1d1d1f; margin-bottom: 8px; }
.use-case-card p { font-size: 14px; color: var(--text-dim); line-height: 1.6; }
/* DECISIONS */
.decisions-bg { background: var(--surface); }
.decisions-grid {
display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px;
margin-top: 40px;
}
.decision-chip {
background: var(--bg-dark); border: 1px solid var(--border);
border-radius: var(--radius-md); padding: 20px 24px;
display: flex; align-items: center; gap: 12px;
}
.decision-chip .chip-dot {
width: 8px; height: 8px; border-radius: var(--radius-full);
background: var(--blue); flex-shrink: 0;
}
.decision-chip span { font-size: 15px; font-weight: 600; color: var(--text-light); }
/* CONTRADICTION ENGINE */
.contradiction-bg { background: #e8f0fe; }
.contradiction-box {
background: rgba(0,0,0,.05);
border: 1px solid rgba(0,0,0,.1);
border-radius: var(--radius-lg); padding: 36px 40px; margin-bottom: 32px;
}
.conflict-header {
display: flex; align-items: flex-start; gap: 16px; margin-bottom: 24px;
}
.conflict-flag-svg { flex-shrink: 0; margin-top: 2px; }
.conflict-title { color: #f87171; font-weight: 800; font-size: .9375rem; margin-bottom: 4px; }
.conflict-desc { color: rgba(0,0,0,.6); font-size: .875rem; line-height: 1.6; }
.conflict-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.conflict-side { border-radius: var(--radius-md); padding: 16px; }
.conflict-official { background: rgba(34,197,94,.1); border: 1px solid rgba(34,197,94,.2); }
.conflict-observed { background: rgba(239,68,68,.1); border: 1px solid rgba(239,68,68,.2); }
.conflict-side-label {
font-size: .75rem; font-weight: 700; text-transform: uppercase;
letter-spacing: .08em; margin-bottom: 10px;
}
.conflict-official .conflict-side-label { color: #86efac; }
.conflict-observed .conflict-side-label { color: #fca5a5; }
.conflict-side ul { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 6px; }
.conflict-side li { color: rgba(0,0,0,.7); font-size: .875rem; }
.conflict-footer {
margin-top: 20px; padding-top: 20px;
border-top: 1px solid rgba(0,0,0,.1);
display: flex; justify-content: space-between; align-items: center;
}
.conflict-footer-label { color: rgba(0,0,0,.75); font-size: .8125rem; }
.conflict-confidence { color: #f87171; font-weight: 800; font-size: 1.125rem; }
.ce-features { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
.ce-feature { text-align: center; padding: 20px; }
.ce-feature-icon {
width: 28px; height: 28px; margin: 0 auto 10px;
color: rgba(0,0,0,0.75);
}
.ce-feature h4 { color: #1d1d1f; font-weight: 700; margin-bottom: 6px; }
.ce-feature p { color: rgba(0,0,0,.75); font-size: .8125rem; }
/* SCORES */
.scores-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; margin-top: 40px; }
.score-card {
background: var(--surface-2); border: 1px solid var(--border);
border-radius: var(--radius-lg); padding: 28px 24px; text-align: center;
}
.score-icon {
width: 28px; height: 28px; margin: 0 auto 12px;
color: var(--blue);
}
.score-name { font-size: 15px; font-weight: 700; color: #1d1d1f; margin-bottom: 6px; }
.score-desc { font-size: 13px; color: var(--text-dim); line-height: 1.5; margin-bottom: 20px; }
.score-bar-wrap { background: rgba(0,0,0,.06); border-radius: var(--radius-sm); height: 8px; margin-bottom: 10px; }
.score-bar { height: 8px; border-radius: var(--radius-sm); background: linear-gradient(90deg, var(--blue), #5599ff); }
.score-value { font-size: 28px; font-weight: 800; color: var(--blue); letter-spacing: -1px; }
.score-label-sub { font-size: 11px; color: var(--text-dim); margin-top: 2px; }
/* CTA BANNER */
.cta-banner {
background: #e8f0fe; border-radius: var(--radius-lg); padding: 40px 48px;
display: flex; align-items: center; gap: 48px; flex-wrap: wrap;
margin-top: 48px;
}
.cta-banner h3 { color: #1d1d1f; font-size: 1.25rem; font-weight: 800; margin-bottom: 8px; }
.cta-banner p { color: rgba(0,0,0,.7); line-height: 1.65; font-size: .9375rem; }
.cta-banner-text { flex: 1; min-width: 260px; }
/* CONTACT */
.contact-wrapper { max-width: 680px; margin: 0 auto; text-align: center; }
.contact-wrapper .section-title { margin-bottom: 10px; }
.contact-wrapper .section-sub { margin: 0 auto 48px; }
.contact-form {
background: var(--surface); border: 1px solid var(--border);
border-radius: var(--radius-lg); padding: 40px; text-align: left;
}
.form-group { display: flex; flex-direction: column; gap: 8px; margin-bottom: 16px; }
.form-group label { font-size: 13px; font-weight: 600; color: var(--text-dim); }
.form-group input, .form-group textarea {
background: var(--bg-dark); border: 1.5px solid var(--border);
border-radius: var(--radius-md); color: #1d1d1f;
font-size: 15px; font-family: inherit; padding: 12px 16px;
outline: none; transition: border-color 0.2s; width: 100%;
}
.form-group input:focus, .form-group textarea:focus { border-color: var(--blue); }
.form-group input::placeholder, .form-group textarea::placeholder { color: var(--text-muted); }
.form-group textarea { min-height: 120px; resize: vertical; }
.form-note { font-size: 12px; color: var(--text-muted); margin-top: 12px; text-align: center; }
#form-message {
display: none; padding: 14px 20px; border-radius: var(--radius-md);
font-size: 14px; font-weight: 600; text-align: center; margin-top: 16px;
}
#form-message.success { background: rgba(0,200,80,0.1); border: 1px solid rgba(0,200,80,0.25); color: #4ade80; }
#form-message.error { background: rgba(255,60,60,0.1); border: 1px solid rgba(255,60,60,0.25); color: #f87171; }
/* FOOTER */
footer { border-top: 1px solid var(--border); padding: 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-tagline { font-size: 12px; color: var(--text-muted); margin-top: 4px; }
.footer-links { display: flex; gap: 24px; align-items: center; flex-wrap: wrap; }
.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); }
@media (max-width: 900px) {
nav { padding: 0 20px; }
.use-case-grid { grid-template-columns: 1fr; }
.decisions-grid { grid-template-columns: 1fr 1fr; }
.scores-grid { grid-template-columns: 1fr 1fr; }
.conflict-grid { grid-template-columns: 1fr; }
.ce-features { grid-template-columns: 1fr; }
}
@media (max-width: 600px) {
section { padding: 48px 0 !important; }
.container { padding: 0 16px !important; box-sizing: border-box; }
.decisions-grid { grid-template-columns: 1fr !important; }
.scores-grid { grid-template-columns: 1fr !important; }
.use-case-grid { grid-template-columns: 1fr !important; }
.conflict-grid { grid-template-columns: 1fr !important; }
.ce-features { grid-template-columns: 1fr !important; }
.cta-banner { flex-direction: column !important; gap: 16px !important; padding: 28px 24px; }
.contact-form { padding: 24px 20px; }
nav { padding: 0 16px; }
.hero h1 { letter-spacing: -1px; }
}
.lv-disclaimer{font-size:.75rem;color:rgba(0,0,0,.75);margin-top:24px;padding:12px 16px;background:rgba(0,0,0,.04);border-radius: var(--radius-md);line-height:1.6;max-width:800px}
.lv-disclaimer a{color:rgba(0,0,0,.65);text-decoration:underline}
.lv-disclaimer--light{color:#888;background:#f5f5f5}
.lv-disclaimer--light a{color:#555}
</style>
<meta name="robots" content="index, follow">
<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>
<a class="nav-logo" href="https://landvex.com/">&larr; Back to Landvex</a>
<a class="btn btn-outline" href="#contact">Get in touch &rarr;</a>
</nav>
<!-- HERO -->
<section class="hero">
<div class="hero-eyebrow">Landvex &mdash; Logistics &amp; Last-Mile</div>
<h1>Where is your network underperforming?</h1>
<p class="hero-sub">Landvex gives logistics and last-mile operators the ground-truth intelligence to design better networks, select optimal depot locations, and stay ahead of urban change &mdash; from the street, not the model.</p>
<div class="hero-ctas">
<a class="btn btn-lg" href="#contact">Request a briefing &rarr;</a>
<a class="btn btn-outline btn-lg" href="#use-cases">See use cases</a>
</div>
</section>
<!-- USE CASES -->
<section id="use-cases" style="background:var(--surface)">
<div class="container">
<div class="section-label">Use cases</div>
<h2 class="section-title">What Landvex does for Logistics</h2>
<p class="section-sub">From single-asset verifications to network-wide intelligence missions &mdash; deployed in 24&ndash;72 hours.</p>
<div class="use-case-grid">
<div class="use-case-card" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
<svg class="uc-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round">
<rect x="1" y="3" width="15" height="13"/>
<polygon points="16 8 20 8 23 11 23 16 16 16 16 8"/>
<circle cx="5.5" cy="18.5" r="2.5"/>
<circle cx="18.5" cy="18.5" r="2.5"/>
</svg>
<h3>Last-mile network design</h3>
<p>Field-verified intelligence on access constraints, delivery density, and infrastructure conditions across your urban service zones. Design networks based on what&rsquo;s actually on the ground.</p>
<div class="learn-more-hint" style="margin-top:12px;font-size:13px;font-weight:700;color:#0066ff">Learn more →</div></div>
<div class="use-case-card" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
<svg class="uc-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round">
<path d="M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z"/>
<circle cx="12" cy="10" r="3"/>
</svg>
<h3>Depot location selection</h3>
<p>Combine urban growth projections, infrastructure risk scores, and commercial activity data to identify optimal depot locations. Avoid sites that look good on paper but fail in practice.</p>
<div class="learn-more-hint" style="margin-top:12px;font-size:13px;font-weight:700;color:#0066ff">Learn more →</div></div>
<div class="use-case-card" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
<svg class="uc-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round">
<line x1="3" y1="12" x2="21" y2="12"/>
<line x1="3" y1="6" x2="21" y2="6"/>
<line x1="3" y1="18" x2="21" y2="18"/>
</svg>
<h3>Route efficiency intelligence</h3>
<p>Identify real-world access constraints, road conditions, and urban density changes that affect route performance. Ground-truth data your routing models don&rsquo;t have.</p>
<div class="learn-more-hint" style="margin-top:12px;font-size:13px;font-weight:700;color:#0066ff">Learn more →</div></div>
<div class="use-case-card" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
<svg class="uc-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" 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>
<h3>Capacity planning</h3>
<p>Urban growth indices and commercial opportunity scores mapped against your existing network. Identify where demand is ahead of your current capacity before pressure builds.</p>
<div class="learn-more-hint" style="margin-top:12px;font-size:13px;font-weight:700;color:#0066ff">Learn more →</div></div>
</div>
</div>
</section>
<!-- KEY DECISIONS -->
<section class="decisions-bg" id="key-decisions">
<div class="container">
<div class="section-label">Decision support</div>
<h2 class="section-title">The decisions Landvex informs</h2>
<p class="section-sub">Every Landvex engagement is anchored to a specific decision. These are the ones our logistics clients face most often.</p>
<div class="decisions-grid">
<div class="decision-chip" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
<span class="chip-dot"></span>
<span>Last-mile network design</span>
</div>
<div class="decision-chip" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
<span class="chip-dot"></span>
<span>Depot location selection</span>
</div>
<div class="decision-chip" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
<span class="chip-dot"></span>
<span>Route efficiency</span>
</div>
<div class="decision-chip" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
<span class="chip-dot"></span>
<span>Capacity planning</span>
</div>
<div class="decision-chip" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
<span class="chip-dot"></span>
<span>Network expansion</span>
</div>
<div class="decision-chip" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
<span class="chip-dot"></span>
<span>Urban zone prioritisation</span>
</div>
</div>
</div>
</section>
<!-- CONTRADICTION ENGINE -->
<section class="contradiction-bg" id="contradiction">
<div class="container" style="max-width:900px">
<div style="text-align:center;margin-bottom:56px">
<div class="section-label" style="color:rgba(0,0,0,.75)">Contradiction Engine</div>
<h2 class="section-title" style="color: #1d1d1f">Most systems tell you what the data says.<br>Landvex tells you what doesn&rsquo;t add up.</h2>
<p class="section-sub" style="color:rgba(0,0,0,.75);margin:0 auto;max-width:600px">The most valuable intelligence is not confirmation. It&rsquo;s contradiction. Landvex actively searches for conflicts between official narratives and observed reality.</p>
</div>
<div class="contradiction-box">
<div class="conflict-header">
<svg class="conflict-flag-svg" width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="#f87171" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M4 15s1-1 4-1 5 2 8 2 4-1 4-1V3s-1 1-4 1-5-2-8-2-4 1-4 1z"/>
<line x1="4" y1="22" x2="4" y2="15"/>
</svg>
<div>
<div class="conflict-title">Narrative Conflict Detected &mdash; Hamburg &mdash; Last-Mile Zone Assessment</div>
<div class="conflict-desc">Urban growth model projects strong demand in northern zone. Field observations reveal a more complex infrastructure picture that challenges the expansion case.</div>
</div>
</div>
<div class="conflict-grid">
<div class="conflict-side conflict-official">
<div class="conflict-side-label">Official narrative</div>
<ul>
<li>&#100003 Growth model: northern zone demand +23% YoY</li>
<li>&#100003 Road network: rated adequate for expansion</li>
<li>&#100003 Municipality: no known access restrictions</li>
</ul>
</div>
<div class="conflict-side conflict-observed">
<div class="conflict-side-label">Observed reality</div>
<ul>
<li>&#100007 Road condition below model assumptions</li>
<li>&#100007 Loading bay access restricted: 3 key locations</li>
<li>&#100007 Active construction reducing access 6&ndash;18 months</li>
<li>&#100007 Southern zone outperforming northern on density</li>
</ul>
</div>
</div>
<div class="conflict-footer">
<span class="conflict-footer-label">Confidence in official narrative</span>
<span class="conflict-confidence">39%</span>
</div>
</div>
<div class="ce-features">
<div class="ce-feature" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
<svg class="ce-feature-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" 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>
<h4>Show me what I&rsquo;m missing</h4>
<p>Blind spots not visible in official data or internal reports</p>
</div>
<div class="ce-feature" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
<svg class="ce-feature-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round">
<path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/>
</svg>
<h4>AI Red Team</h4>
<p>Every conclusion is actively challenged by a second model before delivery</p>
</div>
<div class="ce-feature" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
<svg class="ce-feature-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round">
<circle cx="12" cy="12" r="10"/>
<line x1="12" y1="8" x2="12" y2="12"/>
<line x1="12" y1="16" x2="12.01" y2="16"/>
</svg>
<h4>Which assumptions are wrong?</h4>
<p>Identify where your thesis conflicts with observed reality</p>
</div>
</div>
</div>
</section>
<!-- SCORES -->
<section id="scores" style="background:var(--surface)">
<div class="container">
<div class="section-label">Intelligence products</div>
<h2 class="section-title">Landvex scores for Logistics</h2>
<p class="section-sub">Every score is derived from field-verified observations, cross-referenced against official data, and launching August 2026.</p>
<div class="scores-grid">
<div class="score-card" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
<svg class="score-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round">
<polyline points="22 12 18 12 15 21 9 3 6 12 2 12"/>
</svg>
<div class="score-name">Urban Growth Index</div>
<div class="score-desc">Measures pace and direction of urban change. Identifies emerging demand zones before official statistics catch up.</div>
<div class="score-bar-wrap">
<div class="score-bar" style="width:78%"></div>
</div>
<div class="score-value">78</div>
<div class="score-label-sub">placeholder &middot; live data from Aug 2026</div>
<div class="learn-more-hint" style="margin-top:12px;font-size:13px;font-weight:700;color:#0066ff">Request access →</div></div>
<div class="score-card" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
<svg class="score-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round">
<polygon points="7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2"/>
<line x1="12" y1="8" x2="12" y2="12"/>
<line x1="12" y1="16" x2="12.01" y2="16"/>
</svg>
<div class="score-name">Infrastructure Risk Index</div>
<div class="score-desc">Identifies road quality issues, access constraints, and maintenance risks that affect delivery reliability and cost.</div>
<div class="score-bar-wrap">
<div class="score-bar" style="width:62%"></div>
</div>
<div class="score-value">62</div>
<div class="score-label-sub">placeholder &middot; live data from Aug 2026</div>
<div class="learn-more-hint" style="margin-top:12px;font-size:13px;font-weight:700;color:#0066ff">Request access →</div></div>
<div class="score-card" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
<svg class="score-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round">
<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 class="score-name">Commercial Opportunity Index</div>
<div class="score-desc">Maps commercial activity density and growth trajectories to identify high-opportunity zones for last-mile optimisation.</div>
<div class="score-bar-wrap">
<div class="score-bar" style="width:84%"></div>
</div>
<div class="score-value">84</div>
<div class="score-label-sub">placeholder &middot; live data from Aug 2026</div>
<div class="learn-more-hint" style="margin-top:12px;font-size:13px;font-weight:700;color:#0066ff">Request access →</div></div>
</div>
<div class="cta-banner">
<div class="cta-banner-text">
<h3>Four layers. One answer.</h3>
<p>quiXzoom observes. AMOS analyses. Landvex delivers the answer. Every engagement starts with one question: <em style="color: #1d1d1f;font-style:normal">what decision are you trying to make?</em></p>
</div>
<a class="btn btn-lg" href="#contact" style="white-space:nowrap;flex-shrink:0">Request a briefing &rarr;</a>
</div>
</div>
</section>
<!-- CONTACT -->
<section id="contact">
<div class="container">
<div class="contact-wrapper">
<div class="section-label">Request a briefing</div>
<h2 class="section-title">What decision are you trying to make?</h2>
<p class="section-sub">Tell us the question you need answered. We&rsquo;ll show you how Landvex can support it.</p>
<form class="contact-form" id="contact-form">
<div class="form-group">
<label for="name">Name</label>
<input type="text" id="name" name="name" placeholder="Your name" required>
</div>
<div class="form-group">
<label for="email">Email</label>
<input type="email" id="email" name="email" placeholder="you@organisation.com" required>
</div>
<div class="form-group">
<label for="message">Message</label>
<textarea id="message" name="message" placeholder="Describe the decision you need to make &mdash; what you need to know, where, and why it matters..."></textarea>
</div>
<button type="submit" class="btn btn-lg" style="width:100%; justify-content: center;">
Request briefing &rarr;
</button>
<p class="form-note">We don&rsquo;t spam. Your information stays private.</p>
<div id="form-message"></div>
</form>
</div>
</div>
<p class="lv-disclaimer">Intelligence outputs are indicative and advisory only. Based on field observations — not investment, financial or legal advice. Landvex AB accepts no liability for decisions made based on these outputs. <a href="/methodology/">Methodology →</a></p>
</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 · Stockholm, 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>
document.getElementById('contact-form').addEventListener('submit', async function(e) {
e.preventDefault();
const btn = this.querySelector('button[type="submit"]');
const msgEl = document.getElementById('form-message');
btn.disabled = true; btn.textContent = 'Sending...';
const data = {
source: 'landvex-vertical-logistics',
name: this.name.value,
email: this.email.value,
message: this.message.value
};
try {
const res = await fetch('https://api.quixzoom.com/api/qz/waitlist', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(data)
});
if (res.ok || res.status === 201) {
msgEl.className = 'success';
msgEl.textContent = "\u2713 Request received. We\u2019ll be in touch within one business day.";
msgEl.style.display = 'block';
this.reset();
} else { throw new Error('Server error ' + res.status); }
} catch (err) {
msgEl.className = 'error';
msgEl.textContent = 'Something went wrong. Please email us directly at contact@landvex.com.';
msgEl.style.display = 'block';
}
btn.disabled = false; btn.textContent = 'Request briefing \u2192';
});
document.querySelectorAll('a[href^="#"]').forEach(a => {
a.addEventListener('click', e => {
const target = document.querySelector(a.getAttribute('href'));
if (target) { e.preventDefault(); target.scrollIntoView({ behavior: 'smooth', block: 'start' }); }
});
});
</script>
</body>
</html>