2026-07-07 07:11:50 +00:00
<!DOCTYPE html>
< html lang = "en" >
< head >
< meta charset = "UTF-8" >
< meta name = "viewport" content = "width=device-width, initial-scale=1.0" >
< title > Property & Real Estate Intelligence — Landvex< / title >
< meta name = "description" content = "Intelligence for property owners and real estate developers. Should we invest 500 million in this area? Landvex answers with observed data, not assumptions." >
< link rel = "canonical" href = "https://landvex.com/verticals/property/" >
< meta property = "og:type" content = "website" >
< meta property = "og:url" content = "https://landvex.com/verticals/property/" >
< meta property = "og:title" content = "Property & Real Estate Intelligence — Landvex" >
< meta property = "og:description" content = "Intelligence for property owners and real estate developers. Should we invest 500 million in this area? Landvex answers with observed data, not assumptions." >
< meta property = "og:image" content = "https://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" >
< link rel = "stylesheet" href = "/assets/css/landvex-complete.css" >
< 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 ;
background : rgba ( 255 , 255 , 255 , 0.92 ) ;
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 : 16 px ;
padding : 24 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 : 24 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 : 24 px 80 px ;
position : relative ; overflow : hidden ;
}
/* Dekorativ bakgrund borttagen */
. hero-eyebrow { display : inline-flex ; align-items : center ; gap : 16 px ; color : #0066ff ; font-size : 12 px ; font-weight : 600 ; letter-spacing : 0.08 em ; text-transform : uppercase ; padding : 8 px 0 ; }
. 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 : 16 px ; flex-wrap : wrap ; justify-content : center ; }
section { padding : 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 : 24 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 : 24 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 : 16 px ;
margin-top : 48 px ;
}
. use-case-card {
background : var ( - - surface -2 ) ; border : 1 px solid var ( - - border ) ;
border-radius : var ( - - radius - lg ) ; padding : 24 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 : 24 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 : 24 px ;
display : flex ; align-items : center ; gap : 16 px ;
}
. decision-chip . chip-dot {
width : 8 px ; height : 8 px ; border-radius : var ( - - radius - full ) ;
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 ) ;
border-radius : var ( - - radius - lg ) ; padding : 24 px ; margin-bottom : 32 px ;
}
. 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 ; }
. conflict-side { border-radius : var ( - - radius - md ) ; padding : 16 px ; }
. 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 : 16 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 : 16 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 : 16 px ; margin-top : 40 px ; }
. score-card {
background : var ( - - surface -2 ) ; border : 1 px solid var ( - - border ) ;
border-radius : var ( - - radius - lg ) ; padding : 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 ; }
. 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 ) ; }
. 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 {
background : #e8f0fe ; border-radius : var ( - - radius - lg ) ; padding : 24 px ;
display : flex ; align-items : center ; gap : 16 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 : 16 px ; margin-bottom : 24 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 : 24 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 : 24 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 : 16 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 : 16 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 {
width : 32 px ; height : 32 px ; border : 1 px solid var ( - - border ) ; border-radius : var ( - - radius - md ) ;
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 ; padding : 24 px ; }
. contact-form { padding : 24 px ; }
nav { padding : 0 16 px ; }
. hero h1 { letter-spacing : -1 px ; }
}
. lv-disclaimer { font-size : .75 rem ; color : rgba ( 0 , 0 , 0 , .75 ) ; margin-top : 24 px ; padding : 24 px ; background : rgba ( 0 , 0 , 0 , .04 ) ; border-radius : var ( - - radius - md ) ; line-height : 1.6 ; max-width : 800 px }
. 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://landvex.com/" >
< link rel = "alternate" hreflang = "en" href = "https://landvex.com/" > < 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 aria-label = "Main navigation" >
< a class = "nav-logo" href = "https://landvex.com/" > ← Back to Landvex< / a >
< a class = "lv-btn lv-btn--outline" href = "#contact" > Get in touch → < / a >
< / nav >
<!-- HERO -->
< section class = "lv-hero" >
< div class = "lv-hero-eyebrow" > Landvex — Property & Real Estate< / div >
< h1 > Should we invest 500 million in this area?< / h1 >
< p class = "lv-hero-subtitle" > Landvex gives real estate professionals the ground-truth intelligence to make faster, better-informed decisions — on acquisitions, disposals, renovations, and development opportunities.< / p >
< div class = "hero-ctas" >
< a class = "lv-btn lv-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" >
< div class = "lv-container" >
< div class = "section-label" > Use cases< / div >
< h2 class = "section-title" > What Landvex does for Property & Real Estate< / 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" onclick = "location.href='#contact'" role = "button" tabindex = "0" >
< span class = "uc-icon" > < / span >
< h3 > Portfolio documentation< / h3 >
< p > Systematic visual documentation of portfolio assets — condition, occupancy signals, neighbourhood quality, and change over time.< / p >
< div class = "learn-more-hint" > Learn more →< / div > < / div >
< div class = "use-case-card" 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 > Condition assessments< / h3 >
< p > Pre-acquisition and pre-sale condition surveys delivered within 72 hours. Geo-tagged, AI-reviewed, and ready for due diligence.< / p >
< div class = "learn-more-hint" > Learn more →< / div > < / div >
< div class = "use-case-card" onclick = "location.href='#contact'" role = "button" tabindex = "0" >
< span class = "uc-icon" > < / span >
< h3 > Site verification< / h3 >
< p > Confirm what's actually on the ground before committing capital. Verify access, condition, and surrounding environment.< / p >
< div class = "learn-more-hint" > Learn more →< / div > < / div >
< div class = "use-case-card" onclick = "location.href='#contact'" role = "button" tabindex = "0" >
< 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 >
< h3 > Market intelligence< / h3 >
< p > Track commercial activity, vacancy rates, and neighbourhood trajectory across target markets — before the data appears in published indices.< / p >
< div class = "learn-more-hint" > Learn more →< / div > < / div >
< / div >
< / div >
< / section >
<!-- KEY DECISIONS -->
< section class = "decisions-bg" id = "key-decisions" >
< div class = "lv-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 property & real estate clients face most often.< / p >
< div class = "decisions-grid" >
< div class = "decision-chip" onclick = "location.href='#contact'" role = "button" tabindex = "0" >
< span class = "chip-dot" > < / span >
< span > Acquisition< / span >
< / div >
< div class = "decision-chip" onclick = "location.href='#contact'" role = "button" tabindex = "0" >
< span class = "chip-dot" > < / span >
< span > Disposal< / span >
< / div >
< div class = "decision-chip" onclick = "location.href='#contact'" role = "button" tabindex = "0" >
< span class = "chip-dot" > < / span >
< span > Renovation< / span >
< / div >
< div class = "decision-chip" onclick = "location.href='#contact'" role = "button" tabindex = "0" >
< span class = "chip-dot" > < / span >
< span > Development< / span >
< / div >
< div class = "decision-chip" onclick = "location.href='#contact'" role = "button" tabindex = "0" >
< span class = "chip-dot" > < / span >
< span > Portfolio optimisation< / span >
< / div >
< div class = "decision-chip" onclick = "location.href='#contact'" role = "button" tabindex = "0" >
< span class = "chip-dot" > < / span >
< span > Due diligence< / span >
< / div >
< / div >
< / div >
< / section >
<!-- CONTRADICTION ENGINE -->
< section class = "contradiction-bg" id = "contradiction" >
< div class = "lv-container" >
< div >
< div class = "section-label" > Contradiction Engine< / div >
< h2 class = "section-title" > Most systems tell you what the data says.< br > Landvex tells you what doesn’ t add up.< / h2 >
< p class = "section-sub" > 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 — Berlin — Prenzlauer Berg< / div >
< div class = "conflict-desc" > Market narrative describes strong residential demand and rising values. Field observations show diverging signals in the target acquisition zone.< / div >
< / div >
< / div >
< div class = "conflict-grid" >
< div class = "conflict-side conflict-official" >
< div class = "conflict-side-label" > Official narrative< / div >
< ul >
< li > & #100003 Property prices up 8.3% YoY< / li > < li > & #100003 Strong rental demand reported< / li > < li > & #100003 Low vacancy in commercial ground floor< / li > < / ul >
< / div >
< div class = "conflict-side conflict-observed" >
< div class = "conflict-side-label" > Observed reality< / div >
< ul >
< 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 > Vacancy rates up 22% vs prior year visit< / 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 > Multiple businesses closed, limited new openings< / 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 > Deferred maintenance visible on 40% of sampled buildings< / 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 > Foot traffic down vs comparable streets< / li > < / ul >
< / div >
< / div >
< div class = "conflict-footer" >
< span class = "conflict-footer-label" > Confidence in official narrative< / span >
< span class = "conflict-confidence" > 36%< / span >
< / div >
< / div >
< div class = "ce-features" >
< div class = "ce-feature" 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" 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" 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" >
< div class = "lv-container" >
< div class = "section-label" > Intelligence scores< / div >
< h2 class = "section-title" > Landvex scores relevant to Property & Real Estate< / 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" onclick = "location.href='#contact'" role = "button" tabindex = "0" >
< div class = "score-icon" > < / div >
< div class = "score-name" > Investment Attractiveness Index< / div >
< div class = "score-desc" > Composite score combining opportunity, risk, velocity, and quality for investment decisions.< / div >
< div class = "score-bar-wrap" >
< div class = "score-bar" > < / 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" > Request access →< / div > < / div >
< div class = "score-card" onclick = "location.href='#contact'" role = "button" tabindex = "0" >
< div class = "score-icon" > < / div >
< div class = "score-name" > Commercial Opportunity Index< / div >
< div class = "score-desc" > Measures commercial vacancy, foot traffic, and business activity for location intelligence.< / div >
< div class = "score-bar-wrap" >
< div class = "score-bar" > < / 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" > Request access →< / div > < / div >
< div class = "score-card" onclick = "location.href='#contact'" role = "button" tabindex = "0" >
< 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 >
< 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" > < / div >
< / div >
< div class = "score-value" > 81< / div >
< div class = "score-label-sub" > placeholder · live data from Aug 2026< / div >
< div class = "learn-more-hint" > 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 > what decision are you trying to make?< / em > < / p >
< / div >
< a class = "lv-btn lv-btn--lg" href = "#contact" > Request a briefing → < / a >
< / div >
< / div >
< / section >
< section id = "contact" >
< div class = "lv-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 = "lv-btn lv-btn--lg" >
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 >
< footer class = "lv-footer" role = "contentinfo" >
< div class = "footer-inner" >
< div >
< div class = "footer-logo" > LandveX< / div >
2026-07-14 15:27:33 +00:00
< div class = "footer-copy" > © 2026 Landvex AB · Org.nr 559141-7042 · Stockholm, Sweden< / div >
2026-07-07 07:11:50 +00:00
< 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 → < / a >
< a href = "mailto:contact@landvex.com" > contact@landvex.com< / a >
< a href = "mailto:security@landvex.com" > 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 >