Skip to content

Vertical Ecosystem

A vertical is the central entity in Birdhouse. It represents an insurance product type — Household, Liability, Dental, Private Health, and so on. Nearly everything else in the system points back to a vertical.

A vertical definition in Strapi includes:

Field Purpose Example
name URL-friendly slug household, liability, dental
humanReadableName Display name “Household Insurance”
insuranceType Enum value used in code HOUSEHOLD, LIABILITY, DENTAL
regions Which countries/regions this product is available in ['DE']
Stripe IDs References to Stripe products/prices for billing Stripe product IDs
image Product icon/illustration Used in cards, headers, navigation
colorCode Brand color for this vertical Used for progress bars, accents
content Marketing text: title, excerpt, description, label Shown on product cards, landing pages
planMapping Maps internal plan codes to display names { BASIC: 'Basic', PREMIUM: 'Premium' }
addonMapping Maps internal add-on codes to display names { GLASS: 'Glass Coverage' }
policyModalSections What sections to show in the policy details modal Coverage details, documents, contact
policyModalButtons Action buttons in the policy modal “Download policy”, “File a claim”
flowchart TD
    V["<b>Vertical</b><br/>e.g., HOUSEHOLD"]

    Q["<b>Questionnaire</b><br/>Signup flow"]
    QP["<b>Quote-Price</b><br/>Pricing engine"]
    PP["<b>Policy-Page</b><br/>Policy details page"]
    PC["<b>Policy-Coverage</b><br/>Coverage summary"]
    D["<b>Documents</b><br/>Policy documents,<br/>terms & conditions"]
    QPage["<b>Quote-Page</b><br/>Pricing UI"]

    Q -->|"metadata.vertical"| V
    QP -->|"metadata.vertical"| V
    PP -->|"vertical link"| V
    PC -->|"vertical link"| V
    D -->|"vertical link"| V
    Q -->|"quote question"| QPage

A fully configured vertical typically has:

Component Required? Purpose
Vertical Yes The product definition itself
Questionnaire Yes The signup/purchase flow
Quote-Price Yes How to calculate premiums
Quote-Page Recommended UI for the pricing screen (can use defaults)
Policy-Page Recommended What users see after purchasing
Policy-Coverage Optional Detailed coverage breakdown
Documents Optional Downloadable terms, policy documents

The vertical sync script generates TypeScript lookup maps that the app uses at runtime. These include:

Generated mapping What it provides
InsuranceTypes enum Type-safe enum of all vertical codes (HOUSEHOLD, DENTAL, etc.)
Title mappings insuranceType → display title
Excerpt mappings insuranceType → short description
Description mappings insuranceType → full description
Banner color mappings insuranceType → hex color
Image mappings insuranceType → image asset reference
Plan mappings insuranceType → { planCode: displayName }

These generated files ensure the app always has consistent, up-to-date product information without runtime API calls.

When launching a new insurance product, you need to create several entities in Strapi and then sync them. The minimum set is:

  1. Create the Vertical in Strapi with all required fields (name, insuranceType, regions, Stripe IDs, content, plan/addon mappings)
  2. Create a Questionnaire linked to the vertical — define the questions, rules, and flow
  3. Create a Quote-Price linked to the vertical — define the pricing calculations
  4. Optionally create a Quote-Page — customize the pricing screen UI
  5. Optionally create Policy-Page and documents — configure what users see after purchasing
  6. Run vertical sync to generate the TypeScript lookup maps
  7. Run questionnaire sync to generate the questionnaire TypeScript file
  8. Add app-level wiring — route configuration, feature flags, any custom components

The vertical is the organizing principle of the entire system:

  • Navigation: The app’s product listing, recommendation flows, and deep links all key off verticals
  • Pricing: Quote-Price entities are found by matching vertical, so the right pricing engine loads automatically
  • Branding: Colors, images, and labels come from the vertical, ensuring consistent visual identity
  • Policy management: After purchase, the policy details screen knows what to show based on the vertical
  • Analytics: Events and tracking are segmented by vertical

If you think of Birdhouse as a factory, the vertical is the product specification — everything else (the questionnaire, pricing, quote page, policies) is the machinery configured to build that specific product.