First things that come to mind are a crush that's too coarse, not stirring your mash enough, too low or too high mash temps, or incorrect readings (measurements).
I suspect the crush was bad. +100 to your own mill.
All-grain remains a learning process until you have all your parameters tested and right. It is wise to measure the gravity from all your runnings, and a (calibrated) refractometer is the easiest way, only takes 1-2 drops and is almost instantly.
You know from the recipe how many total points you'll need in your final wort, e.g., 5.5 gallons @ 1.084 = 5.5 x 84 = 462 points.
For each of the runnings write those readings down as well as the volume you collected. Volume x gravity points = total points for each of the runnings. The sum of all those is the total points of your wort.
The iodine test only tests conversion in the liquid (wort), not of your entire mash. In a poor crush there's a lot of starch still locked up in the large chunks. The wort and enzymes simply can't get to it.
I always measure the points of each vorlauf, so I know where I'm headed, and can mash longer or stir more if needed.
If the points of your first runnings are way lower than expected, you know something is wrong. It depends on your mash volumes, you should collect at least 50-70% of all your points in the first runnings. If you're batch sparging, and didn't do a mash out, you can reheat the collected first runnings up a bit (say to 158) and dump it back in and mash longer. Or stir your first sparge really well and let it mash for another 20-30 minutes to collect more points.