You have a certain number of census tracts (essentially, neighborhoods) with known populations and geographic areas. You know you need to divide the state into X congressional districts.
You should simply assign census tracts to districts such that 1) you end up with X districts, 2) each district's total population is within a Y% tolerance of state population / X, 3) you minimize the average of the lengths of the district borders (to force maximum geographic compactness).
Given available data from the Census, some mucking around in PostGIS or ESRI, and a state-of-the-art commercial solver like Gurobi, there's absolutely no reason this couldn't be done.
It'd also be trivial to add on requirements for balancing demographics or political affiliation within certain tolerances as well.