You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Generated: February 2, 2026 Scope: Network-accepted candidates who are open to opportunities Total Candidates: 5,702
Executive Summary
The Remotely.works talent network consists of 5,702 candidates who are network-accepted and currently open to opportunities. The network is heavily weighted toward:
Senior engineering talent (IC4/IC5 = 84% of network)
Backend and Fullstack roles (combined 74% of role assignments)
Latin American talent (Brazil 49%, Argentina 11%, Mexico 10%)
1. Seniority Distribution
Seniority
Count
% of Network
IC4
3,217
56.42%
IC5
1,590
27.88%
IC3
481
8.44%
Unknown
137
2.40%
IC6
133
2.33%
Manager
82
1.44%
IC2
45
0.79%
Lead
8
0.14%
Director
7
0.12%
VP
1
0.02%
Partner
1
0.02%
Key Insight: IC4 (Senior) and IC5 (Staff) comprise 84% of the network. Junior talent (IC2/IC3) is scarce at only 9%.
-- Query: Seniority distributionSELECT
COALESCE(ts_interview->>'seniority', 'unknown') as seniority,
COUNT(*) as count,
ROUND(COUNT(*)::numeric*100/SUM(COUNT(*)) OVER (), 2) as pct_of_network
FROM candidates
WHERE status ='network_accepted'AND open_to_opportunities = true
AND deleted_at IS NULLGROUP BY ts_interview->>'seniority'ORDER BY count DESC;
2. Role Distribution
By Role Kind
Kind
Candidates
% of Network
Engineering
5,091
89.28%
Other
589
10.33%
Design
212
3.72%
Note: Candidates can have multiple roles, so percentages sum to >100%
By Specific Role
Role
Kind
Count
% of Network
Backend Engineer
engineering
2,215
38.85%
Fullstack Engineer
engineering
2,016
35.36%
Frontend Engineer
engineering
930
16.31%
Mobile Engineer
engineering
446
7.82%
QA Engineer
engineering
297
5.21%
Data Engineer
engineering
295
5.17%
DevOps Engineer
engineering
280
4.91%
QA Analyst
other
209
3.67%
Engineering Manager
engineering
197
3.45%
UX/UI Designer
design
166
2.91%
Data/BI Analyst
other
136
2.39%
Machine Learning
engineering
136
2.39%
Solutions Architect
engineering
130
2.28%
Data Scientist
engineering
129
2.26%
Product Designer
design
106
1.86%
Customer Support Engineer
engineering
90
1.58%
Project Manager
other
85
1.49%
Product Manager
other
80
1.40%
Other
engineering
71
1.25%
Customer Success Specialist
other
67
1.18%
Salesforce Engineer
engineering
50
0.88%
Business Analyst
other
20
0.35%
Security Engineer
engineering
20
0.35%
Scrum Master
engineering
19
0.33%
Game Engineer
engineering
14
0.25%
Marketing Analyst
other
13
0.23%
Account Executive
other
5
0.09%
UX Researcher
design
3
0.05%
Release Manager
engineering
3
0.05%
Graphic Designer
design
3
0.05%
Key Insight: Backend + Fullstack = 74% of the network. Design roles (UX/UI, Product Designer, Graphic Designer, UX Researcher) represent only 4.87% combined.
-- Query: Role distributionSELECTjor.nameas role,
jor.kind,
COUNT(DISTINCT c.id) as candidate_count,
ROUND(COUNT(DISTINCT c.id)::numeric*100/ (
SELECTCOUNT(*) FROM candidates
WHERE status ='network_accepted'AND open_to_opportunities = true AND deleted_at IS NULL
), 2) as pct_of_network
FROM candidates c
CROSS JOIN LATERAL unnest(c.roles) as role_id
JOIN job_opening_role jor ONjor.id= role_id
WHEREc.status='network_accepted'ANDc.open_to_opportunities= true
ANDc.deleted_at IS NULLANDjor.deleted_at IS NULLGROUP BYjor.id, jor.name, jor.kindORDER BY candidate_count DESC;
-- Query: Role × Seniority matrixSELECTjor.nameas role,
SUM(CASE WHEN ts_interview->>'seniority'='IC2' THEN 1 ELSE 0 END) as IC2,
SUM(CASE WHEN ts_interview->>'seniority'='IC3' THEN 1 ELSE 0 END) as IC3,
SUM(CASE WHEN ts_interview->>'seniority'='IC4' THEN 1 ELSE 0 END) as IC4,
SUM(CASE WHEN ts_interview->>'seniority'='IC5' THEN 1 ELSE 0 END) as IC5,
SUM(CASE WHEN ts_interview->>'seniority'='IC6' THEN 1 ELSE 0 END) as IC6,
SUM(CASE WHEN ts_interview->>'seniority'IN ('lead','manager','director','vp','partner') THEN 1 ELSE 0 END) as leadership,
COUNT(DISTINCT c.id) as total
FROM candidates c
CROSS JOIN LATERAL unnest(c.roles) as role_id
JOIN job_opening_role jor ONjor.id= role_id
WHEREc.status='network_accepted'ANDc.open_to_opportunities= true
ANDc.deleted_at IS NULLANDjor.deleted_at IS NULLGROUP BYjor.nameORDER BY total DESC;
4. Tech Strengths (Top 100)
Based on ts_interview.tech_strengths field:
Rank
Tech Strength
Candidates
% of Network
1
JavaScript
1,958
34.34%
2
AWS
1,830
32.09%
3
React
1,812
31.78%
4
TypeScript
1,498
26.27%
5
Python
1,495
26.22%
6
Node.js
1,290
22.62%
7
Java
1,255
22.01%
8
SQL
985
17.27%
9
PostgreSQL
888
15.57%
10
Docker
828
14.52%
11
C#
648
11.36%
12
MySQL
599
10.51%
13
Kubernetes
587
10.29%
14
MongoDB
546
9.58%
15
.NET
543
9.52%
16
Azure
539
9.45%
17
Angular
516
9.05%
18
Springboot
465
8.16%
19
GCP
436
7.65%
20
Vue.js
413
7.24%
21
Next.js
404
7.09%
22
PHP
399
7.00%
23
Jira
386
6.77%
24
Spring
382
6.70%
25
Kotlin
361
6.33%
26
Terraform
331
5.80%
27
Jenkins
315
5.52%
28
CI/CD
306
5.37%
29
Django
293
5.14%
30
Express
288
5.05%
31
SQL Server
283
4.96%
32
Go (Golang)
279
4.89%
33
CSS
267
4.68%
34
Figma
264
4.63%
35
Angular.js
263
4.61%
36
Postman
251
4.40%
37
GraphQL
248
4.35%
38
Selenium
239
4.19%
39
HTML
228
4.00%
40
Kafka
225
3.95%
41
Ruby on Rails
223
3.91%
42
.NET Core
221
3.88%
43
Laravel
218
3.82%
44
Cypress
205
3.60%
45
Redis
204
3.58%
46
React Native
204
3.58%
47
Oracle Database
198
3.47%
48
Nest.js
192
3.37%
49
Android
191
3.35%
50
Flask
190
3.33%
51
Redux
187
3.28%
52
Swift
183
3.21%
53
Ruby
183
3.21%
54
Git
181
3.17%
55
PowerBI
177
3.10%
56
FastAPI
165
2.89%
57
Linux
163
2.86%
58
Pandas
163
2.86%
59
iOS
156
2.74%
60
Airflow
150
2.63%
61
ASP.Net
147
2.58%
62
Databricks
146
2.56%
63
GitHub Actions
146
2.56%
64
DynamoDB
145
2.54%
65
Playwright
134
2.35%
66
ETL
134
2.35%
67
REST
123
2.16%
68
SCRUM
122
2.14%
69
Azure DevOps
122
2.14%
70
Confluence
120
2.10%
71
Jest
119
2.09%
72
Github
117
2.05%
73
AWS Lambda
115
2.02%
74
SalesForce
113
1.98%
75
Grafana
112
1.96%
76
NumPy
111
1.95%
77
LLMs
111
1.95%
78
Tableau
109
1.91%
79
Tensorflow
109
1.91%
80
Rest API
108
1.89%
81
Snowflake
108
1.89%
82
PySpark
103
1.81%
83
Microservices
102
1.79%
84
Datadog
98
1.72%
85
C++
98
1.72%
86
ElasticSearch
98
1.72%
87
BigQuery
93
1.63%
88
PyTorch
93
1.63%
89
SwiftUI
88
1.54%
90
RabbitMQ
87
1.53%
91
Miro
87
1.53%
92
Ansible
87
1.53%
93
Flutter
85
1.49%
94
Agile Methodology
81
1.42%
95
Bash
81
1.42%
96
Firebase
81
1.42%
97
Apache Spark
80
1.40%
98
Scala
79
1.39%
99
scikit-learn
78
1.37%
100
Objective-C
75
1.32%
Key Insight: The network is dominated by the JavaScript/React ecosystem (34% JavaScript, 32% React) and cloud infrastructure (32% AWS, 9% Azure, 8% GCP). Python is strong at 26%, while Go is relatively underrepresented at 5%.
-- Query: Tech strengths distributionSELECTt.nameas tech_strength,
COUNT(DISTINCT c.id) as candidate_count,
ROUND(COUNT(DISTINCT c.id)::numeric*100/ (
SELECTCOUNT(*) FROM candidates
WHERE status ='network_accepted'AND open_to_opportunities = true AND deleted_at IS NULL
), 2) as pct_of_network
FROM candidates c
CROSS JOIN LATERAL jsonb_array_elements_text(c.ts_interview->'tech_strengths') as strength_id
JOIN tags t ONt.id= strength_id::intWHEREc.status='network_accepted'ANDc.open_to_opportunities= true
ANDc.deleted_at IS NULLANDt.deleted_at IS NULLGROUP BYt.id, t.nameORDER BY candidate_count DESC;
5. Experience Distribution
Experience Bucket
Count
% of Network
0-3 years
410
7.19%
4-5 years
658
11.54%
6-8 years
1,551
27.20%
9-10 years
1,055
18.50%
11-15 years
1,314
23.04%
15+ years
714
12.52%
Key Insight: 81% of candidates have 6+ years of experience. Early-career talent (0-5 years) represents only 19%.
-- Query: Experience distributionSELECT
CASE
WHEN experience_years <=3 THEN '0-3 years'
WHEN experience_years <=5 THEN '4-5 years'
WHEN experience_years <=8 THEN '6-8 years'
WHEN experience_years <=10 THEN '9-10 years'
WHEN experience_years <=15 THEN '11-15 years'
ELSE '15+ years'
END as experience_bucket,
COUNT(*) as count,
ROUND(COUNT(*)::numeric*100/SUM(COUNT(*)) OVER (), 2) as pct_of_network
FROM candidates
WHERE status ='network_accepted'AND open_to_opportunities = true
AND deleted_at IS NULLGROUP BY1ORDER BYMIN(experience_years);
6. Geographic Distribution (Top 20)
Country
Count
% of Network
BR (Brazil)
2,795
49.02%
AR (Argentina)
645
11.31%
MX (Mexico)
552
9.68%
CO (Colombia)
441
7.73%
UY (Uruguay)
147
2.58%
Unknown
130
2.28%
PE (Peru)
104
1.82%
CR (Costa Rica)
95
1.67%
CL (Chile)
89
1.56%
DO (Dominican Republic)
85
1.49%
US (United States)
69
1.21%
BO (Bolivia)
68
1.19%
EC (Ecuador)
61
1.07%
ES (Spain)
51
0.89%
GT (Guatemala)
33
0.58%
PY (Paraguay)
31
0.54%
CA (Canada)
31
0.54%
PT (Portugal)
28
0.49%
VE (Venezuela)
26
0.46%
SV (El Salvador)
25
0.44%
Key Insight: Nearly half (49%) of the network is from Brazil. Top 4 countries (BR, AR, MX, CO) represent 78% of the network.
-- Query: Geographic distributionSELECT
COALESCE(ts_interview->>'country', 'Unknown') as country,
COUNT(*) as count,
ROUND(COUNT(*)::numeric*100/SUM(COUNT(*)) OVER (), 2) as pct_of_network
FROM candidates
WHERE status ='network_accepted'AND open_to_opportunities = true
AND deleted_at IS NULLGROUP BY ts_interview->>'country'ORDER BY count DESCLIMIT20;
7. Last Touchpoint Analysis
A touchpoint is defined as communication FROM the candidate:
Email: Email received FROM the candidate (via messages table where from_id = candidate.user_id)
WhatsApp: Message received FROM the candidate (direction = 'received')
Recording: Interview/meeting recording associated with the candidate
Time Since Last Touchpoint
Bucket
Count
% of Network
Last 30 days
568
9.96%
31-90 days
414
7.26%
91-180 days
612
10.73%
181-365 days
1,031
18.07%
Over 1 year
2,781
48.75%
No touchpoint
299
5.24%
Key Insight: 54% of candidates (3,080) have not communicated in over a year or have no touchpoint record. Only 10% have had communication in the last 30 days.
-- Query: Last touchpoint analysis (emails FROM candidates)
WITH candidate_emails AS (
SELECTc.idas candidate_id, MAX(m.date) as last_email_date
FROM candidates c
JOIN messages m ONm.candidate_id=c.idANDm.from_id=c.user_idANDm.kind='email'WHEREc.status='network_accepted'ANDc.open_to_opportunities= true
ANDc.deleted_at IS NULLANDm.deleted_at IS NULLGROUP BYc.id
),
candidate_whatsapp AS (
SELECTt.candidate_id, MAX(m.created_at) as last_whatsapp_date
FROM im_threads t
JOIN im_messages m ONm.thread_id=t.idJOIN candidates c ONc.id=t.candidate_idWHEREc.status='network_accepted'ANDc.open_to_opportunities= true
ANDc.deleted_at IS NULLANDm.deleted_at IS NULLANDm.direction='received'GROUP BYt.candidate_id
),
candidate_recordings AS (
SELECTr.candidate_id, MAX(r.started_at) as last_recording_date
FROM recordings r
JOIN candidates c ONc.id=r.candidate_idWHEREc.status='network_accepted'ANDc.open_to_opportunities= true
ANDc.deleted_at IS NULLANDr.deleted_at IS NULLGROUP BYr.candidate_id
),
all_touchpoints AS (
SELECTc.idas candidate_id,
GREATEST(
COALESCE(ce.last_email_date, '1970-01-01'::timestamp),
COALESCE(cw.last_whatsapp_date, '1970-01-01'::timestamp),
COALESCE(cr.last_recording_date, '1970-01-01'::timestamp)
) as last_touchpoint
FROM candidates c
LEFT JOIN candidate_emails ce ONce.candidate_id=c.idLEFT JOIN candidate_whatsapp cw ONcw.candidate_id=c.idLEFT JOIN candidate_recordings cr ONcr.candidate_id=c.idWHEREc.status='network_accepted'ANDc.open_to_opportunities= true
ANDc.deleted_at IS NULL
),
bucketed AS (
SELECT
CASE
WHEN last_touchpoint ='1970-01-01'::timestamp THEN 'No touchpoint'
WHEN last_touchpoint >= NOW() - INTERVAL '30 days' THEN 'Last 30 days'
WHEN last_touchpoint >= NOW() - INTERVAL '90 days' THEN '31-90 days'
WHEN last_touchpoint >= NOW() - INTERVAL '180 days' THEN '91-180 days'
WHEN last_touchpoint >= NOW() - INTERVAL '365 days' THEN '181-365 days'
ELSE 'Over 1 year'
END as touchpoint_bucket
FROM all_touchpoints
)
SELECT touchpoint_bucket, COUNT(*) as count,
ROUND(COUNT(*)::numeric*100/SUM(COUNT(*)) OVER (), 2) as pct_of_network
FROM bucketed
GROUP BY touchpoint_bucket;
Touchpoint Coverage by Type
Touchpoint Type
Candidates with Record
% of Network
Recording
4,104
71.94%
WhatsApp (from candidate)
3,803
66.66%
Email (from candidate)
3,518
61.67%
Most Recent Touchpoint Type
Most Recent Type
Count
% of Network
WhatsApp
3,131
54.88%
Recording
1,203
21.09%
Email
1,072
18.79%
None
299
5.24%
Stale Candidates by Role (Over 1 Year Since Touchpoint)
Role
Stale Count
Total in Role
Stale %
Backend Engineer
1,345
2,214
60.7%
Fullstack Engineer
1,091
2,017
54.1%
Frontend Engineer
526
930
56.6%
Mobile Engineer
308
446
69.1%
DevOps Engineer
134
280
47.9%
Data Engineer
128
295
43.4%
QA Engineer
117
297
39.4%
Engineering Manager
107
197
54.3%
Data/BI Analyst
80
136
58.8%
Solutions Architect
72
130
55.4%
QA Analyst
71
210
33.8%
UX/UI Designer
61
166
36.7%
Data Scientist
51
129
39.5%
Machine Learning
51
136
37.5%
Other
49
71
69.0%
Key Insight: Mobile Engineers (69.1%), "Other" roles (69.0%), and Backend Engineers (60.7%) have the highest staleness rates. QA Analysts (33.8%) and UX/UI Designers (36.7%) are the most engaged.
8. Tech Stack Combinations Analysis
This section analyzes combinations of tech strengths to identify common patterns and gaps.
Top Tech Strength Pairs (Co-occurrence)
Skill 1
Skill 2
Count
% of Network
JavaScript
React
1,262
22.12%
JavaScript
TypeScript
1,140
19.98%
React
TypeScript
1,045
18.32%
Node.js
React
910
15.95%
JavaScript
Node.js
866
15.18%
Node.js
TypeScript
797
13.97%
Python
AWS
754
13.22%
React
AWS
621
10.89%
JavaScript
AWS
599
10.50%
AWS
Docker
580
10.17%
PostgreSQL
AWS
551
9.66%
TypeScript
AWS
541
9.48%
Java
Springboot
457
8.01%
AWS
Kubernetes
452
7.92%
C#
.NET
443
7.77%
Docker
Kubernetes
403
7.06%
React
Next.js
385
6.75%
Java
Spring
371
6.50%
Django
Python
281
4.93%
Key Insight: The React + Node.js + TypeScript stack dominates. Python + AWS is the strongest non-JavaScript pairing.
Frontend Framework Distribution (Frontend/Fullstack Roles)
Framework
Candidates
% of Frontend/Fullstack
React
1,631
67.59%
Angular
466
19.31%
Vue.js
393
16.29%
Next.js
384
15.91%
Angular.js
230
9.53%
Svelte
16
0.66%
Ember
7
0.29%
Key Insight: React dominates at 68%. Vue.js and Svelte are underrepresented compared to market demand.
Backend Language Distribution (Backend/Fullstack Roles)
Language
Candidates
% of Backend/Fullstack
Node.js
1,136
36.56%
Java
858
27.62%
Python
715
23.01%
C#
528
16.99%
.NET
478
15.38%
PHP
356
11.46%
Go (Golang)
229
7.37%
Ruby
153
4.92%
Elixir
61
1.96%
Scala
46
1.48%
Rust
25
0.80%
Key Insight: Go (7.4%), Rust (0.8%), and Elixir (2%) are significantly underrepresented given market demand.
Fullstack Stack Combinations (Frontend + Backend)
Frontend
Backend
Count
% of Fullstack
React
Node.js
778
38.57%
React
Python
276
13.68%
React
Java
224
11.11%
Next.js
Node.js
210
10.41%
Vue.js
Node.js
159
7.88%
Angular
Node.js
158
7.83%
React
C#
158
7.83%
React
.NET
156
7.73%
React
PHP
146
7.24%
Angular
C#/.NET
125
6.20%
Vue.js
PHP
114
5.65%
Angular
Java
103
5.11%
React
Ruby
78
3.87%
React
Go
61
3.02%
Vue.js
Python
63
3.12%
Vue.js
Go
16
0.79%
Underrepresented Fullstack Combos:
Combination
Count
Notes
Vue.js + Go
16
High demand, very rare
Next.js + Go
10
Modern stack, scarce
Svelte + Any
9
Emerging framework, almost none
React + Rust
7
Cutting-edge, extremely rare
Angular + Python
43
Enterprise combo, limited
Backend Engineer Language Breakdown
Language
Count
% of Backend
Java
734
33.15%
Node.js
620
28.00%
Python
545
24.62%
C#
419
18.93%
.NET
384
17.34%
PHP
248
11.20%
Go (Golang)
205
9.26%
Kotlin
161
7.27%
Ruby
129
5.83%
Elixir
50
2.26%
Scala
38
1.72%
Rust
19
0.86%
Mobile Engineer Platform Breakdown
Technology
Count
% of Mobile
Kotlin
181
40.58%
Swift
174
39.01%
Android
165
37.00%
iOS
145
32.51%
Java
142
31.84%
React Native
88
19.73%
SwiftUI
88
19.73%
Objective-C
68
15.25%
Flutter
61
13.68%
Jetpack Compose
16
3.59%
Key Insight: Native development (Kotlin/Swift) dominates. Flutter (13.7%) is underrepresented given its growing popularity.
Key Insight: AWS dominates cloud. GCP and Azure combinations are significantly less common.
Data/ML Stack (Data Roles)
Technology
Count
% of Data Roles
Python
493
88.35%
SQL
368
65.95%
Airflow
141
25.27%
Databricks
138
24.73%
PowerBI
134
24.01%
Pandas
131
23.48%
ETL
105
18.82%
Tensorflow
102
18.28%
PySpark
96
17.20%
Snowflake
95
17.03%
PyTorch
84
15.05%
Tableau
84
15.05%
BigQuery
78
13.98%
LLMs
73
13.08%
scikit-learn
71
12.72%
DBT
61
10.93%
Key Insight: Python + SQL is the foundation (88%/66%). Modern data stack (DBT, Snowflake, Databricks) has good representation. LLM expertise (13%) is growing.
Summary of Identified Gaps
Gap Category
Specific Gap
Current Supply
Frontend Frameworks
Vue.js specialists
16.29%
Svelte
0.66%
Backend Languages
Go (Golang)
7-9%
Rust
<1%
Elixir
~2%
Fullstack Combos
Vue.js + Go
16 people
Vue.js + Python
63 people
Next.js + Go
10 people
Svelte + anything
9 people
Mobile
Flutter
13.68%
Cloud
GCP expertise
~5-7%
Azure expertise
~4%
9. 2025 Job Demand vs Candidate Supply Gap Analysis
This section analyzes 677 job openings that were open at some point during 2025 and compares their requirements against the current candidate supply.
2025 Job Overview
Total jobs open during 2025: 677
Status: 637 closed, 34 published, 6 draft
Role Demand vs Supply
Role
Jobs 2025
Candidates
Candidates/Job
Gap Assessment
Fullstack Engineer
208 (30.7%)
2,017
9.7
⚠️ Moderate
Backend Engineer
186 (27.5%)
2,214
11.9
✅ Good
Frontend Engineer
113 (16.7%)
930
8.2
⚠️ Moderate
QA Engineer
46 (6.8%)
297
6.5
⚠️ Tight
Mobile Engineer
38 (5.6%)
446
11.7
✅ Good
DevOps Engineer
37 (5.5%)
280
7.6
⚠️ Moderate
Data Engineer
28 (4.1%)
295
10.5
✅ Good
Machine Learning
17 (2.5%)
136
8.0
⚠️ Moderate
QA Analyst
13 (1.9%)
210
16.2
✅ Good
Data Scientist
12 (1.8%)
129
10.8
✅ Good
UX/UI Designer
12 (1.8%)
166
13.8
✅ Good
Product Designer
9 (1.3%)
106
11.8
✅ Good
Engineering Manager
8 (1.2%)
197
24.6
✅ Good
Solutions Architect
7 (1.0%)
130
18.6
✅ Good
Product Manager
6 (0.9%)
81
13.5
✅ Good
Seniority Demand vs Supply
Seniority
Jobs 2025
% Demand
Candidates
% Supply
Candidates/Job
Gap
IC5
272
40.2%
1,590
27.9%
5.8
⚠️ Tight
IC4
233
34.4%
3,221
56.5%
13.8
✅ Surplus
IC6
107
15.8%
133
2.3%
1.2
🔴 Critical
Lead
64
9.5%
8
0.1%
0.1
🔴 Critical
IC3
46
6.8%
480
8.4%
10.4
✅ Good
Manager
33
4.9%
82
1.4%
2.5
⚠️ Tight
IC2
10
1.5%
45
0.8%
4.5
⚠️ Moderate
Key Insight: IC6 and Lead seniorities are critically undersupplied. Demand heavily favors IC5 (40%) but supply is concentrated at IC4 (57%).
Skill/Stack Demand vs Supply
Skill
Jobs 2025
Candidates
Candidates/Job
Gap
React
187 (36%)
1,814
9.7
⚠️ Moderate
Python
162 (31%)
1,495
9.2
⚠️ Moderate
Node.js
98 (19%)
1,291
13.2
✅ Good
TypeScript
95 (18%)
1,498
15.8
✅ Good
JavaScript
71 (14%)
1,960
27.6
✅ Surplus
AWS
40 (8%)
1,829
45.7
✅ Surplus
Go (Golang)
30 (6%)
279
9.3
⚠️ Moderate
Java
29 (6%)
1,256
43.3
✅ Surplus
Vue.js
28 (5%)
413
14.8
✅ Good
Next.js
24 (5%)
404
16.8
✅ Good
LLMs
21 (4%)
111
5.3
🔴 Tight
Django
22 (4%)
293
13.3
✅ Good
PostgreSQL
16 (3%)
891
55.7
✅ Surplus
OpenAI
12 (2%)
52
4.3
🔴 Critical
LangChain
11 (2%)
56
5.1
🔴 Tight
GenAI
11 (2%)
23
2.1
🔴 Critical
Flutter
11 (2%)
85
7.7
⚠️ Tight
Playwright
14 (3%)
134
9.6
⚠️ Moderate
RAG
7 (1%)
34
4.9
🔴 Critical
Critical Gaps: Role + Seniority Combinations
These combinations have < 2 candidates per job - critical supply shortage:
Role
Seniority
Jobs 2025
Candidates
Gap
Fullstack Engineer
IC6
48
33
🔴 0.7/job
Backend Engineer
IC6
41
57
🔴 1.4/job
Backend Engineer
Lead
23
1
🔴 0.0/job
Fullstack Engineer
Lead
22
0
🔴 0.0/job
Frontend Engineer
IC6
17
8
🔴 0.5/job
Machine Learning
IC5
17
33
🔴 1.9/job
Backend Engineer
Manager
14
7
🔴 0.5/job
Machine Learning
IC6
13
10
🔴 0.8/job
Fullstack Engineer
Manager
12
6
🔴 0.5/job
QA Engineer
Lead
10
0
🔴 0.0/job
QA Engineer
IC6
9
2
🔴 0.2/job
DevOps Engineer
IC6
9
11
🔴 1.2/job
Frontend Engineer
Lead
8
0
🔴 0.0/job
Machine Learning
Lead
7
0
🔴 0.0/job
Data Engineer
IC6
6
4
🔴 0.7/job
Data Scientist
IC6
6
4
🔴 0.7/job
AI/ML Skills Gap (High-Growth Market)
Skill
Jobs 2025
Candidates
Candidates/Job
Assessment
LLMs
21
111
5.3
🔴 Tight
OpenAI
12
52
4.3
🔴 Critical
LangChain
11
56
5.1
🔴 Tight
GenAI
11
23
2.1
🔴 Critical
RAG
7
34
4.9
🔴 Critical
Anthropic
3
4
1.3
🔴 Critical
PyTorch
3
93
31.0
✅ Surplus
Tensorflow
1
109
109.0
✅ Surplus
scikit-learn
2
78
39.0
✅ Surplus
Key Insight: Traditional ML skills (PyTorch, Tensorflow, scikit-learn) have good supply. Generative AI skills (LLMs, OpenAI, LangChain, GenAI, RAG) are critically undersupplied with only 2-5 candidates per job.
Summary: Top Priority Gaps to Address
Priority
Gap Type
Specific Gap
Severity
1
Seniority
IC6 (Principal) - only 133 candidates for 107 jobs
🔴 Critical
2
Seniority
Lead - only 8 candidates for 64 jobs
🔴 Critical
3
Seniority
Manager - only 82 candidates for 33 jobs
⚠️ Tight
4
AI Skills
GenAI - 23 candidates for 11 jobs
🔴 Critical
5
AI Skills
OpenAI - 52 candidates for 12 jobs
🔴 Critical
6
AI Skills
LangChain - 56 candidates for 11 jobs
🔴 Tight
7
AI Skills
RAG - 34 candidates for 7 jobs
🔴 Critical
8
Role+Level
Fullstack IC6 - 33 for 48 jobs
🔴 Critical
9
Role+Level
Backend Lead - 1 for 23 jobs
🔴 Critical
10
Role+Level
ML IC5/IC6 - 43 for 30 jobs
🔴 Critical
10. Salary Analysis: Budget vs Expectations
This section analyzes candidate salary expectations against job budgets to identify where salary mismatches reduce effective supply.
Candidate Salary Expectations by Seniority
Seniority
Candidates
Avg Salary
Median
P25
P75
Director
7
$183,686
$180,000
$132,500
$230,000
IC6
133
$104,245
$100,000
$80,000
$120,000
Manager
81
$99,243
$96,000
$72,000
$120,000
Lead
8
$96,375
$77,500
$57,000
$117,000
IC5
1,587
$87,480
$84,000
$70,000
$100,000
IC4
3,215
$72,778
$72,000
$60,000
$84,000
IC3
478
$51,693
$48,000
$36,000
$60,000
IC2
45
$33,682
$30,000
$24,000
$38,400
Job Budget by Seniority (2025 Jobs)
Seniority
Jobs
Avg Min
Avg Max
Median Max
Director
4
$97,500
$127,500
$117,500
IC6
107
$68,950
$99,411
$100,000
Manager
33
$70,242
$99,697
$100,000
Lead
64
$67,234
$96,406
$100,000
IC5
272
$62,233
$87,829
$89,200
IC4
233
$59,471
$86,262
$80,000
IC3
46
$38,620
$55,348
$57,000
IC2
10
$23,650
$36,100
$32,500
Salary Mismatch by Seniority
Seniority
Candidates
Median Job Budget
Median Ask
Within Budget
% Affordable
% Priced Out
IC4
3,215
$80,000
$72,000
2,250
70.0%
17.5%
IC5
1,587
$89,200
$84,000
926
58.3%
20.9%
IC3
478
$57,000
$48,000
303
63.4%
18.2%
IC6
133
$100,000
$100,000
76
57.1%
19.5%
Manager
81
$100,000
$96,000
48
59.3%
22.2%
IC2
45
$32,500
$30,000
27
60.0%
28.9%
Director
7
$117,500
$180,000
1
14.3%
71.4%
Key Insight: Directors are almost entirely priced out (71%). IC5 and Manager levels have ~20% priced out, reducing effective supply.
Salary Mismatch by Role
Role
Candidates
Job Budget (Median)
Candidate Ask (Median)
Gap
% Affordable
Backend Engineer
2,201
$96,000
$75,000
-$21,000
80.2% ✅
Fullstack Engineer
2,000
$90,000
$74,400
-$15,600
74.1%
Frontend Engineer
922
$90,000
$72,000
-$18,000
76.5%
Mobile Engineer
443
$90,000
$76,000
-$14,000
72.9%
DevOps Engineer
276
$100,000
$80,000
-$20,000
79.0%
Data Engineer
292
$95,500
$72,000
-$23,500
79.8% ✅
Machine Learning
135
$100,000
$84,000
-$16,000
81.5% ✅
Engineering Manager
196
$100,000
$100,000
$0
53.1% ⚠️
Solutions Architect
129
$100,000
$96,000
-$4,000
66.7%
Product Designer
105
$60,000
$65,000
+$5,000
47.6% 🔴
QA Engineer
295
$70,000
$60,000
-$10,000
64.4%
QA Analyst
209
$55,000
$48,000
-$7,000
67.5%
Key Insight: Product Designers are the only role where candidates ask MORE than typical budgets (+$5k gap, only 48% affordable).
Effective Supply: Raw vs Affordable (Critical Combinations)
When accounting for salary, the effective supply drops significantly:
Role
Seniority
Jobs
Budget (P75)
Raw Supply
Affordable
Raw/Job
Affordable/Job
Backend Engineer
Lead
23
$120,000
1
1
0.0
🔴 0.0
Frontend Engineer
IC6
17
$120,000
8
5
0.5
🔴 0.3
Backend Engineer
Manager
14
$120,000
7
5
0.5
🔴 0.4
Fullstack Engineer
Manager
12
$120,000
6
5
0.5
🔴 0.4
Fullstack Engineer
IC6
48
$120,000
33
22
0.7
🔴 0.5
Machine Learning
IC6
13
$120,000
10
9
0.8
🔴 0.7
Backend Engineer
IC6
41
$120,000
57
46
1.4
🔴 1.1
Machine Learning
IC5
17
$120,000
33
29
1.9
⚠️1.7
QA Engineer
IC5
24
$82,750
81
66
3.4
⚠️2.8
Data Engineer
IC5
15
$100,000
65
52
4.3
⚠️3.5
Frontend Engineer
IC5
44
$100,000
228
165
5.2
⚠️3.8
Fullstack Engineer
IC5
111
$100,000
589
444
5.3
⚠️4.0
Salary-adjusted reality:
Fullstack IC6: 33 total → only 22 affordable (0.5/job)
Backend IC5: 704 total → only 577 affordable (6.6/job)
Frontend IC5: 228 total → only 165 affordable (3.8/job)
Candidates "Priced Out" (Asking Above P75 Budget)
Role + Seniority
Total
Affordable
Priced Out
% Lost
Fullstack Engineer IC4
1,187
936
251
21.1%
Backend Engineer IC4
1,267
1,017
250
19.7%
Fullstack Engineer IC5
589
444
145
24.6%
Backend Engineer IC5
704
577
127
18.0%
Frontend Engineer IC4
582
477
105
18.0%
Mobile Engineer IC4
277
198
79
28.5%
Frontend Engineer IC5
228
165
63
27.6%
Mobile Engineer IC5
121
78
43
35.5%
Key Insight: Mobile Engineers at IC5 level have the highest "priced out" rate (35.5%), followed by Frontend IC5 (27.6%).
Salary Distribution by Seniority
Seniority
<$50k
$50-70k
$70-90k
$90-110k
$110-130k
$130k+
IC4
473
991
1,051
481
137
82
IC5
80
277
569
398
148
115
IC3
248
143
66
14
7
0
IC6
3
10
35
36
23
26
Manager
6
11
20
14
13
17
IC2
40
3
2
0
0
0
Summary: Salary-Adjusted Gap Analysis
Priority
Role + Seniority
Jobs
Raw Supply
Affordable
Affordable/Job
Issue
1
Backend Lead
23
1
1
🔴 0.0
No candidates at any price
2
Fullstack Lead
22
0
0
🔴 0.0
No candidates at any price
3
Frontend IC6
17
8
5
🔴 0.3
Salary + supply gap
4
Backend Manager
14
7
5
🔴 0.4
Salary + supply gap
5
Fullstack Manager
12
6
5
🔴 0.4
Salary + supply gap
6
Fullstack IC6
48
33
22
🔴 0.5
Salary reduces supply 33%
7
ML IC6
13
10
9
🔴 0.7
Tight even at budget
8
Backend IC6
41
57
46
🔴 1.1
Salary reduces supply 19%
9
ML IC5
17
33
29
⚠️ 1.7
Tight
10
Fullstack IC5
111
589
444
⚠️ 4.0
25% priced out
11. Data Quality Notes
Candidates without roles: 20 candidates have no roles assigned
Unknown seniority: 137 candidates (2.4%) have no seniority data
-- Query: Candidates without rolesSELECTCOUNT(*) as no_roles_count
FROM candidates
WHERE status ='network_accepted'AND open_to_opportunities = true
AND deleted_at IS NULLAND (roles IS NULLOR array_length(roles, 1) IS NULL);
Appendix: All Tech Strengths
The network includes candidates with 1,469 distinct tech strengths. The full list is available in the database query results.
Report generated from platform database. All queries filter for status = 'network_accepted' AND open_to_opportunities = true AND deleted_at IS NULL.