Beccie Feedback — Remaining Items
Can Do (Code Changes)
| # | Item | Notes | Status |
|---|---|---|---|
| 1 | Region > sub-region > territory hierarchy | Data is in COUNTRY GROUP SHEET CSV. Territory config already has full hierarchy (region > sub_region > country). | Done — config matches CSV |
| 2 | Creator country showing EU instead of country code (DE) | Fixed: dropdown grouped by territory shows country names. Country names seeded to DB (admin_settings.country_names). All display surfaces show "Germany (DE)" format. |
Done |
| 3 | Gifting history showing product name | Product thumbnails added to gifting table | Done |
| 4 | Due date / go live date consolidation in deliverables | Removed Go Live Date from form, kept Due Date only | Done |
| 5 | Unhide Approvals in nav | Enabled | Done |
| 6 | Unhide Briefs in nav | Enabled | Done |
Needs Input / Beyond Code
| # | Item | Who / What | Status |
|---|---|---|---|
| 7 | "Fails to create influencer" | Was permissions — fixed with finance view-only + RLS | Done |
| 8 | View As role preview | Built: admin/super_admin can preview app as any role via context bar dropdown. Blue gradient when active, "Viewing as [Role]" with Exit button. | Done |
| 9 | Shopify gift order — "nothing happens" | Needs investigation | Open |
| 10 | Where to add briefs links | Briefs attached during gifting (per Andrew) | Answered |
| 11 | Pranika data access | People/access task | Open |
| 12 | Historically gifted partners | 16k records from Airtable already in at hub.tbtg.com/gifting | Done |
| 13 | Shopify metafields for BP | Rick / Shopify config | Open |
| 14 | Targets & KPIs / Paddy's node tree | Question: should we hide targets page and use Paddy's analytics instead? | Needs decision |
| 15 | Can't test calendar til agreements exist | Unblocked — Beccie can add agreements and test | Unblocked |
Batch 2 — Beccie Feedback (2026-03-21)
| # | Item | Notes | Status |
|---|---|---|---|
| 16 | Formatting gone dodgy on main page | Header/sidebar overlap — context bar height not accounted for. Fixed: content offset increased from pt-20 (80px) to pt-[5.5rem] (88px), sidebar top matched. |
Done |
| 17 | Senior Manager missing from Settings > Position Labels | Added senior_manager to POSITION_KEYS in positions-settings.tsx |
Done |
| 18 | Users section showing "Head Of" instead of "Associate Director" | Users page had local hardcoded ROLE_LABELS — replaced with usePositionLabels() hook so it reads admin-configured labels |
Done |
| 19 | Budgets don't save | Two stale DB constraints blocking inserts: budgets_territory_check (only allowed UK/IE/US/EU), budgets_created_by_fkey (FK to public.users with 1 row). Both dropped. |
Done |
| 20 | Budgets showing by region not subregion | Created useBudgetTerritories() hook that flattens region-level territories into subregion entries (DACH, France & Belgium, Italy, etc.). Budget create/edit/filter dropdowns now show subregions. Admin-configurable via Settings > Territories. |
Done |
| 21 | Flip tier 1 and 3 | Tier 3 = biggest influencers (was gold), tier 1 = smallest (was bronze). Migration 064 renamed gold→tier_3, silver→tier_2, bronze→tier_1. Default for new creators is tier_1. Updated all display surfaces with getTierLabel(). |
Done |
| 22 | Budget delete doesn't work | handleDelete was a stub (toast only). Implemented real deleteBudget() mutation + useDeleteBudget hook + DELETE RLS policy. |
Done |
Also Done This Round
- Removed Tracking and Follow Up columns from gifting table
- Finance role enforced as view-only (UI + 38 RLS policies)
- Position labels updated (head_of → Associate Director, etc.)
- Country names stored in DB and displayed across all surfaces (table, cards, profile, selectors, approvals, outreach)
- SQL injection fix in archive content API route
- Finance removed from approval permissions (field-permissions + approval-rules aligned)
- View As role preview for admins (context bar dropdown, blue gradient when active)
- Tier system overhaul: tier_1/tier_2/tier_3 naming, tier 3 = biggest, default tier_1 for new creators
- Budget subregion support via
useBudgetTerritories()hook - Budget save/delete fully wired to Supabase (was stub/broken constraints)
- Header/sidebar spacing fix for context bar height
- Senior Manager added to position labels settings
- Users page reads position labels from admin settings (no more hardcoded ROLE_LABELS)
Approval Thresholds (Updated per Beccie)
| Amount | Approver(s) |
|---|---|
| £0 – £5,000 | Senior Manager (Associate Director / Commercial) |
| Over £5,000 | Senior Manager + Executive |
- Finance does not approve anything (view-only role)
- Commercial has same approval authority as Associate Director
- Role hierarchy: Team Member → Manager → Senior Manager → Associate Director → Commercial → Finance (view only) → Admin