# 2025 Changelog

{% updates format="full" %}
{% update date="2025-11-28" tags="enhancement,data-quality" %}

## Retail Predicted Impact Patterns - US Holidays & Observances

Predicted Impact Patterns for the Retail industry have been updated for US public holidays, observances, and school holidays using data-driven analysis of real retail demand data. The updated patterns deliver absolute MAPE improvements of 0.69–1.02 percentage points compared to the previous patterns - a meaningful improvement for customers in grocery, pharmacy, and general merchandise retail.
{% endupdate %}

{% update date="2025-10-10" tags="enhancement,beam,webapp" %}

## Beam Edit - WebApp

Beam analyses can now be edited after creation. You can update the name, location, industry, unit, labels, rank settings, and external ID of an existing analysis without needing to delete and recreate it. Available now in the WebApp - has always been available in the API.
{% endupdate %}

{% update date="2025-10-10" tags="enhancement,python-sdk,saved-locations" %}

## Python SDK - Saved Locations Support

The Python SDK now includes full Saved Locations support, including polygon geometries, Predicted Radius, and the `external_id` field. References to Saved Locations in Events API, Features API, and Beam SDK modules have also been updated.
{% endupdate %}

{% update date="2025-10-10" tags="new-feature,developer-tools" %}

## OpenAPI Specifications Published

Machine-readable OpenAPI specifications are now available for all PredictHQ APIs: Events API, Features API, Beam, Saved Locations, Forecasts API, Suggested Radius, and Places. Specs are SwaggerUI-compatible and published to the [PredictHQ public GitHub repo](http://github.com/predicthq/api-specs). Use them to generate client libraries, power IDE tooling, or integrate with AI-assisted development workflows.
{% endupdate %}

{% update date="2025-09-16" tags="enhancement,data-quality" %}

## School Holiday Deduplication

A significant improvement to school holiday data quality: the false negative rate for school holiday deduplication has been reduced from 53% to under 1%. Previously, predicted school holiday events were not correctly matched to active events when start dates differed by more than a few days. The revised model now links predicted and active events within a 3-month window, resulting in cleaner school holiday data across all markets.
{% endupdate %}

{% update date="2025-09-02" tags="enhancement,forecasts-api,saved-locations" %}

## Forecasts API - Polygon Saved Location Support

The Forecasts API now supports polygon-based Saved Locations as the location input for forecast models. Customers using custom polygon catchment areas can now use the same location definitions consistently across Events API, Features API, Beam, and Forecasts API.
{% endupdate %}

{% update date="2025-08-29" tags="new-feature,beam,features-api" %}

## Beam Relevancy - Features API Integration

You can now pass a Beam `analysis_id` directly to the Features API to automatically apply the correct location, radius, rank filters, and relevant categories from that analysis. This removes the need to manually reconstruct analysis parameters when querying the Features API. Group Analyses are also supported. See the Features API docs for the `beam.analysis_id` parameter.
{% endupdate %}

{% update date="2025-07-10" tags="enhancement,data-quality" %}

## Retail Predicted Impact Patterns - Attendance-Based Events

Predicted Impact Patterns for the Retail industry have been rebuilt for attendance-based events - concerts, sports, conferences, expos, festivals, and performing arts - using data-driven analysis of real retail demand data. The updated patterns deliver a 5.2% mean relative MAPE improvement across retail analyses, with 86% of analyses showing positive improvement.
{% endupdate %}

{% update date="2025-07-10" tags="new-feature,features-api" %}

## Local Rank Filter in Features API

The Features API now supports filtering by Local Rank (`local_rank.*`) in addition to PHQ Rank. Local Rank adjusts event significance based on the population density of the surrounding area, making it more appropriate for customers operating across locations with highly variable local contexts — such as a mix of urban and regional stores. This filter is available for `phq_attendance`, `phq_spend`, `phq_viewership`, and `phq_impact` feature families.
{% endupdate %}

{% update date="2025-07-10" tags="new-feature,features-api" %}

## PHQ Impact Features for Holidays & Academic Events

New `phq_impact_*` feature families are now available in the Features API for Public Holidays, Observances, School Holidays, and Academic events. These categories previously only had `phq_rank`-based features. The new impact features provide a demand-weighted signal that is more directly usable in forecasting models, reducing the need to manually engineer features from rank values.
{% endupdate %}

{% update date="2025-04-25" tags="new-api,forecasts-api" %}

## Forecasts API - General Availability

The Forecasts API is now generally available. It delivers event-driven demand forecasts directly via API, without requiring customers to build and maintain their own forecasting models. Key capabilities:

* Create and train forecast models against your own historical demand data
* Retrieve daily-level forecasts enriched with PHQ event features
* Access `phq_explainability` outputs to understand which events are driving forecast changes
* Compare against a baseline to measure the MAPE improvement attributable to PredictHQ data

See the [Forecasts API documentation](/api/forecasts/overview.md) to get started.
{% endupdate %}

{% update date="2025-04-25" tags="new-feature,saved-locations" %}

## Saved Locations - Polygon Support

Saved Locations now support GeoJSON polygon geometries (`Polygon`, `MultiPolygon`, `LineString`, `MultiLineString`) in addition to point-and-radius. Custom polygon areas propagate through Events API, Features API, Beam, and Forecasts API. The `external_id` field has been added (replacing the deprecated `location_code`). See the [Saved Locations docs](/api/saved-locations/create-a-saved-location.md) for the updated schema.
{% endupdate %}

{% update date="2025-03-14" tags="enhancement,data-quality" %}

## Sports Attendance Model Retrained

The attendance model used to calculate PHQ Rank and attendance signals for sports events has been fully retrained. The previous model dated from 2019. The retrained model covers Basketball, Ice Hockey, Baseball, American Football, Rugby, Soccer, and Volleyball, and delivers 16–58% reduction in mean absolute error across sport types. Approximately 950,000 events from 2022 onwards have been republished with updated attendance and rank values.
{% endupdate %}

{% update date="2025-03-14" tags="enhancement,features-api" %}

## Predicted Events Included in Features API by Default

Events with a confirmed date but unconfirmed time (status: `predicted`) are now included in Features API results by default. Previously these events were excluded, which resulted in incomplete feature coverage - particularly for events announced well in advance. A new `predicted_events.exclude` parameter is available if you want to opt out. Approximately 72,000 events are affected.
{% endupdate %}

{% update date="2025-03-14" tags="new-feature,beam,events-api" %}

## Beam Analysis ID Filtering in Events API

You can now filter Events API results by `beam.analysis_id` or `beam.group_id`. The API automatically applies the location, radius, rank, and category parameters from the specified analysis — removing the need to reconstruct these manually. The Python SDK and tech docs have been updated.
{% endupdate %}

{% update date="2025-03-14" tags="enhancement,events-api,features-api,beam" %}

## Local Rank on All Events

Local Rank is now calculated and applied to every public event in the platform. Previously, Local Rank was missing for some event types. Events where population-adjusted ranking is not meaningful now use PHQ Rank as their Local Rank value. Historical events have been backfilled. This ensures consistent Local Rank availability across all API queries and Beam analyses.
{% endupdate %}

{% update date="2025-01-24" tags="enhancement,beam" %}

## Beam Best Practice Improvements

Several usability improvements to Beam: rank and radius fields are now optional when creating an analysis (the API defaults to Suggested Radius and appropriate rank settings for the selected industry). Readiness checks now validate whether best-practice settings for industry, rank, and radius are in use. Analysis search has been improved for analyses with underscore-separated names.
{% endupdate %}

{% update date="2025-01-24" tags="new-feature,beam" %}

## Beam Local Rank Support

Beam analyses now support Local Rank as the default rank type for new analyses. The `rank.*` field is now optional - Beam defaults to appropriate rank settings per industry. Suggested Radius has been updated to support all product industries. A toggle between Local Rank and PHQ Rank is available in the WebApp.
{% endupdate %}

{% update date="2025-01-24" tags="new-feature,python-sdk,beam" %}

## Beam Support in Python SDK

The Python SDK now covers the full Beam API surface: analyses CRUD, demand data upload, analysis refresh, events search, correlation, feature importance, value quantification, analysis groups, and dataframe utilities. The `beam.*` feature family is also available via the Features API SDK module.
{% endupdate %}

{% update date="2025-01-24" tags="enhancement,beam" %}

## Beam Demand Data Quality Checks

Beam now performs quality checks on uploaded demand data, including detection of constant value sequences in time series. These checks help identify data issues before they affect Feature Importance results and forecast accuracy.
{% endupdate %}
{% endupdates %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.predicthq.com/changelog/2025.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
