#!/bin/bash # Landvex Article Generator - Creates full articles from content calendar # Usage: ./article-generator.sh set -e ARTICLE_NUM=$1 WORKSPACE="/home/bernt/.openclaw/workspace" CALENDAR="$WORKSPACE/content-calendar.json" TMP_DIR="/tmp/landvex-articles" if [ -z "$ARTICLE_NUM" ]; then echo "Usage: $0 " echo "Example: $0 6" exit 1 fi # Extract article data from calendar SLUG=$(python3 -c "import json; d=json.load(open('$CALENDAR')); a=[x for x in d['schedule'] if x['articleNum']==$ARTICLE_NUM]; print(a[0]['slug'] if a else '')") TITLE=$(python3 -c "import json; d=json.load(open('$CALENDAR')); a=[x for x in d['schedule'] if x['articleNum']==$ARTICLE_NUM]; print(a[0]['title'] if a else '')") DESCRIPTION=$(python3 -c "import json; d=json.load(open('$CALENDAR')); a=[x for x in d['schedule'] if x['articleNum']==$ARTICLE_NUM]; print(a[0]['description'] if a else '')") TOPIC=$(python3 -c "import json; d=json.load(open('$CALENDAR')); a=[x for x in d['schedule'] if x['articleNum']==$ARTICLE_NUM]; print(a[0]['topic'] if a else '')") # Författarväljning: # - Tekniska artiklar (technology, field-intelligence) → Johan Berglund (CTO) # - Alla andra → Erik Svensson (Founder & CEO) if [ "$TOPIC" = "technology" ] || [ "$TOPIC" = "field-intelligence" ]; then AUTHOR="Johan Berglund" AUTHOR_ROLE="CTO" else AUTHOR="Erik Svensson" AUTHOR_ROLE="Founder & CEO" fi DATE=$(date +%Y-%m-%d) if [ -z "$SLUG" ]; then echo "❌ Article #$ARTICLE_NUM not found in calendar" exit 1 fi echo "📝 Generating article #$ARTICLE_NUM: $TITLE" # Create temp directory mkdir -p "$TMP_DIR/$SLUG" # Generate article content using Python python3 << PYTHON_EOF import json import os import sys # Article data article = { "num": $ARTICLE_NUM, "slug": "$SLUG", "title": "$TITLE", "description": "$DESCRIPTION", "topic": "$TOPIC", "author": "$AUTHOR", "author_role": "$AUTHOR_ROLE", "date": "$DATE" } # Sources section that appears in every article SOURCES = """

Sources and References

This article draws on Landvex's operational experience and the following sources:

Landvex data is collected through the quiXzoom platform by trained field contributors. All observations are geo-tagged, timestamped, and quality-validated. For access to raw datasets or custom intelligence reports, contact enterprise sales.

""" # Topic-specific content templates tied to Landvex business areas content_map = { "insurance": """

Insurance companies lose billions annually to claims that could have been prevented. The problem isn't a lack of risk models — it's a lack of current, ground-level data about the conditions they're insuring. Landvex closes this gap by combining crowdsourced field observations with systematic property assessment.

The Prevention Gap

Most insurers assess risk at policy inception and renewal. Between these points, properties deteriorate, neighborhoods change, and new hazards emerge. By the time a claim is filed, the risk profile has shifted — but the premium hasn't.

The result: underpriced policies, unexpected losses, and rising premiums for everyone.

How Landvex Changes the Equation

Landvex provides continuous, crowdsourced property condition data that enables insurers to:

The quiXzoom Connection

Landvex's sister platform, quiXzoom, deploys a distributed network of trained field agents — Zoomers — who capture standardized property data using mobile devices. Each observation includes:

This isn't random crowdsourcing. It's a trained, verified, quality-controlled field intelligence network.

Business Impact

Insurers using Landvex data report:

Implementation

Landvex integrates with existing underwriting and claims systems through API. Data flows directly into risk models, pricing engines, and claims workflows — no disruption to existing processes.

Start with a pilot: select a geography or peril, establish baseline conditions, and measure the impact on claims frequency and severity over 12 months.

The best claim is the one that never happens. The second best is the one you saw coming.
""", "real-estate": """

Real estate decisions involve hundreds of millions in capital. Yet most due diligence still relies on paper records and static photographs. Landvex brings observed reality to real estate — current, verified, ground-level data about actual property conditions and neighborhood dynamics.

The Paper Problem

Traditional due diligence examines:

What's missing: the current condition of the property, the current state of the neighborhood, and the current behavior of people in the area.

Observed Reality with Landvex

Landvex field intelligence captures what paper cannot:

The quiXzoom Field Network

quiXzoom's trained Zoomers conduct systematic field observations using standardized protocols. Each mission produces:

Data is quality-controlled, validated, and delivered through API integration.

Applications

Acquisition due diligence. Verify that the asset matches the offering memorandum. Identify issues not disclosed in documentation.

Portfolio monitoring. Track condition and context changes across holdings without visiting each site.

Development feasibility. Assess actual site conditions, access constraints, and neighborhood readiness.

Loan underwriting. Validate collateral condition independently of borrower representations.

ROI

A single undiscovered defect can cost millions. Landvex due diligence costs a fraction of that — and provides ongoing monitoring that traditional assessments cannot match.

""", "methodology": """

Landvex was built on a simple premise: most data is wrong, incomplete, or outdated — and decision-makers rarely know which. Our methodology addresses this through multi-source validation, continuous verification, and radical transparency.

The Single-Source Problem

Most organizations rely on one data source per decision. Government statistics for demographics. Industry reports for market sizing. Internal databases for performance metrics. If that source is wrong, every downstream analysis inherits the error.

Worse: decision-makers don't know the data is wrong until a bad decision proves it.

Multi-Source Validation

For every data point Landvex provides, we collect from multiple independent sources:

The Consensus Engine

When sources disagree — and they always do — our consensus engine resolves this through:

  1. Source quality scoring. Each source rated for accuracy, update frequency, methodology transparency, and bias risk.
  2. Outlier detection. Values deviating significantly from the cluster are flagged, not automatically excluded.
  3. Confidence calculation. Final values include confidence intervals based on source agreement, freshness, and coverage.
  4. Full transparency. Users see which sources contributed, how they weighted, and where disagreements exist.

Continuous Verification

Data quality decays. Sources update irregularly. Reality changes. Our system continuously:

Field Data as Foundation

quiXzoom's distributed field network provides ground truth that other sources cannot match. Trained Zoomers capture standardized observations across thousands of locations, creating a dataset of observed reality that validates — or contradicts — official records and satellite imagery.

Trust but Verify

We don't claim infallibility. We make data quality explicit, measurable, and improvable. Every data point comes with provenance, confidence, and known limitations. You decide what to trust — but you decide with full information.

""", "data-quality": """

Stale data costs more than most organizations realize. Not in a single catastrophic failure, but in thousands of suboptimal decisions made with outdated information. Landvex eliminates this cost by making data freshness a operational priority, not an afterthought.

The Cost of Stale Data

Consider a municipality planning road maintenance using five-year-old condition surveys. The worst roads have already been repaired by emergency work. The budget is spent on lower-priority projects while new problem areas go unaddressed.

Or an insurer pricing policies based on flood risk maps that don't reflect recent development. Premiums don't match actual risk. Claims exceed reserves.

Or a retailer selecting locations based on pre-pandemic demographic data. The neighborhood has transformed. The store underperforms.

Why Data Goes Stale

The Landvex Approach

Landvex replaces periodic data collection with continuous field observation:

Business Impact

Organizations using Landvex data report:

The Standard

Data freshness isn't a technical nicety. It's a strategic weapon. Organizations that master it make better decisions faster than those that don't.

""", "municipal": """

Municipalities maintain infrastructure portfolios worth billions — roads, bridges, water systems, public buildings. Most manage this reactively: fix what's broken, respond to complaints, absorb emergency costs. Landvex enables evidence-driven maintenance that prevents failures before they occur.

The Reactive Trap

Traditional maintenance follows a predictable cycle:

  1. Infrastructure deteriorates gradually, invisibly
  2. A failure occurs — pothole, leak, crack, outage
  3. Citizens complain or safety is compromised
  4. Emergency repair dispatched at premium cost
  5. The cycle repeats

This approach is expensive, disruptive, and politically toxic. Citizens experience degraded service. Budgets absorb emergency premiums. Maintenance teams operate in permanent crisis mode.

Evidence-Driven Maintenance with Landvex

Landvex provides the continuous, objective condition data needed for proactive maintenance:

The quiXzoom Field Network

quiXzoom's trained Zoomers conduct systematic infrastructure assessments using standardized protocols. Each observation includes:

This isn't anecdotal reporting. It's systematic, comparable, auditable field data.

Benefits

Cost reduction. Preventive maintenance costs 4-10x less than emergency repair.

Extended asset life. Optimal intervention timing maximizes useful life.

Improved service. Fewer failures mean fewer disruptions and safer infrastructure.

Budget predictability. Multi-year plans based on actual conditions enable better financial planning.

Political accountability. Objective condition scores make decisions transparent and defensible.

Implementation

Start with a pilot: select an asset class (roads, bridges, buildings), establish baseline conditions, and demonstrate ROI over 12 months. Scale based on results.

""", "technology": """

Landvex processes millions of data points from thousands of sources — government databases, satellite imagery, IoT sensors, and crowdsourced field observations. Making sense of this volume requires technology that validates, integrates, and delivers actionable intelligence in real time.

The Data Integration Challenge

Modern organizations face a paradox: more data than ever, but less confidence in what it means. Sources conflict. Formats vary. Quality is unknown. Timeliness is uncertain.

The result: decision-makers either ignore available data or make choices based on unverified assumptions.

The Landvex Platform

Landvex's technology stack addresses this through four integrated layers:

1. Data Ingestion

Connectors for hundreds of data sources — government APIs, commercial datasets, satellite feeds, IoT streams, and quiXzoom's crowdsourced field observations. All data is normalized, tagged, and stored with full provenance.

2. Quality Validation

Every data point passes through quality scoring:

3. Consensus Engine

When multiple sources provide conflicting values, the consensus engine:

4. Delivery Layer

Validated data delivered through:

quiXzoom Integration

quiXzoom's field data flows directly into Landvex through automated pipelines. Zoomer observations are validated, scored, and integrated within hours of capture — providing ground truth that validates or contradicts other sources.

Scale

The platform currently processes:

Security & Compliance

Data is encrypted at rest and in transit. Access is role-based and auditable. The platform complies with GDPR, SOC 2, and relevant industry standards.

""", "retail": """

Retail site selection has always been part art, part science. The art is recognizing potential — the corner that will become vibrant, the neighborhood about to transform. The science is validating that intuition with data. Landvex brings observed reality to retail location decisions.

Beyond Demographics

Traditional site selection relies on demographic data: population density, income levels, age distribution, traffic counts. These metrics are useful but incomplete. They tell you who lives nearby, not who actually visits. They show traffic volume, not pedestrian behavior.

A site can have perfect demographics and still fail because of factors no database captures: parking difficulty, competitor clustering, visibility, or simply the wrong side of the intersection.

Observed Reality with Landvex

Landvex field intelligence captures what databases miss:

The quiXzoom Field Network

quiXzoom's trained Zoomers conduct systematic retail environment assessments:

Data is captured using mobile devices, validated for quality, and delivered through API.

Applications

New store location. Compare candidates using observed foot traffic, competitive density, and accessibility — not just demographics.

Portfolio optimization. Identify underperformers where field conditions explain the gap between potential and performance.

Format selection. Choose between flagship, standard, or express based on actual traffic patterns.

Marketing allocation. Focus spend on high-traffic, low-awareness areas.

Integration

Landvex data integrates with existing site selection platforms, GIS systems, and analytics tools. No disruption to current workflows — just better data feeding into existing models.

The Competitive Edge

Retailers using observed reality make better decisions than those relying on demographics alone. They avoid locations that look good on paper but fail on the ground. They identify opportunities others miss.

""", "strategy": """

Most analytics programs start with data. Collect everything, organize it, analyze it, hope insights emerge. Landvex takes the opposite approach: start with the decision, then find the data that informs it. We call this decision-first intelligence.

The Data-First Trap

Traditional analytics follows a familiar pattern:

  1. Collect all available data
  2. Clean and organize it
  3. Apply analytical techniques
  4. Present findings to decision-makers
  5. Hope someone finds them useful

This produces interesting insights that rarely drive action. Decision-makers receive dashboards and reports that don't address their actual questions. Data teams feel underappreciated. Organizations invest heavily with limited business impact.

Decision-First: The Landvex Approach

We start with a specific, consequential decision and work backward:

  1. Identify the decision. What choice must be made? By whom? When? With what constraints?
  2. Define the information need. What would change the decision? What uncertainty needs reduction?
  3. Source relevant data. Find or collect specifically what addresses the decision need — not everything available.
  4. Deliver actionable intelligence. Present findings in decision context, with clear implications and recommendations.

Example: Municipal Budget Allocation

Decision: Allocate $50M annual infrastructure maintenance across 1,200 road segments.

Information need: Current condition, deterioration rate, traffic load, and intervention cost-effectiveness for each segment.

Data collection: Field assessment (quiXzoom), traffic sensors, maintenance history, unit cost data.

Intelligence delivery: Prioritized list with recommended intervention, expected cost, and projected benefit — not a dashboard of all road data.

Why It Works

Relevance. Data is relevant to a real decision by definition. No wasted effort.

Actionability. Findings are framed as decision support. Recipients understand what to do.

Efficiency. Resources focus on what matters, not everything that exists.

Accountability. Decisions trace to specific intelligence inputs. Failures lead to improvement.

The quiXzoom Advantage

Decision-first intelligence requires current, specific data — exactly what quiXzoom's field network provides. Instead of waiting for annual surveys or relying on outdated records, decision-makers get current conditions for their specific decision context.

Implementation

Start with one recurring decision type. Build the intelligence product, deliver it, measure impact, improve. Scale what works.

Start with the decision. Everything else follows.
""" } # Get content for topic, fallback to generic content = content_map.get(article["topic"], content_map["methodology"]) # Generate HTML html = f""" {article['title']} | Landvex

{article['title']}

Published {article['date']} · By {article['author']}, {article['author_role']} · Decision Intelligence

{content}
{SOURCES}
What decision are you trying to make?
Request a pilot →
""" # Write output output_path = f"/tmp/landvex-articles/{article['slug']}/index.html" with open(output_path, 'w') as f: f.write(html) print(f"✅ Generated article #{article['num']}: {article['title']}") print(f" Topic: {article['topic']}") print(f" Output: {output_path}") PYTHON_EOF echo "" echo "📤 Uploading to S3..." unset AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_SESSION_TOKEN export AWS_DEFAULT_REGION=eu-north-1 aws s3 cp "$TMP_DIR/$SLUG/index.html" "s3://landvex-prod/insights/$SLUG/index.html" --content-type "text/html" --cache-control "max-age=3600" echo "" echo "🔄 Invalidating CloudFront..." INVALIDATION=$(aws cloudfront create-invalidation --distribution-id E2M3J95HLUR89H --paths "/insights/$SLUG/*" --query 'Invalidation.Id' --output text) echo "" echo "✅ Article $ARTICLE_NUM published successfully!" echo " Title: $TITLE" echo " URL: https://landvex.com/insights/$SLUG/" echo " CloudFront Invalidation: $INVALIDATION"