Allocator Radar South Florida

About this project

Allocator Radar was built in 3 days by Andrew Gladki, Financial AI Engineer.

One question drives it: which South Florida institutional allocators are getting ready to put capital to work, and where does the public record say so? Every answer is a dated signal with a link to the page it came from.

Andrew Gladki · Financial AI Engineer · communication and sales

3 days
from empty repository to working product
79
South Florida plans in scope
939
public documents read for them
218
cited signals behind the tiers

My mission

I want to work on the institutional business development team of a large financial institution. Allocator Radar is how I'd like to introduce myself: a working tool, not a slide.

Institutional business development depends on timing. Reaching a pension plan the month its board approves an asset-liability study is very different from reaching it a year after the mandate has been awarded. The signals are public, but they are buried in hundreds of board packets, minutes and investment reports, and nobody reads them all. I built a system that does. It reads every page, records what changed and when, and cites its source, so a business development team can spend its time on the conversations.

The project shows the four things I bring to that team: AI engineering, data analytics, an understanding of how institutional money moves, and the ability to take a complex, open-ended problem to an accurate, working solution quickly.

I am a Financial AI Engineer with very capable communication and sales ability. I can build the system, and I can also sit across the table from an allocator, explain what it found, and turn it into a relationship. In business development, that combination is the point: the data finds the moment, and the conversation wins it.

What it demonstrates

AI engineering

A language model reads board documents and proposes structured signals. Code checks every one before it can count.

  • Each extracted quote is checked against the page text
  • Strict JSON schemas, plus a lint that rejects evaluative language
  • Model-based contact scrubber, tested every night with a canary
  • Deterministic table parsers where a model isn't needed

Data analytics

Thousands of unstructured PDFs become one queryable dataset with provenance on every row.

  • 44,047 pages parsed statewide, OCR for scans
  • 7,527 facts and holdings rows, each traced to a page
  • A coverage score and gap taxonomy for each plan
  • Firm-name resolution and a strategy crosswalk

Financial understanding

The signal types follow how a public plan actually moves money, from studying its liabilities to awarding a mandate.

  • Asset-liability study → target change → IPS amendment
  • Consultant search → RFP → finalists → award
  • Consultants, actuaries, custodians and assumed returns
  • Florida 112.664 disclosures and SBA investment reports

Fast and accurate

Three days from a written brief to a working product, with accuracy built in rather than added at the end.

  • No invented numbers: gaps are labeled as gaps
  • A person approves anything before it can be exported
  • Each tier is a rule in config, not an opinion
  • Unit and Wall test suites, with the Wall rerun every night

How the 3 days went

Day 1

Foundation and the Wall

  • Registry of plans and the public pages where each one posts documents
  • A polite crawler: allowlist, robots.txt, GET-only, encrypted document store
  • The Wall: no contact fields anywhere, a scrubber, and nightly canary tests
Day 2

Reading and ranking

  • Model extraction with quote-on-page and summary checks
  • Readiness tiers, a review queue and tiered auto-approval
  • A deterministic parser for the State Board of Administration's investment reports
Day 3

Scale and delivery

  • Discovery across Florida: 251 plans registered, 1,875 documents held
  • Coverage-gap taxonomy and scheduled-search signals
  • This interface, scoped to South Florida

Why South Florida only

The app is deliberately set to South Florida: Miami-Dade, Broward, Palm Beach and Monroe counties, plus the Treasure Coast (St. Lucie and Indian River). That is 79 plans, 22 of which meet the coverage bar for the main table. Today 2 are deploying and 2 are preparing.

The engine underneath is not regional. It already holds 251 plans statewide. Widening the view is one line in config/scope.yaml, and adding another state means a new registry, not a new system.

Built with

Application
Python 3.12, FastAPI, Jinja and HTMX. Server-rendered, one stylesheet, no build step.
Data
DuckDB, an encrypted raw-document store, and a page-level search index
Documents
pdfplumber, with local OCR for scanned pages and a headless browser for sites that render with JavaScript
Language model
Claude, behind a single adapter that has no tools and returns schema-checked JSON
Privacy
Regex plus a named-entity scrubber, nightly tests over every stored text column, and a dependency allowlist
Want to see how a tier is decided? Every rule is published. How it works See the allocators