KerykBOM Estimator · briefing

What we built, how, and what the state research found

Location and TA in. Bill of materials out. In 50 states.

Morgan asked on 9/11 for a tool that takes an address and a TA type and returns the materials list, to price AWP’s Arizona jobs. It’s live, it has an API, and it knows 50 states’ rules. Below: the short version, then the detail.

The one-minute version

  1. It works and it’s live. bom-dev.apps.keryk.ai. A web page, an API and a training guide with two films.
  2. Signs and devices are exact. Cones are about half. The drawing explains 44–64% of the cones on a real job. The rest is site work: driveways, side streets. We show that split on every answer.
  3. The state layer is our edge. Same job, different state, different count. A 55 mph lane closure: federal says 36 cones, Maryland 80 drums.
  4. Coverage is breadth, not proof. All 50 states have rules loaded and cross-checked. Only 2 Arizona drawings are checked against real jobs.
  5. Fix before AWP sees it: typing an address only picks the right state for Arizona and Virginia. Picking the state by hand works.
50/50states covered by an overlay or verified federal
18TA drawings built; 2 checked against real jobs
24 · 20 · 4states above, equal to, below federal on one benchmark job
72 + 52errors caught by checkers in the state research, all fixed

What we built

Three things, one engine

The web page

Type a location, pick the TA, set zone length. Get signs, devices and three cone numbers. Everything else sits under “Show the working.” Keryk-branded as of today.

The API

POST /estimate is the main call. JSON in, full bill of materials out, with the math and every assumption. Docs at /docs.

The guide

/guide: an operator’s manual built from the engine, so its numbers can’t drift. Two films: “Get a number” (85 s), “Why the state matters” (66 s).

The API, route by route

RouteWhat it does
POST /estimateThe main call. Needs ta. Takes address or lat/long, jurisdiction, speed, zone length, lane width, days, night, hours, side, counts of intersections and driveways.
POST /api/bom/singleSame thing as a form post. Shaped like AFAD’s endpoint, so it drops into that pattern.
POST /rangesOne job across a speed band. Shows how counts move with speed.
GET /api/catalogLists the 18 TAs (which are validated) and 49 jurisdictions.
GET /health, /readyStatus checks for Coolify. The only routes open without a login.
GET /docsInteractive API docs.

Login: every route but the two status checks needs a username and password. Scripts send them with curl -u name:password.

Every answer carries its receipts: which rule set, which sheet, the algebra line by line, where each input came from, and a plain “scope” line: materials estimate, not a traffic control plan.

How it was built

How it works

Six steps from a pin to a truck list

Location→Road lookup: speed, state, lanes→TA drawing→State rules→The math→Three cone numbers

You can type any input instead of looking it up. What you type wins. Nothing is guessed silently: every default shows up in the assumptions list.

No speed and none typed? It stops and asks. Address fails and no state picked? It stops. It never falls back to federal quietly, because federal is a different rulebook, not a safe default.

Three cone numbers, not one

NumberWhat it isUse it for
Derived from the standardPure math off the drawing. Nothing assumed.Quoting. And comparing against Morgan’s engine.
Likely on siteThe math plus an allowance for driveways and side streets. A range.Planning. The allowance comes from only two real jobs.
Load the truckTop of that range, rounded up to ten.What goes on the truck.
The drawing gets you about half the cones. The other half is the site. We show both, and we say which is which.

The state research

50 states, each checked against its own documents

This is the part Morgan’s engine doesn’t have. His is built on the federal manual. Ours knows where each state departs from it.

Where the numbers came from

How it was checked

Every state file went to separate AI checkers whose only job was to prove it wrong. They read the state’s own source and argued against each value.

BatchWhat the checkers found
First 31 states (9/14)26 of 27 files needed corrections. 12 made-up values in 5 states. 1 fake citation (Massachusetts). Only Alabama passed clean.
Full audit (9/15)37 state files plus the 9 “federal is fine” states. Every finding put to three checkers. Majority rules; ties re-checked by hand.
Audit backlog (9/15)52 findings fixed across 15 states. 24 citations corrected.
Last 7 states (9/15)72 problems, all fixed: 33 misread sources, 13 values that should have followed federal, 11 invented values, 8 fake citations, 6 wrong table numbers. All 7 needed correction.
AI wrote the first draft. Different AI tried to break it. Most drafts broke, and we fixed every one. That’s why the numbers hold up, and why we don’t skip the checking.

The biggest correction: “federal is fine” wasn’t

We first counted 44 of 50 states covered, 9 of them because “the state just follows federal.” The audit checked those 9 against their own documents. Only Montana held. Coverage dropped to 38 before we built it back to 50.

StateWhat federal got wrong
HawaiiWorst case. Its own table replaces taper, buffer, sign spacing and cone spacing from 20 to 55 mph. A 20 mph taper is 200 ft, not 80. Needed two new engine features.
IowaSign spacing and buffer key to speed, not road type. Bigger buffers at 50+. 28-inch cones at night.
KentuckyFixed cone spacing (40 / 80 / 20 ft). Drums past 3 days or at night.
MississippiIts own buffer column and a flat 20 ft taper spacing on flagging jobs.
New HampshireFull-length lane-shift taper above 50 mph. Drums on divided highways.

What a state rule file can say

States change the federal drawing in a handful of ways. The engine can express each one:

How long the taper is

Federal formula, the state’s own printed table, a flat length above a speed (MD, VA: 1,000 ft at 60+), or rounding (VA to 10 ft).

How big the safety gap is

Federal table, the state’s own table (OR, MI, TN, TX), a formula (HI), or none (Phoenix).

How far apart signs go

Federal A/B/C with single cells patched (NJ, MD, TX), one distance per speed (FL, PA, VA, WA), or equal to the taper (Phoenix).

How far apart cones go

The biggest driver of count. AZ and VA cap at 40/80 ft. FL uses 25/50. IL uses 20/50.

Cones or drums

Switches by speed, hours, night or road type. 24 jurisdictions change the device at night on a long job.

What we can’t model

Written out as a full sentence in each file, with what it would change. 47 files carry these notes.

Each file also records which MUTCD edition the state runs. NJ, MD, OK, UT and WY still run the 10th, so their table numbers differ, and citations are mapped for each.

One job, every state

Lane closure on a divided highway (TA-33), 55 mph, 2,000 ft zone. Cones or drums from the standard alone.

state countbelow federalfederal = 36
StateCountLinevs fedWhy it differs

20 states land exactly on federal for this job: Alaska, California, Colorado, Idaho, Louisiana, Massachusetts, Minnesota, Mississippi, Missouri, Nebraska, Nevada, New Hampshire, New Jersey, New Mexico, Oklahoma, Rhode Island, South Dakota, Utah, Vermont, Wyoming. Equal here doesn’t mean equal everywhere. Many differ at night, on freeways, or on flagging jobs.

What the research taught us

Maryland signs: already decided, needs Morgan’s ratification

Federal posts the advance signs twice on a divided highway: right shoulder and median. On 9/18 we set Maryland to one side only (PR #11), reading nine Maryland sheets. Maryland TA-33 signs drop from 6 to 3. The opposing reading is kept in the file: two high-res renders saw supports on both sides on two sheets. Ask Morgan: ratify or reverse.

What’s real and what isn’t

ClaimStatus
Signs and devices match real jobschecked Exact on both Arizona exports.
Arizona TA-33 and TA-30R cone mathchecked Against SRP Gilbert and SWG Chandler jobs.
Other 16 TAsnot checked Federal drawings with state numbers.
All 50 states’ rulesdesk-checked Against each state’s documents, not against a real job.
“Likely on site” rangethin Fitted to two jobs. Swap them and it moves +38% / −29%.
Maryland valuesdated From the 2011 manual. Rev 4 (Aug 2026) not yet read.

Fix before AWP

Two problems, both small

Addresses mostly land on federal. Type a Baltimore, Trenton or Harrisburg address and you get federal rules, not the state’s. Only Arizona and Virginia route by address. Cause: the road lookup returns “federal” and we trust it. Picking the state by hand works. Fix is small.
Stale docs. The coverage page still says 43 of 50 and says Maryland duplicates signs. The code is right; the page is old.

For the conversation

What to ask Morgan

  1. Maryland signs: ratify one side (our 9/18 call) or reverse?
  2. Flat-rate equipment? If yes, cone precision stops mattering and the work moves to zone length, days and truck rolls.
  3. Arizona buffer: 0 ft (the Arizona file, SME) or the federal table (what the deployed rules and both real jobs fit)?
  4. More Arizona jobs: 10–20 exports from Jesus is the single biggest accuracy gain.
  5. Comparing with his engine: agree to compare “derived from the standard” only, on six shared benchmark jobs.
  6. AWP’s own counting: adopt their crew-load convention for signs, or keep ours labelled “drawing only”?

Also on the table: AWP’s manifest (not merged)

Jeremy’s AWP manifest and rate card arrived 9/18. A side branch compares them to our engine:

Timeline

Twelve days

DateWhat happened
Sep 11Morgan’s ask. Prototype engine, 18 drawings, calibration on two Arizona jobs, the API.
Sep 14Live on Coolify. Page cut down to the answer. 31 states added and checked.
Sep 15Four engine gaps closed. Full audit; coverage corrected to 38, rebuilt to 50. Own repo.
Sep 16–17Operator’s guide and two training films.
Sep 18Design pass. Maryland sign ruling. AWP manifest arrives.
Sep 21AWP manifest comparison and crew profile (side branch).
Sep 23Films re-shot on the new page. Keryk branding. Login on the whole site. This briefing.

Words

Plain definitions

TA
“Typical application.” A standard MUTCD drawing for one kind of work zone, like a lane closure.
Taper
The angled line of cones that moves traffic over.
Buffer
The empty gap between the taper and the work. Safety space.
Spacing
How far apart cones sit. The biggest single driver of count.
Overlay
One state’s changes to the federal drawing, in a file the engine reads.
Declared fallback
Federal drawing, state numbers. The honest label on every state result until a state’s own drawing is loaded.
Export
A real, finished plan from the planner app. What we check against.

Keryk · BOM Estimator · compiled Sep 23, 2026 from the repo, its tests and the live service