"3 out of 4 users clicked" isn't the same as "750 out of 1000". The textbook interval breaks down for small samples and rates near 0 or 1, and can even go below 0. The Wilson score interval fixes that:
Implement wilson_interval(successes, n, z=1.96) returning (low, high), and wald_interval(successes, n, z=1.96) (the naive version, clipped to [0, 1]) for comparison. Then implement rank_by_lower_bound(items), which takes (name, successes, n) and sorts by the Wilson lower bound, highest first. This is the classic way to rank items by rating without letting a single 5-star review win.