Project
A Project is a single talent engagement run for an organisation. It is the widest table in the application: alongside a handful of descriptive fields it stores the metrics and extracted intelligence rendered across the project pages.
Purpose
Section titled “Purpose”Projects are the unit of work the platform is built around. Each one records who the search is for, its status and dates, and the quantitative talent metrics gathered during delivery. Most of its columns are JSON payloads written by the extraction agents, each paired with an *_imported_at timestamp recording when that section was last refreshed. Reports, focus individuals, cities and extractions all hang off a project.
Projects are read on nearly every authenticated page and written by the extraction pipeline.
app/Services/ProjectService.php— project queries with eager loading, and the aggregated report list that merges focus individuals in as pseudo-reports.app/Http/Controllers/Projects/— one single-action controller per project page (ProjectsIndexController,ProjectsGovernanceController,ProjectsGeographyController, and so on).app/Jobs/RunProjectExtractionJob.php— runs an extraction agent and writes the resulting JSON column plus its import timestamp.app/Filament/Resources/ProjectResource.php— staff administration of projects.app/Observers/ProjectObserver.php— attached via#[ObservedBy]on the model.
Relationships
Section titled “Relationships”| Relation | Type | Related model |
|---|---|---|
organization |
belongsTo |
Organization |
stakeholder |
belongsTo |
User |
logo |
belongsTo |
Attachment |
divergenceReport |
belongsTo |
Attachment |
intelligenceReport |
belongsTo |
Attachment |
attachments |
belongsToMany |
Attachment |
configurationResources |
belongsToMany |
ConfigurationResource |
extractions |
hasMany |
ProjectExtraction |
focusIndividuals |
hasMany |
FocusIndividual |
cities |
hasMany |
ProjectCity |
reports |
hasMany |
Report |
feedbacks |
hasMany |
Feedback |
creditAudit |
hasOne |
CreditAudit |
dataCreditReport |
hasOne |
Report |
focusIndividualsAllReport |
hasOne |
Report |
talentDebriefReport |
hasOne |
Report |
creditAuditReport |
hasOne |
Report |
briefingConfirmationReport |
hasOne |
Report |
The five *Report relations are all hasOne onto reports, each constrained to one type with a non-null file_id and ordered newest first.
Data shape
Section titled “Data shape”Table projects. Primary key is a UUID (HasUuids).
| Column | Type | Notes |
|---|---|---|
id |
uuid |
Primary key |
organization_id |
uuid |
Nullable, FK to organizations |
stakeholder_id |
uuid |
Nullable, FK to users |
logo_id |
uuid |
Nullable, FK to attachments |
name |
string |
Search name |
role_name |
string |
Nullable, the role being searched |
description |
text |
Nullable |
status |
string |
Engagement status |
specialism |
array |
JSON cast |
start_at |
date |
Cast to date |
completed_at |
date |
Nullable, cast to date |
refresh_booked_at |
datetime |
Nullable |
divergence_report_id |
uuid |
Nullable, FK to attachments |
intelligence_report_id |
uuid |
Nullable, FK to attachments |
created_at, updated_at |
datetime |
Timestamps |
Metrics
Section titled “Metrics”| Column | Type | Notes |
|---|---|---|
females |
integer |
Nullable |
ethnic_minority |
integer |
Nullable |
actively_interviewing |
integer |
Nullable |
talent_in_motion |
integer |
Nullable |
focus |
integer |
Nullable |
high, primary, secondary |
integer |
Nullable, pipeline tiers |
influencers |
integer |
Nullable |
career_mobility_low |
integer |
Nullable |
career_mobility_medium |
integer |
Nullable |
career_mobility_high |
integer |
Nullable |
Capability scores
Section titled “Capability scores”| Column | Type | Notes |
|---|---|---|
capability_divergence_score |
integer |
Nullable |
capability_divergence_range |
string |
Nullable |
capability_divergence_label |
string |
Nullable |
capability_performance_score |
integer |
Nullable |
capability_performance_range |
string |
Nullable |
capability_performance_label |
string |
Nullable |
capability_potential_score |
integer |
Nullable |
capability_potential_range |
string |
Nullable |
capability_potential_label |
string |
Nullable |
capability_agency_score |
integer |
Nullable |
capability_agency_range |
string |
Nullable |
capability_agency_label |
string |
Nullable |
Geography
Section titled “Geography”| Column | Type | Notes |
|---|---|---|
geography |
array |
Nullable, JSON cast |
geography_imported_at |
datetime |
Nullable |
highlighted_countries |
array |
Nullable, JSON cast |
highly_competitive_countries |
array |
Nullable, JSON cast |
untapped_locations |
array |
Nullable, JSON cast |
global_work_exposure |
array |
Nullable, JSON cast |
global_agility |
array |
Nullable, JSON cast |
global_talent |
array |
Nullable, JSON cast |
Extracted intelligence
Section titled “Extracted intelligence”Each pair below is written by one extraction agent; the *_imported_at column records the last successful run.
| Column | Type | Notes |
|---|---|---|
outcome, outcome_imported_at |
array, datetime |
Nullable |
people, people_imported_at |
array, datetime |
Nullable |
weighting_influences, weighting_influences_imported_at |
array, datetime |
Nullable |
career_mobility, career_mobility_imported_at |
array, datetime |
Nullable |
groupings, groupings_imported_at |
array, datetime |
Nullable |
taps_roadmap, taps_roadmap_imported_at |
array, datetime |
Nullable |
governance, governance_imported_at |
array, datetime |
Nullable |
industry_trends, industry_trends_imported_at |
array, datetime |
Nullable |
Org insights and profile panels
Section titled “Org insights and profile panels”| Column | Type | Notes |
|---|---|---|
functional_expertise |
array |
Nullable, JSON cast |
focus_individuals_capability |
array |
Nullable, JSON cast |
educational_background |
array |
Nullable, JSON cast |
disciplines |
array |
Nullable, JSON cast |
top_qualifications |
array |
Nullable, JSON cast |
top_skills |
array |
Nullable, JSON cast |
key_stats |
array |
Nullable, JSON cast |
recent_moves |
array |
Nullable, JSON cast |
talent_adjacency |
array |
Nullable, JSON cast |
capabilities_shaping_success |
array |
Nullable, JSON cast |
top_priorities |
array |
Nullable, JSON cast |
research_base |
array |
Nullable, JSON cast |
leadership_composition |
array |
Nullable, JSON cast |
edi_reporting |
array |
Nullable, JSON cast |
present_slides |
array |
Nullable, slide visibility config |
Project::referenceNumber() derives a display reference (001, 002, …) from the project’s position among its organisation’s completed projects, ordered by start_at. It is computed, not stored, and returns null for incomplete projects.