2026-07-05 06:41:32 +00:00
<!DOCTYPE html>
< html lang = "en" >
< head >
< meta charset = "UTF-8" >
< meta name = "viewport" content = "width=device-width, initial-scale=1.0" >
< title > Infrastructure Operators Intelligence — Landvex< / title >
< meta name = "description" content = "Predictive intelligence for infrastructure operators. Identify where problems will emerge before they become expensive. Continuous observation across 20+ countries." >
< link rel = "canonical" href = "https://www.landvex.com/verticals/infrastructure/" >
< meta property = "og:type" content = "website" >
< meta property = "og:url" content = "https://www.landvex.com/verticals/infrastructure/" >
< meta property = "og:title" content = "Infrastructure Operators Intelligence — Landvex" >
< meta property = "og:description" content = "Predictive intelligence for infrastructure operators. Identify where problems will emerge before they become expensive. Continuous observation across 20+" >
< 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 : 8 px ;
--radius-md : 14 px ;
--radius-lg : 24 px ;
}
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 40 px ; height : 64 px ;
2026-07-08 19:56:03 +00:00
background : rgba ( 255 , 255 , 255 , 0.88 ) ;
2026-07-05 06:41:32 +00:00
backdrop-filter : blur ( 16 px ) ;
-webkit- backdrop-filter : blur ( 16 px ) ;
border-bottom : 1 px solid var ( - - border ) ;
}
. nav-logo {
font-size : 18 px ;
font-weight : 700 ;
letter-spacing : -0.3 px ;
color : #1d1d1f ; }
. btn {
display : inline-flex ; align-items : center ; gap : 6 px ;
padding : 10 px 22 px ;
background : var ( - - blue ) ; color : #1d1d1f ;
font-size : 14 px ; font-weight : 600 ;
border-radius : var ( - - radius - md ) ;
border : none ; cursor : pointer ;
transition : background 0.2 s , transform 0.15 s ;
}
. btn : hover { background : var ( - - blue - dark ) ; transform : translateY ( -1 px ) ; }
. btn-outline {
background : transparent ;
border : 1.5 px solid rgba ( 0 , 0 , 0 , 0.18 ) ;
color : var ( - - text - light ) ;
}
. btn-outline : hover { background : rgba ( 0 , 0 , 0 , 0.04 ) ; transform : translateY ( -1 px ) ; }
. btn-lg { padding : 14 px 30 px ; font-size : 16 px ; border-radius : var ( - - radius - md ) ; }
. hero {
min-height : 90 vh ;
display : flex ; flex-direction : column ; align-items : center ; justify-content : center ;
text-align : center ;
padding : 120 px 24 px 80 px ;
position : relative ; overflow : hidden ;
}
. hero :: before {
content : '' ;
position : absolute ;
top : -200 px ; left : 50 % ; transform : translateX ( -50 % ) ;
width : 900 px ; height : 600 px ;
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 : 8 px ;
background : rgba ( 0 , 102 , 255 , 0.1 ) ;
border : 1 px solid rgba ( 0 , 102 , 255 , 0.25 ) ;
color : #5599ff ;
font-size : 12 px ; font-weight : 600 ; letter-spacing : 0.08 em ;
text-transform : uppercase ;
padding : 6 px 16 px ; border-radius : 100 px ;
margin-bottom : 28 px ;
}
. hero h1 {
font-size : clamp ( 36 px , 6 vw , 68 px ) ;
font-weight : 800 ; letter-spacing : -2 px ; line-height : 1.05 ;
color : #1d1d1f ; max-width : 820 px ; margin-bottom : 24 px ;
}
. hero-sub {
font-size : clamp ( 16 px , 2 vw , 19 px ) ;
color : var ( - - text - dim ) ; max-width : 620 px ; line-height : 1.65 ;
margin-bottom : 40 px ;
}
. hero-ctas { display : flex ; gap : 14 px ; flex-wrap : wrap ; justify-content : center ; }
section { padding : 96 px 24 px ; }
. container { max-width : 1140 px ; margin : 0 auto ; }
. section-label {
font-size : 12 px ; font-weight : 700 ; letter-spacing : 0.1 em ;
text-transform : uppercase ; color : var ( - - blue ) ; margin-bottom : 16 px ;
}
. section-title {
font-size : clamp ( 28 px , 4 vw , 44 px ) ;
font-weight : 800 ; letter-spacing : -1.2 px ; line-height : 1.1 ;
color : #1d1d1f ; margin-bottom : 16 px ;
}
. section-sub {
font-size : 17 px ; color : var ( - - text - dim ) ;
max-width : 600 px ; 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 , 1 fr ) ; gap : 20 px ;
margin-top : 48 px ;
}
. use-case-card {
background : var ( - - surface -2 ) ; border : 1 px solid var ( - - border ) ;
border-radius : var ( - - radius - lg ) ; padding : 32 px 28 px ;
transition : border-color 0.25 s , transform 0.2 s ;
}
. use-case-card : hover { border-color : rgba ( 0 , 102 , 255 , 0.35 ) ; transform : translateY ( -3 px ) ; }
. uc-icon { font-size : 28 px ; margin-bottom : 16 px ; display : block ; }
. use-case-card h3 { font-size : 17 px ; font-weight : 700 ; color : #1d1d1f ; margin-bottom : 8 px ; }
. use-case-card p { font-size : 14 px ; color : var ( - - text - dim ) ; line-height : 1.6 ; }
/* DECISIONS */
. decisions-bg { background : var ( - - surface ) ; }
. decisions-grid {
display : grid ; grid-template-columns : repeat ( 3 , 1 fr ) ; gap : 16 px ;
margin-top : 40 px ;
}
. decision-chip {
background : var ( - - bg - dark ) ; border : 1 px solid var ( - - border ) ;
border-radius : var ( - - radius - md ) ; padding : 20 px 24 px ;
display : flex ; align-items : center ; gap : 12 px ;
}
. decision-chip . chip-dot {
2026-07-07 07:11:50 +00:00
width : 8 px ; height : 8 px ; border-radius : var ( - - radius - full ) ;
2026-07-05 06:41:32 +00:00
background : var ( - - blue ) ; flex-shrink : 0 ;
}
. decision-chip span { font-size : 15 px ; font-weight : 600 ; color : var ( - - text - light ) ; }
/* CONTRADICTION ENGINE */
. contradiction-bg { background : #e8f0fe ; }
. contradiction-box {
background : rgba ( 0 , 0 , 0 , .05 ) ;
border : 1 px solid rgba ( 0 , 0 , 0 , .1 ) ;
2026-07-07 07:11:50 +00:00
border-radius : var ( - - radius - lg ) ; padding : 36 px 40 px ; margin-bottom : 32 px ;
2026-07-05 06:41:32 +00:00
}
. conflict-header {
display : flex ; align-items : flex-start ; gap : 16 px ; margin-bottom : 24 px ;
}
. conflict-flag { font-size : 1.5 rem ; }
. conflict-title { color : #f87171 ; font-weight : 800 ; font-size : .9375 rem ; margin-bottom : 4 px ; }
. conflict-desc { color : rgba ( 0 , 0 , 0 , .6 ) ; font-size : .875 rem ; line-height : 1.6 ; }
. conflict-grid { display : grid ; grid-template-columns : 1 fr 1 fr ; gap : 16 px ; }
2026-07-07 07:11:50 +00:00
. conflict-side { border-radius : var ( - - radius - md ) ; padding : 16 px ; }
2026-07-05 06:41:32 +00:00
. conflict-official { background : rgba ( 34 , 197 , 94 , .1 ) ; border : 1 px solid rgba ( 34 , 197 , 94 , .2 ) ; }
. conflict-observed { background : rgba ( 239 , 68 , 68 , .1 ) ; border : 1 px solid rgba ( 239 , 68 , 68 , .2 ) ; }
. conflict-side-label {
font-size : .75 rem ; font-weight : 700 ; text-transform : uppercase ;
letter-spacing : .08 em ; margin-bottom : 10 px ;
}
. 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 : 6 px ; }
. conflict-side li { color : rgba ( 0 , 0 , 0 , .7 ) ; font-size : .875 rem ; }
. conflict-footer {
margin-top : 20 px ; padding-top : 20 px ;
border-top : 1 px 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 : .8125 rem ; }
. conflict-confidence { color : #f87171 ; font-weight : 800 ; font-size : 1.125 rem ; }
. ce-features { display : grid ; grid-template-columns : repeat ( 3 , 1 fr ) ; gap : 20 px ; }
. ce-feature { text-align : center ; padding : 20 px ; }
. ce-feature . ce-icon { font-size : 1.75 rem ; margin-bottom : 8 px ; }
. ce-feature h4 { color : #1d1d1f ; font-weight : 700 ; margin-bottom : 6 px ; }
. ce-feature p { color : rgba ( 0 , 0 , 0 , .75 ) ; font-size : .8125 rem ; }
/* SCORES */
. scores-grid { display : grid ; grid-template-columns : repeat ( 3 , 1 fr ) ; gap : 20 px ; margin-top : 40 px ; }
. score-card {
background : var ( - - surface -2 ) ; border : 1 px solid var ( - - border ) ;
border-radius : var ( - - radius - lg ) ; padding : 28 px 24 px ; text-align : center ;
}
. score-icon { font-size : 1.5 rem ; margin-bottom : 12 px ; }
. score-name { font-size : 15 px ; font-weight : 700 ; color : #1d1d1f ; margin-bottom : 6 px ; }
. score-desc { font-size : 13 px ; color : var ( - - text - dim ) ; line-height : 1.5 ; margin-bottom : 20 px ; }
2026-07-07 07:11:50 +00:00
. score-bar-wrap { background : rgba ( 0 , 0 , 0 , .06 ) ; border-radius : var ( - - radius - sm ) ; height : 8 px ; margin-bottom : 10 px ; }
. score-bar { height : 8 px ; border-radius : var ( - - radius - sm ) ; background : linear-gradient ( 90 deg , var ( - - blue ) , #5599ff ) ; }
2026-07-05 06:41:32 +00:00
. score-value { font-size : 28 px ; font-weight : 800 ; color : var ( - - blue ) ; letter-spacing : -1 px ; }
. score-label-sub { font-size : 11 px ; color : var ( - - text - dim ) ; margin-top : 2 px ; }
/* CTA BANNER */
. cta-banner {
2026-07-07 07:11:50 +00:00
background : #e8f0fe ; border-radius : var ( - - radius - lg ) ; padding : 40 px 48 px ;
2026-07-05 06:41:32 +00:00
display : flex ; align-items : center ; gap : 48 px ; flex-wrap : wrap ;
margin-top : 48 px ;
}
. cta-banner h3 { color : #1d1d1f ; font-size : 1.25 rem ; font-weight : 800 ; margin-bottom : 8 px ; }
. cta-banner p { color : rgba ( 0 , 0 , 0 , .7 ) ; line-height : 1.65 ; font-size : .9375 rem ; }
. cta-banner-text { flex : 1 ; min-width : 260 px ; }
/* CONTACT FORM */
. contact-wrapper { max-width : 680 px ; margin : 0 auto ; text-align : center ; }
. contact-wrapper . section-title { margin-bottom : 10 px ; }
. contact-wrapper . section-sub { margin : 0 auto 48 px ; }
. contact-form {
background : var ( - - surface ) ; border : 1 px solid var ( - - border ) ;
border-radius : var ( - - radius - lg ) ; padding : 40 px ; text-align : left ;
}
. form-group { display : flex ; flex-direction : column ; gap : 8 px ; margin-bottom : 16 px ; }
. form-group label { font-size : 13 px ; font-weight : 600 ; color : var ( - - text - dim ) ; }
. form-group input , . form-group textarea {
background : var ( - - bg - dark ) ; border : 1.5 px solid var ( - - border ) ;
border-radius : var ( - - radius - md ) ; color : #1d1d1f ;
font-size : 15 px ; font-family : inherit ; padding : 12 px 16 px ;
outline : none ; transition : border-color 0.2 s ; 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 : 120 px ; resize : vertical ; }
. form-note { font-size : 12 px ; color : var ( - - text - muted ) ; margin-top : 12 px ; text-align : center ; }
# form-message {
display : none ; padding : 14 px 20 px ; border-radius : var ( - - radius - md ) ;
font-size : 14 px ; font-weight : 600 ; text-align : center ; margin-top : 16 px ;
}
# form-message . success { background : rgba ( 0 , 200 , 80 , 0.1 ) ; border : 1 px solid rgba ( 0 , 200 , 80 , 0.25 ) ; color : #4ade80 ; }
# form-message . error { background : rgba ( 255 , 60 , 60 , 0.1 ) ; border : 1 px solid rgba ( 255 , 60 , 60 , 0.25 ) ; color : #f87171 ; }
/* FOOTER */
footer { border-top : 1 px solid var ( - - border ) ; padding : 40 px ; }
. footer-inner {
max-width : 1140 px ; margin : 0 auto ;
display : flex ; align-items : center ; justify-content : space-between ;
flex-wrap : wrap ; gap : 20 px ;
}
. footer-logo { font-size : 17 px ; font-weight : 700 ; color : #1d1d1f ; }
. footer-copy { font-size : 13 px ; color : var ( - - text - muted ) ; }
. footer-tagline { font-size : 12 px ; color : var ( - - text - muted ) ; margin-top : 4 px ; }
. footer-links { display : flex ; gap : 24 px ; align-items : center ; flex-wrap : wrap ; }
. footer-links a { font-size : 14 px ; color : var ( - - text - muted ) ; transition : color 0.2 s ; }
. footer-links a : hover { color : #1d1d1f ; }
. footer-social {
2026-07-07 07:11:50 +00:00
width : 32 px ; height : 32 px ; border : 1 px solid var ( - - border ) ; border-radius : var ( - - radius - md ) ;
2026-07-05 06:41:32 +00:00
display : flex ; align-items : center ; justify-content : center ;
transition : border-color 0.2 s , background 0.2 s ;
}
. 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 20 px ; }
. use-case-grid { grid-template-columns : 1 fr ; }
. decisions-grid { grid-template-columns : 1 fr 1 fr ; }
. scores-grid { grid-template-columns : 1 fr 1 fr ; }
. conflict-grid { grid-template-columns : 1 fr ; }
. ce-features { grid-template-columns : 1 fr ; }
}
@ media ( max-width : 600px ) {
section { padding : 48 px 0 !important ; }
. container { padding : 0 16 px !important ; box-sizing : border-box ; }
. decisions-grid { grid-template-columns : 1 fr !important ; }
. scores-grid { grid-template-columns : 1 fr !important ; }
. use-case-grid { grid-template-columns : 1 fr !important ; }
. conflict-grid { grid-template-columns : 1 fr !important ; }
. ce-features { grid-template-columns : 1 fr !important ; }
. cta-banner { flex-direction : column !important ; gap : 16 px !important ; padding : 28 px 24 px ; }
. contact-form { padding : 24 px 20 px ; }
nav { padding : 0 16 px ; }
. hero h1 { letter-spacing : -1 px ; }
}
2026-07-07 07:11:50 +00:00
. lv-disclaimer { font-size : .75 rem ; color : rgba ( 0 , 0 , 0 , .75 ) ; margin-top : 24 px ; padding : 12 px 16 px ; background : rgba ( 0 , 0 , 0 , .04 ) ; border-radius : var ( - - radius - md ) ; line-height : 1.6 ; max-width : 800 px }
2026-07-05 06:41:32 +00:00
. 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 : 2 rem !important ; }
. hero p { font-size : 1 rem !important ; }
. card { padding : 1.5 rem !important ; }
. grid { grid-template-columns : 1 fr !important ; }
. btn { padding : 0.75 rem 1.5 rem !important ; font-size : 1 rem !important ; }
}
< / style >
< / head >
< body >
< nav >
< a class = "nav-logo" href = "https://landvex.com/" > ← Back to Landvex< / a >
< a class = "btn btn-outline" href = "#contact" > Get in touch → < / a >
< / nav >
<!-- HERO -->
< section class = "hero" >
< div class = "hero-eyebrow" > Landvex — Infrastructure Operators< / div >
< h1 > Where will problems emerge before they become expensive?< / h1 >
< p class = "hero-sub" > Landvex gives infrastructure operators the visual field intelligence to shift from reactive repairs to predictive asset management — at scale, across any geography.< / p >
< div class = "hero-ctas" >
< a class = "btn btn-lg" href = "#contact" > Request a briefing → < / 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 Infrastructure Operators< / h2 >
< p class = "section-sub" > From single-asset verifications to portfolio-wide intelligence missions — deployed in 24– 72 hours.< / p >
< div class = "use-case-grid" >
< div class = "use-case-card" style = "cursor:pointer;" onclick = "location.href='#contact'" role = "button" tabindex = "0" >
2026-07-07 07:11:50 +00:00
< span class = "uc-icon" > < / span >
2026-07-05 06:41:32 +00:00
< h3 > Bridge inspections< / h3 >
< p > Rapid visual surveys of bridge structures, deck conditions, joints, and approaches — geo-tagged, AI-reviewed, and delivered within 72 hours.< / 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 > Road condition surveys< / h3 >
< p > Systematic documentation of surface conditions, markings, signage, and drainage across entire road networks.< / 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" >
2026-07-07 07:11:50 +00:00
< span class = "uc-icon" > < / span >
2026-07-05 06:41:32 +00:00
< h3 > Utility corridor mapping< / h3 >
< p > Visual documentation of above-ground utility infrastructure, access points, vegetation encroachment, and condition indicators.< / 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" >
2026-07-07 07:11:50 +00:00
< span class = "uc-icon" > < svg width = "16" height = "16" viewBox = "0 0 16 16" fill = "none" > < path d = "M9 2L5 9H8L7 14L11 7H8L9 2Z" fill = "#f59e0b" / > < / svg > < / span >
2026-07-05 06:41:32 +00:00
< h3 > Network monitoring< / h3 >
< p > Continuous or periodic monitoring of distributed infrastructure assets to detect changes, incidents, and deterioration trends.< / 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 infrastructure operators 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 > Maintenance prioritisation< / span >
< / div >
< div class = "decision-chip" style = "cursor:pointer;" onclick = "location.href='#contact'" role = "button" tabindex = "0" >
< span class = "chip-dot" > < / span >
< span > CapEx allocation< / span >
< / div >
< div class = "decision-chip" style = "cursor:pointer;" onclick = "location.href='#contact'" role = "button" tabindex = "0" >
< span class = "chip-dot" > < / span >
< span > Risk mitigation< / span >
< / div >
< div class = "decision-chip" style = "cursor:pointer;" onclick = "location.href='#contact'" role = "button" tabindex = "0" >
< span class = "chip-dot" > < / span >
< span > Contractor performance verification< / 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’ 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’ 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" > 🚩 < / span >
< div >
< div class = "conflict-title" > Narrative Conflict Detected — Rotterdam — Port District< / div >
< div class = "conflict-desc" > Planned maintenance schedule indicates assets are within acceptable parameters. Field observations contradict in 5 of 8 monitored segments.< / div >
< / div >
< / div >
< div class = "conflict-grid" >
< div class = "conflict-side conflict-official" >
< div class = "conflict-side-label" > Official narrative< / div >
< ul >
2026-07-07 07:11:50 +00:00
< li > & #100003 Last inspection: 18 months ago — passed< / li > < li > & #100003 Maintenance schedule: on track< / li > < li > & #100003 No incidents logged Q1– Q2< / li > < / ul >
2026-07-05 06:41:32 +00:00
< / div >
< div class = "conflict-side conflict-observed" >
< div class = "conflict-side-label" > Observed reality< / div >
< ul >
2026-07-07 07:11:50 +00:00
< li > & #100007 < svg width = "16" height = "16" viewBox = "0 0 16 16" fill = "none" > < path d = "M4 4L12 12M12 4L4 12" stroke = "#ef4444" stroke-width = "2" stroke-linecap = "round" / > < / svg > Visible surface deterioration on 3 bridge spans< / li > < li > & #100007 < svg width = "16" height = "16" viewBox = "0 0 16 16" fill = "none" > < path d = "M4 4L12 12M12 4L4 12" stroke = "#ef4444" stroke-width = "2" stroke-linecap = "round" / > < / svg > Drainage failure on 2 critical junctions< / li > < li > & #100007 < svg width = "16" height = "16" viewBox = "0 0 16 16" fill = "none" > < path d = "M4 4L12 12M12 4L4 12" stroke = "#ef4444" stroke-width = "2" stroke-linecap = "round" / > < / svg > Vegetation encroachment at 6 utility access points< / li > < li > & #100007 < svg width = "16" height = "16" viewBox = "0 0 16 16" fill = "none" > < path d = "M4 4L12 12M12 4L4 12" stroke = "#ef4444" stroke-width = "2" stroke-linecap = "round" / > < / svg > Crack propagation exceeds tolerance on segment 4B< / li > < / ul >
2026-07-05 06:41:32 +00:00
< / div >
< / div >
< div class = "conflict-footer" >
< span class = "conflict-footer-label" > Confidence in official narrative< / span >
< span class = "conflict-confidence" > 29%< / 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" > 🔍 < / div >
< h4 > Show me what I’ 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" > ⚔ ️ < / 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" > 📐 < / 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 Infrastructure Operators< / 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" >
2026-07-07 07:11:50 +00:00
< div class = "score-icon" > < / div >
2026-07-05 06:41:32 +00:00
< 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" >
2026-07-07 07:11:50 +00:00
< div class = "score-icon" > < svg width = "16" height = "16" viewBox = "0 0 16 16" fill = "none" > < path d = "M8 2L10 8L14 9L8 14L6 8L2 7L8 2Z" fill = "#666" / > < / svg > < / div >
2026-07-05 06:41:32 +00:00
< div class = "score-name" > Growth Velocity Index< / div >
< div class = "score-desc" > How fast is an area changing? Identifies emerging zones before they appear in official statistics.< / 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 → < / 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 →
< / 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 >
2026-07-14 09:58:53 +00:00
< 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 >
2026-07-05 06:41:32 +00:00
< / div >
2026-07-14 09:58:53 +00:00
<!-- 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 >
2026-07-14 15:27:33 +00:00
< strong style = "color:#0A0A0A;" > Landvex AB< / strong > · Org.nr 559141-7042 · Stockholm, Sweden · EU< br >
2026-07-14 09:58:53 +00:00
< 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 >
2026-07-05 06:41:32 +00:00
< / 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 >