@Shahid Agha moving from voice.md rulesets to live pipelines without agents looping you’re already good at the prompt layer. the jump is that live pipelines fail because of state, not prompts. here’s a setup that fits your Supabase stack. store each voice.md as a row in an agents table (name, prompt, version). store work in a tasks table: id, type, status, claimed_by, attempts, parent_task_id, trace_id, input, output, error. claim tasks with one atomic query so two agents never take the same row: sql = update tasks set status='running', claimed_by=$1, attempts=attempts+1 where id = ( select id from tasks where status='pending' and type=$2 order by created_at limit 1 for update skip locked ) returning *; call it through a Supabase RPC. then three rules: after 3 attempts mark it failed, agents never write to each other’s rows, and a handoff means inserting a new task with parent_task_id set. the trace_id lets you follow one lead through every agent. before going multi-agent, ship one pipeline end to end: inbound message, classify, draft reply, human approves. you’ll find your loops there first.