Have your agent read this site

Destination Pulse records leadership changes at US destination marketing organizations (DMOs and CVBs) and publishes them as flat JSON. This page is the contract: what the data claims, what it does not, and prompts you can paste into whatever assistant you use.

This page as markdown: /for-agents.md

What this site knows, and what it doesn't

The data makes two kinds of claims, and they are not equal.

Sourced events

A person named to a seat, or departing one, each with a source link (source_url). Curated before publishing.

Detected roster changes

A machine diff of an organization's official team page between captures. Nobody has confirmed them; verify against the linked team page before acting on one.

29 organizations under weekly roster monitoring

The collector visits each monitored team page on Mondays at 11:00 UTC; a capture that changes a roster triggers a site rebuild. Sourced events are added as announcements surface. A week with no changes leaves every file exactly as it was — judge freshness by the fields below, not by when you fetched. Recorded events span Feb 2026 to Oct 1, 2026.

The contract

schemaVersion 1

The dataset ("Destination Pulse leadership changes and rosters") lives at two stable URLs. Neither URL nor any field moves or changes meaning without a schemaVersion bump.

https://destinationpulse.mandalivia.com/data/events.json

schemaVersion
Integer, currently 1. The stability promise: URLs and fields do not move or change meaning without this number going up.
generatedAt
The newest seen_at across all events — the date this dataset last changed. Not a build timestamp, and not a capture date: a rebuild that adds no events leaves it alone.
events[]
Every recorded leadership event, one object each.
id
Stable unique identifier for the event. A new id is a new change; an id you have seen carries the same facts it did before.
type
"leadership_change" — a person named to a seat — or "leadership_departure" — a person leaving one. Additive: new signals arrive as new types, never by changing an existing field.
date
Effective date of the role, YYYY-MM-DD or YYYY-MM — the precision the source reported, never an invented day. For date arithmetic, treat YYYY-MM as the first of that month.
dmo_slug
Organization key. Its pages: /org/{dmo_slug}/ and /org/{dmo_slug}.md.
dmo_name
Organization display name.
person_slug
Person key. Its pages: /people/{person_slug}/ and /people/{person_slug}.md.
person_name
Person display name.
new_title
The role taken, worded as the source words it. Present on leadership_change events only.
last_title
The seat vacated, worded as the source words it. Present on leadership_departure events only — a departure never claims a seat taken.
from.org
Previous organization, when found. Absent means not found, not none. Always empty on a departure.
from.title
Previous title, when found.
source_url
The source backing the event: a dated publication for announced events, the official page the change was observed on for detected ones. Every event has one.
seen_at
The date the event entered this dataset, YYYY-MM-DD.
provenance
"announced" — a dated publication is the source — or "detected" — the weekly scan caught the change on the org's own page. The tier of claim you are holding.

https://destinationpulse.mandalivia.com/data/rosters.json

schemaVersion
Integer, currently 1. Same stability promise as the events file.
generatedAt
When the collector last wrote this manifest — a capture timestamp, not a data-change timestamp. It moves when team pages are captured, whether or not any roster changed.
count
Number of organizations with a captured roster.
rosters[]
One snapshot per monitored organization.
rosters[].orgSlug
Organization key, matching dmo_slug in the events file.
rosters[].capturedAt
When this organization’s team page was captured. Judge roster freshness by this, per org.
rosters[].sourceUrl
The official team page the snapshot was captured from.
rosters[].sourceHash
Content hash of the capture, for change detection.
rosters[].people[]
Everyone listed on the team page as captured: personKey, sourceName, titles[], photoUrl, email, phone, section. Contact fields hold what the page publishes, or null; section is the page heading the person is listed under, or null.
rosters[].recentChanges[]
Machine-detected diffs between captures: added[], removed[], roleChanges[], each entry dated by its capturedAt. Unconfirmed — verify against the sourceUrl before acting.

Reading freshness

The two generatedAt fields mean different things. In the events file it is the newest seen_at — the date the dataset last changed. In the rosters file it is when team pages were last captured, and each capturedAt dates its own org's capture. An agent judging "is this current?" must read the one that matches the question: data recency from the events file, capture recency from the rosters file.

Dates and the 90-day window

Event dates come at the precision the source reported: YYYY-MM-DD or YYYY-MM, never an invented day. A new leader tends to re-evaluate vendors in their first 90 days, so the useful derived claim is: the window opens on the event's date (treat YYYY-MM as the first of that month) and closes 90 days later. Compute it against your own clock at read time — the published files never state where in the window an event sits, because that would go stale between rebuilds.

License

The dataset is © Mandalivia and free to access and use, including by automated agents: fetch it, cache it, and serve what it says to your users, with attribution to Destination Pulse — a link where the medium allows.

Republishing the dataset itself, redistributing it in bulk, reselling it, or building a competing dataset from it requires permission. These terms may change for future data; data already published stays under the terms it shipped with.

Prompts to paste

Works in any assistant

The unit here is a prompt, not documentation. Each block works as-is in any assistant that can fetch a URL.

One-shot weekly summary

Paste this into a fresh session for a read of the whole feed.

Fetch https://destinationpulse.mandalivia.com/data/events.json — field meanings are documented at
https://destinationpulse.mandalivia.com/for-agents.md.

Summarize the recorded leadership changes at US destination
marketing organizations: for each event, the person, the new
title, the organization, the effective date, and the source
link. Treat a YYYY-MM date as the first of that month. Flag
events whose effective date falls within the last 90 days —
a new leader tends to re-evaluate vendors in that window.
State the dataset's generatedAt so I know when it last changed.

Recurring weekly check

If your assistant runs scheduled tasks, hand it this once; otherwise paste it at the start of each week.

Every Monday, fetch https://destinationpulse.mandalivia.com/data/events.json
(field meanings: https://destinationpulse.mandalivia.com/for-agents.md).

Compare against the event ids you reported last time — ids are
stable, so a new id is a new change. Report only the new
events: person, new title, organization, effective date, and
the source link. If nothing is new, say so and stop.

Cross-reference your accounts

The reason to watch the feed at all: a fresh leader at an account is a vendor-review window.

Here is my account list:
[paste your organizations, one per line]

Fetch https://destinationpulse.mandalivia.com/data/events.json
(field meanings: https://destinationpulse.mandalivia.com/for-agents.md).

Match events to my accounts by organization name, tolerating
small naming differences. For each account with a leadership
change effective within the last 90 days, draft a
three-sentence outreach note to the new leader that names the
role and effective date and cites the source link. List the
accounts with no recorded change separately — no change on
record is not the same as no change.

Watch one DMO

Every organization page has a markdown twin at /org/{slug}.md; the index of all pages is at /llms.txt.

Fetch https://destinationpulse.mandalivia.com/org/visit-california.md
(swap the slug for the organization you care about; the index
of all pages is at https://destinationpulse.mandalivia.com/llms.txt).

Report the leadership changes and any detected roster changes.
Detected roster changes are a machine diff of the official
team page — verify against the linked source before acting on
one.