Files
boc/landvex-site/verticals/utilities/index.html
T
Bernt aee0f09db8 landvex: Fixar och tester klara för alla komponenter
- Datafabrik: Dockerfile fix, agentorkestrering fungerar
- Vision: Identify-modell, FAISS, OCR alla testade
- API: Alla 7 integrationstester passerade
- Upplösare: Entitetsupplösning verifierad
2026-07-05 06:41:32 +00:00

641 lines
30 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>Utilities & Energy Intelligence — Landvex</title>
<meta name="description" content="Field intelligence for utilities and energy operators. Monitor grid infrastructure, identify capacity constraints, and plan network investments.">
<link rel="canonical" href="https://www.landvex.com/verticals/utilities/">
<meta property="og:type" content="website">
<meta property="og:url" content="https://www.landvex.com/verticals/utilities/">
<meta property="og:title" content="Utilities & Energy Intelligence — Landvex">
<meta property="og:description" content="Field intelligence for utilities and energy operators. Monitor grid infrastructure, identify capacity constraints, and plan network investments.">
<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(10,10,10,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;
}
/* Light section overrides */
.light-section { background: #fff; }
.light-section .section-title { color: #0a0a0a; }
.light-section .section-sub { color: #444; }
.light-section .section-label { color: var(--blue); }
/* 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 { font-size: 28px; margin-bottom: 16px; display: block; }
.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: 50%;
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: 16px; padding: 36px 40px; margin-bottom: 32px;
}
.conflict-header {
display: flex; align-items: flex-start; gap: 16px; margin-bottom: 24px;
}
.conflict-flag { font-size: 1.5rem; }
.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: 10px; 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 .ce-icon { font-size: 1.75rem; margin-bottom: 8px; }
.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 { font-size: 1.5rem; margin-bottom: 12px; }
.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: 6px; height: 8px; margin-bottom: 10px; }
.score-bar { height: 8px; border-radius: 6px; 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: 16px; 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 FORM */
.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: 8px;
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:8px;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; Utilities & Energy</div>
<h1>Where is grid capacity becoming a constraint?</h1>
<p class="hero-sub">Landvex helps utilities and energy operators understand the physical reality of their networks — identifying capacity constraints, asset condition, and growth demand before they become problems.</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 Utilities & Energy</h2>
<p class="section-sub">From single-asset verifications to portfolio-wide intelligence missions — deployed in 2472 hours.</p>
<div class="use-case-grid">
<div class="use-case-card" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
<span class="uc-icon">🔭</span>
<h3>Grid infrastructure surveys</h3>
<p>Visual documentation of substations, transmission lines, transformers, and distribution equipment across large network areas.</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">
<span class="uc-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></span>
<h3>Solar & wind asset documentation</h3>
<p>Site surveys, asset condition documentation, and surrounding land-use monitoring for renewable energy installations.</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">
<span class="uc-icon">🗺️</span>
<h3>Network inspections</h3>
<p>Rapid visual inspection of above-ground network infrastructure — identifying vegetation encroachment, physical damage, and deterioration.</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">
<span class="uc-icon"></span>
<h3>Capacity planning intelligence</h3>
<p>Ground-truth observation of urban growth, construction activity, and commercial development to support demand forecasting.</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 utilities & energy 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>Network investment</span>
</div>
<div class="decision-chip" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
<span class="chip-dot"></span>
<span>Maintenance scheduling</span>
</div>
<div class="decision-chip" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
<span class="chip-dot"></span>
<span>Capacity expansion</span>
</div>
<div class="decision-chip" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
<span class="chip-dot"></span>
<span>Asset life extension</span>
</div>
<div class="decision-chip" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
<span class="chip-dot"></span>
<span>Regulatory reporting</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">
<span class="conflict-flag">&#x1F6A9;</span>
<div>
<div class="conflict-title">Narrative Conflict Detected &mdash; Amsterdam — Noord District</div>
<div class="conflict-desc">Reported grid condition shows acceptable parameters. Field observations and development activity suggest emerging constraints within 18 months.</div>
</div>
</div>
<div class="conflict-grid">
<div class="conflict-side conflict-official">
<div class="conflict-side-label">Official narrative</div>
<ul>
<li>&#10003; Grid stability: 98.7% uptime</li><li>&#10003; Planned upgrade: 2028</li><li>&#10003; Demand forecast: within model range</li> </ul>
</div>
<div class="conflict-side conflict-observed">
<div class="conflict-side-label">Observed reality</div>
<ul>
<li>&#10007; ✗ 14 new data centres in planning or construction</li><li>&#10007; ✗ Large residential development adding unmodelled load</li><li>&#10007; ✗ Substation compound showing deferred maintenance</li><li>&#10007; ✗ Vegetation encroachment on 6 transmission corridors</li> </ul>
</div>
</div>
<div class="conflict-footer">
<span class="conflict-footer-label">Confidence in official narrative</span>
<span class="conflict-confidence">38%</span>
</div>
</div>
<div class="ce-features">
<div class="ce-feature" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
<div class="ce-icon">&#x1F50D;</div>
<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">
<div class="ce-icon">&#x2694;&#xFE0F;</div>
<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">
<div class="ce-icon">&#x1F4D0;</div>
<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 scores</div>
<h2 class="section-title">Landvex scores relevant to Utilities & Energy</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" style="grid-template-columns:repeat(2,1fr)">
<div class="score-card" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
<div class="score-icon">🔧</div>
<div class="score-name">Infrastructure Risk Index</div>
<div class="score-desc">Identifies areas where physical infrastructure is deteriorating faster than maintenance can address.</div>
<div class="score-bar-wrap">
<div class="score-bar" style="width:74%"></div>
</div>
<div class="score-value">74</div>
<div class="score-label-sub">placeholder · 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">
<div class="score-icon">🌆</div>
<div class="score-name">Urban Growth Index</div>
<div class="score-desc">Tracks urban expansion signals: new construction, population pressure, grid demand growth.</div>
<div class="score-bar-wrap">
<div class="score-bar" style="width:68%"></div>
</div>
<div class="score-value">68</div>
<div class="score-label-sub">placeholder · 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>
<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'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 — 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'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-inner">
<div>
<div class="footer-logo">LandveX</div>
<div class="footer-copy">&copy; 2026 Landvex Inc &middot; Landvex AB (org.nr 559141-7042)</div>
<div class="footer-tagline">Decision intelligence for the physical world.</div>
</div>
<div class="footer-links">
<a href="https://landvex.com/">Home</a>
<a href="/verticals/">Verticals</a>
<a href="/methodology/">Methodology</a>
<a href="/security/">Security</a>
<a href="https://www.quixzoom.com/" target="_blank" rel="noopener">quiXzoom &rarr;</a>
<a href="mailto:contact@landvex.com">contact@landvex.com</a>
<a href="mailto:security@landvex.com" style="color:var(--text-muted,#888)">security@landvex.com</a>
<a href="https://www.linkedin.com/company/landvex" target="_blank" rel="noopener" class="footer-social" title="LandveX on LinkedIn">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<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" stroke="#888" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<rect x="2" y="9" width="4" height="12" stroke="#888" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<circle cx="4" cy="4" r="2" stroke="#888" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</a>
<a href="https://x.com/landvex" target="_blank" rel="noopener" class="footer-social" title="LandveX on X">
<svg width="15" height="15" viewBox="0 0 24 24" fill="#888" xmlns="http://www.w3.org/2000/svg">
<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>
</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',
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'll 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 →';
});
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>