Admin User Cases: Project Management
Actor: Susanne (Admin/PM) User Cases: UC-01, UC-02, UC-03
Overviewβ
This document covers the foundational administrative workflows for setting up and managing projects in PBS:
- UC-01: Company Setup (One-time initialization)
- UC-02: Create Staff Profile (Building the crew directory)
- UC-03: Create Project (Defining event requirements)
These are typically performed by company administrators and project managers as initial setup and ongoing project creation tasks.
UC-01: Company Setup (One-time)β
Goal: Set up a new customer company in PBS so their team can start managing projects.
Actor: System Admin (initial setup)
Preconditions: None (new company onboarding)
System: backend.pbs.com (admin setup)
UI Journeyβ
Step 1: Admin navigates to System Admin Dashboard
- Clicks: "Add New Company" button
Step 2: Company Setup Form
βββββββββββββββββββββββββββββββββββββββ
β Create New Company β
βββββββββββββββββββββββββββββββββββββββ€
β Company Name: [New Century Production] β
β Org Number: [556677-8899] β
β Website: [https://ncp.se] β
β Default Currency: [SEK βΌ] β
β β
β [Cancel] [Next: Project Settings β] β
βββββββββββββββββββββββββββββββββββββββ
Admin fills in:
- Company Name: New Century Production (NCP)
- Org Number: 556677-8899
- Website: https://ncp.se (for logo scraping)
- Default Currency: SEK
Clicks: "Next: Project Settings"
Step 3: Project ID Configuration
βββββββββββββββββββββββββββββββββββββββ
β Project ID Settings β
βββββββββββββββββββββββββββββββββββββββ€
β Mode: β
β β Manual (PM enters codes) β
β β Auto-generate β
β β
β Prefix: [NCP] β
β Starting number: [1] β
β β
β Preview: NCP-001, NCP-002... β
β β
β [β Back] [Next: Create Admin User β]β
βββββββββββββββββββββββββββββββββββββββ
Selects:
- Mode: Auto-generate
- Prefix: "NCP"
- Starting number: 1
Clicks: "Next: Create Admin User"
Step 4: Admin User Setup
βββββββββββββββββββββββββββββββββββββββ
β Create Company Administrator β
βββββββββββββββββββββββββββββββββββββββ€
β Name: [Susanne Larsson] β
β Email: [susanne@ncp.se] β
β Role: [ADMIN] (fixed) β
β β
β β Send welcome email with setup linkβ
β β
β [β Back] [Finish Setup] β
βββββββββββββββββββββββββββββββββββββββ
Fills in:
- Name: Susanne Larsson
- Email: susanne@ncp.se
- Checks: "Send welcome email"
Clicks: "Finish Setup"
Step 5: Function Catalog Seeding (automatic)
βββββββββββββββββββββββββββββββββββββββ
β Setting up company... β
βββββββββββββββββββββββββββββββββββββββ€
β β Company created β
β β Project settings configured β
β β Admin user created β
β β³ Loading function catalog... β
β β
β Importing standard functions: β
β β’ Camera Department (5 functions) β
β β’ Audio Department (4 functions) β
β β’ Production (6 functions) β
β β’ Technical (5 functions) β
βββββββββββββββββββββββββββββββββββββββ
Step 6: Success Confirmation
βββββββββββββββββββββββββββββββββββββββ
β β Company Setup Complete! β
βββββββββββββββββββββββββββββββββββββββ€
β NCP is ready to use. β
β β
β Admin access sent to: β
β susanne@ncp.se β
β β
β Next steps: β
β β’ Susanne will receive setup email β
β β’ She can create profiles & projects β
β β
β [View Company] [Add Another Company] β
βββββββββββββββββββββββββββββββββββββββ
System Actionsβ
- Create company record:
INSERT INTO companies (
id, name, org_number, website, default_currency
) VALUES (
uuid_generate_v4(),
'New Century Production',
'556677-8899',
'https://ncp.se',
'SEK'
)
- Generate project ID settings:
INSERT INTO project_id_settings (
company_id, mode, prefix, sequence_number
) VALUES (
{company_id},
'auto',
'NCP',
1
)
- Create admin user:
INSERT INTO users (
company_id, email, name, role
) VALUES (
{company_id},
'susanne@ncp.se',
'Susanne Larsson',
'ADMIN'
)
- Seed function catalog (20+ standard functions):
INSERT INTO functions_catalog (company_id, department, name, avg_work_rate_cents, avg_travel_rate_cents, avg_rate_currency, is_custom)
SELECT
{company_id},
department,
name,
avg_work_rate_cents,
avg_travel_rate_cents,
'SEK',
false
FROM standard_functions_template
- Send welcome email to susanne@ncp.se with password setup link
Entities Createdβ
companies(1 row)project_id_settings(1 row)users(1 row, role=ADMIN)functions_catalog(20+ rows, seeded from template)
UC-02: Create Staff Profile (Manual Entry)β
Goal: Add a new freelancer (Lisa Berg, EVS Operator) to the staff directory so she can be assigned to projects.
Actor: Susanne (Admin)
Preconditions: Susanne is logged in as ADMIN
System: backend.pbs.com
UI Journeyβ
Step 1: Navigate to Staff Section
Susanne logs in to PBS β Dashboard shows recent projects, pending offers, quick actions
Clicks: Main menu β "Staff"
Staff list page appears showing existing profiles
Step 2: Initiate Profile Creation
Clicks: "+ Add New Profile" button (top right)
Step 3: Profile Creation Form - Page 1: Basic Info
βββββββββββββββββββββββββββββββββββββββββββββββββββ
β Create New Profile [1/4] βββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Basic Information β
β β
β First Name: [Lisa] β
β Last Name: [Berg] β
β Email: [lisa@example.com] β
β Phone: [+46 70 123 4567] β
β β
β Type: [β Staff β Employee β Contractor] β
β (Use "Staff" for MVP) β
β β
β [Cancel] [Save Draft] [Next: Identity Info β] β
βββββββββββββββββββββββββββββββββββββββββββββββββββ
Fills in:
- First Name: Lisa
- Last Name: Berg
- Email: lisa@example.com
- Phone: +46 70 123 4567
- Type: Staff
Clicks: "Next: Identity Info"
Step 4: Profile Creation Form - Page 2: Identity & Location
βββββββββββββββββββββββββββββββββββββββββββββββββββ
β Create New Profile [2/4] βββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Identity & Location β
β β
β Address: [Storgatan 12, 114 51 Stockholm] β
β Personal ID: [19850615-1234] (Personnummer) β
β Nationality: [SE - Sweden βΌ] β
β Home Base City: [Stockholm βΌ] β
β β
β Emergency Contact β
β Name: [Anna Berg] β
β Phone: [+46 70 987 6543] β
β Relation: [Spouse βΌ] β
β β
β [β Back] [Save Draft] [Next: Skills β] β
βββββββββββββββββββββββββββββββββββββββββββββββββββ
Fills in:
- Address, Personal ID, Nationality, Home Base
- Emergency Contact: Anna Berg (Spouse), phone
Clicks: "Next: Skills"
Step 5: Profile Creation Form - Page 3: Functions & Skills
βββββββββββββββββββββββββββββββββββββββββββββββββββ
β Create New Profile [3/4] βββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Functions & Skills β
β β
β Select functions this person can perform: β
β β
β [Search functions...] β
β β
β Selected Functions: β
β βββββββββββββββββββββββββββββββββββββββββββββ β
β β EVS Operator β β
β β Department: Video/Replay β β
β β Seniority: [Senior βΌ] [Remove Γ] β β
β βββββββββββββββββββββββββββββββββββββββββββββ β
β βββββββββββββββββββββββββββββββββββββββββββββ β
β β VAR Operator β β
β β Department: Video/Replay β β
β β Seniority: [Mid βΌ] [Remove Γ] β β
β βββββββββββββββββββββββββββββββββββββββββββββ β
β β
β [+ Add Function] β
β β
β [β Back] [Save Draft] [Next: Preferences β] β
βββββββββββββββββββββββββββββββββββββββββββββββββββ
Searches and adds:
- EVS Operator (Senior)
- VAR Operator (Mid)
Clicks: "Next: Preferences"
Step 6: Profile Creation Form - Page 4: Preferences & Photo
βββββββββββββββββββββββββββββββββββββββββββββββββββ
β Create New Profile [4/4] βββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Preferences & Photo β
β β
β Languages: β
β β’ Swedish [Native βΌ] [Remove] β
β β’ English [Fluent βΌ] [Remove] β
β [+ Add Language] β
β β
β Food Preferences: β
β Diet: [Vegetarian βΌ] β
β Allergies: [No shellfish (allergy)] β
β Notes: [] β
β β
β Clothing Sizes: β
β Shirt: [M βΌ] Pants: [32 βΌ] Shoes: [39 βΌ] β
β β
β Profile Photo: (for crew passes & accreditation)β
β βββββββββββββββ β
β β β [Upload Photo] β
β β No photo β JPG, PNG (max 5MB) β
β β β β
β βββββββββββββββ β
β β
β Internal Notes: (not visible to staff) β
β [Excellent EVS operator, worked Champions League]β
β β
β [β Back] [Save Draft] [Create Profile] β
βββββββββββββββββββββββββββββββββββββββββββββββββββ
Adds:
- Languages: Swedish (Native), English (Fluent)
- Food: Vegetarian, No shellfish
- Clothing sizes
- Uploads photo: lisa_berg.jpg
- Internal notes about Lisa's experience
Clicks: "Create Profile"
Step 7: Confirmation
βββββββββββββββββββββββββββββββββββββββ
β β Profile Created Successfully! β
βββββββββββββββββββββββββββββββββββββββ€
β Lisa Berg is now in your staff β
β directory. β
β β
β What's next? β
β β’ Send her a login invite β
β β’ Assign her to a project β
β β’ Add more profiles β
β β
β [Send Login Invite] [View Profile] β
β [Add Another Profile] β
βββββββββββββββββββββββββββββββββββββββ
Susanne clicks "View Profile" β Profile page shows all information, now searchable in staff directory
System Actionsβ
- Create profile:
INSERT INTO crew_profiles (
first_name, last_name, email, phone,
address, personal_id_number, nationality, home_base_city,
emergency_contact_name, emergency_contact_phone, emergency_contact_relation,
photo_url,
languages, food_preferences, clothing_sizes
) VALUES (
{company_id}, 'staff',
'Lisa', 'Berg', 'lisa@example.com', '+46 70 123 4567',
'Storgatan 12, 114 51 Stockholm', '19850615-1234', 'SE', 'Stockholm',
'Anna Berg', '+46 70 987 6543', 'spouse',
's3://photos/lisa_berg.jpg',
'[{"code": "sv", "proficiency": "native"}, {"code": "en", "proficiency": "fluent"}]',
'["Vegetarian", "No shellfish (allergy)"]',
'{"shirt": "M", "pants": "32", "shoes": "39"}',
'Excellent EVS operator, worked Champions League'
)
- Create profile functions:
INSERT INTO profile_functions (profile_id, function_id, seniority) VALUES
({profile_id}, {evs_operator_function_id}, 'senior'),
({profile_id}, {var_operator_function_id}, 'mid')
- Store photo:
INSERT INTO documents (
documentable_type, documentable_id,
doc_type, file_url, file_name,
uploaded_by_user_id
) VALUES (
'Profile', {profile_id},
'photo', 's3://photos/lisa_berg.jpg', 'lisa_berg.jpg',
{susanne_user_id}
)
Entities Createdβ
profiles(1 row)profile_functions(2 rows: EVS Operator, VAR Operator)documents(1 row: photo)
UC-03: Create Projectβ
Goal: Set up a new project (Champions League Final 2025) and define all required crew roles so Susanne can start staffing.
Actor: Susanne (Admin)
Preconditions: Susanne is logged in as ADMIN
System: backend.pbs.com
UI Journeyβ
Step 1: Navigate to Projects
From Dashboard, clicks: Main menu β "Projects"
Projects list page appears showing existing projects
Step 2: Start New Project
Clicks: "+ Create New Project" button (top right)
Step 3: Project Creation Wizard - Step 1: Basic Info
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Create New Project [1/3] βββ β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Basic Information β
β β
β Project Code: [NCP-001] (auto-generated) [βοΈ Edit] β
β β
β Project Name: [Champions League Final 2025] β
β β
β Client Name: [UEFA] β
β (Optional - external client if different) β
β β
β Status: [β Draft β Active β Completed] β
β β
β Dates: β
β Start: [2025-05-10 π
] End: [2025-05-15 π
] β
β β
β Location: β
β City: [Madrid] Country: [Spain βΌ] β
β Venue: [Estadio Santiago BernabΓ©u] β
β Address: [Av. de Concha Espina 1, Madrid] β
β β
β Budget: β
β Amount: [150,000] Currency: [SEK βΌ] β
β β
β Internal Notes: β
β [Major UEFA production, 5 crew members needed] β
β β
β [Cancel] [Save Draft] [Next: Crew Roles β] β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
System auto-generates: NCP-001
Susanne fills in:
- Name: Champions League Final 2025
- Client: UEFA
- Status: Draft
- Dates: May 10-15, 2025
- Location: Madrid, Spain
- Venue: Estadio Santiago BernabΓ©u (with address)
- Budget: 150,000 SEK
Clicks: "Next: Crew Roles"
Step 4: Project Creation Wizard - Step 2: Crew Roles
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Create New Project [2/3] βββ β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Crew Roles β
β β
β LEFT COLUMN (Form) β RIGHT COLUMN (List) β
β ββββββββββββββββββββββββββββ β ββββββββββββββββββ β
β Add New Role β Added Roles (2) β
β β β
β Function: [EVS Operator βΌ] β 1. EVS Operator β
β Quantity: [2] people β Γ 2 people β
β β Work: 3 days β
β Days Required: β Travel: 2 days β
β Work: [3] Travel: [2] β Rate: 5,500/day β
β β Cost: 44,000 SEK β
β Target Rates: β [Remove] β
β Work: [5,500] SEK/day β β
β Travel: [2,750] SEK/day β 2. Camera Operator β
β β Γ 1 person β
β Requirements/Notes: β Work: 5 days β
β [Champions League exp...] β Travel: 2 days β
β β Rate: 6,000/day β
β [+ Add Role] β Cost: 42,000 SEK β
β β [Remove] β
β β β
β β Budget Summary β
β β Crew: 86,000 SEK β
β β Total: 86,000 SEK β
β β ββββββββββ 57% β
β β β
β [β Back] [Save Draft] [Next: Equipment & Other β] β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Susanne clicks: "+ Add Role"
Fills in first role:
- Function: EVS Operator
- Quantity: 2 people
- Work days: 3, Travel days: 2
- Work rate: 5,500 SEK/day, Travel rate: 2,750 SEK/day
- Est. hotel nights: 4, Est. hotel rate: 1,200 SEK/night
- Requirements: "Champions League experience preferred"
System calculates:
- Crew day costs: 2 Γ (3Γ5,500 + 2Γ2,750) = 44,000 SEK
- Hotel costs: 2 Γ 4 Γ 1,200 = 9,600 SEK
- Total role cost: 53,600 SEK
Susanne adds second role:
- Function: Camera Operator
- Quantity: 1 person
- Work days: 5, Travel days: 2
- Work rate: 6,000 SEK/day, Travel rate: 3,000 SEK/day
- Est. hotel nights: 6, Est. hotel rate: 1,200 SEK/night
System calculates:
- Crew day costs: 1 Γ (5Γ6,000 + 2Γ3,000) = 42,000 SEK
- Hotel costs: 1 Γ 6 Γ 1,200 = 7,200 SEK
- Total role cost: 49,200 SEK
Step 2 Total:
- Crew day rates: 86,000 SEK
- Hotel costs (estimated): 16,800 SEK
- Total crew budget: 102,800 SEK (69% of 150,000 SEK budget)
Clicks: "Next: Equipment & Other"
Step 5: Project Creation Wizard - Step 3: Equipment & Other Costs
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Create New Project [3/3] βββ β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Equipment & Other Costs β
β β
β LEFT COLUMN (Forms) β RIGHT COLUMN (Lists) β
β ββββββββββββββββββββββββββββ β ββββββββββββββββββ β
β Add Equipment β Equipment (1) β
β β β
β Equipment: [EVS 6-Channel βΌ]β 1. EVS 6-Channel β
β Quantity: [2] units β Γ 2 Γ 5 days β
β Days: [5] days β @ 3,000/day β
β Rate: [3,000] SEK/day β Cost: 30,000 SEK β
β β [Remove] β
β [+ Add Equipment] β β
β β Other Costs (1) β
β βββββββββββββββββββββββββ β β
β Add Other Cost β 1. Venue Rental β
β β 10,000 SEK β
β Description: β [Remove] β
β [Venue Rental] β β
β Amount: [10,000] β βββββββββββββββββ β
β Currency: [SEK βΌ] β Complete Budget β
β β β
β [+ Add Cost] β Crew day rates: β
β β 86,000 SEK β
β β Hotel (est.): β
β β 16,800 SEK β
β β Equipment: β
β β 30,000 SEK β
β β Other: 10,000 SEK β
β β βββββββββββββββββ β
β β Total: 142,800 SEK β
β β βββββββββββββ 95% β
β β β
β [β Back] [Save Draft] [Create Project] β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Susanne adds equipment:
- Equipment: EVS 6-Channel
- Quantity: 2 units
- Days: 5 days
- Rate: 3,000 SEK/day
System calculates: 2 Γ 5 Γ 3,000 = 30,000 SEK
Susanne adds other cost:
- Description: Venue Rental
- Amount: 10,000 SEK
Complete Project Budget Breakdown:
- Crew day rates: 86,000 SEK
- Hotel costs (estimated): 16,800 SEK
- Equipment costs: 30,000 SEK
- Other costs: 10,000 SEK
- βββββββββββββββββ
- Total: 142,800 SEK (95% of 150,000 SEK budget)
Step 6: Review and Create
Reviews complete budget breakdown with all cost types
Clicks: "Create Project"
Step 7: Confirmation
βββββββββββββββββββββββββββββββββββββββ
β β Project Created Successfully! β
βββββββββββββββββββββββββββββββββββββββ€
β Champions League Final 2025 β
β NCP-001 β
β β
β Status: Draft β
β Required roles: 2 positions β
β Total crew needed: 5 people β
β β
β What's next? β
β β’ Start sending offers to crew β
β β’ Add more roles if needed β
β β
β [Start Staffing] [View Project] β
β [Add More Roles] β
βββββββββββββββββββββββββββββββββββββββ
Susanne clicks "View Project" β Project dashboard shows all details, empty crew slots, budget status
System Actionsβ
- Create project:
INSERT INTO projects (
id, company_id,
project_code, name, client_name,
status, start_date, end_date,
budget_cents, budget_currency,
location_city, location_country,
location_venue, location_venue_address,
notes
) VALUES (
uuid_generate_v4(), {company_id},
'NCP-001', 'Champions League Final 2025', 'UEFA',
'draft', '2025-05-10', '2025-05-15',
15000000, 'SEK', -- 150,000 SEK in cents
'Madrid', 'Spain',
'Estadio Santiago BernabΓ©u', 'Av. de Concha Espina 1, Madrid',
'Major UEFA production, 5 crew members needed'
)
- Update project code sequence:
UPDATE project_id_settings
SET sequence_number = sequence_number + 1
WHERE company_id = {company_id}
- Create project functions (crew roles):
-- EVS Operator (2 people)
INSERT INTO project_functions (
project_id, team_id, function_id,
work_days, travel_days, quantity,
target_work_rate_cents, target_travel_rate_cents, target_rate_currency,
target_hotel_rate_cents, estimated_hotel_nights,
notes
) VALUES (
{project_id}, NULL, {evs_operator_function_id},
3, 2, 2,
550000, 275000, 'SEK',
120000, 4, -- 1,200 SEK/night Γ 4 nights
'Champions League experience preferred'
);
-- Camera Operator (1 person)
INSERT INTO project_functions (
project_id, team_id, function_id,
work_days, travel_days, quantity,
target_work_rate_cents, target_travel_rate_cents, target_rate_currency,
target_hotel_rate_cents, estimated_hotel_nights,
notes
) VALUES (
{project_id}, NULL, {camera_operator_function_id},
5, 2, 1,
600000, 300000, 'SEK',
120000, 6, -- 1,200 SEK/night Γ 6 nights
NULL
);
- Create project equipment:
INSERT INTO project_equipment (
project_id, company_equipment_id,
quantity, days,
rate_cents, rate_currency
) VALUES (
{project_id}, {evs_equipment_id},
2, 5,
300000, 'SEK' -- 3,000 SEK/day in cents
);
- Create project budget items (other costs):
INSERT INTO project_budget_items (
project_id,
description,
amount_cents, currency
) VALUES (
{project_id},
'Venue Rental',
1000000, 'SEK' -- 10,000 SEK in cents
);
Entities Createdβ
projects(1 row)project_functions(2+ rows for each crew role type)project_equipment(1+ rows for each equipment item)project_budget_items(1+ rows for each other cost)project_id_settings(updated sequence)
Summary: Project Management Workflowsβ
UC-01: Company Setup
βββ Create company β Configure project IDs β Create admin user β Seed functions
UC-02: Create Staff Profile
βββ Basic info β Identity β Skills/functions β Preferences/photo β Create
UC-03: Create Project
βββ Basic info β Crew roles β Equipment & other costs β Create
Key MVP Features Demonstratedβ
- Auto-generated project codes: NCP-001, NCP-002, etc.
- Multi-step wizards: Progressive disclosure for complex forms
- Comprehensive budget tracking: Real-time calculation of crew + equipment + other costs
- Function catalog: Standardized roles seeded per company
- Equipment management: Company-owned equipment with daily rates
- Flexible cost tracking: Miscellaneous costs (venue, catering, etc.)
- Separate work/travel rates: Budget accurately for different day types
- Two-column layout: Form on left, added items list on right
Related Documentsβ
- 00-personas.md - Susanne's persona
- 02-admin-staffing.md - Next step: Send offers (UC-04)
- 03-admin-operations.md - Reports and operations
- Database Schema - Complete schema documentation
- /reference/qa-answers - All MVP decisions
Database Tables Usedβ
companies- Company recordsproject_id_settings- Project code generationusers- Admin accountsfunctions_catalog- Standard rolesprofiles- Staff directoryprofile_functions- Skills/roles per personprojects- Project recordsproject_functions- Required roles per projectcompany_equipment- Company equipment inventoryproject_equipment- Equipment assigned to projectproject_budget_items- Miscellaneous costsdocuments- Profile photos