Top 30 consistently is certainly obtainable. We were about one blue chip player away from achieving it under Paul Johnson in 2017.
Rivals has been using the same formula to calculate their rankings for the last 6 years and from that we can calculate the general cutoffs. In short, the scale ranges from 5.2 to 6.1, with the divisions being 2* (5.2-5.4), 3* (5.5-5.7), 4* (5.8-6.0), and 5* (6.1). Each rating grants a player a particular point value with additional points granted for being in the top 250 ranked players (more points for higher rank).
On average, the 30th ranked class has had a Rivals score of
1661 points over the last 6 years. That indicates that your top 20 recruits (the only ones used in the calculation) need to bring in an average value of 83 points per player, which means a relatively even balance between 5.6 (75 points) and 5.7 (90 points) players. Side note: this also means you could technically have a top 30 class consisting entirely of 3* recruits. However, the classes in the 30-26 range average 4.5 four star players, which Paul Johnson was hovering just below in 2017 and 2018. Assuming we get just 1 or 2 more four star players each year (anyone over 5.9 rating is gravy) coupled with a handful 5.7 rated players, we should be able to consistently be top 30.
Top 20 is a fair bit more difficult, but still possible. The 20th ranked class averages around
1894 points, which is an average per player value of 94.7 points and an average of 8.3 four star players. For reference, if you recalculate the 2007 class with the current formula, they had a total of
1886 points. That would mean that recruiting in the Top 20 each year would require us to perform at our historical best each season.