Thanks to their “Lucy” spy network, which operated high ranking sources in Germany via Switzerland, the Russians didn’t just expect the German attack, they knew all about it. They received the full details of the German plan, and the Russian military intelligence was able to verify most details in the front to ensure that the information was real, not disinformation.
The Russians prepared eight defense lines one behind the other, and also positioned their entire strategic mobile reserve East of the Kursk salient, in case the Germans will penetrate thru all these defense lines, which indeed happened.
The Russian plan was simple. First, they will let the Germans attack as planned right into their series of very dense defense lines, and after the German armor will be crushed there, the Russian army will start its strategic attack North and South of the Kursk salient and push the Germans West along a wide part of the front.
The Russian defense was unprecedented in its density. A total of 1,300,000 Russian soldiers with 3600 tanks, 20,000 guns, including 6000 76mm anti-tank guns, and 2400 aircraft were concentrated in and around the Kursk salient. It was about a fifth of the Russian military personnel, over a third of the tanks and over 1/4 of the aircraft. They laid 3400 mines per each kilometer of the front, half of them anti-tank mines, and over 300,000 civilians dug thousands of kilometers of anti-tank trenches and other fortifications. The Russian lines were filled with numerous anti-tank guns organized in groups of up to 10, each group commanded by one officer and firing at the same target. The Russian camouflage was superb, the Germans said that until they were hit by them, they could identify neither the Russian mine fields nor their anti-tank gun positions. To avoid forcing the Germans to divert from their known plan, Russian air attacks were delayed until the German tanks already moved into the trap. The Russians were as ready as they could be.