Skip to content

0025 — Gemini 3.1 Flash-Lite, called on the global endpoint

Status: accepted (for V2; supersedes 0009)

ADR-0009 chose Gemini 2.5 Flash-Lite to avoid a retiring family. The 2.5 family now retires in turn (shutdown 2026-10-20), so its own argument applies to it. The reasoning is unchanged — extraction and scoring are simple structured tasks, so the cheapest capable tier wins — and only the id moves: gemini-3.1-flash-lite.

The model has no regional endpoint. One generateContent call per endpoint, 2026-08-15:

Endpoint Result
global 200, modelVersion: gemini-3.1-flash-lite
northamerica-northeast2 400 FAILED_PRECONDITION
northamerica-northeast1 404 NOT_FOUND
us-central1 404 NOT_FOUND

No foundational Gemini model runs natively in northamerica-northeast2, the original warehouse location, and Google's in-region Canadian processing (northamerica-northeast1) does not serve this model either — so the choice was between the global endpoint and no model at all. Global is acceptable: the pipeline reads public job postings and has no residency requirement.

BigQuery's supported endpoints are not Vertex's, and that is the practical constraint. us-central1 returns 404 for this model at the raw publisher endpoint, yet AI.GENERATE reaches it from a us-central1 dataset — BigQuery resolves through its own path against its own allowlist. Probed by calling AI.GENERATE with each endpoint, 2026-08-16:

Endpoint BigQuery
gemini-3.1-flash-lite works — the newest flash-lite it accepts
gemini-3.5-flash works (newer, but the flash tier)
gemini-3.5-flash-lite Unsupported endpoint
gemini-3.1-flash Unsupported endpoint

The allowlist is non-contiguous, so "newest available on Vertex" is the wrong question. Probe BigQuery directly before changing scoring_endpoint, and prefer an explicit version over the gemini-flash-lite-latest alias, which resolves but changes the model under a column of scores that claims to be comparable.

First backfill, measured 2026-08-16 (1,742 distinct posting texts):

Extraction 1,742/1,742 succeeded, 200s
Scoring 1,742 rows, 203s
requirement_text 570 chars average, against 6,854 for the full posting — a 92% trim
Second incremental run 0 rows, confirming the content_hash guard
BigQuery compute, all AI jobs 0.131 GiB billed, 100.8 slot-minutes — under a cent
Out-of-range generations 2 in 1,742 scored outside 1–5

The dollar cost is not measured and cannot be from here. Gemini token charges bill through Vertex and never appear in INFORMATION_SCHEMA.JOBS — only the BigQuery compute above does — so the authoritative figure is the billing console, the same conclusion ingestion-cost reached about storage rates. Measured input volume is ~3.0M tokens per extraction pass and ~3.1M per scoring pass, which bounds it at sub-dollar even at triple 0009's rate.