As you said, 7...dxc4 was a mistake. Nbd7 and b6 would both be better. I don't think 13...cxd5 is as good as Nc5. 18...Ng5 looks inaccurate as well. Nf6 and even Nd6 look better. Black takes way too long to mobilize the queenside and pays for it.
The perfect game?
20 Nxf7! Kxf7 21 f5 and game over!
black had no knowledge of the opening whatsoever. cxd5 is a game losing error. Bb3 is bad cause of 13. Nc5 and then you have a bad bishop on c2 obstructing your rook file
my advice: stick to e4 till you're 2500
Not quite game over: chess.com computer analysis gives the line 20. Nxf7 Kxf7 21. f5 Re8 22. fxe6+ Bxe6 23. Bxe6+ Rxe6 24. Rc7+ Kf6 25. Rxe6+ Kxe6 26. Rxg7 Rd8 27. Rxb7 Rd2 28. Rxh7 Rxb2 29. Rxa7 with a three pawn lead into the endgame. It gives 20. f5? a question mark because it doesn't seem to find 21. Bxf7, which gives a better result than the suggested 21. Bd5. Then again, since I don't have a membership, the analysis depth is lesser compared to Shredder.
As for cxd5, I wouldn't call it game-losing: it's worth only one point according to computer analysis, and I was up by three points by move 32.
And why would I stick to e4 when I'm much more familiar with d4?
I recently finished the following game, in which I think neither player made any gross error until the end. Even before black's final move, computer analysis gives white an advantage of over 3 points (with a material advantage of only one point). So where did black go wrong?