Methods

How the indicators are built.

Release label

alpha

v0.2.0

Pipeline

observatory-batch-pipeline

Observed months

4

43,094 raw rows loaded

Suppressed regions

694

Region-month rows hidden under publication rules

Data source

Daylight uses aggregated data derived from online adult-services advertising and related digital market signals, normalizes it into a local warehouse, and publishes only monthly aggregate outputs.

Normalization

Rates, locations, age strings, image counts, service lists, and hashed advertiser identifiers are derived before metric computation.

Suppression

Thin region-month cells are suppressed according to configurable thresholds to reduce noise and limit misuse.

Limitations

Listing data is not transaction data, worker counts, or direct evidence of risk. All outputs should be interpreted as market signals with known uncertainty.

Pipeline stages

1

Ingest

Load current and archived SQLite sources into a rebuildable warehouse.

2

Normalize

Parse rates, service lists, dates, images, ages, and privacy-safe advertiser identifiers.

3

Aggregate

Compute monthly UK, regional, service, language, mobility, and concentration metrics.

4

QA

Check coverage, parse success, region counts, and suppression eligibility before publication.

5

Publish

Serve versioned aggregate JSON outputs to the public site and gated explorer layer.

Phase 1 indicators

Advertised Rate Index

Median standardized rates, especially 1-hour incall and outcall benchmarks.

Outcall Premium

Matched advertised differential between outcall and incall pricing within the same listing.

Market Volume Index

Distinct listings and advertiser counts after monthly deduplication.

Listing Persistence Index

Observed carry-over and exit signals across adjacent monthly snapshots.

Mobility / Multi-Location Index

Advertiser-level regional overlap measured via hashed repeated identifiers.

Concentration Index

Top-share and HHI-style measures of repeat-advertiser concentration.

Intimacy-Service Index

Share of listings advertising at least one configured companionate marker: GFE, French Kiss, or Dining.

Publication rules

Thin region-month cells are suppressed rather than published without caveat.

No raw advertiser identifiers or row-level listing records are exposed on the public site.

Indicator meaning is stated alongside each chart to reduce overinterpretation.

Current thresholds and coverage

Threshold configuration

region_metric_min_sample: 20

matched_premium_min_sample: 15

service_share_min_sample: 20

public_top_regions_limit: 12

Coverage snapshot

Listings in warehouse: 35,663

Rows with canonical region: 35,453

Rows with incall 1h parsed: 30,874

Rows with outcall 1h parsed: 16,590

Rows with hashed advertiser IDs: 35,309