Single table updated in two passes — Workflow 1 creates the row, Workflow 2 enriches it.
| Column | Type | Source |
|---|---|---|
| id | uuid | Auto-generated |
| caller_name | text | Workflow 1 |
| caller_email | text | Workflow 1 |
| slot_time | text | Workflow 1 |
| caller_timezone | text | Workflow 1 |
| problem_summary | text | Workflow 1 |
| booking_uid | text | Cal.com response |
| booking_status | text | Workflow 1 |
| meeting_url | text | Cal.com response |
| created_at | timestamp | Workflow 1 |
| corrected_name | text | Workflow 2 |
| corrected_email | text | Workflow 2 |
| corrected_problem | text | Workflow 2 |
| budget_range | text | Workflow 2 |
| timeline | text | Workflow 2 |
| team_size | text | Workflow 2 |
| service_interest | text | Workflow 2 |
| additional_context | text | Workflow 2 |
| skipped | boolean | Workflow 2 |
| modal_completed_at | timestamp | Workflow 2 |
The two-pass update approach keeps Workflow 1 lightweight and fast — it only writes what is known at booking time. Workflow 2 enriches the same record after the prospect completes the post-call modal. By the end of the full flow, one complete, fully qualified lead record exists in Supabase with no duplicate rows.