Skip to main content

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:

  1. Offer flow: Send offer → Negotiate → Accept → Confirm → Assignment
  2. 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:

  1. Assignment completion tracking:

    • Need fields for actual vs planned days
    • One-time adjustment amounts
    • Completion notes
    • Finalized flag + finalized_at timestamp
  2. Direct booking flag:

    • Assignment offers need is_direct_booking boolean
    • Direct bookings skip offer/acceptance flow
  3. Road book generation:

    • Travel data needs structured fields for generation
    • Flight details, check-in times, all timestamps
  4. Staff pool invites:

    • Invitation tracking (sent, opened, completed)
    • Auto-accept configuration
  5. 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:

  1. Crew capabilities (public, crew edits): Free-text on crew profile
  2. 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)
  3. 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_fee in functions_catalog used for initial budgeting
  • Each booking has negotiated fee field (actual rate)
  • Workflow:
    1. Initial budget uses default_fee
    2. PM negotiates actual fee with crew member
    3. 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:

  1. Separated crew from company tenancy:

    • New crew_users table (one email = one account across all companies)
    • crew_profiles table (no company_id, can exist without account)
    • company_crew junction table (many-to-many relationship)
    • Employment tracking via employer_id on crew_users
  2. 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
  3. 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:

  1. Global + Company Functions:

    • global_functions table (system-wide)
    • functions_catalog references global_function_id (or null for custom)
    • Company sets own fees even for global functions
  2. Crew Capabilities & Notes:

    • capabilities field on crew_profiles (free-text, crew editable)
    • private_notes field on company_crew (company-specific, hidden from crew)
    • role_note field on assignments (per-booking description)
    • team_label field on assignments (simple team assignment)
  3. Equipment Tracking:

    • company_equipment table (name, default_rate, notes)
    • project_equipment table (bookings with dates, adjustable rates)
    • Availability tracking like crew
  4. Budget Items:

    • project_budget_items table (free-text description + amount)
    • No date tracking (simple line items)
  5. Communication Log:

    • communication_logs table (full audit trail)
    • Tracks all emails sent with content, status, timestamps
  6. Contracts:

    • general_contract_template on companies
    • contract_template on projects
    • Rich text/HTML support
  7. Multi-Currency:

    • exchange_rates table (manual rates per company)
    • Currency fields on all financial records
    • Reporting with conversion
  8. Availability Tracking:

    • crew_availability table (only for employed staff)
    • Linked to crew_user + company
    • Freelancers don't have availability tracked
  9. Enhanced File Storage:

    • crew_profile_id on 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_favorite boolean to company_crew table
  • 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 assignments table
  • 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_at timestamp to assignment_offers table
  • 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:
    1. Copy from crew member to crew member: Pre-fills travel booking form with another crew's details (for group travel)
    2. 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_data json field to projects table
  • 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_data field
  • 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:

  1. company_crew.is_favorite (boolean) - Favorite crew toggle
  2. projects.custom_data (json) - Flexible storage
  3. assignments.travel_status (varchar) - not_booked/booked
  4. assignments.hotel_status (varchar) - not_booked/booked
  5. assignments.roadbook_status (varchar) - not_sent/sent
  6. assignments.invoice_status (varchar) - not_handled/handled (freelancers only)
  7. 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

  1. ✅ Q&A Complete (Session 1 - Oct 23)
  2. ✅ Q&A Complete (Session 2 - Nov 11)
  3. ✅ Q&A Complete (Session 3 - Nov 11)
  4. ✅ Update database schema v4.1 with workflow enhancements
  5. ✅ Update database documentation
  6. ✅ Update UI specs (views.md)
  7. ⏳ Update user cases with new workflows
  8. ⏳ Create migration guide from v3.0 to v4.0