Allocator Radar South Florida

How it works

From a board packet to a readiness tier

Each allocator gets one readiness tier. A tier is not a score or an opinion. It comes from the rules below, applied to approved signals. Every signal cites a public document and a page.

Built in 3 days by Andrew Gladki, Financial AI Engineer, and set to South Florida allocators only (Miami-Dade, Broward, Palm Beach and Monroe counties, plus the Treasure Coast (St. Lucie and Indian River)). About the project and its mission →
01 · Discover

Find the plans

A registry of public plans and the pages where each one posts agendas, minutes and reports. A person approves it before any crawling.

02 · Fetch

Collect politely

GET-only, allowlisted hosts, robots.txt honored, 10 seconds between requests to a host, and a stop at any bot wall.

03 · Read

Extract signals

A language model reads each page and proposes signals, each with an exact quote. Contact details are scrubbed first.

04 · Verify

Check every claim

The quote has to appear on the cited page. Dates come from the document. A lint rejects evaluative language.

05 · Rank

Set the tier

Fixed rules turn approved signals into a tier. Only a person's approval lets a signal into an export.

Readiness rules config/readiness_rules.yaml

TierWindowSignal types that set itMeaning
DEPLOYING 90 days SEARCH_OPENED (manager only)
SEARCH_SCHEDULED (manager only)
RFP_ISSUED (manager only)
FINALISTS_NAMED (manager only)
MANDATE_AWARDED (manager only)
A search or RFP is open (or scheduled on an agenda), finalists were named, or a mandate was awarded.
PREPARING 180 days MANDATE_AWARDED (manager only)
COMMITMENT_MADE
TARGET_ALLOCATION_CHANGED (increase only)
IPS_AMENDED
ASSET_LIABILITY_STUDY
PACING_PLAN_ADOPTED
CONSULTANT_CHANGED
MANAGER_ON_WATCH
MANAGER_TERMINATED
A mandate awarded or a commitment made, target allocation raised, IPS amended, asset-liability or pacing study adopted, consultant changed, or an incumbent placed on watch or terminated.
WATCHING—none of the above We fetched a new document in the last 120 days. No qualifying approved signal is in the window.
STALE120 dayscoverage No new document fetched for this allocator in 120 days. This shows where coverage is thin. It says nothing about the allocator.

Tiers are checked top to bottom, and the first match wins. The window is counted back from today, using the date printed on the source (the meeting, notice or filing date). The date we fetched the document is never used.

Which plans appear on the main table

A plan is listed only when our coverage of it is good enough to read: at least 3 documents fetched, at least one dated in the last 6 months, and its investment consultant identified from a cited document (config/main_table.yaml). Plans below that bar are on Coverage gaps, with the reason. Each plan's page also has a coverage checklist: 18 months of agendas and minutes, plus the latest IPS, quarterly report, actuarial valuation, audited financials and 112.664 disclosure.

Auto-approval

A pending signal is auto-approved only if all four checks pass. (a) It is not a termination, watch-list change or redemption; those always go to a person. (b) It was read from a parsed table, or its quote matches the cited page word for word. (c) Its date was printed in the source as a meeting, report or filing date. (d) Its summary passes the language lint. Auto-approved signals set tiers, but they are never exported until a person approves them (config/auto_approval.yaml).

The Wall

No contact details anywhere

No model has an email, phone, address or social-profile field. People appear only by name and title, as the public documents print them.

Scrubber first

All text is scrubbed before it reaches the language model, the search index or any table. Contact-shaped text becomes [REDACTED-CONTACT].

No outbound capability

The crawler sends GET and HEAD requests only, to an allowlist of hosts. The system cannot send email or messages, and it cannot submit forms.

Tested every night

Wall tests sweep every stored text column. A canary packet full of fake contact details goes through the pipeline, and none of it may be stored.

What counts