convex preference end update