Route Generator, HyperLink InfrastructureDownload the PDF (v2026.09.21a)Roads-only demo, Bastrop to La GrangeDemo KMZStep 1 engine run, Turkey Texas (real cost table and soils)

Design proposal, second issue

Route Generator

How the tool works, and how it gets built

Date
2026-09-21

Build an exploration tool. It prices every public road in dollars from your bid calculator's cost table and scores diversity from the GeoTel carrier routes as a separate number.  It shows 10 to 20 genuinely different routes on a cost-versus-diversity chart.  Every input is now in hand: the cost table, the four CONUS soil rasters, the GeoTel fiber routes, and a finished nationwide road jurisdiction layer from the FiberBid project.  Nothing gates the build.  Your past routes are a comparison, not the target.

1 The prompt, rewritten the way it should have been asked

Design and build a route exploration tool for new underground fiber between a Point A and a Point Z, anywhere in the lower 48 states.  Routes follow public roads only.  Every public road that can be built in stays in the graph, including interstates and toll roads.  The tool prices them; it never hides them.

Model every cost driver in dollars on one scale, using HyperLink's bid calculator as the source.  The calculator prices every construction type as a multiple of the dirt bore rate.  Keep that structure.  The user changes the dirt bore rate and everything recalculates, or pins any single rate.  Crossings use the calculator's three crossing tiers.  Metro difficulty and permitting effort are multipliers the user can change per project.  Route length needs no separate factor because every foot already carries a price.

Score physical diversity from named major carriers as a separate number, using the GeoTel fiber route data.  Never blend it into cost.  Willingness to pay for diversity changes by customer and is not linear.

Produce 10 to 20 genuinely different candidate routes.  Show them on a map and on a cost-versus-diversity chart.  For each route show cost, length, footage by soil class, metro footage, and footage by permitting authority.  Also show the crossing list with the worst crossing, shared footage per carrier, and the longest shared run.  Let sliders re-rank instantly.  Let the user draw avoid areas and forced crossing points, then re-solve in seconds.

Use the nationwide road authority layer HyperLink already built.  Host the tool at routegen.fiberbid.ai.  No LLM in the loop at run time.  Compare against past bids to learn, never to match them.

2 The cost model: one rate, a table of multiples, three crossing tiers

Every construction cost is a multiple of one number: the dirt bore rate, $12.00 per foot in the calculator today.  Change that number and every other rate recalculates.  Pin any single rate and it stays put.  The multiples below come straight from the calculator's ASSUMPTIONS sheet, read 2026-09-21.

Soil class Bore, multiple of dirt bore Not bore (trench), multiple of dirt bore
1 Sand 1.00 ($12) 0.46 ($5.50)
2 Dirt 1.00 ($12) 0.46 ($5.50)
3 Clays 1.00 ($12) 0.83 ($10)
4 Cobble 1.67 ($20) 1.25 ($15)
5 Caliche 2.50 ($30) 1.67 ($20)
6 Rippable, soft shale 3.75 ($45) 2.08 ($25)
7 Bedrock, limestone and plate rock 5.00 ($60) 2.92 ($35)
8 Dense hard, dolomite 16.7 ($200) bore only
9 Dense abrasive, granite and quartzite 37.5 ($450) bore only
10 Water, 11 No soil data, 12 Special priced as class 3 and flagged priced as class 3 and flagged

You said Class 9 should run about 100 times dirt bore.  The calculator says 37.5 times.  The calculator's number is the default, and one line in the assumptions file changes it.

Bore or not bore. The tool cannot tell plow from trench, so each segment is either bored or not bored.  Not-bore uses the trench multiples.  Not-bore is allowed only where the segment is outside city limits, has under 10 percent pavement, and is soil class 7 or lower.  Spiderplow and vibratory plow rows stay in the table as placeholders and are not used.

Crossings. The calculator prices crossings in three tiers per foot of bore.  Tier 1 is $360 (30 times dirt bore), Tier 2 is $175 (14.6 times), and Tier 3 is $75 (6.25 times).  The tool assigns a tier from length and type, and every breakpoint is an assumption variable:

Crossing Tier
Dry crossing under 500 ft (road, parking lot, ditch) Normal bore, no tier
Dry 500 to 1,000 ft, or any water or rail crossing under 500 ft Tier 3
Dry 1,000 to 2,000 ft, or water 500 to 1,000 ft Tier 2
Dry over 2,000 ft, water over 1,000 ft, or any Corps Section 10 water or FEMA floodway Tier 1
Casing required (highway, railroad) Adds a per-foot casing cost from the materials sheet

Metro and permitting. The calculator has no line for these, so the tool carries two multiplier tables with placeholder defaults until step 4 calibrates them.  Metro, from pavement percent: rural under 10 percent at 1.0, suburban 10 to 40 at 1.15, urban 40 to 70 at 1.4, dense over 70 at 2.0.  Permitting, an adder in multiples of dirt bore per foot: county 0, state DOT 0.05, city 0.15, interstate 0.5, toll 0.75, federal or tribal land 0.5 plus a permit flag.

Assumption variables. A defaults file ships with the tool.  Each project gets its own overrides file.  The screen lists every variable with its default and the value in use.  You can change the dirt bore rate so everything moves, change one multiple, or change one project's copy only.

The rule for one route has two parts.  Segment cost is length × the cheapest allowed rate for its soil class × the metro multiplier, plus the permitting adder per foot, summed over every segment.  Crossing footage is priced at its tier rate instead of the segment rate.

Worked example with the real rates.  Route 1 runs 42.0 miles, all class 2 dirt, with one 400 foot creek bore (Tier 3).  Route 2 runs 35.0 miles, 6.0 of them class 7 bedrock, with one 1,400 foot river bore (Tier 1).

Route 1: long and soft Route 2: short and rocky
Dirt bore footage 221,360 ft × $12 = $2,656,320 151,720 ft × $12 = $1,820,640
Bedrock bore footage none 31,680 ft × $60 = $1,900,800
Crossing 400 ft × $75 = $30,000 1,400 ft × $360 = $504,000
Total $2,686,320 $4,225,440

The route that is 7 miles longer costs $1.54 million less, about 36 percent.  That is the tradeoff you make by eye today.  The tool makes it for every road in the region at once.

Whether the not-bore rule (outside city limits, under 10 percent pavement, class 7 or lower) matches how your crews actually choose to trench.

3 Diversity: GeoTel routes, a 250 foot rule, and a chart you read per customer

The carrier layer is GeoTel's fiber routes, July 2026 issue: 12,015,331 segments nationwide, each tagged with a carrier name.  The biggest names in a 200,000 segment sample were Zayo, AT&T, Lumen, Verizon, Comcast, Uniti-Windstream, and Arelion.  The named-carrier list is an assumption variable.  The default counts the long-haul and metro carriers a customer would name and leaves cable and fiber-to-the-home operators off.  The FCC fiber-to-the-premise polygons in the inputs folder become a flag only, never part of the score.

A route foot is shared when a named carrier runs within 250 feet of it.  Between 250 and 1,000 feet it shows as "near" and is not counted.  Diversity is the unshared footage divided by total footage.  The tool also reports shared footage per carrier, the longest continuous shared run, and the most carriers sharing any one stretch.

Your "feel" is a chart.  The scatter puts cost across and diversity up, one dot per route.  The routes worth considering are the ones where nothing else is both cheaper and more diverse.  The table below maps what you said to what you see:

What you said What the tool shows
85 to 95 percent for more money might sell; 75 to 85 might not Two dot pairs on the chart, each step priced in dollars
A bridge bottleneck is not the same as a 10 mile parallel run Shared segments on the map, colored by carrier count, plus "longest shared run" in the table
I would never accept under 60 percent, depending A filter you set per customer, not a rule inside the engine
Avoid metro where we can A cost multiplier, so the engine avoids it when it can, and a metro footage column so you see when it could not
Cross the river where it is narrow, even through more rock Pin a via point or draw an avoid polygon, then re-solve in seconds
I feel my way through it Sliders re-rank the computed routes instantly; a regenerate button re-solves with your constraints

Worked example.  A customer says diversity matters a lot.  The chart shows Route C at 78 percent for $3.1M, Route F at 88 percent for $3.4M, and Route H at 95 percent for $4.6M. The step from C to F buys 10 points for $300,000.  The step from F to H buys 7 points for $1.2M. You would probably pick F and say so with those numbers.  A different customer sees the same chart and picks differently.

Whether the default named-carrier list (Zayo, Lumen, AT&T, Verizon, FiberLight, Arelion, Cogent, Uniti-Windstream, Crown Castle) is the right starting set for the score.

4 Data: everything is on this machine now

Layer What it gives each road segment Where it is Status
Roads, the routable graph geometry, length, road class, bridge and toll flags OpenStreetMap; Texas extract first, other states as jobs need them Free download
Permitting authority, nationwide AUTH_CLASS (state DOT, municipal, county, township, toll, federal, tribal, private), AUTH_NAME, consent flags, confidence FiberBid project, v1app\Data\Screening\Jurisdiction.gdb, layer RoadAuthority, 19,222,124 HPMS 2024 segments, QA passed 2026-08-30 Done.  Each OSM segment takes the class of the nearest HPMS segment within 30 m
Controlled access, Texas where access is controlled TxDOT Access Control shapefile under E:\Datasets\C-Drive Mirror\Documents\ArcGIS\Datasets\TXDOT ACCESS CONTROL Done for Texas; other states from OSM road class
Soil class classes 1 to 9 matching the calculator, 10 m cells .inputs\Soils Raster LYRX Files\CONUS_soilbid9_10m.tif, with maxhazard, rockshare, and inferred rasters beside it In hand; its value table, read 2026-09-21, carries classes 1 to 12 matching the calculator
Carriers carrier name per segment .inputs\GTC_CoreData_0726.gdb, layer GTC_FiberRoutes_0726 In hand
Fiber to the home coverage polygons by state .inputs\FCC_BDC_Fiber_To_Premise_0726.gdb In hand, flag only
Cost table multiples of dirt bore, crossing tiers .inputs\BID CALC - HYPERLINK-ROCKPORT - TEMPLATE - v2026.09.xlsx, ASSUMPTIONS sheet In hand
Metro pavement percent Annual NLCD fractional impervious surface, 30 m, through 2025 Free download
Water crossings crossing length, stream size, Corps flag NHD, OSM bridge lengths, Fort Worth District Section 10 list Free download
Rail crossings grade crossings FRA grade crossings in FiberBid PermitScreens.gdb Done
City limits and counties inside a city, which county PermitScreens.gdb Places_Incorporated_2025 and Counties_2025 Done
Three example jobs route KMZ and bid total each .inputs\Example - Big Springs, Example - Rockport IN, Example - Turkey In hand, comparison only

Nationwide jurisdiction was already solved.  The FiberBid project built the RoadAuthority layer on 2026-08-29 and 30 from FHWA HPMS 2024 ownership codes, with a 49-state rules matrix behind it.  It also carries two known gaps: 750,784 segments of unknown class, mostly in Missouri, and no permit-requirements directory yet.  The four-state predecessor under E:\Datasets\Geodata & GIS\US Road ROW Authority holds a 21-row permit playbook that seeds that directory.

Areas where nobody will let you build have no layer anywhere on this machine.  The tool takes drawn no-go polygons, and the RoadAuthority consent flags mark federal and tribal land.  Anything more waits on a source that does not exist yet.

The inputs folder holds 46 GB.  The file standard sends data over 1 GB to E:\Datasets with a pointer, and the state file records that these stayed where you put them.

Whether to leave the 46 GB of inputs in the project folder or move them to E:\Datasets with a pointer.

5 How it gets built: five steps, no gates, and what done means

Tools: Python 3.12 on this machine, with geopandas, rasterio, osmnx, and pyogrio installed.  A local web app is fine now that ESET is gone.  Production runs on Vercel in the HyperLink team at routegen.fiberbid.ai, where this document lives today and the tool goes when step 3 lands.

Step What it delivers Effort Test corridor
1.  Engine core OSM graph, the calculator's cost table with the assumptions file and overrides, the spread method with its detour cap, KMZ and HTML explorer 1 to 2 sessions Turkey, Texas example
2.  Soils and carriers soil class sampled every 50 ft, GeoTel distance per segment, diversity score, shared segments on the map, the chart 1 to 2 sessions Turkey and Big Springs
3.  Jurisdiction, crossings, metro RoadAuthority join, NHD and bridge crossings with tiers, NLCD bins, rail; then hosted at routegen.fiberbid.ai 2 sessions All three examples
4.  Comparison run price the three example routes and compare to their bid totals; then run A to Z on each and show where the tool's routes beat the human routes 1 session All three, plus Rockport Indiana as the out-of-state check
5.  Steering and customer version avoid polygons, via points, saved assumption sets per project, then the customer-facing A to Z page 2 to 3 sessions

The spread method comes from the 2026-09-16 test.  Raise the price of every segment on a found route by 30 percent and solve again.  Keep routes that share under 70 percent of their footage with every other kept route.  Drop any route longer than 1.35 times the shortest.  That test ran 28 solves in 0.55 seconds and produced 15 distinct routes.

What done means.  Not "reproduce your routes."  Done means two things.  First, given the same assumptions, the tool prices each of your three example routes within 10 percent of its bid calculator total.  Second, on each of those corridors it offers at least one route you would rather bid.

Assumptions to watch:

Whether a 10 percent tolerance on the three example totals is the right bar for step 4.

Part 1: The Prompt

The original request, 2026-09-16:

I want to make another run at building the Route Generator.  I'd like to take a fresh look at it without being influenced by past sessions about it.

The idea is this...  we need a way to explore route options for new-build underground telecom routes/construction between a given Point A and Point Z. We haven't really drilled down on how we get this done manually--what our process is...  it's a bit of a free flow where we have a number of things in mind when we look at different paths...  because we haven't done the work to figure out how we're thinking when we do this, it's difficult to give you much instruction on what the process should be...  so I'll give you the factors that we consider and I'll give you my best guess at what the generator should do...  but I'm looking for you to help me figure out how the solution should work (and how to build it).

Cost and physical diversity from "other carriers" is the customer's biggest concern.  Cost is driven by: 1) work types (bore vs. trench [and ideally vs. plow vs. spiderplow]) and soil types (sand/dirt/clay vs. easy rock vs. hard rock vs. nearly-impossible rock), which we can think about in terms of work type x soil type; 2) major crossings (major bores) of a certain length become vastly more expensive than the day-in, day-out bores that most directional drills can perform.  A 400 linear foot bore under a parking lot is not a big deal.  A 400 linear foot bore under a deep creek requires a more powerful, more expensive drill with more drill stem.  A 700 linear foot bore under a river is is more expensive than that.  A 3000 linear foot bore under a major river is many multiples more expensive--maybe 50x or more than a typical dirt bore.  Etc.  Casing requirements cost money in materials and labor (larger diameter HDPE, which must be fused or steel casings which must be welded), and they add weight and can increase bore reamer diameter, which increases the size and expense of the directional drill needed; 3) length of route increases cost...  so we have to balance an elongated route in dirt vs. a shorter route that requires a wider crossing or more difficult soils (latency is also a concern of the customer and is impacted by route length, but I think it's mostly covered by solving for cost for almost all scenarios); and then 4) metro areas are more expensive than rural and suburban areas, in varying degrees...  a nearly zero-population desert area under only county jurisdiction on one end of the spectrum (think Pecos, Texas) vs. a dense urban location with complex jurisdictions, lots of pavement remove/replace, lots of rules/constraints, significant traffic control requirements, dense existing utilities, etc. on the more difficult end of the spectrum (Atlantic City or Manhattan for example)...  with lots of variation in between...  but in general, when we can avoid metro areas, we should, and when we can't avoid a metro area, then we should avoid the denser and more-paved or higher-sensitivity areas of that metro area, with the most extreme being a central business district, or similar area of a city.

So those are the factors impacting cost which we need to balance against one another, maybe among one another in balance, as we determine an ideal route.

Then there's the issue of physical diversity.  The carriers all want to be far, far away from other carriers to ensure that if one of their connections gets cut, this new route they're purchasing will serve as a backup/redundant connection.  In theory they would only care about diversity from the routes that they currently utilize/depend on, but typically they want to keep diversity from any carrier that they might depend on in the future.  So maybe they don't care that much about running parallel to an FTTH network, but they want to stay diverse from major carriers such as Lumen and Zayo and FiberLight, etc.

Routes all have to follow public roads.  These fall under various jurisdictions.  Certain jurisdictions are easier than others--toll roads might be the hardest depending on the entity, then interstate highways are typically more difficult than state highways/on-system DOT roads, and then city roads and county roads can be unpredictable--though usually county roads are as-easy as state highways and then city roads are often more difficult than on-system DOT roads.

Here is how I think this might work best...  We start with the soils.  This is easy for me to do by looking at the raster graphic we have--I can look at the colors and could generally draw a curvy line that follows the sand/dirt/clay regions and tries to go in between the rocky areas, minimizing the amount of rock as much as possible and favoring easy rock over dense rock wherever possible and entirely avoiding the densest rock.  Again, that's easy for me to do by looking at the map and kind of feeling my way through it, but it's maybe difficult to program for.  Once that's done, then I could try to match up those curvy lines to roads.  In my mind, my map would then highlight every possible public road route that matched my rock-avoidance strategy.

Then if there was just too much rock to route around--meaning the extended length of the route made it so that it would be cheaper to just go through rockier areas, then I could make those tradeoffs.  At that point, I would screen against existing major carriers that I think the customer would be worried about.  I might even be willing to go through a little more rock to have a more diverse path, depending on how much diversity I could get in consideration of the greater expense.  That's a difficult thing to apply a metric to, perhaps.  It might depend on how strongly the customer emphasized an interest in a diverse route.  It might depend on my sense of their budget.  Then even looking at the diversity of particular options/segments/sections, I can't immediately tell you whether it would it be a simple calculation of diversity vs. rock and cost or whether there might be more nuanced factors that I can't immediately articulate or identify--I suppose for that it would be just a simple calculation and we would be able to adjust the threshold of that cost vs. diversity weight based on the customer's level of emphasis on diversity...  Again, we kind of feel our way through it--we'd try to avoid metro areas along the way wherever possible--I don't know where that sits in the hierarchy...  towns are easier than cities, smaller cities vary but are usually easier than bigger cities, unless it's a particularly easy city...  often the diversity preference helps us avoid the densest metro areas.

At that point, I would go and look at major crossings...  What's the quantity of long or difficult bores?  Are there any in there that would be particularly difficult--super long or maybe a corps of engineers crossing vs. one that's not under their jurisdiction...  would another route take me through a little more rock but allow me to cross at a place where the river is much narrower.

Regarding diversity, I'll add this as well...  we're not going to be able to be 100% physically diverse.  That's feels like a big area of what I call the "feel" aspect--I cannot give you a very clear measure of what my length vs. rock vs. cost vs. diversity metric/ratio is.  It also maybe shifts...  like if I can get from 85% diversity to 95% diversity with higher expense, maybe I'm okay with it because I think that very high figure might sell well to this customer.  But then if it's the difference between 75% diversity and 85% diversity, but there's a big cost or much longer route, maybe I don't care as much.  In another situation, I might be willing to pay a lot to get from 75% to 85%, but I wouldn't care nearly as much about getting from 85% to 95%...  Similarly, I might say that I would never accept a route with less than 50% diversity or maybe 60% diversity...  but it depends how dense everything is what other options there are and what the cost spread might be.  It might ever vary based on looking at something where I could follow a given route and overall have higher diversity, but portions of that route are particularly dense with many major carriers--in that case I might pick a route with lower footage percentage diversity, but where it only conflicted with a single carrier.  But then I can't say I would always choose that because there might be a bottleneck like a river crossing at a bridge where that's just the only place to cross and so everyone is there...  It's difficult to set hard and fast rules.

Length vs. cost is maybe an issue here as well...  like if a route were technically cheaper, but it was just WAY longer, then maybe that's something where we'd go ahead and just pay the extra money...  I'm not sure...

One way we could approach this is to consider it an "exploration" tool rather than something that would give us a single best answer...  Maybe the goal here should not be to solve the route generation issue, but just to speed up the way the human can make their determination?

It's a hard call.  Ultimately I'd like to have something where a customer could just enter a Point A and Point Z and it gives them the 10 cheapest route options.  Maybe that could be accomplished via sliders that weigh various factors?  We've taken a number of stabs at this, and we haven't gotten anything usable yet.  For that reason, I'm thinking maybe it's more like an exploration tool?  I would also like it not to use some incredible amount of tokens or processing power--if it must, it must, but speed of route option generation and expense are real considerations here.  I don't want to make it overly complex.  I'd like to get something that we can use--it doesn't need to factor in space weather and pavement replacement cost...  it just needs to accomplish our goal in a reasonable way that works similarly to how we work.

Please generate a prompt for this and then answer that prompt.

The follow-up, 2026-09-21, answering Design Round 01:

Regarding the design document...  I want it hosted online.  Put it at routegen.fiberbid.ai.  (ESET is gone by the way.)

I want roadway jurisdictions solved nationwide, but I think that's already done somewhere else--possibly.  For now we can use Open Street Map and we can figure out the solution for the rest later.  But you'll want to do a comprehensive search of all sessions, because we may have already addressed this in a big way.

Nearly impossible rock needs to be permitted--Class 9...  just needs to be marked rated at like 100x cost.  I've attached what I want you to use for the costs.  It's meant to be structured where everything is a multiple of the bore-dirt cost.  We can stick with these as the defaults, but I should be able to override them when necessary--the easy level being that I just change the dirt bore rate and everything else auto-calculates off of that, or the more involved level being that I can override individual rates if desired.  You likely won't be able to judge plow vs trench, so it's going to be bore vs. not bore and for not bore we'll use the trench multiples and rates.  We'll just keep the spiderplow and vibratory plow stuff in there as placeholders for possible future functionality.

DO NOT try to solve to our routes--I'm not necessarily entirely happy with any of them.  We can compare just to see, but they are not the benchmark.  Yours will be better.

Soils raster is in the inputs folder.  Latest GeoTel data is in the inputs folder.

  1. Agreed.
  2. You definitely have to keep interstates.  You also also keep toll roads--if there are other carriers in that ROW, then it's an option that shouldn't be completely excluded--sometimes that's the only way.  Any section of a public road that can be built in should be included as a possibility.  At some point we probably have to figure out "inaccessible" areas where they won't let you build, but that seems to be quite difficult--the official files we've found for Texas do not appear to show what we were looking for...
  3. I'm good with these for now.  I'd like to have those multipliers available as assumption variables where I can modify the defaults and/or specify for a specific route exploration session/project.
  4. Soils rasters and carrier routes are in the folder.  Bid calc is saved there as well.  Three example bids/routes.  Again, though, don't solve to the example bids because I'm not necessarily happy with these.
  5. Nothing I can think of.

Part 2: The Answer

The document above.  Judgment calls settled while producing it: