Low speed surge

You said
At idle, I'm at around 7.
low idle vacuum can be related to;
1) a big cam,
2) too-tight valve-lash
3) late idle-timing
4) vacuum leaks
But you are NOT at idle...... you said;
at low speeds (around 30 MPH and 1500 rpm or so) has a noticeable surge.
So what is your cruise vacuum at 1500/30mph?

By this time, the vacuum should be high enough that the PV is closed.
Make sure that;
your Vcan is working, and not hunting,
your low-rpm ignition timing is stable and not bouncing around,
your coolant temp is up to ~180,
your bowl-vent is not being blasted by the fan.
Then, if the above is all good;
My guess is that your idle mixture screws are in too far, probably due to an improperly adjusted Transfer-Slot exposure.
Here's what I would try;
Rev it up to ~1800rpm and set it on the nearest fast idle cam. Now readjust the mixture screws for highest rpm. Then, on a Holley-type carb, richen it up about 1/8th turn. Kick the fast idle off. This should get you a mixture-screw adjustment of near to 3/4 to 1.0 turn out. If so then;
go roadtest it.
If the engine does not idle decent at this setting, it is probably the Transfer slot that will need to be reset, and then; the idle speed brought back into line with ignition timing. That is to say, at idle, your engine is idling on a combination of mixture-screw fuel and transfer-slot fuel. Since we set the cruise mixture with the mixture screws, we can't move them..... so you will have to reset the idle-mixture with some combination of Transfer slot exposure underneath the primary throttle blades, and or Secondary A/F if the carb has a 4-corner idle-system. To take some of the guesswork out of this, set the TransferSlot exposure to just noticeably taller than wide; some say .040 tall; then re-adjust the secondary side (if you have a 4-corner-idle carb).
If nothing seems to work, and your engine has solid-lifters, reset the lash just a lil looser, and start over.
If you do not have a 4-corner idle, then most likely the engine will want some idle-air bypass.