# Data dictionary

Two tables. Both are exported as CSV (UTF-8, comma-separated, header row) and as JSON (array of objects with the same field names). Money is in US dollars as bid, with no inflation or rate-era adjustment; dates are ISO 8601 (YYYY-MM-DD).

## 1. `florida-marine-construction-bid-prices`

One row per (letting, pay item, bidder). A 6-bidder letting with 3 marine items produces 18 rows.

| Field | Type | Meaning |
|---|---|---|
| `source` | text | `FDOT central office` (Tallahassee lettings, T-contracts) or `FDOT D<n> district letting` (district E-contracts) |
| `letting` | text | FDOT letting code as printed on the tabulation (e.g. `CT200429`, `04260710`) |
| `letting_date` | date | Bid opening date |
| `contract` | text | FDOT contract number (e.g. `E4Y47`, `T1751`) |
| `district` | text | FDOT district as printed (`District 4`) |
| `counties` | text | County or counties as printed |
| `contract_desc` | text | Contract description as printed on the tabulation |
| `line_no` | text | Line number of the pay item within the tabulation (4 digits, preserves leading zeros) |
| `item_code` | text | FDOT pay item number, hyphenated as printed (`0751-53-3`, `0455133-2`) |
| `item_desc` | text | Pay item description as printed, continuation lines joined with spaces |
| `category` | text | Our classification of the item: `floating_dock`, `gangway`, `fixed_platform`, `boat_ramp`, `sheet_pile`, `bulkhead`, `fender_system`, `seawall`, `boardwalk`, `pier`, `marine_other` |
| `qty` | number | Plan quantity as printed |
| `unit` | text | Unit of measure as printed (`SF`, `LF`, `EA`, `LS`, `CY`, ...) |
| `lump_sum` | boolean | `true` when the tabulation marks the item as bid lump sum |
| `bidder_rank` | integer | Bidder's rank on total bid for this letting (1 = low bidder) |
| `bidder` | text | Bidder's name as printed on the Vendor Ranking page |
| `bidder_total_bid_usd` | number | Bidder's total bid for the whole contract |
| `n_bidders` | integer | Number of bidders whose price for this item was captured |
| `unit_price_usd` | number | This bidder's unit price for this item |
| `ext_amount_usd` | number | This bidder's extended amount (unit price x quantity) as printed |
| `pdf_url` | url | Direct link to FDOT's published tabulation PDF for this letting |

## 2. `fdot-bid-tabulations-index`

One row per itemized bid tabulation harvested.

| Field | Type | Meaning |
|---|---|---|
| `source` | text | As above |
| `district` | text | FDOT district |
| `counties` | text | County or counties as printed |
| `contract` | text | FDOT contract number |
| `letting` | text | FDOT letting code |
| `letting_date` | date | Bid opening date |
| `contract_desc` | text | Contract description as printed |
| `pages` | integer | Page count of the tabulation PDF |
| `pdf_file` | text | File name of the district tabulation as published by FDOT (blank for central-office rows) |
| `pdf_url` | url | Direct link to FDOT's published PDF (central office links are on FDOT's Cerberus file share and open in the browser; district links are on FDOT's public blob storage). Blank where the tabulation is a scanned notice with no readable letting date, so the URL could not be reconstructed and verified |
| `has_marine_items` | boolean | `true` when at least one marine or marine-adjacent pay item was found in the tabulation |

## Category rules

Categories are assigned from the pay item description in this order: floating dock, gangway, fixed platform, boat ramp, sheet pile, bulkhead, fender, seawall, boardwalk, pier, then any remaining 751-series item as `marine_other`. Roadway items that merely sit near a pier (for example "SR 93 from north of fishing pier") are excluded because the item description itself does not match.

## Known limitations

- Prices are as bid, not as awarded or as built, and are not adjusted for date or material-price era. Aluminum and steel moved substantially between 2020 and 2026; compare within a year before comparing across years.
- The 751-series floating dock, gangway and fixed platform items appear in exactly one FDOT letting in the harvest (E4Y47, July 2026). Floating dock work mostly bids through county, city, port and FWC boat-ramp programs, not through the DOT; see the notes in the README.
- Vendor names are as printed by FDOT, including inconsistencies in punctuation between lettings.
- Unit prices include penny bids ($0.01) and other unbalanced bids: on public lettings a bidder may load money onto some items and strip it from others. Medians are more robust than minimums; extended amounts and the bidder's total bid are provided so unbalanced bids can be identified.
- "Bulkhead" items are FDOT 400/415-series concrete bulkhead work (walls at bridge approaches and causeways, frequently but not always waterfront). Fender systems are bridge fender systems that protect piers from vessels; highway crash attenuators are excluded.
- Where a tabulation lists more bidders than fit on one page block, prices are merged across blocks by line number. Rows with fewer bidders than the letting's Vendor Ranking page are possible when a bidder was non-responsive and omitted from the tabulation.
