Guide • Marketing Profile

Use Marketing Profiles As A Safe Starting Shape For Landing Surfaces

Marketing profiles help first-time users generate a contract from a landing surface without starting from a blank schema, and help continuing users keep that surface coherent as it evolves.

Canonical contract source: contracts/surfaces.web.contract.json • This guide explains the user experience first and shows the current field names only where needed.

What A Marketing Profile Is

A marketing profile is a reusable starter pattern for landing surfaces. It gives the platform a known surface family to seed and validate against, so the first contract is more concrete than a blank JSON file.

It is optional, it starts warn-first, and it is meant to reduce ambiguity and drift. It is not a brand template, not a design-system replacement, and not a punitive style rule.

Product-wise, the profile exists to give users a familiar starting shape and a shared review language. Platform-wise, it gives the contract a reusable surface pattern the validator can understand.

First-Time Experience: Generating Your First Contract

  1. You start from a landing or marketing surface instead of a blank contract.
  2. The platform recognizes a common surface family and seeds a matching layout profile and typography profile.
  3. Your first contract gets a usable shape immediately, so you are not inventing hero rhythm, section spacing, and copy-role structure from scratch.
  4. Validation stays warn-first at the profile layer, which means the first run teaches you what the platform sees without blocking progress.
  5. If the seeded profile is close but not right, you can switch profiles or remove the profile rather than fighting hidden rules.

Current Contract Shape

{
  "marketingProfiles": {
    "layout": [
      { "id": "marketing-open-flow-text-compact" }
    ],
    "typography": [
      { "id": "marketing-mono" }
    ]
  },
  "surfaces": [
    {
      "id": "example-web",
      "layout": {
        "landingPattern": {
          "marketingLayoutProfile": "marketing-open-flow-text-compact",
          "marketingLayoutPolicy": "warn"
        }
      },
      "marketingTypographyProfile": "marketing-mono",
      "marketingTypographyPolicy": "warn"
    }
  ]
}

The user-facing concept is the profile. The current schema still carries separate severity switches, so the contract can say both which profile fits this surface and how strongly to enforce drift against it.

Today that means fields such as marketingLayoutProfile, marketingTypographyProfile, and warn-first settings like marketingLayoutPolicy or marketingTypographyPolicy. Those field names are implementation detail; the user experience should still read as “this surface uses a marketing profile.”

Ongoing Experience

  • Validation compares your live implementation against the chosen profile and flags drift in hero/container behavior, section spacing rhythm, and typography-role usage.
  • Warnings should help you decide whether to fix the page or change the declared profile. The goal is faster decisions, not more ceremony.
  • Bounded variation is expected. The profile should keep the surface family recognizable without freezing the implementation into a template.
  • When a surface evolves out of the marketing family, the right move is to change the profile, not silently accumulate one-off exceptions.

What Users Should Expect

First-time user

Expect a guided start, fewer blank-page decisions, and profile findings that explain what the platform is inferring from the surface.

Continuing user

Expect better consistency, lower review overhead, and clearer decisions about when to change implementation versus when to change the declared surface family.

Boundaries

  • Use a marketing profile for landing and marketing surfaces, not for app shells, workspaces, or operational tools.
  • A profile describes a reusable surface family. Severity still lives in separate warn/strict settings.
  • If the platform needs a new kind of reusable surface behavior, add a new profile family instead of stretching marketing until it means everything.

Next Context

surfaces.dev docs • guides