feat(template): add opportunity_score to city-cost-de — stats strip, intro, table, FAQ

Both DE + EN language variants. All additions wrapped in {% if opportunity_score %}
guards so cities without a GeoNames match degrade gracefully (score hidden).

Changes per language:
- Stats strip: Opportunity Score item after Market Score (same green/orange/red thresholds)
- Intro paragraph: contextual sentence with supply-gap / white-space interpretation
- Market Overview table: Opportunity Score row
- New FAQ: explains the difference between Market Score (maturity) and Opportunity Score
  (investment potential / supply gap)

DE copy written with linguistic mediation — native investor register, Du-form,
avoids calque from English.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Deeman
2026-02-26 20:11:57 +01:00
parent c6ce0aeaee
commit 1499dbeafe

View File

@@ -9,7 +9,7 @@ url_pattern: "/markets/{{ country_slug }}/{{ city_slug }}"
title_pattern: "{% if language == 'de' %}Padel in {{ city_name }} — Investitionskosten & Marktanalyse {{ 'now' | datetimeformat('%Y') }}{% else %}Padel in {{ city_name }} — Investment Costs & Market Analysis {{ 'now' | datetimeformat('%Y') }}{% endif %}"
meta_description_pattern: "{% if language == 'de' %}Lohnt sich eine Padelhalle in {{ city_name }}? {{ padel_venue_count }} Anlagen, <span style=\"font-family:'Bricolage Grotesque',sans-serif;font-weight:800;color:#0F172A;letter-spacing:-0.02em\">padelnomics</span> Market Score {{ market_score | round(1) }}/100 und ein vollständiges Finanzmodell. Stand {{ 'now' | datetimeformat('%B %Y') }}.{% else %}Is {{ city_name }} worth building a padel center in? {{ padel_venue_count }} venues, <span style=\"font-family:'Bricolage Grotesque',sans-serif;font-weight:800;color:#0F172A;letter-spacing:-0.02em\">padelnomics</span> Market Score {{ market_score | round(1) }}/100, and a full financial model. Updated {{ 'now' | datetimeformat('%B %Y') }}.{% endif %}"
schema_type: [Article, FAQPage]
priority_column: padel_venue_count
priority_column: population
---
{% if language == "de" %}
# Lohnt sich eine Padelhalle in {{ city_name }}?
@@ -23,6 +23,12 @@ priority_column: padel_venue_count
<div class="stats-strip__label"><span style="font-family:'Bricolage Grotesque',sans-serif;font-weight:800;color:#0F172A;letter-spacing:-0.02em">padelnomics</span> Market Score</div>
<div class="stats-strip__value" style="color:{% if market_score >= 65 %}#16A34A{% elif market_score >= 40 %}#D97706{% else %}#DC2626{% endif %}">{{ market_score | round(1) }}<span class="stats-strip__unit">/100</span></div>
</div>
{% if opportunity_score %}
<div class="stats-strip__item">
<div class="stats-strip__label"><span style="font-family:'Bricolage Grotesque',sans-serif;font-weight:800;color:#0F172A;letter-spacing:-0.02em">padelnomics</span> Opportunity Score</div>
<div class="stats-strip__value" style="color:{% if opportunity_score >= 65 %}#16A34A{% elif opportunity_score >= 40 %}#D97706{% else %}#DC2626{% endif %}">{{ opportunity_score | round(1) }}<span class="stats-strip__unit">/100</span></div>
</div>
{% endif %}
<div class="stats-strip__item">
<div class="stats-strip__label">Spitzenpreis</div>
<div class="stats-strip__value">{% if median_peak_rate %}{{ median_peak_rate | round(0) | int }}{% else %}—{% endif %}<span class="stats-strip__unit">{% if median_peak_rate %}{{ price_currency }}/Std{% endif %}</span></div>
@@ -33,7 +39,7 @@ priority_column: padel_venue_count
</div>
</div>
{{ city_name }} erreicht einen **<a href="/{{ language }}/market-score" style="text-decoration:none"><span style="font-family:'Bricolage Grotesque',sans-serif;font-weight:800;color:#0F172A;letter-spacing:-0.02em">padelnomics</span> Market Score</a> von {{ market_score | round(1) }}/100** — damit liegt die Stadt{% if market_score >= 70 %} unter den stärksten Padel-Märkten in {{ country_name_en }}{% elif market_score >= 45 %} im soliden Mittelfeld der Padel-Märkte in {{ country_name_en }}{% else %} in einem frühen Padel-Markt mit Wachstumspotenzial{% endif %}. Aktuell gibt es **{{ padel_venue_count }} Padelanlagen** für {% if population >= 1000000 %}{{ (population / 1000000) | round(1) }}M{% else %}{{ (population / 1000) | round(0) | int }}K{% endif %} Einwohner — das entspricht {{ venues_per_100k | round(1) }} Anlagen pro 100.000 Einwohner.
{{ city_name }} erreicht einen **<a href="/{{ language }}/market-score" style="text-decoration:none"><span style="font-family:'Bricolage Grotesque',sans-serif;font-weight:800;color:#0F172A;letter-spacing:-0.02em">padelnomics</span> Market Score</a> von {{ market_score | round(1) }}/100** — damit liegt die Stadt{% if market_score >= 70 %} unter den stärksten Padel-Märkten in {{ country_name_en }}{% elif market_score >= 45 %} im soliden Mittelfeld der Padel-Märkte in {{ country_name_en }}{% else %} in einem frühen Padel-Markt mit Wachstumspotenzial{% endif %}. Aktuell gibt es **{{ padel_venue_count }} Padelanlagen** für {% if population >= 1000000 %}{{ (population / 1000000) | round(1) }}M{% else %}{{ (population / 1000) | round(0) | int }}K{% endif %} Einwohner — das entspricht {{ venues_per_100k | round(1) }} Anlagen pro 100.000 Einwohner.{% if opportunity_score %} Der **<a href="/{{ language }}/market-score" style="text-decoration:none"><span style="font-family:'Bricolage Grotesque',sans-serif;font-weight:800;color:#0F172A;letter-spacing:-0.02em">padelnomics</span> Opportunity Score</a> von {{ opportunity_score | round(1) }}/100** bewertet das Investitionspotenzial — Versorgungslücken, Einzugsgebiet und Sportaffinität der Region:{% if opportunity_score >= 65 and market_score < 50 %} überschaubare Konkurrenz trifft auf starkes Standortpotenzial{% elif opportunity_score >= 65 %} hohes Potenzial trotz bereits aktivem Marktumfeld{% elif opportunity_score >= 40 %} solides Potenzial, der Markt beginnt sich zu verdichten{% else %} der Standort ist vergleichsweise gut versorgt, Differenzierung wird zum Schlüssel{% endif %}.{% endif %}
Die entscheidende Frage für Investoren: Was bringt ein Padel-Investment bei den aktuellen Preisen, Auslastungsraten und Baukosten tatsächlich? Das Finanzmodell unten rechnet mit echten Marktdaten aus {{ city_name }}.
@@ -88,7 +94,8 @@ Eine detaillierte Preisanalyse mit Preisspannen und Vergleichsdaten findest Du a
| Anlagen | {{ padel_venue_count }} |
| Anlagen pro 100K Einwohner | {{ venues_per_100k | round(1) }} |
| <span style="font-family:'Bricolage Grotesque',sans-serif;font-weight:800;color:#0F172A;letter-spacing:-0.02em">padelnomics</span> Market Score | {{ market_score | round(1) }}/100 |
| Datenqualität | {{ (data_confidence * 100) | round(0) | int }}% |
{% if opportunity_score %}| <span style="font-family:'Bricolage Grotesque',sans-serif;font-weight:800;color:#0F172A;letter-spacing:-0.02em">padelnomics</span> Opportunity Score | {{ opportunity_score | round(1) }}/100 |
{% endif %}| Datenqualität | {{ (data_confidence * 100) | round(0) | int }}% |
## FAQ
@@ -128,6 +135,14 @@ Das Gesamtinvestment hängt vom Hallentyp (Indoor vs. Outdoor), Grundstückskost
Der <span style="font-family:'Bricolage Grotesque',sans-serif;font-weight:800;color:#0F172A;letter-spacing:-0.02em">padelnomics</span> Market Score von {{ market_score | round(1) }}/100 zeigt {{ city_name }}s Position unter den erfassten Städten in {{ country_name_en }}. In der [Marktübersicht für {{ country_name_en }}](/{{ language }}/markets/{{ country_slug }}) findest Du den Vergleich aller Städte.
</details>
{% if opportunity_score %}
<details>
<summary>Was ist der Unterschied zwischen Market Score und Opportunity Score?</summary>
Der **Market Score ({{ market_score | round(1) }}/100)** misst die *Marktreife*: Bevölkerungsgröße, bestehende Anlagendichte und Datenqualität. Ein hoher Wert steht für einen etablierten Markt mit belastbaren Preisdaten — und oft auch für mehr Wettbewerb. Der **Opportunity Score ({{ opportunity_score | round(1) }}/100)** dreht die Logik um: Er bewertet *Investitionspotenzial* anhand von Versorgungslücken, Entfernung zur nächsten Anlage und der Tennisinfrastruktur als Proxy für Racket-Sport-Affinität. Hoher Opportunity Score bei niedrigem Market Score — das ist das klassische White-Space-Signal. Hoher Wert in beiden — bewiesene Nachfrage mit noch offenen Standorten.
</details>
{% endif %}
<div style="background:#EFF6FF;border:1px solid #BFDBFE;border-radius:12px;padding:1rem 1.25rem;margin:1.5rem 0;">
Bereit für Deine eigene Kalkulation? →
<a href="/{{ language }}/planner" style="font-weight:600;color:#1D4ED8;margin-left:0.25rem;">Businessplan erstellen</a>
@@ -148,6 +163,12 @@ Der <span style="font-family:'Bricolage Grotesque',sans-serif;font-weight:800;co
<div class="stats-strip__label"><span style="font-family:'Bricolage Grotesque',sans-serif;font-weight:800;color:#0F172A;letter-spacing:-0.02em">padelnomics</span> Market Score</div>
<div class="stats-strip__value" style="color:{% if market_score >= 65 %}#16A34A{% elif market_score >= 40 %}#D97706{% else %}#DC2626{% endif %}">{{ market_score | round(1) }}<span class="stats-strip__unit">/100</span></div>
</div>
{% if opportunity_score %}
<div class="stats-strip__item">
<div class="stats-strip__label"><span style="font-family:'Bricolage Grotesque',sans-serif;font-weight:800;color:#0F172A;letter-spacing:-0.02em">padelnomics</span> Opportunity Score</div>
<div class="stats-strip__value" style="color:{% if opportunity_score >= 65 %}#16A34A{% elif opportunity_score >= 40 %}#D97706{% else %}#DC2626{% endif %}">{{ opportunity_score | round(1) }}<span class="stats-strip__unit">/100</span></div>
</div>
{% endif %}
<div class="stats-strip__item">
<div class="stats-strip__label">Peak Rate</div>
<div class="stats-strip__value">{% if median_peak_rate %}{{ median_peak_rate | round(0) | int }}{% else %}—{% endif %}<span class="stats-strip__unit">{% if median_peak_rate %}{{ price_currency }}/hr{% endif %}</span></div>
@@ -158,7 +179,7 @@ Der <span style="font-family:'Bricolage Grotesque',sans-serif;font-weight:800;co
</div>
</div>
{{ city_name }} has a **<a href="/{{ language }}/market-score" style="text-decoration:none"><span style="font-family:'Bricolage Grotesque',sans-serif;font-weight:800;color:#0F172A;letter-spacing:-0.02em">padelnomics</span> Market Score</a> of {{ market_score | round(1) }}/100** — placing it{% if market_score >= 70 %} among the strongest padel markets in {{ country_name_en }}{% elif market_score >= 45 %} in the mid-tier of {{ country_name_en }}'s padel markets{% else %} in an early-stage padel market with room for growth{% endif %}. The city currently has **{{ padel_venue_count }} padel venues** serving a population of {% if population >= 1000000 %}{{ (population / 1000000) | round(1) }}M{% else %}{{ (population / 1000) | round(0) | int }}K{% endif %} residents — a density of {{ venues_per_100k | round(1) }} venues per 100,000 people.
{{ city_name }} has a **<a href="/{{ language }}/market-score" style="text-decoration:none"><span style="font-family:'Bricolage Grotesque',sans-serif;font-weight:800;color:#0F172A;letter-spacing:-0.02em">padelnomics</span> Market Score</a> of {{ market_score | round(1) }}/100** — placing it{% if market_score >= 70 %} among the strongest padel markets in {{ country_name_en }}{% elif market_score >= 45 %} in the mid-tier of {{ country_name_en }}'s padel markets{% else %} in an early-stage padel market with room for growth{% endif %}. The city currently has **{{ padel_venue_count }} padel venues** serving a population of {% if population >= 1000000 %}{{ (population / 1000000) | round(1) }}M{% else %}{{ (population / 1000) | round(0) | int }}K{% endif %} residents — a density of {{ venues_per_100k | round(1) }} venues per 100,000 people.{% if opportunity_score %} The **<a href="/{{ language }}/market-score" style="text-decoration:none"><span style="font-family:'Bricolage Grotesque',sans-serif;font-weight:800;color:#0F172A;letter-spacing:-0.02em">padelnomics</span> Opportunity Score</a> of {{ opportunity_score | round(1) }}/100** scores investment potential — supply gaps, catchment reach, and sports culture as a demand proxy:{% if opportunity_score >= 65 and market_score < 50 %} limited competition meets strong location fundamentals{% elif opportunity_score >= 65 %} strong potential despite an already active market{% elif opportunity_score >= 40 %} solid potential as the market starts to fill in{% else %} the area is comparatively well-served; differentiation is the key lever{% endif %}.{% endif %}
The question investors actually need answered is: given current pricing, occupancy, and build costs, what does the return look like? The financial model below uses real {{ city_name }} market data to give you that answer.
@@ -213,7 +234,8 @@ For a detailed pricing breakdown with price ranges and venue comparisons, see th
| Venues | {{ padel_venue_count }} |
| Venues per 100K residents | {{ venues_per_100k | round(1) }} |
| <span style="font-family:'Bricolage Grotesque',sans-serif;font-weight:800;color:#0F172A;letter-spacing:-0.02em">padelnomics</span> Market Score | {{ market_score | round(1) }}/100 |
| Data Confidence | {{ (data_confidence * 100) | round(0) | int }}% |
{% if opportunity_score %}| <span style="font-family:'Bricolage Grotesque',sans-serif;font-weight:800;color:#0F172A;letter-spacing:-0.02em">padelnomics</span> Opportunity Score | {{ opportunity_score | round(1) }}/100 |
{% endif %}| Data Confidence | {{ (data_confidence * 100) | round(0) | int }}% |
## FAQ
@@ -253,6 +275,14 @@ Total investment depends on venue type (indoor vs outdoor), land costs, and loca
{{ city_name }}'s <span style="font-family:'Bricolage Grotesque',sans-serif;font-weight:800;color:#0F172A;letter-spacing:-0.02em">padelnomics</span> Market Score of {{ market_score | round(1) }}/100 reflects its ranking among tracked {{ country_name_en }} cities. See the [{{ country_name_en }} market overview](/{{ language }}/markets/{{ country_slug }}) for a full comparison across cities.
</details>
{% if opportunity_score %}
<details>
<summary>What is the difference between Market Score and Opportunity Score?</summary>
The **Market Score ({{ market_score | round(1) }}/100)** measures *market maturity*: population size, existing venue density, and data quality. A high score signals an established market with reliable pricing data — and typically more competition. The **Opportunity Score ({{ opportunity_score | round(1) }}/100)** inverts that logic: it scores *investment potential* based on supply gaps, distance to the nearest facility, and tennis infrastructure as a proxy for racket sport demand. High Opportunity Score with a low Market Score is the classic white-space signal. High on both means proven demand with open locations still available.
</details>
{% endif %}
<div style="background:#EFF6FF;border:1px solid #BFDBFE;border-radius:12px;padding:1rem 1.25rem;margin:1.5rem 0;">
Ready to run the numbers for {{ city_name }}? →
<a href="/{{ language }}/planner" style="font-weight:600;color:#1D4ED8;margin-left:0.25rem;">Build your business plan</a>