CivicTechTO / CivicTechTO/toronto-bids

Pre-2019 committee-decided large awards (266, ≥$500K, 2013-2018) with no captured bids — older tier of #164

Open
#167 2 comments 0 reactions 0 assignees View on GitHub
enhancement
Dominant language
Python
Stars
7
Forks
2
PR merge metrics
No merged PRs in 30d

Description

_From the #163 zero-bid accounting, after #165. The older-era analog of #164._

## The gap

**266 awarded solicitations, 2013-2018, each ≥$500K, still have zero captured bids — and their winning supplier is absent from every captured Bid Award Panel / Bid Committee agenda.** So unlike the recall tail (#166), a matching council item almost certainly does **not** exist in our corpus: these large awards never went to the Bid Award Panel.

## Why they're missing

Awards above the panel's delegation ceiling were decided by **Council or a Standing Committee** — even in the 2013-2018 era. The archive mines only BA/BD agendas (the 891 cached pages), so these never enter the bid corpus. This is exactly #164's mechanism, one era earlier and at a smaller dollar tier (≥$500K rather than the modern ≥$3M mega-awards).

## Suggested direction

Same as #164 (and best solved together): identify large pre-2019 awards with no captured bids and no panel agenda, locate their committee decision + staff report on legdocs (plain HTTP), and parse the bid table (a new parser; committee reports differ from BA agendas — validate against real reports). Some will be genuine emergency/sole-source (no bids by nature) and must be refused.

**Consider folding into #164** as "extend the committee bid-capture back to 2013" rather than a separate build — one committee-report source covers both tiers.

Related: #164 (modern mega-awards), #166 (recall tail), #163 (accounting).

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by reviewing #164, #166, and #163, then inspect the existing Bid Award/BA agenda capture and the 891 cached pages. Use plain HTTP against legdocs to locate pre-2019 Council or Standing Committee decisions and staff reports, and compare real committee reports with BA agendas before defining a parser. Done means captured bid tables for eligible awards, with emergency or sole-source cases explicitly refused, and a decision on folding this into #164.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
data-engineering
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.