I used the programmable verification engine called Verify API to handle sending codes and checking them without building that part from scratch. Just hooked it into a custom controller in Strapi and set up a flow where the user sends their phone number, gets a code, then verifies it. Worked smoothly with the roles setup too, just needed to handle the user creation and token logic myself.