Methodology
How Think Tank Calendar finds events, what it does to them, how often it refreshes, what it leaves out, and how to get something fixed. This page describes the system as it runs today.
Sources
The calendar is built from the announcements think tanks already publish: newsletters, event invitations and programme emails, delivered to an address that subscribes to them. Nothing is added by hand from a press list.
Inclusion is never paid for: no organization can buy its way onto the calendar, and none can pay to keep a rival off it. Promotion is a different thing and is sold — a featured listing, and the Org Pro plan, buy an event more prominence, never a place. Anything promoted is labelled as such where it appears.
Events currently listed here come from 331 organizations. Every entry links back to the organizer's own page, which stays the authority on its own event — if a detail here disagrees with the organizer, the organizer is right.
How events are extracted
Each email is stored, then read by a language model (OpenAI's gpt-5-mini) that returns a fixed set of fields: title, start and end, timezone, format, category, location, registration link, cost, a short description, topic and region tags, and a confidence score between 0 and 1. The model reads the email and nothing else — it is not asked to research the event or to fill gaps from memory.
Deterministic code takes over from there. The format and category are coerced to the values the database allows; topic and region tags are kept only when they match our canonical list of 31 topic and region tags — the same ones the topic pages use — and anything else is dropped; the registration link is followed through the newsletter's redirect to the address it actually points at. When an announcement carries no link at all, we look for the event's own page; if we find none, the entry simply has no registration link.
Events are matched to an organization by the sending domain and by the registration link's host. A sender we cannot match to a known organization opens an item in our internal queue instead of quietly inventing one, which is why some events show the sender's name without linking to an organization page.
Duplicates are removed in layers: an exact repeat of a title we already hold is dropped on arrival, and a rules pass then compares organizer, date, registration link and title similarity. Matches the rules are certain about are merged; the rest go to a model for a judgement, and anything still uncertain is left in place and queued for a person.
Refresh
Announcements are processed as they arrive — the mailbox writes each message to storage, which triggers extraction within a minute or two. There is no nightly batch that events have to wait for.
The deduplication pass runs twice a day (09:00 and 21:00 UTC), so events ingested in the morning do not sit next to their duplicates until the following day. The Policy Week Ahead page and the public feeds are rebuilt at most once an hour; topic, organization and event pages are built fresh on every request.
Human review
Be clear about this: most events are published automatically, and no editor reads every event before it appears. What exists instead is a set of checks that route the doubtful cases to people.
An extraction the model was unsure about — a confidence score below 0.7 — is flagged for review. A sender we cannot match to an organization, a suspected duplicate the rules cannot settle, and a handful of similar conditions open an item in an internal exception queue that we work through.
An organization that claims its page can edit its own events directly — title, time, description, location and links — and those edits are live immediately, with no approval step. Every such edit is checked automatically within 15 minutes: a change that fails a deterministic check (an end before its start, a link on a host that is not the organizer's) is reverted and queued, and a change that a model judge flags as suspicious is queued for a person while staying live.
Timezone policy
Times are stored in UTC and shown in the event's own timezone, with the abbreviation that applies on that date — so an event in July reads EDT and the same series in January reads EST. The exception is the Policy Week Ahead, which lists every time in US Eastern so one week can be read down a single column. Server-rendered pages never use the reader's timezone, so what a crawler sees is what a person sees.
A record marked date-only is shown as a date, never as an invented midnight. When an announcement states no timezone at all — common for online events — the time is recorded as UTC and the assumption is noted on the record rather than hidden.
What we exclude
Not everything a think tank sends is an event. We leave out research reports, papers and article announcements; editorials, press releases and blog posts; purely informational or administrative email; and anything with no date and time for a live gathering, including recordings and on-demand video.
We do not exclude events because they cost money or are open only to members. Where an announcement states a cost, it appears on the event page; where it does not, we say nothing about price rather than implying the event is free.
Corrections
If something here is wrong — a time, a title, an event that moved, an event attributed to the wrong organization — tell us and we will fix it: contact@thinktankcalendar.com. Corrections are free and always will be.
Organizations can also take over their own listing: every organization page carries a “Claim this organization” button, and once a claim is approved its members edit their own events themselves. See for organizations for what that involves, or the FAQs for the shorter answers.