Geo Marketing Audience Handoff

Summary

The geo-to-marketing handoff is deliberately narrow. Geo produces a saved selection and candidate context. Marketing imports that selection as an audience source, then applies campaign, suppression, exposure, variant, review, delivery, and attribution rules through normal marketing paths.

Reader Question

Where does geo stop and marketing begin when map-selected opportunity becomes a campaign audience?

Surface Or Workflow

The operator starts in geo analysis, saves a selection, then chooses to create or update a marketing audience. From that point, marketing audience surfaces own preview, campaign binding, and materialization. Geo remains the source of selection context.

Lifecycle

Geo persists the saved selection. The UI calls the marketing audience import endpoint with the saved selection reference. Marketing creates an audience draft whose definition records source_type = "geo_selection". At run time, marketing asks geo for candidate batches and then proceeds through normal suppression, exposure, variant assignment, member creation, review, delivery, and attribution.

Child Threads

Implementation Boundaries

services/geo/selections owns saved selections and candidate resolution. services/marketing/authoring/geo_audience_import owns the import into marketing authoring state. services/marketing/runtime/audience and services/marketing/runtime/geo own run-time materialization of geo-backed audiences.

Tradeoffs

The boundary forces an extra reference and import step, but it keeps geo reusable beyond marketing and keeps marketing policy from leaking into source discovery and scoring.

Visual

The current visual is a graph neighborhood. The intended visual is a handoff sequence: saved geo selection, marketing import, audience definition, runtime candidate resolution, suppression/materialization, and future aggregate outcome feedback.

Source Evidence

  • services/geo/selections
  • services/marketing/authoring/geo_audience_import
  • services/marketing/runtime/audience
  • services/marketing/runtime/geo
  • app/api/marketing/audiences
  • app/web/app/marketing/audiences
  • tests/marketing/test_geo_selection_audience_source.py
  • tests/geo/test_marketing_outcome_overlay_contract.py