Every confirmed booking the AI intake (or any caller with a valid call or prospect link) writes to the appointments table. Sorted by slot time so the next upcoming job sits at the top.
No bookings yet โ POST /api/appointments with a call_id or
prospect_id, scheduled_at, and (optionally) caller_name,
service, and city to add one.
Rows here are filtered to the contractor's own appointments via the same RLS policy that gates the POST endpoint.