We show growers what the crop is doing now, while there is still time to act.
Most crop numbers arrive after harvest. By then the decisions are made. This site reads satellites and weather stations through the season, so the picture lands in July and August while irrigation, harvest order and marketing are still open questions.
It is built by Multigrain International with GISit, and it covers the dry beans, chickpeas and field peas of the High Plains: western Nebraska, eastern Colorado, southeast Wyoming and northwest Kansas.
What we measure, and what we cannot see
- Greenness, from USDA satellite imagery, on each crop's own ground.
- Rain and temperature, from one fixed weather station per region, so a season is never compared against a different station's record.
- Heat during flowering, when hot days kill flowers and pods.
- Planted acres, from USDA's own published count by crop type.
- Irrigated ground, from a USGS satellite survey. Dry beans here sit on ground that is 21% to 51% irrigated depending on the area; chickpeas and peas sit on much drier ground.
- Whether your field is watered. We now know how much of the ground in each area is irrigated, but not which fields. From space a watered field and a rained-on field still look the same.
- Variety. Two fields of the same crop can differ by a third.
- Disease and hail, until they are large enough to change the colour of a field.
- Your own field. We look at whole counties. You farm certain fields, and they can be better or worse than the county around them.
Where this site disagrees with your own records, your records are right. Telling us is what fixes it.
We do not change our numbers after harvest
In August we tell you what we think the crop will make. In November the real yield comes in. We never go back and change what we said in August.
That is how you can check us. If we said 2,100 pounds and the crop made 1,800, it stays on the record where you can see it.
It is also what makes the number worth having. Anything that waits for harvest is just history. You need a number in August, while you can still do something about it.
We do use yields from years that finished before this season started. Those set the starting point we work up or down from.
What we have gotten wrong
Anyone can show you their good days. Here is what we have gotten wrong. Read it before you decide whether to trust the rest.
| What went wrong | What it did | What we changed |
|---|---|---|
| We dropped blackeye peas | We said the crop was not grown near here. USDA records about 10,200 acres in Colorado and 5,700 in Nebraska. It was being grown; the acreage was simply withheld because too few farms report it. | The crop list is no longer our opinion. It is built straight from USDA's published table every day. |
| Our first yield model was not sound | An outside review found several steps resting on constants we could not source. We withdrew the figure rather than defend it. | Rebuilt to compare this season against eleven past seasons of the same measurements, which cancels out the parts we cannot pin down. It is published as a range, and we say plainly it is not a proven forecast. |
| One satellite pass stood in for a whole season | Chickpeas read 16% above normal on a single day when the season to that point was 4% below. The sign was wrong, not just the size. | Every comparison now averages the whole season so far against the same stretch of past seasons. |
| A temperature conversion was wrong | A 90°F heat threshold printed on the page as 58°F. | Fixed, and the page is now checked against the numbers behind it automatically. |
| Five regions shared one cache file | Four regions displayed a fifth region's satellite data while the logs reported success. | Fixed, and a failed download is never again stored as though it were an answer. |
| Two yield numbers, disagreeing | The page carried two separate yield models. One said 2,100 lb/ac for pinto in the Nebraska Panhandle; the other said 2,418 for the same region on the same day, in a box headed WITHHELD that printed the number anyway. The second one was scored against the average of past years rather than the rising trend those years already followed, which made it look better than it was. | The second model's yield is withdrawn. Its measurements — soil moisture, greenness, crop stage, rainfall — are untouched and still shown. One yield number per page. |
| The region picker showed the wrong region's numbers | Choosing Southwest Nebraska left every panel below showing Nebraska Panhandle. A map error threw 369 times on a single page load, and that crash stopped the code that updates the panels from ever running. | The numbers no longer depend on the map drawing successfully. Changing region now updates the panels whether the map redraws or not, and a test fails the build if that stops being true. |
| Our growth model had no water in it | It multiplied sunlight by greenness by a heat term and stopped there. On ground where the limiting factor is usually water, and in a season that followed the driest winter in 31 years, the one thing everybody was talking about was not in the arithmetic at all. It had been left out because the archive held sunshine and temperature and no rainfall, so past seasons could not be scored on water even if this one could. | Rainfall is now measured for all seven areas, pooled across every gauge that has reported for the whole eleven-year record — 15 to 41 gauges each — and a root-zone water balance runs every day of every season. Then we tested whether it made the yield forecast better, against every harvest USDA has published here. It made it worse, in all seven crop-and-state combinations. So the water is measured and shown, and it is not allowed to move a yield number. We say why below. |
| A water term that sounded right and tested wrong | Scored against ten years of real harvests, leaving each year out of its own baseline, the model without water beat plain guesswork in 1 case out of 7. With water it beat guesswork in 0 out of 7, and its average error grew by three quarters. We then tested the obvious excuse — that these are irrigated fields and the model was treating them as rainfed — by assuming 85% of the ground was watered. Still worse. Assuming none of it was watered was far worse again. The damage scaled with how much water we let in, which is the signature of a term that is wrong rather than one that needs tuning. | The water balance is published as an observation, like flowering heat days, and kept out of the yield. The likely reason is that rainfall minus evaporation cannot see a centre pivot: the dry years it punishes hardest are the years a grower simply ran more water. So we stopped inferring the soil and went to find it measured. Anyone can rerun the whole test: python3 scripts/backtest.py. |
| We were calculating soil moisture when it was already measured | We built the water term by working the soil's state out from a rain gauge and an evaporation formula. We did not need to. NASA publishes root-zone soil moisture for any point on earth, daily, back to 1981, on the same free address this site has been calling for its sunlight since the first day. It was one extra word in the request. We had been reading one column of a page and not the next. | Root-zone soil moisture and actual evapotranspiration are now collected for all seven areas, every day, back to 2015. We checked them against the real thing rather than trusting them: USDA has had sensors buried in the ground at Torrington, 15 km from Wyoming bean country, since 1997. The satellite figure and the buried sensor agree day by day across 3,801 days, and both put the summer of 2026 as the driest root zone in the eleven-year record. Tested as a yield term it still did not beat plain guesswork, so it is shown and not used in the yield. It is better than what it replaced and it is honest about what it is: a model of the soil checked against a probe, not a probe. |
| Our method page described a model we stopped running | The page a reviewer opens to check our work described "GISit v1, a regularized equation trained on 92 published state-year pinto-yield outcomes". That model was withdrawn months ago. It was not wrong in a detail; it described a different system. Anyone who read it and then read the code would conclude the code was broken. | The method page is no longer written by hand. It is generated from the live data files every time the model runs, and a build gate regenerates it and fails if a single character differs. It now carries every dataset, every equation, the constants we cannot source, the tests we failed, and the commands to rerun each step. A page kept up to date by remembering to update it is a page that is out of date. |
| We published a swing the record does not support | The season index moved several times harder than reality. Tested against every USDA harvest here, with each year held out of its own baseline, publishing it raw was worse than simply assuming an average year in six of seven crop-and-state combinations. For Nebraska and Colorado dry beans the model's direction was actually backwards. | Every published figure is now multiplied by how much of its swing survived that test. For dry beans in Nebraska and Colorado that is zero, so we publish a normal year and show the raw figure beside it. For peas it is 1.02 — their swing was right all along. The scaling is fitted on 2015–2025 and applied to 2026, which is not in the fit, and the whole table is on the method page. |
| We called an estimate "soil moisture" on the first line of the site | The most prominent sentence on the front page read "Soil moisture drier than normal in 5 of 7 regions". Nothing here measures soil moisture. Growers measure a root zone with buried probes at several depths, tensiometers or Watermark sensors, a hand probe, and their own rain and irrigation records; we have none of those. The map beside it carried a careful disclaimer that nobody scrolls to. | It now reads "estimated water stress", the published data carries the same label on every figure, and a build gate fails if any page or data file calls a remotely-derived number measured soil moisture. The estimate did not change. What we call it did. |
| One invented soil for seven regions | Every water calculation used a single root-zone capacity of 120 mm everywhere, and that number was chosen by us, not read from anywhere. The real figures, from the USDA soil survey at the centre of all 1,969 bean cells, run from 61 mm on the Valent sands of southwest Nebraska to 118 mm on the Keith silt loams of northwest Kansas. Half the water, half the time to stress — and the model could not see it. | Soil type, available water capacity, slope and drainage are now measured per bean cell and mapped. Slope is published but deliberately kept out of the arithmetic until we can source a runoff coefficient rather than invent one. |
| Our first answer on remote soil moisture was leaky, and we caught it before publishing | We asked whether the accuracy of satellite-derived soil water can be learned where probes exist and carried to ground that has none — the question that decides whether this method works in a country with no instruments. The first test said yes: a correction predicted from a place's climate and terrain beat the alternatives. It was wrong. The "similar" places voting on each correction were largely places nearby, so the test was measuring that neighbours resemble neighbours, which is worth nothing where there are no neighbours with probes. | We reran it barring every station within 500 km of the one being predicted. The clever method lost to the simplest one — the raw remote figure with a single fixed scaling and no fitting anywhere. That is what we now carry to unmeasured ground, quoted with ±9.6 percentage points of water content. The verdict code was also fixed: it had compared the clever method only against rivals it expected to beat, and never against doing nothing clever at all. Scored against 181 buried-probe stations in 41 states. Rerun it: python3 scripts/remote_soil_transfer.py --min-km 500. |
| We told GAJ to create a NASA account he did not need | We said the SMAP satellite was locked behind a NASA Earthdata login and asked him to register for one. He created it, then asked whether the data might already be available through Esri. It was. USDA's Foreign Agricultural Service republishes NASA SMAP root-zone soil moisture openly — worldwide, daily, back to April 2015, no key and no login. We had asked him to do work to solve a problem that did not exist, and to handle a credential for no reason. | SMAP is now collected through the open USDA service and no credential of his was ever used. Separately, our first attempt to pull it returned nothing at all and looked like it had worked: the service silently caps every request at twenty days, so every station came back too short to score and the output file was valid and empty. The cap is now written into the code with the story of how it was found. |
| Our satellite-versus-model comparison was rigged by accident | We scored NASA SMAP against the model we already use. On the "no fitting at all" comparison SMAP came out 18% worse than useless — because we applied the same fixed conversion to both, and the two products do not share units. SMAP reports water content directly; the model reports a dimensionless wetness fraction. We were measuring our own wrong constant, not the satellite. | Each product now converts in its own units — an exact unit change for SMAP, a stated assumption for the model. Fairly scored, SMAP is better at 125 of 181 stations, which is a real result, and the median gain is nine hundredths of a percentage point of water content, which is agronomically nothing. On the Wyoming bean ground this site actually covers, the model we already use is the better of the two. So we did not switch, and both are published so anyone can check that decision. |
| We published the historical average as if it were a forecast | Our yield model failed its own test, so we scaled its swing to zero. Scaling to zero publishes the average — and the front page read "2,394 lb/ac, same as usual" for Panhandle pinto against a ten-year average of 2,396, in a season the trade knew was short. GAJ: "THIS WAS NOT A NORMAL YEAR." He was right, and we had no evidence for normal either. An average dressed as a forecast is worse than a wrong number, because it reads as reassuring. | A model that cannot call the crop now publishes no yield at all. A build gate reads the published figure and fails if it lands within 1% of its own historical average, whatever code path produced it — proved by deliberately putting the average back and watching the build fail. It immediately caught a second case we had missed. History is the yardstick here, never the answer. |
| Three parts of the code fought over the same number | Pounds per acre was written in three places. Twice in one hour the later ones silently overwrote the first — restoring a yield that had just been withdrawn, then replacing the new pea figure so it no longer matched the equation printed beside it. This is why defects here kept coming back: we fixed the one broken spot and never asked whether the same mistake lived elsewhere. | Every writer now checks who owns the number, and a gate verifies from the published output that the owner's figure survived. The pattern is fixed, not the instance. |
| Peas move to a flowering model; dry beans stay withdrawn | Our yield model read the canopy, and a canopy is leaves. A crop that flowers through a hot spell drops pods while the field stays green — which is how a short crop looked normal to us. Built on heat during flowering instead, and tested against every harvest with each year held out, peas improve by 34%: the best result anything on this site has produced. For pinto and great northern it fails like everything before it. | Peas are published from the flowering model with its equation printed so anyone can redo the sum. Dry beans publish no yield. We do not know why. We published an explanation for this and it did not survive review, so it is withdrawn: see the row below. |
| We explained why peas work and beans do not, and the explanation was wrong | We said beans flower for 36 days against 27 for peas, so a bean sets later pods after a hot spell; and that beans sit on 31–51% irrigated ground against 9–21% for peas, so the pivot cools the crop. An outside review took it apart and our own files agree with the review. This season the windows are pinto 29–34 days and peas 27–29 — barely different; the 36 came from a long-run average, not from this crop. The irrigation figures were selectively quoted: the real ranges are beans 20.7–50.9% and peas 9.4–68.0%, and western Colorado peas at 68% are more irrigated than any bean region we cover. We also compared hot-day counts between crops that use different thresholds — 90°F for pinto, 82°F for peas — so the counts were never comparable. And our own file states plainly that these are 2017 shares of surrounding ground classified as irrigated, not whether a field was watered. | The explanation is withdrawn from the site. Two things survive and are stated as possibilities, not findings: a well-watered indeterminate bean may compensate better after a short daytime heat episode, and irrigation may lower daytime canopy temperature and prevent combined heat-and-drought injury. What we claimed — that the heat never reached irrigated beans, that they grew out of it, and therefore that the short bean crop was probably not heat — is not supported. Irrigation does not stop reproductive heat injury: in a controlled common bean study where water stress was deliberately eliminated, 32/25°C still caused drastic loss of pod and seed set, and while daytime leaves ran 2–3°C below air, night leaf temperature tracked the air exactly. To answer this properly we would need actual irrigation records or root-zone moisture, hourly temperature and humidity through flowering including nights, the varieties actually grown, and a reproductive outcome such as pod count or seed set. We have evidence of heat exposure. We have no evidence that beans absorbed it harmlessly. |
| A withdrawn yield came back on the headline, with a band of ±0.7% | The front page read "PINTO — 2,255–2,287 lb/ac". That number had been withdrawn: our model could not call the crop. Two faults put it back. The withdrawal was decided on one index and a later step replaced that index with another, so southeast Wyoming slipped through after the decision was taken. And we had shrunk the uncertainty band along with the swing, so a model with 14% of its movement surviving the test published a range of plus or minus seven tenths of one percent — a claim of precision from the one calculation that proves we have none. | The withdrawal test now runs on the final published figure, not on an earlier draft of it. The band is the model's own year-to-year spread and no longer narrows as confidence falls; Wyoming's real spread is 14%, not 0.7%. A gate fails the build if any published range is thinner than that spread. |
| Chickpeas were the only crop we cannot test, and the only one still printing a number | USDA publishes no chickpea yield in Nebraska, Colorado or Wyoming, so there is no harvest record to check a chickpea estimate against — ever. Meanwhile pinto, which we did test, published nothing because it failed. An untested crop was outranking a tested one. | Chickpeas publish no yield. The conditions, the stresses and the Montana comparison all remain. |
| Withholding the number withheld the warning | Once dry beans stopped publishing a yield, the page went quiet about them. The estimate table kept an "est. lb/ac" heading over seven rows of dashes and "0%" — and 0% reads as "normal", which is the exact claim we removed the number to avoid making. A grower opening the page for great northern was given nothing at all. | Every crop in every area now carries what we measured and what it likely does: heat during flowering, soil water from two independent readings, winter recharge, warm nights and maturity date — each with the figure, what is normal there, the likely effect, and how sure we are. Where nothing is unusual it says so, which is different from saying nothing. The empty yield columns are no longer drawn. None of these descriptions converts into pounds, and a gate enforces that. |
| We measured everything and never answered the question | The page listed 24 hot days in a 31-day flowering window, soil water 15% below normal on two independent readings, and a winter at 44% of its usual recharge — then explained what each one does to a bean plant. It never said whether the crop is bigger or smaller than usual. A buyer had to work that out from a sentence about pod abortion. GAJ: "WE MUST ALWaYS START WITH THE ANSWER TO THAT QUESTION." | Every crop in every area now opens with the answer — less yield, more yield, or nothing pushing either way — before any evidence, with a count of how many of our measurements point that way. It carries no number and a build gate stops one appearing: we withdrew bean yields because the model could not call how FAR, not which WAY, and direction is the part that survives that test. |
| We wrote "LIGHTER" to a bean trader | The first version of that answer read "Likely LIGHTER than normal". In the grain trade light means test weight, which is a different thing from a smaller crop, and GAJ asked what it was supposed to mean. Precise to us, ambiguous to the person paying for it. | It reads "we expect LESS yield than usual". The rule behind the fix: if the reader who buys this crop cannot take the meaning at a glance, the sentence has failed, however careful it felt to write. |
| The page argued with itself about heat | We put "we expect LESS yield than usual" at the top, driven mainly by heat during flowering. Lower down the same page, correctly, it said hot years have not yielded less on this ground. Both came from us. The measured half was the old half: tested against USDA harvests in September, hot days against bean yield gave r = +0.16 — nothing, and the sign was positive. Tested again through the flowering model, heat scores negatively for pinto in every state and for great northern. It works only for peas. | A stress is reported whenever we measure it — a grower wants to know the crop flowered through 24 hot days. It only gets a vote on the direction where it has been shown to predict that crop's yield in that state. Applied honestly, every stress we carry fails that test for dry beans: heat, soil water, winter recharge and warm nights have all been tested here and none beat assuming an average year. So dry beans now read "we cannot call which way yield will go". Peas keep a real direction because flowering heat earned it, at 34% better than guessing on years it had never seen. The disagreement between the agronomy and our own harvest record is stated on the page rather than resolved by quietly dropping one side. |
| Half the panel described a number we no longer publish | With dry bean yields withdrawn, the estimate panel still read "This is an educated estimate", "Read this before you use the number", "The range shows how much this signal moves" and "Hot days are not subtracted from this number". Four references to a figure that was not on the page. | The text now follows the number. Where a yield is published the original wording stands. Where it is withdrawn the panel says what it actually is — a set of measurements, with our own finding that none of them has been shown to predict this crop's yield here. |
| The soil water map showed the same day all season | We added an estimated soil water layer to the timeline and it drew an identical picture on every date — planting, pod fill, harvest, all the same. It multiplied each cell's surveyed water-holding capacity by one season-average figure for the whole area, so dragging the slider changed nothing. That is worse than having no timeline at all: it quietly says the ground held as much water in June as in September. GAJ caught it from a screenshot; none of our tests did. | The layer now reads the day it is asked for. The pattern across the map still comes from the soil survey, cell by cell; the movement through the season comes from a daily figure per area, averaged across the land-surface model and the SMAP satellite with neither preferred. In the Nebraska Panhandle the root zone now reads 88 mm in May, 82 in July and 69 in September, which is a crop drawing its profile down. A build gate fails if the layer stops varying with the date, or if any area's daily series goes flat. |
| We could not see winter at all | Our weather record started on 15 March, so the site had no view of October through March — the months that actually refill these aquifers before a crop goes in. We were publishing how low the water was without being able to say why. Measured properly, last winter brought the Nebraska Panhandle 1.5 inches, 44% of normal, the driest of the last 31 winters. Southwest Nebraska, northeast Colorado and southeast Wyoming were also at their driest in 31 years. | Winter precipitation is now measured for every area against its own 30 previous winters, and it is shown beside the water table so the cause sits next to the effect. Without it, "the water is low" reads as the aquifer draining, when in the Panhandle the aquifer is steady across a century and one winter did this. |
| We buried the water data where nobody would find it | We gathered the water readings, wrote them up, and put them 19,574 pixels down a 25,717-pixel page — about three quarters of the way to the bottom, inside a box that starts closed. GAJ could not find it and said so. Building something and hiding it is the same as not building it. | The water now sits in the top block, beside the crop headline, 339 pixels from the top of the page. A test fails the build if it moves back down. |
| Colorado was left out of this year’s water reading | The current-season water figure was built from Nebraska’s state database, which covers Nebraska only. Northeast Colorado came back with five wells and western Colorado with none, while both happily showed a long-run figure — so it looked like thin data when it was a gap in our code. Colorado publishes its own readings; we simply were not asking. | Colorado’s own water agency is now read directly. Northeast Colorado is 3.3 feet below its normal this year, from 128 wells. |
| We published a stale acreage figure | The page said Montana grows 260,000 of 541,000 US chickpea acres. The 541,000 came from USDA’s June forecast of what farmers intended to plant. USDA’s own state pages had since revised it down. | The sentence now compares Montana to Washington using two figures read straight off USDA’s pages, so it needs no arithmetic of ours and no national total at all. |
| We assumed the water was running out | Growers told us wells were failing in northeast Colorado, and that is true — one county there is about 50 feet lower than in 1965. We took that as the picture for the whole area. It is not. Measured across 974,724 readings from 24,018 Nebraska wells going back to 1930, the water under the Nebraska Panhandle has fallen about four feet in a century. The North Platte valley is fed by a river; the Colorado high plains are not. | We now publish the measured rate for each area separately, including the areas where it is steady, and we say which wells it was measured from. Where a region has no long record of its own, we publish no rate rather than borrowing a neighbour’s. |
| One sentence answered for a thousand miles | The cutworm reading took the middle value across every weather station from Kansas to the Big Horn Basin and reported it as one answer. On 12 July the page said flight had not reached the point where you should start scouting — while northwest Kansas was at 97%, southwest Nebraska at 60% and northeast Colorado at 32%. A Kansas grower reading that would not have gone out to look. | The reading now answers for the region you have selected, and says so by name. A test fails the build if it goes back to one number for everywhere. |
| The map coloured bean ground with mountain weather | The coloured surface on the map was drawn by interpolating between every weather station in range, including stations high in the mountains. Ninety-two of them sat more than 250 metres above the ground the crop grows on — one at 3,536 metres over western Colorado beans, another at 2,981 metres over the Big Horn Basin. Western Colorado was coloured mostly by mountains: 37 high stations against 18 on the crop’s own ground. | Only stations standing on ground the crop could be grown on may colour it. The same rule now applies to the yield model and the pest model, from a single shared definition rather than three copies, and a test fails the build if any of them stops using it. |
| Our weather station moved without us noticing | The yield number compares this season against eleven past ones, which only works if both read the same weather. They did not. Five of our seven areas read one station for history and a different one for this season — the Panhandle compared itself against a station 750 feet higher and 300 growing degrees cooler, and two areas labelled Nebraska and Kansas were reading stations in Colorado. It moved the Panhandle pinto figure by about 88 lb/ac. | Every area now reads the same station on both sides of the comparison. Where the old station no longer reports, the replacement must sit on the same ground as the crop, not on high country nearby. A test fails the build if that stops being true. |
| "More detail" opened empty | The box that holds the season timeline, the region breakdown and the sources list showed nothing at all. A filter kept only panels whose wording matched four phrases, and those phrases had been rewritten out of the site months earlier. Matching nothing, it deleted everything. | The filter is gone. It now removes only genuinely blank panels, and a test fails the build if the box loses its contents again. |
| Numbers a reader could not check | Eleven of thirteen published yield ranges could not be reproduced from the figures printed beside them. The numbers were right; the page was not showing the one input needed to verify them. | The page now prints the figure that actually builds the range. All 325 published numbers reproduce, and a check runs before every publish. |
| We claimed the model was better than it is | The page said BACKTEST GATE PASS. It had only been compared against the average of past years, not against the trend they were following. | Tested properly on 17 September 2026, county by county, with weather, satellite greenness and water-table depth. Five of seven tests came out worse than a plain trend line. The page now says NOT PROVEN and explains what that means. |
We would rather publish this than be asked for it.
Talk to us
If a number here is wrong, if you want this run on your own ground, or if you want to know how something works, this comes straight to us.
Why we build this
A grower deciding when to cut and a buyer deciding what to commit to are asking the same question: what is the crop doing now? That question has good answers sitting in satellite and weather records every week of the season. They are just not usually pointed at the people who need them in time to act.
The rest of this page tells you what we miss and where we have been wrong, so you can decide how much to lean on it.