Do I need to define an external gear ratio in Okapi's odom?

I’m working on setting up odometry on my team’s robot, and it moves but isn’t accurate. I came across some stuff in the API that used external gear ratio definitions when setting up the drivetrain’s ChassisScales. I tried to use them, but it just made any issues worse. any help would be appreciated, and I’ll post the code below:

std::shared_ptr<OdomChassisController> chassis =
  		ChassisControllerBuilder()
    	.withMotors(left_mg, right_mg) // left motor is 1, right motor is 2 (reversed)
    	// green gearset, 4 inch wheel diameter, 11.5 inch wheel track
    	.withDimensions({AbstractMotor::gearset::blue, (36.0/60.0)}, {{3.25_in, 15.0625_in}, 360})
    	// left encoder in ADI ports A & B, right encoder in ADI ports C & D (reversed)
    	.withSensors(
			RotationSensor{11}, 
			RotationSensor{12,true},
			RotationSensor{14}
			)
    	// specify the tracking wheels diameter (2.75 in), track (7 in), and TPR (360)
    	.withOdometry({{2_in, 9.125_in, 3.375_in, 2_in}, 360}, StateMode::FRAME_TRANSFORMATION)
    	.buildOdometry();

	chassis->setState({0_in, 0_in, 0_deg});

	chassis->moveDistance(-12_in);

	chassis->turnAngle(-90_deg);

It’s worth noting that without the external gear ratio defined, the chassis undershoots the drive by a few inches and the turn by about 15 or so degrees. With the gear ratio, it undershoots by 8 or so inches and the turn by about 75 degrees.