Q&A Session Answers - PBS MVP Requirements
Date: 2025-10-23 Status: Complete (29 questions)
Architecture & Access
Q1: Offers dashboard entry points A: Multiple entry points (D) - From project view, staff search, dashboard widgets
Q12: Separate subdomains A:
- backend.pbs.com - Full admin system
- crew.pbs.com - Staff portal
- Separate UX optimized for each role
- MVP crew portal: Profile management + assignments list + pending offers
Q12b: Johan's dual role access A: One account with role selector (C)
- Login on backend.pbs.com → sees link to switch to crew portal
- Login on crew.pbs.com → no link back (crew-only users don't see admin)
- System detects roles and shows switch option accordingly
Offers & Assignment Flow
Q2: Rate negotiation A: Simple "negotiate" button, discussion happens outside system, Susanne updates rate in system afterward
Q9: Offer details Lisa sees A: Essentials + project details + personal message (C)
- Role, dates, rates (work/travel breakdown), total
- Client name, location, venue
- Personal message from Susanne (predefined template but overrideable)
Q10: Staff accepting offers A: One-click accept (A) - Simple and fast for MVP
Q11: Assignment confirmation flow A: Susanne reviews first (B)
- Lisa accepts → Susanne sees acceptance → Susanne clicks "Confirm" → Assignment created
Q13: Direct booking (no approval flow) A: Two separate action buttons (B)
- "Send Offer" button - Standard offer/negotiation flow
- "Book Directly" button - Immediate assignment (for employees, self-assignment, trusted crew)
- Direct booking still sends confirmation email
Q14: Conflict detection A: Soft warning with override (B)
- System warns: "Lisa has conflict May 12-14. Send anyway?"
- Susanne makes final decision
Q15: Multiple offers to same person A: System warns but allows (C)
- "Lisa has pending offer from you - continue?"
Q22: Offer expiration A: Soft expire (B)
- Offer shows "expired" but Lisa can still respond
- Susanne decides whether to accept late responses
Q23: Rate visibility for staff A: Full breakdown (C)
- Shows: "3 work days @ 5,500 SEK + 2 travel days @ 2,750 SEK = 22,000 SEK"
Documents & Travel
Q3: Document generation approach A: Standard template generation + manual upload (B)
Q4: Travel/hotel data entry A: Structured data entry + file attachments (C)
Q18: Required documents for MVP A:
- Required: Contract, Travel details, Photo, Road book
- Optional: Passport copy, NDA, other attachments
Q19: Document generation vs upload A:
- Contract: System generates from template (Susanne can edit before finalizing)
- Travel details: Susanne enters structured data (flights, hotel, transfers)
- Road book: System generates from structured travel data
- Photo: Required during profile creation (uploaded by person during registration)
- Additional files: Can be uploaded manually
Q20: Road book contents for MVP A: Basic + flight details + all travel times/locations
- Project dates
- Venue address
- Hotel name/address/check-in time
- Flight details (times, flight numbers)
- All travel times and locations
- Contact numbers
Q21: Lisa's assignment view A: Essentials + project context + job details (B, modified)
- Dates, role, location
- Client name, project description
- Her rate (with work/travel breakdown)
- Job details: Meals included, parking, dress code, equipment needed
- Download buttons: Contract, road book, other documents
- No other crew members visible
Reports
Q5: Reports access location A: Within project (A)
Q6: Report customization A: Fixed templates for MVP (A)
Q27: Report access permissions A: Any admin in company (B)
- All NCP admins can see all NCP project reports
Staff Pool & Registration
Q7: Staff pool forms A: One standard form (C)
Q8: Submission review actions A: Approve / Reject / Request More Info (B)
Staff Pool Flow (from follow-up):
- Invite-only for MVP (no public form)
- Susanne adds email addresses in backend.pbs.com
- System sends invite emails
- Person clicks link → Goes to crew.pbs.com registration
- Person fills required fields (profile details + system requirements)
- Auto-accept (if configured) OR Manual review (Susanne approves)
Q17: Invite registration review A: Approve / Reject / Request More Info (B)
- Reject needed for edge cases (wrong email address)
Project & Assignment Lifecycle
Q24: Project status workflow A: Simple (A)
- Draft → Active → Completed
Q25: Assignment completion workflow A: Manual completion with adjustments
- Susanne manually marks project as completed
- Gets completion review screen for each assignment
- Can adjust actual days worked, rates, bonuses
- Creates final financial record for future invoicing
Q26: Assignment completion details A: Full flexibility - Susanne can adjust all fields:
- Work days actually worked
- Travel days actually used
- Work day rate (if changed)
- Travel day rate (if changed)
- One-time adjustments (bonuses, deductions)
- Notes explaining changes
Assignment table must track:
- Original booking: Planned days + agreed rates
- Actual completion: Actual days + final rates + adjustments
Q28: Final amounts & invoicing prep A: Lock/finalize workflow (B)
- Susanne clicks "Finalize Financials" to lock numbers permanently
- Can't edit after finalization
Notifications
Q29: Email notifications for MVP A:
- Staff (Lisa): No automatic emails - only manual emails initiated by Susanne
- Admin (Susanne): No automatic notifications - dashboard shows everything
Key MVP Features Summary
Two Assignment Creation Paths:
- Offer flow: Send offer → Negotiate → Accept → Confirm → Assignment
- Direct booking: Select staff → Set rate → Book → Assignment (email sent)
Dual Role Support (Johan):
- One account, works on both subdomains
- backend.pbs.com: Full admin features + link to crew portal
- crew.pbs.com: Staff portal (no admin link for crew-only users)
Required vs Optional:
- Required docs: Contract, Travel details, Photo, Road book
- Simple status flow: Draft → Active → Completed
- One standard staff pool form (invite-only)
- Fixed report templates
- Company-wide admin access to all projects
Financial Foundation:
- Track original booking vs actual completion
- Full adjustment capability at project completion
- Finalize/lock financials for invoicing
- Separate work day rate vs travel day rate throughout
Database Schema Impacts
New Requirements Identified:
-
Assignment completion tracking:
- Need fields for actual vs planned days
- One-time adjustment amounts
- Completion notes
- Finalized flag + finalized_at timestamp
-
Direct booking flag:
- Assignment offers need
is_direct_bookingboolean - Direct bookings skip offer/acceptance flow
- Assignment offers need
-
Road book generation:
- Travel data needs structured fields for generation
- Flight details, check-in times, all timestamps
-
Staff pool invites:
- Invitation tracking (sent, opened, completed)
- Auto-accept configuration
-
Subdomain context:
- User roles determine subdomain access
- Profile linking on users table already supports dual role
Q&A Session 2 - Stakeholder Meeting Refinements
Date: 2025-11-11 Status: Complete (21 questions) Schema Impact: MAJOR - Multi-company support, equipment tracking, enhanced features
Topic 1: Function/Role System Enhancements
Q1: Global vs Company Functions A: Both (with company-specific fees)
- Global function library: System-wide standard functions available to all companies
- Company custom functions: Companies can create their own functions
- Company-specific fees: Even for global functions, each company sets their own default fees
Q2: Capabilities System A: Crew member notes (free-text)
- Capabilities attached to crew member profiles (not function definitions)
- Free-text field for crew to describe their skills
- Example: "Handheld, Steadicam, Sony cameras"
- Crew members can edit their own capabilities
Q3: Company Private Notes vs Capabilities A: THREE separate note types:
- Crew capabilities (public, crew edits): Free-text on crew profile
- Company private notes (private, company edits): Company-specific notes about crew (e.g., "Has back problems")
- GDPR-sensitive
- NOT visible to crew member
- Separate for each company (Company A can't see Company B's notes)
- Project role note (per booking): Free-text describing specific booking (e.g., "Main", "Backup")
- Stored on assignment
- Only for this project
Q4: Default Fee Adjustments A: Project-level fee negotiation
default_feein functions_catalog used for initial budgeting- Each booking has negotiated
feefield (actual rate) - Workflow:
- Initial budget uses default_fee
- PM negotiates actual fee with crew member
- Final fee stored in assignment record
Topic 2: Equipment & Budget Tracking
Q5: Company Equipment Tracking A: Yes, with availability tracking
- Track company-owned equipment (OB-van, GFX server, etc.)
- Availability conflicts prevented (can't double-book)
- Same approach as crew booking
Q6: Generic Budget Line Items A: Free-text + amount (simple approach)
- Free-text description field
- Manual amount entry
- No date tracking needed for MVP
- No categories (keep it simple)
- Use for: rentals, venue costs, catering, etc.
Q7: Equipment Details A: Name + default rate + notes
- Equipment name (e.g., "OB-Van Alpha")
- Default daily rate
- Free-text notes field
- Keep it simple for MVP
Q8: Equipment Booking Details A: Start/end dates + adjustable rates + no quantity
- Start and end dates (like crew bookings)
- Rate can be adjusted per project
- Each unit tracked individually (no quantity field)
Topic 3: Crew Data & Registration Flow
Q9: Non-Registered Crew Members A: Option C - Fully flexible
- Admin can create crew record without account
- Crew can be booked immediately (no registration required)
- Crew can register later and "claim" their record
- When crew registers with matching email, they take over their profile
Q10: Account Claiming & Data A: Crew claims all data across companies
- Crew sees and can edit all info admin entered
- Company private notes stay hidden
- If crew exists in multiple companies, one account claims ALL records (same email)
- Default profile data from last company that added them
Q11: Cross-Company Visibility A: Complete data isolation
- Companies cannot see other companies' data
- Company A cannot see that crew member also works for Company B
- Each company relationship completely isolated
Q12: Crew Availability Tracking A: Option 1 - Staff only (simpler)
- Only track availability for staff members (employed by company)
- Freelancers manage their own conflicts (accept/decline offers)
- Freelancers don't have availability tracking
Q13: Staff vs Freelancer Marking A: employer_id on crew_users
- Field on crew_users table:
employer_id(nullable, references companies) - If set: Employed by that company (staff)
- If null: Freelancer
- Per-company relationship (can be staff at A, freelance for B)
- Clarification: Only ONE employer per crew member (one employer_id, not per-company)
Topic 4: Project Structure & Teams
Q14: Teams Concept A: Simple label/tag (MVP approach)
- Team is just a free-text field on each booking
- Example: "Camera A", "Audio Main"
- No complex team entities for MVP
- Visual organization only
Q15: Pre-Visits & Extended Bookings A: Flexible booking dates
- Project has start/end dates (main event, informational)
- Used for availability warnings (soft, not blocking)
- Default dates when sending crew requests (editable)
- Individual crew bookings can be OUTSIDE project dates
- Supports pre-visits, load-in, post-production, etc.
Topic 5: Remaining Topics
Q16: Double Bookings & Concurrency A: Warning system
- Alert users when multiple admins edit simultaneously
- Don't block editing, just warn
- No locking mechanism for MVP
Q17: Email/Communication Log A: Full audit trail
- Track: recipient, type, date/time, message content, status, related project/booking
- All communications logged for reference
- Supports: sent, delivered, opened, responded statuses
Q18: Contracts A: Company template + project customization (rich text)
- Company-level: General contract template (rich text/HTML)
- Project-level: Can customize company template per project
- Rich text editor support needed
Q19: File Storage Hierarchy A: Tag-based with access control
- Company-level: General documents (all admins)
- Project-level: Project files with tags (all admins)
- Crew-level: Personal files (crew + admins)
- Project-crew-level: Per-booking files (specific crew + admins)
- Access control enforced by ownership
- Company A cannot see Company B's files about same crew member
Q20: Post-Project Reporting A: Full economic reporting
- Budget vs actual costs
- Breakdowns by function, person, equipment
- Profit margins
- Export capabilities (PDF, Excel)
- Everything buildable with existing data
Q21: Currencies & Timezones A: Multi-currency with manual rates, skip timezones
- Currencies:
- Company base currency
- Per-booking currency support
- Manual exchange rates (admin configures in company settings)
- Reporting shows original currency + converted to base
- Timezones:
- Skip for MVP (dates only, no specific times)
- Call times handled in communications/schedules
Key Schema Changes from Session 2
MAJOR CHANGES - Multi-Company Crew Support:
-
Separated crew from company tenancy:
- New
crew_userstable (one email = one account across all companies) crew_profilestable (no company_id, can exist without account)company_crewjunction table (many-to-many relationship)- Employment tracking via
employer_idon crew_users
- New
-
Account claiming workflow:
- Admin creates crew_profile (claimed_by_user_id = null)
- Crew can be booked immediately
- Crew registers later → links via email matching
- One account claims all profiles across companies
-
Data isolation:
- Each company has private notes about crew (GDPR-sensitive)
- Complete isolation between companies
- Crew sees combined view of all their assignments
NEW FEATURES:
-
Global + Company Functions:
global_functionstable (system-wide)functions_catalogreferences global_function_id (or null for custom)- Company sets own fees even for global functions
-
Crew Capabilities & Notes:
capabilitiesfield on crew_profiles (free-text, crew editable)private_notesfield on company_crew (company-specific, hidden from crew)role_notefield on assignments (per-booking description)team_labelfield on assignments (simple team assignment)
-
Equipment Tracking:
company_equipmenttable (name, default_rate, notes)project_equipmenttable (bookings with dates, adjustable rates)- Availability tracking like crew
-
Budget Items:
project_budget_itemstable (free-text description + amount)- No date tracking (simple line items)
-
Communication Log:
communication_logstable (full audit trail)- Tracks all emails sent with content, status, timestamps
-
Contracts:
general_contract_templateon companiescontract_templateon projects- Rich text/HTML support
-
Multi-Currency:
exchange_ratestable (manual rates per company)- Currency fields on all financial records
- Reporting with conversion
-
Availability Tracking:
crew_availabilitytable (only for employed staff)- Linked to crew_user + company
- Freelancers don't have availability tracked
-
Enhanced File Storage:
crew_profile_idon documents for access control- Multi-level access (company/project/crew/project-crew)
Q&A Session 3 - Brainstorm Features Analysis
Date: 2025-11-11 Source: Swedish brainstorming notes (stakeholder meeting) Status: Complete (6 features reviewed)
Feature Decisions
✅ Approved for MVP
Q1: Should we add favorite/star crew members? A: YES - Include in MVP
- Add
is_favoriteboolean tocompany_crewtable - Show star icon in crew directory and all views where crew appears
- Company-specific favorites (each company has own)
- Filter option: "Show Favorites Only"
- Implementation: Simple boolean toggle, low complexity
- Value: Helps quickly filter to preferred crew when staffing
Q2: Do we need administrative task tracking checkboxes? A: YES - Critical MVP Feature
- Manual checkboxes for workflow tracking on
assignmentstable - All crew (staff + freelancers):
- Travel status: 'not_booked' / 'booked'
- Hotel status: 'not_booked' / 'booked'
- Roadbook status: 'not_sent' / 'sent'
- Freelancers only:
- Invoice status: 'not_handled' / 'handled'
- All checkboxes are manual (no auto-detection from system data)
- Visible in project grid view (assignment table)
- Implementation: Enum fields on assignments table
- Value: Essential for admin workflow - tracks completion of all tasks per crew member
Q3: Should we add contract acceptance workflow? A: YES - Include in MVP
- Add
contract_accepted_attimestamp toassignment_offerstable - Freelancers: Must check "I accept the contract" checkbox when accepting offer
- Contract text displayed in acceptance modal
- Cannot accept without checking
- Timestamp recorded
- Staff: No contract workflow (use direct booking)
- Implementation: Frontend checkbox + timestamp field
- Value: Legal requirement for freelancer contracts
Q4: Add copy travel functionality? A: YES - Frontend Feature (No Schema Changes)
- Two helper functions:
- Copy from crew member to crew member: Pre-fills travel booking form with another crew's details (for group travel)
- Create return trip: Auto-reverses route and dates
- Pure frontend JavaScript (no database changes)
- Priority: Crew-to-crew copy is more important than reverse
- Implementation: Form helpers, low complexity
- Value: Saves significant time when booking travel for large crews
Q5: Add custom data field for future features? A: YES - Future-Proof Schema
- Add
custom_datajson field toprojectstable - Flexible storage for unstructured data
- Use cases:
- Useful links (client portals, resources)
- Custom project fields
- Integration data
- Any future needs
- Implementation: Single JSON column, very low complexity
- Value: Provides flexibility without schema changes later
⏭️ Post-MVP Features
Q6: QR code for WhatsApp groups? A: NO - Post-MVP
- Not critical for launch
- Can add later easily (just URL field + client-side QR generation)
Q8: Copy travel days (reverse/duplicate)? A: Partially YES - See Q4
- Basic copy functionality approved for MVP (frontend only)
- Advanced features can wait
Q9: Useful links management? A: Partially YES - See Q5
- Schema support via
custom_datafield - UI for managing links can be post-MVP
Q10: Structured accreditation tracking? A: NO - Post-MVP
- Current
crew_profiles.capabilities(free text) is sufficient for MVP - Can mention accreditation in text field
- Structured system with expiration dates not needed yet
Schema Changes (v4.1)
New Fields Added:
company_crew.is_favorite(boolean) - Favorite crew toggleprojects.custom_data(json) - Flexible storageassignments.travel_status(varchar) - not_booked/bookedassignments.hotel_status(varchar) - not_booked/bookedassignments.roadbook_status(varchar) - not_sent/sentassignments.invoice_status(varchar) - not_handled/handled (freelancers only)assignment_offers.contract_accepted_at(timestamp) - Contract acceptance tracking
Total: 7 new fields across 4 tables Impact: Non-breaking additions (all nullable or have defaults)
Next Steps
- ✅ Q&A Complete (Session 1 - Oct 23)
- ✅ Q&A Complete (Session 2 - Nov 11)
- ✅ Q&A Complete (Session 3 - Nov 11)
- ✅ Update database schema v4.1 with workflow enhancements
- ✅ Update database documentation
- ✅ Update UI specs (views.md)
- ⏳ Update user cases with new workflows
- ⏳ Create migration guide from v3.0 to v4.0