| iam.users | iam.seeker_profiles, iam.tuktaker_profiles | user_id → users.id | Each account has exactly one role (account_role), so it has either a Seeker or a TukTaker profile. UPDATED |
| iam.users NEW | iam.business_profiles | business_profiles.seeker_user_id → users.id | Optional business details for a Seeker account. |
| iam.kyc_submissions NEW | iam.kyc_documents | kyc_documents.submission_id → kyc_submissions.id | The NID and selfie files of each verification attempt. |
| catalog.categories | catalog.category_fields | category_fields.category_id → categories.id | Defines task form fields per category. |
| catalog.categories | task.tasks | tasks.category_id → categories.id | Each task belongs to one service category. |
| task.tasks | task.task_locations, task.task_attachments, task.bids, task.task_status_history | Child task_id → tasks.id | Task details, evidence, competing offers and status history. |
| task.bids | task.bid_offers, task.assignments | Offers use bid_id; assignment uses bid_id | Preserves negotiation rounds and the selected bid. |
| task.assignments | payment.payments, payment.escrow_holds, finance.task_settlements | Payment/escrow/settlement use assignment_id | Connects the accepted work attempt to payment, held funds, and final settlement. |
| task.assignments NEW | task.assignment_events, trust.ratings, trust.disputes, payment.tips, task.cancellations | Child assignment_id → assignments.id | Timeline evidence, ratings, disputes, tips and cancellations of one attempt. |
| payment.payments | payment.escrow_holds, payment.refunds | Child payment_id → payments.id | The payment that funds a hold, and refunds against it. |
| payment.escrow_holds NEW | payment.escrow_events | escrow_events.escrow_hold_id → escrow_holds.id | Freeze, release and refund actions on a hold. |
| task.cancellations NEW | finance.penalties | penalties.cancellation_id → cancellations.id | The penalty caused by a cancellation. |
| finance.penalties, finance.task_settlements NEW | finance.penalty_applications | penalty_id, settlement_id | Recovers an outstanding penalty from a later settlement. |
| payment.payout_requests NEW | payment.payout_attempts | payout_attempts.payout_id → payout_requests.id | Each gateway try for one payout. |
| finance.ledger_transactions | finance.ledger_entries | ledger_entries.transaction_id → ledger_transactions.id | Stores debit and credit lines; a posted transaction must balance. |
| finance.ledger_accounts | finance.ledger_entries | ledger_entries.account_id → ledger_accounts.id | Each ledger line changes an account balance. |
| billing.invoices NEW | billing.invoice_lines | invoice_lines.invoice_id → invoices.id | Lines of one periodic invoice. |
| finance.task_settlements | billing.invoice_lines | invoice_lines.settlement_id → task_settlements.id | Lets invoices include the final task settlement. |
| finance.ledger_transactions | billing.statement_entries | statement_entries.ledger_transaction_id → ledger_transactions.id | Links user-facing statement rows to their posted money movement. |