Skip to content

Repository files navigation

Analytical Dataplane for skill and opportunity discovery (SkillRoute)

SkillRoute is a hackathon prototype for converting informal, real-life experience into structured skill profiles and practical opportunity matches.

Built for the UNMAPPED challenge, it helps surface skills that may not be represented by certificates, formal employment history, or a traditional CV.

Demo

Watch the SkillRoute demo video

SkillRoute demo screenshot 1

SkillRoute demo screenshot 2

SkillRoute demo screenshot 3

What Is in This Repo

This repository contains the product prototype, supporting data pipeline, and pitch materials:

  • web/: main Next.js application for the SkillRoute experience
  • pitch/: separate Next.js pitch deck
  • scripts/: ESCO/ISCO import, cleanup, seed, and search utilities
  • supabase/: Postgres schema, pgvector setup, tables, indexes, and RPCs
  • ESCO dataset - v1.2.1 - classification - en - csv/: source ESCO/ISCO CSVs
  • 05 - World Bank - Unmapped.docx - Google Docs.pdf: challenge reference doc

Main App

The main app lives in web/ and includes:

  • chat-based skill discovery with Milo
  • skill profile generation from user intake conversations
  • ESCO semantic skill search
  • ISCO occupation mapping
  • opportunity matching for jobs, training, and self-employment pathways
  • youth-facing profile and opportunity views
  • admin/program-facing protocol and aggregate views
  • econometric and labor-market dashboards

Tech Stack

  • Next.js 16
  • React 19
  • TypeScript
  • OpenAI models and embeddings
  • Supabase Postgres with pgvector
  • ESCO taxonomy data
  • ISCO occupation classification data
  • Tailwind CSS and shadcn-style UI components

Data Pipeline

Root-level scripts load and query the ESCO/ISCO dataset:

  • scripts/setup-db.js: applies supabase/schema.sql
  • scripts/import-skills.js: imports ESCO skills and OpenAI embeddings
  • scripts/import-occupations.js: imports occupations and skill relations
  • scripts/search-skills.js: runs semantic skill search from the CLI
  • scripts/seed-demo-data.js: inserts demo application data
  • scripts/filter_isco_rows.py: filters ISCO labor-market rows
  • scripts/clean_isco_occupation_csv.py: cleans ISCO occupation CSV data

The data flow is:

  1. A user talks to Milo about their background, experience, education, country, language, work authorization, and confidence.
  2. The backend extracts skills and evidence from the conversation.
  3. Extracted skills are embedded and matched against ESCO skills in Supabase.
  4. Related occupations are mapped through ISCO data.
  5. The app generates a skill profile and suggests relevant local pathways.

Getting Started

Install root dependencies:

npm install

Create the root environment file:

cp .env.example .env

Set the required values:

  • OPENAI_API_KEY
  • DATABASE_URL
  • ESCO_CSV_PATH
  • SUPABASE_URL and SUPABASE_SERVICE_ROLE_KEY if using Supabase writes from scripts

Create the Supabase schema:

npm run db:setup

Import ESCO skills and occupation data:

npm run import:skills
npm run import:occupations

Run a semantic search from the CLI:

npm run search -- "repair bicycle brakes and talk to customers"

Install and run the Next.js app:

cd web
npm install
cp .env.example .env.local
npm run dev

Open http://localhost:3000.

Required web environment variables:

  • NEXT_PUBLIC_SUPABASE_URL
  • NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY
  • OPENAI_API_KEY

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages