docs(milestone): complete v0.1-nextcraft-ui-prototype

---ci---
phase: 7
milestone: v0.1
status: complete
requirements:
  covered: [REQ-001, REQ-002, REQ-003, REQ-004, REQ-005, REQ-006, REQ-007, REQ-008, REQ-009, REQ-010, REQ-011, REQ-012, REQ-013, REQ-014, REQ-015, REQ-016, REQ-017, REQ-018, REQ-019, REQ-020, REQ-021, REQ-022, REQ-023, REQ-024, REQ-025, REQ-026, REQ-027, REQ-028]
  partial: []
---/ci---

Milestone v0.1 (nextcraft-ui-prototype) complete.

Summary:
- 7 phases (P0 pre-execution + P1-P6 execution + P7 final review)
- 28 requirements covered (all complete)
- 4 surfaces: Learner (7 pages), Marketplace (5), Employer Dashboard (4), Admin (4)
- 19 routes, 104 TypeScript files
- Shared component library (5 primitives + design tokens)
- Mock data: 5 competency stacks (70 competencies), 20 jobs, 15 candidates, 10 employers
- Tech: Next.js 15, Tailwind CSS v4, lucide-react, recharts, @xyflow/react, Inter font
- Storybook with 6 stories
- Dark mode, breadcrumbs, role switcher, responsive design
- Build passes, typecheck passes, Storybook build passes

Phases:
  P0 pre-execution     → v0.0.1
  P1 project-scaffolding → v0.0.2
  P2 learner-surface   → v0.0.3
  P3 marketplace-surface → v0.0.4
  P4 employer-dashboard → v0.0.5
  P5 admin-surface     → v0.0.6
  P6 polish-integration → v0.0.7
  P7 final-review-ship → v0.1.0 (milestone release)
This commit is contained in:
CIAgent
2026-09-10 22:47:56 +00:00
parent 6ee51f61f0
commit 810485ecc8
103 changed files with 19536 additions and 0 deletions
+470
View File
@@ -0,0 +1,470 @@
/**
* Nextcraft — Admin Surface Mock Data
*
* Mock data for the admin surface only: platform metrics, activity feed,
* system health, learner roster (admin view), and marketplace moderation
* queues. Pure prototype data — no backend, no business logic.
*/
// ---------------------------------------------------------------------------
// Platform metrics (REQ-022)
// ---------------------------------------------------------------------------
export interface PlatformMetric {
id: string;
label: string;
value: number;
/** Rendered suffix (e.g. "%" or ""). */
suffix: string;
/** Trend vs previous period, in percentage points (signed). */
trendPct: number;
/** Lucide icon name (resolved by the page). */
icon: string;
/** Tailwind color token used for the icon chip. */
tone: 'indigo' | 'emerald' | 'amber' | 'rose' | 'cyan' | 'violet';
}
export const platformMetrics: PlatformMetric[] = [
{
id: 'metric-learners',
label: 'Total Learners',
value: 1247,
suffix: '',
trendPct: 4.2,
icon: 'Users',
tone: 'indigo',
},
{
id: 'metric-employers',
label: 'Total Employers',
value: 89,
suffix: '',
trendPct: 1.8,
icon: 'Building2',
tone: 'emerald',
},
{
id: 'metric-placements',
label: 'Active Placements',
value: 312,
suffix: '',
trendPct: 6.5,
icon: 'Briefcase',
tone: 'amber',
},
{
id: 'metric-completion',
label: 'Completion Rate',
value: 38,
suffix: '%',
trendPct: 2.1,
icon: 'GraduationCap',
tone: 'violet',
},
{
id: 'metric-nps',
label: 'NPS Score',
value: 47,
suffix: '',
trendPct: -1.2,
icon: 'ThumbsUp',
tone: 'cyan',
},
];
// ---------------------------------------------------------------------------
// Activity feed (REQ-022)
// ---------------------------------------------------------------------------
export interface ActivityEvent {
id: string;
message: string;
/** Relative-time label shown to the user (kept static for the prototype). */
relativeTime: string;
/** Lucide icon name. */
icon: string;
/** Tailwind color token used for the icon chip. */
tone: 'indigo' | 'emerald' | 'amber' | 'rose' | 'cyan' | 'violet';
}
export const activityFeed: ActivityEvent[] = [
{
id: 'act-001',
message: 'New learner registered: Sarah Chen joined AI Orchestration Engineer stack',
relativeTime: '5 min ago',
icon: 'UserPlus',
tone: 'indigo',
},
{
id: 'act-002',
message: "Competency mastered: Marcus Lee completed 'Multi-Agent Communication'",
relativeTime: '23 min ago',
icon: 'CheckCircle',
tone: 'emerald',
},
{
id: 'act-003',
message: "New job posted: OpenAI Labs posted 'Senior LLM Engineer'",
relativeTime: '1 hour ago',
icon: 'Briefcase',
tone: 'amber',
},
{
id: 'act-004',
message: 'Placement recorded: Alex Rivera hired at Anthropic Research',
relativeTime: '2 hours ago',
icon: 'Award',
tone: 'violet',
},
{
id: 'act-005',
message: 'Employer verified: Hugging Face completed identity verification',
relativeTime: '3 hours ago',
icon: 'ShieldCheck',
tone: 'emerald',
},
{
id: 'act-006',
message: 'Microcredential issued: 5 learners earned RAG Pipeline Design credential',
relativeTime: '5 hours ago',
icon: 'GraduationCap',
tone: 'cyan',
},
{
id: 'act-007',
message: "Oral defense completed: Jamie Park defended 'Agent Architecture Patterns'",
relativeTime: '8 hours ago',
icon: 'MessageSquare',
tone: 'indigo',
},
{
id: 'act-008',
message: 'New enrollment spike: 23 new learners in Computational Sciences',
relativeTime: '12 hours ago',
icon: 'TrendingUp',
tone: 'rose',
},
{
id: 'act-009',
message: "Competency published: 'Guardrails & Output Validation' added to AI Orchestration stack",
relativeTime: '1 day ago',
icon: 'BookOpen',
tone: 'violet',
},
{
id: 'act-010',
message: 'Employer application submitted: Mistral AI requested marketplace access',
relativeTime: '2 days ago',
icon: 'Building2',
tone: 'amber',
},
];
// ---------------------------------------------------------------------------
// System health (REQ-022)
// ---------------------------------------------------------------------------
export type ServiceStatus = 'operational' | 'degraded' | 'down';
export interface ServiceHealth {
id: string;
name: string;
status: ServiceStatus;
}
export const serviceHealth: ServiceHealth[] = [
{ id: 'svc-web', name: 'Web Server', status: 'operational' },
{ id: 'svc-db', name: 'Database', status: 'operational' },
{ id: 'svc-ai-tutor', name: 'AI Tutor Service', status: 'operational' },
{ id: 'svc-assessment', name: 'Assessment Engine', status: 'degraded' },
{ id: 'svc-jobs', name: 'Job Aggregation', status: 'operational' },
{ id: 'svc-search', name: 'Search Service', status: 'operational' },
];
/** 30-day uptime bars (mock percentages for the simple visual). */
export const uptimeBars: number[] = [
99.98, 99.99, 99.95, 99.97, 100.0, 99.91, 99.88, 99.97, 99.99, 99.96, 99.92,
99.98, 99.99, 99.95, 100.0, 99.97, 99.93, 99.9, 99.96, 99.98, 99.99, 99.94,
99.97, 99.96, 99.92, 99.99, 99.98, 99.95, 99.97, 99.96,
];
export interface SystemStats {
errorRate: string;
avgResponseMs: number;
}
export const systemStats: SystemStats = {
errorRate: '0.02%',
avgResponseMs: 142,
};
// ---------------------------------------------------------------------------
// Learner roster (admin view) (REQ-023)
// ---------------------------------------------------------------------------
export type LearnerStatus = 'active' | 'completed' | 'paused';
export interface AdminLearnerCompetency {
id: string;
name: string;
status: 'mastered' | 'in_progress' | 'available' | 'locked';
}
export interface AdminLearnerCredential {
id: string;
name: string;
issuedAt: string;
score: number;
}
export interface AdminLearner {
id: string;
name: string;
email: string;
stackId: string;
stackName: string;
progressPct: number;
masteredCount: number;
totalCompetencies: number;
status: LearnerStatus;
joinedAt: string;
competencies: AdminLearnerCompetency[];
credentials: AdminLearnerCredential[];
}
const STACKS = [
{ id: 'stack-orchestration', name: 'AI Orchestration Engineer' },
{ id: 'stack-safety', name: 'AI Safety & Governance Lead' },
{ id: 'stack-designer', name: 'Human-AI Product Designer' },
{ id: 'stack-operator', name: 'AI-Augmented Field Operator' },
{ id: 'stack-science', name: 'Computational Sciences Practitioner' },
];
const STACK_TOTALS: Record<string, number> = {
'stack-orchestration': 15,
'stack-safety': 14,
'stack-designer': 13,
'stack-operator': 12,
'stack-science': 16,
};
const COMP_NAME_BANK: Record<string, string[]> = {
'stack-orchestration': [
'Agent Architecture Patterns',
'Multi-Agent Communication',
'Tool Use & Function Calling',
'Prompt Engineering Fundamentals',
'RAG Pipeline Design',
'Vector Databases & Embeddings',
'LLM Evaluation & Metrics',
'Guardrails & Output Validation',
'Agent Memory Systems',
'Workflow Orchestration',
'Model Routing & Cascading',
'Streaming & Incremental Output',
'Observability for Agents',
'Cost Optimization Strategies',
'Production Deployment Patterns',
],
'stack-safety': [
'Alignment Fundamentals',
'Red Teaming Methodologies',
'Model Card Authoring',
'Bias Auditing',
'AI Policy Frameworks',
'Risk Taxonomy & Classification',
'Interpretability Techniques',
'Incident Response for AI',
'Data Provenance & Lineage',
'Jailbreak & Prompt Injection Defense',
'Model Monitoring in Production',
'Privacy-Preserving ML',
'Governance Documentation',
'Stakeholder Communication',
],
'stack-designer': [
'Agentic Interaction Patterns',
'Conversational UX',
'AI Transparency Patterns',
'Human-in-the-Loop Design',
'Prompt UX',
'Failure & Fallback Design',
'Multimodal Interface Design',
'Trust & Calibration',
'Accessibility for AI Interfaces',
'Persona & Tone Systems',
'Evaluation of AI UX',
'Onboarding to Agentic Systems',
'AI Ethics in Product Design',
],
'stack-operator': [
'AI Co-Pilot Operation',
'Robotics Safety Protocols',
'Predictive Maintenance Alerts',
'Computer Vision Inspection',
'Sensor Data Interpretation',
'Digital Twin Fundamentals',
'Augmented Reality Overlays',
'Edge Model Deployment',
'Calibration & Drift Correction',
'Field Data Collection',
'Autonomous System Supervision',
'Safety-Critical Decision Making',
],
'stack-science': [
'Scientific Computing with Python',
'ML for Scientific Discovery',
'Molecular & Materials Simulation',
'Climate Modeling Fundamentals',
'Bioinformatics Pipelines',
'High-Performance Computing',
'Scientific Data Visualization',
'Reproducible Research Practices',
'Statistical Inference',
'Physics-Informed Neural Networks',
'Generative Models for Science',
'Causal Inference Methods',
'Experiment Design',
'Data Assimilation',
'Scientific Writing with AI',
'Open Science & FAIR Data',
],
};
function buildCompetencies(
stackId: string,
mastered: number,
inProgress: number,
): AdminLearnerCompetency[] {
const names = COMP_NAME_BANK[stackId] ?? [];
const out: AdminLearnerCompetency[] = names.map((name, i) => {
let status: AdminLearnerCompetency['status'] = 'locked';
if (i < mastered) status = 'mastered';
else if (i < mastered + inProgress) status = 'in_progress';
else if (i < mastered + inProgress + 3) status = 'available';
return { id: `${stackId}-c${i.toString().padStart(3, '0')}`, name, status };
});
return out;
}
function buildCredentials(
stackId: string,
mastered: number,
): AdminLearnerCredential[] {
const names = COMP_NAME_BANK[stackId] ?? [];
const count = Math.min(mastered, 6);
const out: AdminLearnerCredential[] = [];
for (let i = 0; i < count; i++) {
out.push({
id: `mc-${stackId}-${i}`,
name: names[i] ?? `Competency ${i + 1}`,
issuedAt: `2026-0${(i % 8) + 1}-${((i * 4) % 27 + 1).toString().padStart(2, '0')}T10:00:00Z`,
score: 80 + ((i * 7) % 18),
});
}
return out;
}
interface RosterSeed {
name: string;
email: string;
stackIdx: number;
mastered: number;
inProgress: number;
status: LearnerStatus;
joinedAt: string;
}
const ROSTER_SEEDS: RosterSeed[] = [
{ name: 'Sarah Chen', email: 'sarah.chen@example.com', stackIdx: 0, mastered: 9, inProgress: 2, status: 'active', joinedAt: '2026-05-12T09:00:00Z' },
{ name: 'Marcus Lee', email: 'marcus.lee@example.com', stackIdx: 0, mastered: 14, inProgress: 1, status: 'active', joinedAt: '2026-02-03T09:00:00Z' },
{ name: 'Jamie Park', email: 'jamie.park@example.com', stackIdx: 0, mastered: 15, inProgress: 0, status: 'completed', joinedAt: '2025-12-01T09:00:00Z' },
{ name: 'Alex Rivera', email: 'alex.rivera@example.com', stackIdx: 1, mastered: 10, inProgress: 2, status: 'active', joinedAt: '2026-04-18T09:00:00Z' },
{ name: 'Priya Sharma', email: 'priya.sharma@example.com', stackIdx: 1, mastered: 5, inProgress: 3, status: 'active', joinedAt: '2026-06-22T09:00:00Z' },
{ name: 'Diego Morales', email: 'diego.morales@example.com', stackIdx: 1, mastered: 14, inProgress: 0, status: 'completed', joinedAt: '2025-11-10T09:00:00Z' },
{ name: 'Riley Thompson', email: 'riley.thompson@example.com', stackIdx: 2, mastered: 7, inProgress: 2, status: 'active', joinedAt: '2026-07-01T09:00:00Z' },
{ name: 'Maya Patel', email: 'maya.patel@example.com', stackIdx: 2, mastered: 3, inProgress: 1, status: 'paused', joinedAt: '2026-08-15T09:00:00Z' },
{ name: 'Jordan Kim', email: 'jordan.kim@example.com', stackIdx: 2, mastered: 13, inProgress: 0, status: 'completed', joinedAt: '2026-01-20T09:00:00Z' },
{ name: 'Sam Wilson', email: 'sam.wilson@example.com', stackIdx: 3, mastered: 4, inProgress: 2, status: 'active', joinedAt: '2026-08-02T09:00:00Z' },
{ name: 'Taylor Brooks', email: 'taylor.brooks@example.com', stackIdx: 3, mastered: 12, inProgress: 0, status: 'completed', joinedAt: '2026-01-05T09:00:00Z' },
{ name: 'Casey Nguyen', email: 'casey.nguyen@example.com', stackIdx: 4, mastered: 8, inProgress: 3, status: 'active', joinedAt: '2026-03-30T09:00:00Z' },
{ name: 'Morgan Davis', email: 'morgan.davis@example.com', stackIdx: 4, mastered: 16, inProgress: 0, status: 'completed', joinedAt: '2025-10-14T09:00:00Z' },
{ name: 'Avery Garcia', email: 'avery.garcia@example.com', stackIdx: 4, mastered: 2, inProgress: 1, status: 'paused', joinedAt: '2026-08-28T09:00:00Z' },
{ name: 'Quinn Foster', email: 'quinn.foster@example.com', stackIdx: 0, mastered: 6, inProgress: 3, status: 'active', joinedAt: '2026-07-19T09:00:00Z' },
];
export const adminLearners: AdminLearner[] = ROSTER_SEEDS.map((seed, i) => {
const stack = STACKS[seed.stackIdx];
const total = STACK_TOTALS[stack.id];
const competencies = buildCompetencies(stack.id, seed.mastered, seed.inProgress);
const credentials = buildCredentials(stack.id, seed.mastered);
const progressPct = Math.round((seed.mastered / total) * 100);
return {
id: `adm-lrn-${(i + 1).toString().padStart(3, '0')}`,
name: seed.name,
email: seed.email,
stackId: stack.id,
stackName: stack.name,
progressPct,
masteredCount: seed.mastered,
totalCompetencies: total,
status: seed.status,
joinedAt: seed.joinedAt,
competencies,
credentials,
};
});
// ---------------------------------------------------------------------------
// Marketplace moderation queues (REQ-025)
// ---------------------------------------------------------------------------
export interface JobReviewItem {
id: string;
title: string;
employerName: string;
submittedAt: string;
stackName: string;
location: string;
}
export const jobReviewQueue: JobReviewItem[] = [
{ id: 'rev-001', title: 'Senior LLM Engineer', employerName: 'OpenAI Labs', submittedAt: '2026-09-08T14:00:00Z', stackName: 'AI Orchestration Engineer', location: 'San Francisco, CA (Remote)' },
{ id: 'rev-002', title: 'AI Safety Auditor', employerName: 'Anthropic Research', submittedAt: '2026-09-09T11:30:00Z', stackName: 'AI Safety & Governance Lead', location: 'San Francisco, CA' },
{ id: 'rev-003', title: 'Agentic UX Designer', employerName: 'Hugging Face', submittedAt: '2026-09-09T16:45:00Z', stackName: 'Human-AI Product Designer', location: 'Remote' },
{ id: 'rev-004', title: 'Field Robotics Lead', employerName: 'Boston Dynamics', submittedAt: '2026-09-10T08:15:00Z', stackName: 'AI-Augmented Field Operator', location: 'Waltham, MA' },
{ id: 'rev-005', title: 'Climate ML Researcher', employerName: 'DeepMind', submittedAt: '2026-09-10T10:00:00Z', stackName: 'Computational Sciences Practitioner', location: 'London (Remote)' },
];
export interface EmployerVerificationItem {
id: string;
name: string;
logoInitials: string;
industry: string;
submittedAt: string;
location: string;
}
export const employerVerificationQueue: EmployerVerificationItem[] = [
{ id: 'ver-001', name: 'Mistral AI', logoInitials: 'MA', industry: 'Artificial Intelligence', submittedAt: '2026-09-07T09:00:00Z', location: 'Paris, France' },
{ id: 'ver-002', name: 'Cohere', logoInitials: 'CO', industry: 'Language Models', submittedAt: '2026-09-08T13:20:00Z', location: 'Toronto, Canada' },
{ id: 'ver-003', name: 'Scale AI', logoInitials: 'SA', industry: 'Data & Annotation', submittedAt: '2026-09-09T17:00:00Z', location: 'San Francisco, CA' },
];
export type FlaggedContentType = 'Job Posting' | 'Review' | 'Employer Profile';
export interface FlaggedContentItem {
id: string;
contentType: FlaggedContentType;
title: string;
flaggedBy: string;
reason: string;
flaggedAt: string;
}
export const flaggedContentQueue: FlaggedContentItem[] = [
{ id: 'flag-001', contentType: 'Job Posting', title: 'Junior Prompt Engineer', flaggedBy: 'Automated filter', reason: 'Suspicious salary range', flaggedAt: '2026-09-09T12:00:00Z' },
{ id: 'flag-002', contentType: 'Review', title: 'Anonymous review on OpenAI Labs', flaggedBy: 'User report', reason: 'Inappropriate language', flaggedAt: '2026-09-09T18:30:00Z' },
{ id: 'flag-003', contentType: 'Employer Profile', title: 'Stealth Startup 42', flaggedBy: 'Moderator', reason: 'Unverified contact info', flaggedAt: '2026-09-10T07:45:00Z' },
{ id: 'flag-004', contentType: 'Job Posting', title: 'ML Internship', flaggedBy: 'Automated filter', reason: 'Missing required fields', flaggedAt: '2026-09-10T09:15:00Z' },
];
+112
View File
@@ -0,0 +1,112 @@
/**
* Pre-scripted AI tutor responses for the prototype.
* Each pair has a Coach (motivational, pacing) and Tutor (concept, Socratic)
* variant keyed by intent.
*/
export interface TutorResponse {
id: string;
intent: string;
agent: 'coach' | 'tutor';
message: string;
suggestedActions?: string[];
}
export const aiTutorResponses: TutorResponse[] = [
{
id: 'resp-001',
intent: 'stuck-on-concept',
agent: 'coach',
message:
"I can see you've hit a wall on RAG Pipeline Design — that's the most common sticking point in this stack. Take a 5-minute break, then come back and let's try a smaller chunk. You've already mastered Tool Use, so the retrieval pieces will click faster than you expect.",
suggestedActions: ['Take a break', 'Review a worked example', 'Break it into smaller steps'],
},
{
id: 'resp-002',
intent: 'stuck-on-concept',
agent: 'tutor',
message:
"Let's build intuition first. RAG is a two-stage retrieval pipeline: (1) given a query, find the most relevant passages from a corpus, and (2) feed those passages into the model as context so its answer is grounded. Socratic question: why might a lexical search (like BM25) struggle with a query phrased very differently from the document text?",
suggestedActions: ['Show me a worked example', 'Compare BM25 vs embeddings', 'Try a practice problem'],
},
{
id: 'resp-003',
intent: 'request-pacing',
agent: 'coach',
message:
"You're 62% through the AI Orchestration stack and ahead of your original pace by nine days. Your next two defenses are scheduled in 11 days. I recommend a 3-day sprint on Multi-Agent Communication, then one light day before the defense prep.",
suggestedActions: ['Show my weekly plan', 'Schedule a lighter day', 'Adjust pace'],
},
{
id: 'resp-004',
intent: 'request-pacing',
agent: 'tutor',
message:
'Here is a suggested sequence: complete the Multi-Agent Communication module in 3 sessions of 45 minutes, then the Memory Systems primer in 2 sessions. After that, one full session for defense rehearsal. This matches the cognitive load profile of learners who succeeded before you.',
suggestedActions: ['Lock in this plan', 'Adjust session length', 'See alternatives'],
},
{
id: 'resp-005',
intent: 'celebrate-milestone',
agent: 'coach',
message:
"Huge milestone — you just earned your Tool Use & Function Calling microcredential with a 91. That's above the cohort median. You now have three of the five core orchestration credentials. Two more and you qualify for the stack endorsement.",
suggestedActions: ['See path to endorsement', 'Share with employer partners', 'Pick the next competency'],
},
{
id: 'resp-006',
intent: 'celebrate-milestone',
agent: 'tutor',
message:
'Your artifact for this competency showed clean handling of structured outputs and graceful fallback when the model returned malformed JSON. For your next competency, I recommend exploring how tool-use composes with multi-agent communication — that will set you up for the stack endorsement.',
suggestedActions: ['Start Multi-Agent Communication', 'Review a harder artifact example', 'Read a case study'],
},
{
id: 'resp-007',
intent: 'explain-socratic',
agent: 'tutor',
message:
"Think about agent memory as three layers: short-term context (the current conversation window), episodic memory (records of past agent runs you can replay), and long-term semantic memory (consolidated knowledge you distill over time). Question: if an agent handles 10,000 sessions a day, which layer would you consolidate into long-term memory, and how often?",
suggestedActions: ['I have an answer', 'Give me a hint', 'Show a worked example'],
},
{
id: 'resp-008',
intent: 'defense-prep',
agent: 'coach',
message:
"Your oral defense for Multi-Agent Communication is in 11 days. You are well prepared — your process trace shows 14 distinct practice runs. Let's spend one session rehearsing the edge-case questions, then a mock defense with me acting as the panel.",
suggestedActions: ['Start mock defense', 'Review edge-case questions', 'See my process trace'],
},
{
id: 'resp-009',
intent: 'defense-prep',
agent: 'tutor',
message:
"In a defense you'll be asked to explain your design trade-offs, not just your code. Be ready to answer: why did you choose a blackboard architecture over direct message passing? What failure mode did you observe under load, and how did you mitigate it? Let's rehearse one question now.",
suggestedActions: ['Rehearse question 1', 'Rehearse question 2', 'See scoring rubric'],
},
{
id: 'resp-010',
intent: 'career-guidance',
agent: 'coach',
message:
"Based on your competencies and artifacts, you match strongly to AI Orchestration Engineer roles (96%) and Agent Reliability Engineer roles (90%). Two employers are actively hiring for these profiles. Want me to show you the matching jobs and the remaining competencies they require?",
suggestedActions: ['Show matching jobs', 'See competency gaps', 'Build a targeted plan'],
},
{
id: 'resp-011',
intent: 'career-guidance',
agent: 'tutor',
message:
'Your portfolio demonstrates multi-agent systems and evaluation, which are the two most-cited skills in senior orchestration postings. The gap to a Staff-level role is observability and cost optimization. I recommend the Agent Reliability Engineer competencies as your next sprint.',
suggestedActions: ['Start reliability sprint', 'See a staff-level job', 'Compare skill gaps'],
},
{
id: 'resp-012',
intent: 'check-understanding',
agent: 'tutor',
message:
'Quick check: in a plan-and-execute agent, what is the advantage of re-planning after each tool call rather than executing the full plan from the start? Take your time — there is no penalty for thinking.',
suggestedActions: ['I have an answer', 'Give me a hint', 'Skip this check'],
},
];
+184
View File
@@ -0,0 +1,184 @@
import type { Candidate } from '@nextcraft/types';
export const candidates: Candidate[] = [
{
id: 'cand-001',
name: 'Maya Okonkwo',
avatar: 'https://i.pravatar.cc/150?img=1',
headline: 'AI Orchestration Engineer · Multi-agent systems, RAG, evaluation',
competencyStackId: 'stack-orchestration',
microcredentials: 11,
artifactCount: 12,
defenseScore: 92,
matchScore: 96,
bio: 'Shipped two production agent systems handling 4M+ queries/week. Evidence portfolio includes a multi-agent research assistant with full eval harness.',
},
{
id: 'cand-002',
name: 'Devon Park',
avatar: 'https://i.pravatar.cc/150?img=2',
headline: 'AI Safety Researcher · Alignment, red teaming, interpretability',
competencyStackId: 'stack-safety',
microcredentials: 10,
artifactCount: 9,
defenseScore: 90,
matchScore: 91,
bio: 'Published two workshop papers on jailbreak robustness. Runs an automated red-team suite with 1,200+ probes across three model families.',
},
{
id: 'cand-003',
name: 'Priya Iyer',
avatar: 'https://i.pravatar.cc/150?img=3',
headline: 'Human-AI Product Designer · Agentic UX, trust calibration',
competencyStackId: 'stack-designer',
microcredentials: 9,
artifactCount: 11,
defenseScore: 88,
matchScore: 89,
bio: 'Designed the transparency system for an assistant with 2M MAU. Portfolio includes a full human-in-the-loop review pattern library.',
},
{
id: 'cand-004',
name: 'Tomás Vega',
avatar: 'https://i.pravatar.cc/150?img=4',
headline: 'LLM Application Developer · RAG, function calling, streaming',
competencyStackId: 'stack-orchestration',
microcredentials: 12,
artifactCount: 10,
defenseScore: 87,
matchScore: 93,
bio: 'Built a document-grounded Q&A product from zero to 50K daily actives. Specializes in retrieval quality and output validation.',
},
{
id: 'cand-005',
name: 'Hana Lindqvist',
avatar: 'https://i.pravatar.cc/150?img=5',
headline: 'Computational Biologist · Drug discovery, ML pipelines',
competencyStackId: 'stack-science',
microcredentials: 13,
artifactCount: 8,
defenseScore: 91,
matchScore: 88,
bio: 'Active-learning pipeline nominated for a phenotype-prediction benchmark. Reproducible workflows with Snakemake and containerized HPC jobs.',
},
{
id: 'cand-006',
name: 'Marcus Bell',
avatar: 'https://i.pravatar.cc/150?img=6',
headline: 'Robotics Operations Specialist · Vision systems, field AI',
competencyStackId: 'stack-operator',
microcredentials: 8,
artifactCount: 7,
defenseScore: 84,
matchScore: 78,
bio: 'Five years on a warehouse robotics fleet. Built an anomaly-triage dashboard that cut false-positive escalations by 40%.',
},
{
id: 'cand-007',
name: 'Sofia Marchetti',
avatar: 'https://i.pravatar.cc/150?img=7',
headline: 'AI Governance Lead · NIST AI RMF, audit, model cards',
competencyStackId: 'stack-safety',
microcredentials: 11,
artifactCount: 6,
defenseScore: 89,
matchScore: 85,
bio: 'Stood up AI governance at a 5,000-person org. Authored 14 model cards and a risk register covering 30+ deployed systems.',
},
{
id: 'cand-008',
name: 'Liam Chen',
avatar: 'https://i.pravatar.cc/150?img=8',
headline: 'Agent Reliability Engineer · Observability, tracing, SRE',
competencyStackId: 'stack-orchestration',
microcredentials: 10,
artifactCount: 9,
defenseScore: 86,
matchScore: 90,
bio: 'Owns tracing for an agent platform serving 200+ internal teams. Built a token-cost alerting system that saved $1.2M/year.',
},
{
id: 'cand-009',
name: 'Amara Diallo',
avatar: 'https://i.pravatar.cc/150?img=9',
headline: 'Climate ML Scientist · Forecasting, data assimilation, PINNs',
competencyStackId: 'stack-science',
microcredentials: 12,
artifactCount: 8,
defenseScore: 90,
matchScore: 84,
bio: 'Downscaled GCM output for a regional energy grid operator. Physics-informed model improved 72-hour wind forecasts by 18%.',
},
{
id: 'cand-010',
name: 'Ethan Whitfield',
avatar: 'https://i.pravatar.cc/150?img=10',
headline: 'AI Product Manager · Roadmapping, AI UX, metrics',
competencyStackId: 'stack-designer',
microcredentials: 9,
artifactCount: 5,
defenseScore: 82,
matchScore: 80,
bio: 'Shipped an agentic coding assistant to 30K developers. Defined the success metrics and evaluation framework for the v1 launch.',
},
{
id: 'cand-011',
name: 'Yuki Tanaka',
avatar: 'https://i.pravatar.cc/150?img=11',
headline: 'Evaluation Engineer · LLM-as-judge, regression suites',
competencyStackId: 'stack-orchestration',
microcredentials: 10,
artifactCount: 8,
defenseScore: 85,
matchScore: 86,
bio: 'Built an eval platform that runs 50K+ judged samples per model release. Calibrated LLM-as-judge against human panels to 0.87 agreement.',
},
{
id: 'cand-012',
name: 'Olu Adeyemi',
avatar: 'https://i.pravatar.cc/150?img=12',
headline: 'Conversation Designer · Dialogue flows, persona systems',
competencyStackId: 'stack-designer',
microcredentials: 8,
artifactCount: 7,
defenseScore: 83,
matchScore: 77,
bio: 'Designed repair flows that reduced user frustration escalations by 35%. Authored a persona consistency framework now used company-wide.',
},
{
id: 'cand-013',
name: 'Nadia Petrova',
avatar: 'https://i.pravatar.cc/150?img=13',
headline: 'Materials ML Engineer · Property prediction, active learning',
competencyStackId: 'stack-science',
microcredentials: 11,
artifactCount: 9,
defenseScore: 88,
matchScore: 82,
bio: 'Active-learning loop identified three experimentally-validated novel alloys. Maintains an open-source DFT active-learning toolkit.',
},
{
id: 'cand-014',
name: 'Rafael Costa',
avatar: 'https://i.pravatar.cc/150?img=14',
headline: 'Edge AI Engineer · Quantization, TensorRT, field deployment',
competencyStackId: 'stack-operator',
microcredentials: 9,
artifactCount: 8,
defenseScore: 84,
matchScore: 83,
bio: 'Quantized a vision model from 240MB to 11MB with <1% accuracy loss. Deployed to 3,000+ edge devices with OTA model updates.',
},
{
id: 'cand-015',
name: 'Ingrid Solberg',
avatar: 'https://i.pravatar.cc/150?img=15',
headline: 'AI Red Team Lead · Adversarial testing, disclosure, policy',
competencyStackId: 'stack-safety',
microcredentials: 10,
artifactCount: 7,
defenseScore: 87,
matchScore: 88,
bio: 'Led red-teaming for two frontier model releases. Coordinated three coordinated disclosures with partner labs.',
},
];
+167
View File
@@ -0,0 +1,167 @@
import type { CompetencyStack, Competency } from '@nextcraft/types';
let idCounter = 0;
const cid = (prefix: string) => `${prefix}-c${(++idCounter).toString().padStart(3, '0')}`;
function makeCompetency(
stackId: string,
name: string,
description: string,
status: Competency['status'],
prerequisites: string[] = [],
): Competency {
return {
id: cid(stackId),
name,
description,
status,
stackId,
prerequisites,
microcredentialId: status === 'mastered' ? `mc-${cid(stackId)}` : null,
};
}
// --- Stack 1: AI Orchestration Engineer (15 competencies) ---
const orchestrationComps: Competency[] = [
makeCompetency('stack-orchestration', 'Agent Architecture Patterns', 'ReAct, plan-and-execute, reflexion, and reflexion-based agent topologies.', 'mastered'),
makeCompetency('stack-orchestration', 'Multi-Agent Communication', 'Message passing, shared memory blackboards, and inter-agent protocol design.', 'in_progress', ['stack-orchestration-c001']),
makeCompetency('stack-orchestration', 'Tool Use & Function Calling', 'Defining tool schemas, binding tools to models, and handling structured outputs.', 'mastered'),
makeCompetency('stack-orchestration', 'Prompt Engineering Fundamentals', 'Few-shot, chain-of-thought, and instruction tuning for reliable model behavior.', 'mastered'),
makeCompetency('stack-orchestration', 'RAG Pipeline Design', 'Chunking strategies, hybrid retrieval, reranking, and context window management.', 'in_progress'),
makeCompetency('stack-orchestration', 'Vector Databases & Embeddings', 'Embedding model selection, indexing (HNSW, IVF), and metadata filtering.', 'available', ['stack-orchestration-c005']),
makeCompetency('stack-orchestration', 'LLM Evaluation & Metrics', 'LLM-as-judge, human eval panels, regression suites, and drift detection.', 'available'),
makeCompetency('stack-orchestration', 'Guardrails & Output Validation', 'Schema validation, safety classifiers, and fallback response strategies.', 'available', ['stack-orchestration-c003']),
makeCompetency('stack-orchestration', 'Agent Memory Systems', 'Short-term context, episodic memory, and long-term knowledge consolidation.', 'locked', ['stack-orchestration-c002', 'stack-orchestration-c006']),
makeCompetency('stack-orchestration', 'Workflow Orchestration', 'DAG-based pipelines, conditional branching, and human-in-the-loop checkpoints.', 'locked', ['stack-orchestration-c001']),
makeCompetency('stack-orchestration', 'Model Routing & Cascading', 'Cost-aware routing, small-to-large cascades, and fallback model strategies.', 'locked', ['stack-orchestration-c008']),
makeCompetency('stack-orchestration', 'Streaming & Incremental Output', 'Token streaming, partial JSON parsing, and progressive UI rendering.', 'available'),
makeCompetency('stack-orchestration', 'Observability for Agents', 'Tracing spans, token cost tracking, and latency profiling across agent calls.', 'available'),
makeCompetency('stack-orchestration', 'Cost Optimization Strategies', 'Caching, prompt compression, and batch inference for production cost control.', 'locked', ['stack-orchestration-c011']),
makeCompetency('stack-orchestration', 'Production Deployment Patterns', 'Blue-green deploys, shadow traffic, and rollback for agent workloads.', 'locked', ['stack-orchestration-c010']),
];
// --- Stack 2: AI Safety & Governance Lead (14 competencies) ---
const safetyComps: Competency[] = [
makeCompetency('stack-safety', 'Alignment Fundamentals', 'RLHF, DPO, and constitutional AI approaches to value alignment.', 'in_progress'),
makeCompetency('stack-safety', 'Red Teaming Methodologies', 'Adversarial prompting, automated red-team suites, and vulnerability disclosure.', 'available'),
makeCompetency('stack-safety', 'Model Card Authoring', 'Documenting capabilities, limitations, intended use, and known failure modes.', 'mastered'),
makeCompetency('stack-safety', 'Bias Auditing', 'Disparate impact testing across demographics and protected attributes.', 'in_progress', ['stack-safety-c003']),
makeCompetency('stack-safety', 'AI Policy Frameworks', 'NIST AI RMF, EU AI Act, and ISO/IEC 42001 compliance mapping.', 'available'),
makeCompetency('stack-safety', 'Risk Taxonomy & Classification', 'Harm severity scales, likelihood scoring, and risk register maintenance.', 'available', ['stack-safety-c005']),
makeCompetency('stack-safety', 'Interpretability Techniques', 'Attention probing, activation patching, and circuit analysis.', 'locked', ['stack-safety-c001']),
makeCompetency('stack-safety', 'Incident Response for AI', 'Detection, containment, root-cause analysis, and postmortem for AI failures.', 'locked', ['stack-safety-c006']),
makeCompetency('stack-safety', 'Data Provenance & Lineage', 'Training data tracking, consent management, and deletion workflows.', 'available'),
makeCompetency('stack-safety', 'Jailbreak & Prompt Injection Defense', 'Input sanitization, instruction hierarchy, and indirect injection mitigation.', 'available', ['stack-safety-c002']),
makeCompetency('stack-safety', 'Model Monitoring in Production', 'Drift detection, output distribution tracking, and alerting thresholds.', 'locked', ['stack-safety-c008']),
makeCompetency('stack-safety', 'Privacy-Preserving ML', 'Differential privacy, federated learning, and synthetic data generation.', 'locked', ['stack-safety-c009']),
makeCompetency('stack-safety', 'Governance Documentation', 'Audit trails, decision logs, and accountability matrices for AI systems.', 'available'),
makeCompetency('stack-safety', 'Stakeholder Communication', 'Translating technical risk findings for executives, regulators, and users.', 'available', ['stack-safety-c013']),
];
// --- Stack 3: Human-AI Product Designer (13 competencies) ---
const designerComps: Competency[] = [
makeCompetency('stack-designer', 'Agentic Interaction Patterns', 'Designing for delegating, interrupting, and reviewing autonomous agents.', 'in_progress'),
makeCompetency('stack-designer', 'Conversational UX', 'Multi-turn dialogue design, intent modeling, and repair flows.', 'mastered'),
makeCompetency('stack-designer', 'AI Transparency Patterns', 'Confidence indicators, source attribution, and model limitation disclosure.', 'in_progress', ['stack-designer-c002']),
makeCompetency('stack-designer', 'Human-in-the-Loop Design', 'Approval gates, escalation paths, and override affordances.', 'available', ['stack-designer-c001']),
makeCompetency('stack-designer', 'Prompt UX', 'Designing prompt composition surfaces, suggestions, and templates.', 'available'),
makeCompetency('stack-designer', 'Failure & Fallback Design', 'Graceful degradation, error states, and recovery flows for AI features.', 'available', ['stack-designer-c003']),
makeCompetency('stack-designer', 'Multimodal Interface Design', 'Voice + touch + visual coordination across modalities.', 'locked', ['stack-designer-c002']),
makeCompetency('stack-designer', 'Trust & Calibration', 'User mental model alignment, expectation setting, and over-trust mitigation.', 'available', ['stack-designer-c003']),
makeCompetency('stack-designer', 'Accessibility for AI Interfaces', 'Screen-reader-friendly AI output, cognitive load, and reading-level tuning.', 'available'),
makeCompetency('stack-designer', 'Persona & Tone Systems', 'Character design for AI assistants, consistency, and contextual adaptation.', 'available', ['stack-designer-c005']),
makeCompetency('stack-designer', 'Evaluation of AI UX', 'Task success, satisfaction, and reliance metrics for AI-assisted workflows.', 'locked', ['stack-designer-c008']),
makeCompetency('stack-designer', 'Onboarding to Agentic Systems', 'Progressive disclosure, first-run experience, and capability scaffolding.', 'available', ['stack-designer-c004']),
makeCompetency('stack-designer', 'AI Ethics in Product Design', 'Consent, dark-pattern avoidance, and dignity-preserving automation.', 'available', ['stack-designer-c009']),
];
// --- Stack 4: AI-Augmented Field Operator (12 competencies) ---
const operatorComps: Competency[] = [
makeCompetency('stack-operator', 'AI Co-Pilot Operation', 'Interacting with voice and tablet-based AI assistants in field conditions.', 'in_progress'),
makeCompetency('stack-operator', 'Robotics Safety Protocols', 'Lockout/tagout, collision avoidance, and emergency stop procedures.', 'mastered'),
makeCompetency('stack-operator', 'Predictive Maintenance Alerts', 'Interpreting ML-based anomaly scores and scheduling interventions.', 'available', ['stack-operator-c002']),
makeCompetency('stack-operator', 'Computer Vision Inspection', 'Operating vision-based quality control stations and tuning thresholds.', 'available'),
makeCompetency('stack-operator', 'Sensor Data Interpretation', 'Reading IoT telemetry dashboards and recognizing fault signatures.', 'in_progress', ['stack-operator-c003']),
makeCompetency('stack-operator', 'Digital Twin Fundamentals', 'Navigating virtual replicas of physical assets for simulation and planning.', 'locked', ['stack-operator-c005']),
makeCompetency('stack-operator', 'Augmented Reality Overlays', 'Using AR headsets for guided assembly, annotation, and remote assistance.', 'available'),
makeCompetency('stack-operator', 'Edge Model Deployment', 'Pushing model updates to on-device inference hardware in the field.', 'locked', ['stack-operator-c006']),
makeCompetency('stack-operator', 'Calibration & Drift Correction', 'Maintaining sensor accuracy and recognizing model drift in production.', 'available', ['stack-operator-c004']),
makeCompetency('stack-operator', 'Field Data Collection', 'Structured annotation, labeling workflows, and high-quality dataset capture.', 'available'),
makeCompetency('stack-operator', 'Autonomous System Supervision', 'Monitoring fleets of semi-autonomous units and intervening on exceptions.', 'locked', ['stack-operator-c001']),
makeCompetency('stack-operator', 'Safety-Critical Decision Making', 'Knowing when to override AI recommendations and escalate to humans.', 'available', ['stack-operator-c002']),
];
// --- Stack 5: Computational Sciences Practitioner (16 competencies) ---
const scienceComps: Competency[] = [
makeCompetency('stack-science', 'Scientific Computing with Python', 'NumPy, SciPy, pandas, and Jupyter workflows for research-grade analysis.', 'mastered'),
makeCompetency('stack-science', 'ML for Scientific Discovery', 'Surrogate models, property prediction, and active learning loops.', 'in_progress', ['stack-science-c001']),
makeCompetency('stack-science', 'Molecular & Materials Simulation', 'DFT, molecular dynamics, and ML potentials for materials screening.', 'available'),
makeCompetency('stack-science', 'Climate Modeling Fundamentals', 'GCM structure, downscaling, and emissions scenario interpretation.', 'available'),
makeCompetency('stack-science', 'Bioinformatics Pipelines', 'Sequence alignment, variant calling, and differential expression analysis.', 'in_progress'),
makeCompetency('stack-science', 'High-Performance Computing', 'MPI, OpenMP, GPU offloading, and job scheduling on HPC clusters.', 'available', ['stack-science-c001']),
makeCompetency('stack-science', 'Scientific Data Visualization', 'Matplotlib, Plotly, ParaView, and domain-specific plotting conventions.', 'mastered'),
makeCompetency('stack-science', 'Reproducible Research Practices', 'Containerization, workflow managers (Snakemake, Nextflow), and DOIs.', 'available', ['stack-science-c006']),
makeCompetency('stack-science', 'Statistical Inference', 'Bayesian methods, hypothesis testing, and uncertainty quantification.', 'available'),
makeCompetency('stack-science', 'Physics-Informed Neural Networks', 'Embedding governing equations as constraints in ML models.', 'locked', ['stack-science-c002']),
makeCompetency('stack-science', 'Generative Models for Science', 'Diffusion models for molecule generation and protein structure sampling.', 'locked', ['stack-science-c010']),
makeCompetency('stack-science', 'Causal Inference Methods', 'Do-calculus, instrumental variables, and counterfactual reasoning.', 'available', ['stack-science-c009']),
makeCompetency('stack-science', 'Experiment Design', 'DOE, factorial designs, and sample-size planning for costly experiments.', 'available'),
makeCompetency('stack-science', 'Data Assimilation', 'EnKF, 4D-Var, and real-time integration of observations into models.', 'locked', ['stack-science-c004']),
makeCompetency('stack-science', 'Scientific Writing with AI', 'Literature review automation, manuscript drafting assistance, and citation tools.', 'available'),
makeCompetency('stack-science', 'Open Science & FAIR Data', 'Findable, accessible, interoperable, reusable data stewardship.', 'available', ['stack-science-c008']),
];
export const competencyStacks: CompetencyStack[] = [
{
id: 'stack-orchestration',
name: 'AI Orchestration Engineer',
targetRoles: 'Agent design, multi-agent systems, AI workflow automation',
description:
'Design and operate systems of cooperating AI agents. Master tool use, retrieval, memory, evaluation, and production deployment of agentic workflows.',
competencies: orchestrationComps,
color: 'indigo',
icon: 'Workflow',
},
{
id: 'stack-safety',
name: 'AI Safety & Governance Lead',
targetRoles: 'Alignment, audit, policy, risk',
description:
'Ensure AI systems are aligned, auditable, and compliant. Lead red-teaming, bias audits, incident response, and governance documentation.',
competencies: safetyComps,
color: 'rose',
icon: 'ShieldCheck',
},
{
id: 'stack-designer',
name: 'Human-AI Product Designer',
targetRoles: 'UX for agentic systems, AI interaction design',
description:
'Design interfaces where humans and AI agents collaborate. Master transparency, trust calibration, failure design, and agentic interaction patterns.',
competencies: designerComps,
color: 'violet',
icon: 'Sparkles',
},
{
id: 'stack-operator',
name: 'AI-Augmented Field Operator',
targetRoles: 'Skilled trades + AI co-pilots, robotics operations',
description:
'Operate AI-augmented equipment in the field. Pair skilled trades with AI co-pilots, robotics supervision, predictive maintenance, and AR-guided workflows.',
competencies: operatorComps,
color: 'emerald',
icon: 'Wrench',
},
{
id: 'stack-science',
name: 'Computational Sciences Practitioner',
targetRoles: 'Bio, materials, climate + AI',
description:
'Apply ML to scientific discovery in biology, materials, and climate. Master scientific computing, simulation, PINNs, and reproducible research.',
competencies: scienceComps,
color: 'cyan',
icon: 'Atom',
},
];
export const allCompetencies: Competency[] = competencyStacks.flatMap((s) => s.competencies);
+134
View File
@@ -0,0 +1,134 @@
import type { Employer } from '@nextcraft/types';
export const employers: Employer[] = [
{
id: 'emp-openai',
name: 'OpenAI Labs',
logo: 'https://placehold.co/80x80/indigo/white?text=OA',
description:
'Mock employer building frontier AI systems. We build and deploy large language models and agentic tools used by millions of developers and consumers.',
industry: 'Artificial Intelligence',
size: '2,000+',
location: 'San Francisco, CA',
website: 'https://example.com/openai',
socialLinks: { twitter: 'https://example.com/openai/x', linkedin: 'https://example.com/openai/li' },
culture: 'Research-driven, shipping-paced, safety-conscious. We pair frontier research with product rigor.',
},
{
id: 'emp-anthropic',
name: 'Anthropic Research',
logo: 'https://placehold.co/80x80/amber/white?text=AN',
description:
'Mock employer focused on AI safety and alignment. We build reliable, interpretable, and steerable AI systems.',
industry: 'AI Safety',
size: '1,000+',
location: 'San Francisco, CA',
website: 'https://example.com/anthropic',
socialLinks: { twitter: 'https://example.com/anthropic/x', linkedin: 'https://example.com/anthropic/li' },
culture: 'Safety-first, evidence-based, calm-paced. We value thoroughness over speed when stakes are high.',
},
{
id: 'emp-huggingface',
name: 'Hugging Face',
logo: 'https://placehold.co/80x80/yellow/black?text=HF',
description:
'Mock employer building the open-source AI community. We host models, datasets, and demos for the global ML community.',
industry: 'Open Source AI',
size: '500+',
location: 'New York, NY',
website: 'https://example.com/hf',
socialLinks: { twitter: 'https://example.com/hf/x', linkedin: 'https://example.com/hf/li' },
culture: 'Community-first, open-by-default, remote-friendly. We ship in the open with thousands of contributors.',
},
{
id: 'emp-scaleai',
name: 'Scale AI',
logo: 'https://placehold.co/80x80/violet/white?text=SC',
description:
'Mock employer providing data and evaluation infrastructure for frontier AI. We power the RLHF and eval pipelines behind many model releases.',
industry: 'AI Infrastructure',
size: '1,500+',
location: 'San Francisco, CA',
website: 'https://example.com/scale',
socialLinks: { twitter: 'https://example.com/scale/x', linkedin: 'https://example.com/scale/li' },
culture: 'Infrastructure-minded, quality-obsessed, enterprise-aware. We bridge research and production data.',
},
{
id: 'emp-perplexity',
name: 'Perplexity',
logo: 'https://placehold.co/80x80/teal/white?text=PX',
description:
'Mock employer building an AI-powered answer engine. We combine retrieval, generation, and citations for trustworthy answers.',
industry: 'AI Search',
size: '300+',
location: 'San Francisco, CA',
website: 'https://example.com/perplexity',
socialLinks: { twitter: 'https://example.com/perplexity/x', linkedin: 'https://example.com/perplexity/li' },
culture: 'Answer-focused, fast-iterating, citation-proud. We treat groundedness as a product feature.',
},
{
id: 'emp-cohere',
name: 'Cohere',
logo: 'https://placehold.co/80x80/pink/white?text=CO',
description:
'Mock employer building enterprise-grade language models. We specialize in retrieval, multilinguality, and data privacy for regulated industries.',
industry: 'Enterprise LLMs',
size: '400+',
location: 'Toronto, Canada',
website: 'https://example.com/cohere',
socialLinks: { twitter: 'https://example.com/cohere/x', linkedin: 'https://example.com/cohere/li' },
culture: 'Enterprise-aware, research-active, multilingual. We ship models that work in 100+ languages.',
},
{
id: 'emp-mistral',
name: 'Mistral AI',
logo: 'https://placehold.co/80x80/red/white?text=MI',
description:
'Mock employer building open-weight frontier models in Europe. We push efficiency and openness in large language models.',
industry: 'Open-Weight LLMs',
size: '200+',
location: 'Paris, France',
website: 'https://example.com/mistral',
socialLinks: { twitter: 'https://example.com/mistral/x', linkedin: 'https://example.com/mistral/li' },
culture: 'European-rooted, efficiency-driven, open-weight-proud. We ship small models that punch above their size.',
},
{
id: 'emp-replicate',
name: 'Replicate',
logo: 'https://placehold.co/80x80/orange/white?text=RE',
description:
'Mock employer making ML deployment delightful. We host, serve, and scale models with a few lines of code.',
industry: 'ML Deployment',
size: '150+',
location: 'San Francisco, CA',
website: 'https://example.com/replicate',
socialLinks: { twitter: 'https://example.com/replicate/x', linkedin: 'https://example.com/replicate/li' },
culture: 'Developer-experience-obsessed, pragmatic, remote-friendly. We make shipping models feel like shipping software.',
},
{
id: 'emp-pinecone',
name: 'Pinecone',
logo: 'https://placehold.co/80x80/green/white?text=PC',
description:
'Mock employer building the vector database for AI applications. We power retrieval for thousands of production RAG systems.',
industry: 'Vector Databases',
size: '300+',
location: 'New York, NY',
website: 'https://example.com/pinecone',
socialLinks: { twitter: 'https://example.com/pinecone/x', linkedin: 'https://example.com/pinecone/li' },
culture: 'Infra-focused, latency-obsessed, distributed-first. We treat retrieval as the heart of grounded AI.',
},
{
id: 'emp-langchain',
name: 'LangChain',
logo: 'https://placehold.co/80x80/blue/white?text=LC',
description:
'Mock employer building the orchestration layer for LLM applications. We provide frameworks for agents, retrieval, and evaluation.',
industry: 'AI Orchestration',
size: '200+',
location: 'San Francisco, CA',
website: 'https://example.com/langchain',
socialLinks: { twitter: 'https://example.com/langchain/x', linkedin: 'https://example.com/langchain/li' },
culture: 'Framework-minded, community-driven, abstractions-first. We build primitives others compose into products.',
},
];
+38
View File
@@ -0,0 +1,38 @@
export { competencyStacks, allCompetencies } from './competency-stacks';
export { jobs } from './jobs';
export { candidates } from './candidates';
export { employers } from './employers';
export {
primaryLearner,
learnerMicrocredentials,
learnerArtifacts,
upcomingDefenses,
learnerSummary,
} from './learner-progress';
export { aiTutorResponses } from './ai-tutor-responses';
export type { TutorResponse } from './ai-tutor-responses';
export {
platformMetrics,
activityFeed,
serviceHealth,
uptimeBars,
systemStats,
adminLearners,
jobReviewQueue,
employerVerificationQueue,
flaggedContentQueue,
} from './admin';
export type {
PlatformMetric,
ActivityEvent,
ServiceStatus,
ServiceHealth,
AdminLearner,
AdminLearnerCompetency,
AdminLearnerCredential,
LearnerStatus,
JobReviewItem,
EmployerVerificationItem,
FlaggedContentItem,
FlaggedContentType,
} from './admin';
+324
View File
@@ -0,0 +1,324 @@
import type { Job } from '@nextcraft/types';
export const jobs: Job[] = [
{
id: 'job-001',
title: 'AI Orchestration Engineer',
employerId: 'emp-langchain',
description:
'Design and operate multi-agent systems that automate complex knowledge workflows. You will own agent topology, tool integration, and evaluation harnesses for production deployments serving millions of queries.',
requiredCompetencies: ['stack-orchestration-c001', 'stack-orchestration-c002', 'stack-orchestration-c005'],
skills: ['LangGraph', 'Multi-agent systems', 'RAG', 'Python', 'Evaluation'],
seniority: 'senior',
location: 'San Francisco, CA',
remote: true,
salaryMin: 160000,
salaryMax: 240000,
matchScore: 96,
postedAt: '2026-08-21T10:00:00Z',
},
{
id: 'job-002',
title: 'LLM Application Developer',
employerId: 'emp-openai',
description:
'Build delightful LLM-powered features end-to-end. You will work on retrieval, function calling, streaming UX, and robust output validation for consumer-facing products.',
requiredCompetencies: ['stack-orchestration-c003', 'stack-orchestration-c004', 'stack-orchestration-c005'],
skills: ['Python', 'TypeScript', 'RAG', 'Function calling', 'Streaming'],
seniority: 'mid',
location: 'San Francisco, CA',
remote: true,
salaryMin: 140000,
salaryMax: 210000,
matchScore: 92,
postedAt: '2026-08-28T09:30:00Z',
},
{
id: 'job-003',
title: 'AI Safety Researcher',
employerId: 'emp-anthropic',
description:
'Research alignment, interpretability, and robustness of frontier models. Design experiments, run evaluations, and publish findings that improve the safety of deployed AI systems.',
requiredCompetencies: ['stack-safety-c001', 'stack-safety-c007', 'stack-safety-c002'],
skills: ['Alignment', 'Interpretability', 'Red teaming', 'Python', 'Research'],
seniority: 'senior',
location: 'San Francisco, CA',
remote: false,
salaryMin: 180000,
salaryMax: 280000,
matchScore: 88,
postedAt: '2026-08-15T12:00:00Z',
},
{
id: 'job-004',
title: 'Prompt Engineer',
employerId: 'emp-perplexity',
description:
'Craft, test, and ship prompt strategies that power answer-engine features. Own prompt libraries, regression suites, and A/B experiments across product surfaces.',
requiredCompetencies: ['stack-orchestration-c004', 'stack-orchestration-c001'],
skills: ['Prompt engineering', 'Evaluation', 'A/B testing', 'Python'],
seniority: 'mid',
location: 'Remote',
remote: true,
salaryMin: 110000,
salaryMax: 175000,
matchScore: 84,
postedAt: '2026-09-02T14:15:00Z',
},
{
id: 'job-005',
title: 'AI Product Manager',
employerId: 'emp-huggingface',
description:
'Own the roadmap for AI-powered developer tools. Translate model capabilities into customer value, define success metrics, and ship agentic features with engineering.',
requiredCompetencies: ['stack-designer-c001', 'stack-orchestration-c001'],
skills: ['Product strategy', 'AI UX', 'Roadmapping', 'Stakeholder mgmt'],
seniority: 'senior',
location: 'New York, NY',
remote: true,
salaryMin: 150000,
salaryMax: 220000,
matchScore: 78,
postedAt: '2026-08-30T08:00:00Z',
},
{
id: 'job-006',
title: 'RAG Infrastructure Engineer',
employerId: 'emp-pinecone',
description:
'Build the retrieval substrate behind knowledge-grounded AI. Optimize indexing, query latency, and hybrid retrieval across billion-vector workloads.',
requiredCompetencies: ['stack-orchestration-c005', 'stack-orchestration-c006'],
skills: ['Vector databases', 'Embeddings', 'Go', 'Distributed systems'],
seniority: 'mid',
location: 'Remote',
remote: true,
salaryMin: 130000,
salaryMax: 200000,
matchScore: 81,
postedAt: '2026-09-05T11:00:00Z',
},
{
id: 'job-007',
title: 'AI Governance Lead',
employerId: 'emp-scaleai',
description:
'Stand up the AI governance program for enterprise customers. Map controls to NIST AI RMF and EU AI Act, run audits, and author model cards at scale.',
requiredCompetencies: ['stack-safety-c005', 'stack-safety-c003', 'stack-safety-c013'],
skills: ['AI policy', 'NIST AI RMF', 'Audit', 'Documentation'],
seniority: 'staff',
location: 'San Francisco, CA',
remote: true,
salaryMin: 170000,
salaryMax: 230000,
matchScore: 74,
postedAt: '2026-08-18T16:45:00Z',
},
{
id: 'job-008',
title: 'Human-AI Interaction Designer',
employerId: 'emp-anthropic',
description:
'Design how users collaborate with Claude across products. Own transparency patterns, trust calibration, and agentic interaction for assistant surfaces.',
requiredCompetencies: ['stack-designer-c001', 'stack-designer-c003', 'stack-designer-c008'],
skills: ['Figma', 'AI UX', 'Prototyping', 'User research'],
seniority: 'mid',
location: 'San Francisco, CA',
remote: true,
salaryMin: 125000,
salaryMax: 190000,
matchScore: 86,
postedAt: '2026-08-25T10:30:00Z',
},
{
id: 'job-009',
title: 'Evaluation Engineer',
employerId: 'emp-cohere',
description:
'Build and operate the eval platform for LLM-powered products. Design LLM-as-judge pipelines, regression suites, and human-eval panels for production models.',
requiredCompetencies: ['stack-orchestration-c007', 'stack-safety-c002'],
skills: ['LLM evaluation', 'Python', 'Statistics', 'Data labeling'],
seniority: 'mid',
location: 'Toronto, Canada',
remote: true,
salaryMin: 120000,
salaryMax: 180000,
matchScore: 79,
postedAt: '2026-09-01T13:20:00Z',
},
{
id: 'job-010',
title: 'Robotics Operations Specialist',
employerId: 'emp-replicate',
description:
'Supervise a fleet of AI-augmented robotic units in a warehouse environment. Interpret anomaly alerts, perform calibrations, and intervene on exceptions.',
requiredCompetencies: ['stack-operator-c002', 'stack-operator-c011', 'stack-operator-c003'],
skills: ['Robotics', 'Safety protocols', 'IoT', 'Predictive maintenance'],
seniority: 'entry',
location: 'Austin, TX',
remote: false,
salaryMin: 80000,
salaryMax: 115000,
matchScore: 71,
postedAt: '2026-08-22T09:00:00Z',
},
{
id: 'job-011',
title: 'Computational Biologist',
employerId: 'emp-recursion',
description:
'Apply ML to drug discovery. Build pipelines for phenotype prediction, active learning on assay data, and molecular generation for novel targets.',
requiredCompetencies: ['stack-science-c005', 'stack-science-c002', 'stack-science-c011'],
skills: ['Bioinformatics', 'Python', 'PyTorch', 'Drug discovery'],
seniority: 'senior',
location: 'Boston, MA',
remote: true,
salaryMin: 145000,
salaryMax: 215000,
matchScore: 83,
postedAt: '2026-08-12T15:00:00Z',
},
{
id: 'job-012',
title: 'Climate ML Scientist',
employerId: 'emp-deepmind',
description:
'Develop ML models for climate forecasting and energy grid optimization. Work with earth system scientists to downscale GCM output and quantify uncertainty.',
requiredCompetencies: ['stack-science-c004', 'stack-science-c014', 'stack-science-c010'],
skills: ['Climate modeling', 'PyTorch', 'Data assimilation', 'PINNs'],
seniority: 'senior',
location: 'London, UK',
remote: true,
salaryMin: 135000,
salaryMax: 200000,
matchScore: 77,
postedAt: '2026-08-27T11:45:00Z',
},
{
id: 'job-013',
title: 'Agent Reliability Engineer',
employerId: 'emp-langchain',
description:
'Own observability and reliability for production agent workloads. Build tracing, alerting, and rollback systems for multi-step agent pipelines.',
requiredCompetencies: ['stack-orchestration-c013', 'stack-orchestration-c015', 'stack-orchestration-c008'],
skills: ['Observability', 'Python', 'SRE', 'Distributed tracing'],
seniority: 'mid',
location: 'Remote',
remote: true,
salaryMin: 140000,
salaryMax: 205000,
matchScore: 90,
postedAt: '2026-09-04T09:00:00Z',
},
{
id: 'job-014',
title: 'AI Red Team Lead',
employerId: 'emp-mistral',
description:
'Lead adversarial testing of frontier and open-weight models. Build automated red-team suites, track vulnerabilities, and coordinate disclosure.',
requiredCompetencies: ['stack-safety-c002', 'stack-safety-c010', 'stack-safety-c001'],
skills: ['Red teaming', 'Prompt injection', 'Python', 'Leadership'],
seniority: 'staff',
location: 'Paris, France',
remote: true,
salaryMin: 160000,
salaryMax: 230000,
matchScore: 85,
postedAt: '2026-08-19T10:30:00Z',
},
{
id: 'job-015',
title: 'Conversation Designer',
employerId: 'emp-huggingface',
description:
'Design dialogue flows, personas, and repair strategies for AI assistants across open-source products. Partner with ML engineers to align tone with model behavior.',
requiredCompetencies: ['stack-designer-c002', 'stack-designer-c010', 'stack-designer-c011'],
skills: ['Conversation design', 'Figma', 'Voice UX', 'Prototyping'],
seniority: 'mid',
location: 'Remote',
remote: true,
salaryMin: 105000,
salaryMax: 160000,
matchScore: 73,
postedAt: '2026-08-29T14:00:00Z',
},
{
id: 'job-016',
title: 'Field AI Technician',
employerId: 'emp-anduril',
description:
'Deploy and maintain AI vision systems on defense hardware in the field. Calibrate sensors, interpret model alerts, and escalate edge cases to engineering.',
requiredCompetencies: ['stack-operator-c004', 'stack-operator-c009', 'stack-operator-c001'],
skills: ['Computer vision', 'Sensor calibration', 'Field ops', 'Python'],
seniority: 'entry',
location: 'Costa Mesa, CA',
remote: false,
salaryMin: 90000,
salaryMax: 130000,
matchScore: 68,
postedAt: '2026-08-14T08:30:00Z',
},
{
id: 'job-017',
title: 'Materials ML Engineer',
employerId: 'emp-deepmind',
description:
'Discover novel materials with ML. Train property-prediction models, run active-learning loops over DFT calculations, and validate candidates experimentally.',
requiredCompetencies: ['stack-science-c003', 'stack-science-c002', 'stack-science-c006'],
skills: ['Materials science', 'PyTorch', 'DFT', 'Active learning'],
seniority: 'senior',
location: 'London, UK',
remote: true,
salaryMin: 140000,
salaryMax: 210000,
matchScore: 80,
postedAt: '2026-08-26T12:15:00Z',
},
{
id: 'job-018',
title: 'AI Trust & Safety Analyst',
employerId: 'emp-openai',
description:
'Investigate misuse patterns, triage safety incidents, and improve policy enforcement for consumer AI products. Author postmortems and recommend mitigations.',
requiredCompetencies: ['stack-safety-c008', 'stack-safety-c006', 'stack-safety-c002'],
skills: ['Trust & safety', 'Incident response', 'Policy', 'Investigation'],
seniority: 'mid',
location: 'San Francisco, CA',
remote: true,
salaryMin: 115000,
salaryMax: 170000,
matchScore: 76,
postedAt: '2026-09-03T10:45:00Z',
},
{
id: 'job-019',
title: 'Edge AI Engineer',
employerId: 'emp-replicate',
description:
'Optimize and deploy models to edge hardware. Quantize, distill, and compile models for low-latency inference on field devices with constrained budgets.',
requiredCompetencies: ['stack-operator-c008', 'stack-orchestration-c012', 'stack-orchestration-c014'],
skills: ['Edge ML', 'TensorRT', 'C++', 'Quantization'],
seniority: 'mid',
location: 'Remote',
remote: true,
salaryMin: 130000,
salaryMax: 195000,
matchScore: 82,
postedAt: '2026-08-24T11:30:00Z',
},
{
id: 'job-020',
title: 'AI Research Engineer',
employerId: 'emp-cohere',
description:
'Push the frontier of language model capabilities. Prototype new architectures, run large-scale experiments, and contribute to publications and open-source releases.',
requiredCompetencies: ['stack-orchestration-c001', 'stack-science-c010', 'stack-science-c011'],
skills: ['PyTorch', 'Research', 'Transformers', 'Distributed training'],
seniority: 'senior',
location: 'Berlin, Germany',
remote: true,
salaryMin: 155000,
salaryMax: 235000,
matchScore: 94,
postedAt: '2026-08-20T09:00:00Z',
},
];
+101
View File
@@ -0,0 +1,101 @@
import type { Learner, Artifact, OralDefense, Microcredential } from '@nextcraft/types';
export const primaryLearner: Learner = {
id: 'learner-001',
name: 'Alex Rivera',
email: 'alex.rivera@example.com',
avatar: 'https://i.pravatar.cc/150?img=16',
ageGroup: '18+',
enrolledStacks: ['stack-orchestration', 'stack-safety'],
progress: {
'stack-orchestration': 62,
'stack-safety': 41,
},
};
export const learnerMicrocredentials: Microcredential[] = [
{ id: 'mc-001', competencyId: 'stack-orchestration-c001', issuedAt: '2026-07-12T00:00:00Z', verified: true, score: 94 },
{ id: 'mc-002', competencyId: 'stack-orchestration-c004', issuedAt: '2026-07-28T00:00:00Z', verified: true, score: 91 },
{ id: 'mc-003', competencyId: 'stack-orchestration-c006', issuedAt: '2026-08-04T00:00:00Z', verified: true, score: 88 },
{ id: 'mc-004', competencyId: 'stack-safety-c021', issuedAt: '2026-08-20T00:00:00Z', verified: true, score: 90 },
{ id: 'mc-005', competencyId: 'stack-orchestration-c003', issuedAt: null, verified: false, score: null },
];
export const learnerArtifacts: Artifact[] = [
{
id: 'art-001',
name: 'Multi-agent research assistant',
type: 'code',
url: 'https://example.com/artifacts/research-assistant',
description: 'A LangGraph-based assistant that plans, retrieves, and drafts cited literature reviews with an eval harness.',
createdAt: '2026-08-22T14:30:00Z',
},
{
id: 'art-002',
name: 'RAG retrieval quality dashboard',
type: 'code',
url: 'https://example.com/artifacts/rag-dashboard',
description: 'Streamlit dashboard comparing chunking strategies and rerankers across 800 evaluation queries.',
createdAt: '2026-08-15T09:12:00Z',
},
{
id: 'art-003',
name: 'Model card for internal Q&A agent',
type: 'document',
url: 'https://example.com/artifacts/model-card',
description: 'Capabilities, limitations, intended use, and red-team findings for a document-grounded Q&A agent.',
createdAt: '2026-08-19T11:00:00Z',
},
{
id: 'art-004',
name: 'Prompt regression suite',
type: 'code',
url: 'https://example.com/artifacts/prompt-regression',
description: 'Pytest-based suite of 320 prompt assertions with LLM-as-judge scoring and CI integration.',
createdAt: '2026-08-08T16:45:00Z',
},
{
id: 'art-005',
name: 'Agent topology diagram',
type: 'design',
url: 'https://example.com/artifacts/topology',
description: 'Architecture diagram for a plan-and-execute agent with reflection and tool-retrieval sub-graphs.',
createdAt: '2026-07-30T10:20:00Z',
},
];
export const upcomingDefenses: OralDefense[] = [
{
id: 'def-001',
competencyId: 'stack-orchestration-c003',
transcript: '',
score: null,
status: 'scheduled',
},
{
id: 'def-002',
competencyId: 'stack-orchestration-c008',
transcript: '',
score: null,
status: 'scheduled',
},
{
id: 'def-003',
competencyId: 'stack-safety-c019',
transcript: '',
score: null,
status: 'pending',
},
];
export const learnerSummary = {
enrolledStacks: primaryLearner.enrolledStacks.length,
microcredentialsEarned: learnerMicrocredentials.filter((m) => m.verified).length,
artifactsSubmitted: learnerArtifacts.length,
upcomingDefenses: upcomingDefenses.filter((d) => d.status === 'scheduled').length,
averageScore:
learnerMicrocredentials
.filter((m) => m.score !== null)
.reduce((acc, m) => acc + (m.score ?? 0), 0) /
Math.max(1, learnerMicrocredentials.filter((m) => m.score !== null).length),
};
+22
View File
@@ -0,0 +1,22 @@
{
"name": "@nextcraft/mock-data",
"version": "0.1.0",
"private": true,
"type": "module",
"main": "./index.ts",
"types": "./index.ts",
"exports": {
".": "./index.ts",
"./*": "./*.ts"
},
"scripts": {
"build": "tsc --noEmit",
"typecheck": "tsc --noEmit"
},
"dependencies": {
"@nextcraft/types": "workspace:*"
},
"devDependencies": {
"typescript": "^5.7.2"
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"noEmit": true,
"declaration": false,
"declarationMap": false
},
"include": ["*.ts"]
}