Skill Scout
Skill Scout
Map team skills, find project talent, and unlock your organization's full potential.
Small to medium-sized agencies and product teams (5-50 employees) often struggle with internal talent visibility. As project demands shift, managers waste valuable time (estimated 2-4 hours per project, per manager) trying to identify who on their team possesses specific, often niche, skills (e.g., 'advanced PostgreSQL optimization', 'React Native animations', 'AI prompt engineering'). This manual search, typically involving Slack messages, spreadsheets, or memory, leads to project delays, inefficient resource allocation, underutilized employee potential, and sometimes unnecessary external hiring. Employees themselves often have skills not formally recognized, leading to missed opportunities for growth and contribution. The market offers complex HRIS solutions for large enterprises, but these are overkill and too expensive for budget-conscious small teams needing a lightweight, focused solution.
Skill Scout provides a simple, intuitive platform for small teams to map, track, and leverage their internal talent effectively. At its core, employees can easily create and update their skill profiles, detailing their expertise and proficiency levels. Managers gain a powerful dashboard to search for specific skills, filter by team or department, and instantly see a ranked list of relevant employees. The unique differentiator is its project-matching capability: managers define required skills for a project, and Skill Scout automatically suggests the best-fit internal candidates. This eliminates manual searching, reduces project kick-off times by up to 50%, and ensures optimal utilization of existing team members. It's designed for quick setup and daily use, integrating seamlessly into existing workflows without the complexity of a full HRIS.
Tech Stack
System Architecture
+----------------+ +---------------------+ +---------------------------+ +-------------------+
| Client | | Next.js App (Server | | Supabase | | External Services |
| (Browser/Mobile)| | Components & API | | (PostgreSQL DB, Auth, RLS)| | (Stripe, Resend) |
+----------------+ | Routes) | +-------------+-------------+ +--------+----------+
β² +----------β²-----------+ β β
β β β β β
β UI Interactionβ β API Calls β DB Queries/Mutations β API Calls
β β β β β
βΌ βΌ βΌ βΌ βΌ
βββββββββββββββββββ βββββββββββββββββββββ βββββββββββββββββββββ βββββββββββββββββββββ βββββββββββββββ
β User Interface βββββΊβ Next.js Frontend βββββΊβ Next.js API Routes βββββΊβ Supabase Databaseβ β Stripe β
β (React, Tailwind)β β (Server & Client) β β (Authentication, β β (User profiles, β β (Subscriptionβ
βββββββββββββββββββ β β β Skill Management, β β Skills, Projects,β β Management)β
β β β Project Matching, β β Organizations) β βββββββββββββββ
β β β Org Management) β βββββββββββββββββββββ
βββββββββββββββββββββ βββββββββββ¬ββββββββββββ
β Email Invites
βΌ
βββββββββββββββ
β Resend β
β (Email API) β
βββββββββββββββDatabase Schema
CREATE TABLE organizations (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
name TEXT NOT NULL,
slug TEXT UNIQUE NOT NULL,
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
stripe_customer_id TEXT, -- For Stripe integration
subscription_status TEXT -- e.g., 'active', 'inactive', 'trialing'
);
CREATE TABLE profiles (
id UUID REFERENCES auth.users(id) PRIMARY KEY, -- Link to Supabase auth.users
organization_id UUID REFERENCES organizations(id) ON DELETE CASCADE,
first_name TEXT NOT NULL,
last_name TEXT NOT NULL,
email TEXT UNIQUE NOT NULL, -- Redundant but useful for quick lookups
role TEXT DEFAULT 'employee' NOT NULL, -- 'employee', 'manager', 'admin'
avatar_url TEXT,
bio TEXT,
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);
-- Skills table (master list of skills)
CREATE TABLE skills (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
name TEXT UNIQUE NOT NULL,
description TEXT,
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);
-- User-specific skills (many-to-many with proficiency)
CREATE TABLE user_skills (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
user_id UUID REFERENCES profiles(id) ON DELETE CASCADE,
skill_id UUID REFERENCES skills(id) ON DELETE CASCADE,
proficiency INTEGER NOT NULL CHECK (proficiency >= 1 AND proficiency <= 5), -- 1=beginner, 5=expert
is_primary BOOLEAN DEFAULT FALSE, -- Highlight key skills
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
UNIQUE (user_id, skill_id) -- A user can only have a specific skill once
);
-- Projects table
CREATE TABLE projects (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
organization_id UUID REFERENCES organizations(id) ON DELETE CASCADE,
name TEXT NOT NULL,
description TEXT,
status TEXT DEFAULT 'open' NOT NULL, -- 'open', 'in_progress', 'completed', 'archived'
start_date DATE,
end_date DATE,
created_by UUID REFERENCES profiles(id),
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);
-- Project skill requirements (many-to-many linking projects and skills)
CREATE TABLE project_skill_requirements (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
project_id UUID REFERENCES projects(id) ON DELETE CASCADE,
skill_id UUID REFERENCES skills(id) ON DELETE CASCADE,
min_proficiency INTEGER NOT NULL CHECK (min_proficiency >= 1 AND min_proficiency <= 5),
is_essential BOOLEAN DEFAULT TRUE, -- Is this skill mandatory for the project?
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
UNIQUE (project_id, skill_id)
);
-- Add indexes for performance
CREATE INDEX idx_profiles_organization_id ON profiles (organization_id);
CREATE INDEX idx_user_skills_user_id ON user_skills (user_id);
CREATE INDEX idx_user_skills_skill_id ON user_skills (skill_id);
CREATE INDEX idx_projects_organization_id ON projects (organization_id);
CREATE INDEX idx_project_skill_requirements_project_id ON project_skill_requirements (project_id);
CREATE INDEX idx_project_skill_requirements_skill_id ON project_skill_requirements (skill_id);
-- Enable Row Level Security (RLS) for all tables
ALTER TABLE organizations ENABLE ROW LEVEL SECURITY;
ALTER TABLE profiles ENABLE ROW LEVEL SECURITY;
ALTER TABLE skills ENABLE ROW LEVEL SECURITY;
ALTER TABLE user_skills ENABLE ROW LEVEL SECURITY;
ALTER TABLE projects ENABLE ROW LEVEL SECURITY;
ALTER TABLE project_skill_requirements ENABLE ROW LEVEL SECURITY;API Endpoints
/api/auth/registerRegister a new user and create an organization./api/auth/loginLog in an existing user./api/organizations/meGet current user's organization details./api/organizations/inviteInvite a new user to the organization (manager/admin)./api/profilesGet all user profiles in the current organization (manager/admin)./api/profiles/meGet current authenticated user's profile./api/profiles/meUpdate current authenticated user's profile./api/skillsGet a list of all available skills in the system/organization./api/skillsCreate a new master skill (admin)./api/profiles/me/skillsGet current user's assigned skills./api/profiles/me/skillsAdd a skill to the current user's profile with proficiency./api/profiles/me/skills/[skillId]Update proficiency or primary status for a user's skill./api/profiles/me/skills/[skillId]Remove a skill from the current user's profile./api/projectsGet all projects within the organization./api/projectsCreate a new project (manager)./api/projects/[id]Get details for a specific project./api/projects/[id]Update an existing project (manager)./api/projects/[id]Delete a project (manager)./api/projects/[id]/skill-requirementsGet skill requirements for a specific project./api/projects/[id]/skill-requirementsAdd a skill requirement to a project (manager)./api/projects/[id]/skill-requirements/[skillId]Update an existing skill requirement for a project (manager)./api/projects/[id]/skill-requirements/[skillId]Remove a skill requirement from a project (manager)./api/projects/[id]/matchesGet a ranked list of users matching a project's skill requirements (manager)./api/stripe/webhookStripe webhook endpoint for handling subscription events./api/stripe/create-checkout-sessionCreate a Stripe checkout session for a new subscription./api/stripe/portal-sessionCreate a Stripe customer portal session for managing subscriptions.Start Building with AI
Copy this prompt for Cursor, v0, Bolt, or any AI coding assistant
BuilderDaily Team
VerifiedIndie hackers and full-stack engineers creating validated Micro-SaaS blueprints with production-ready tech stacks.
Related Blueprints
More Micro-SaaS ideas you might like to build
API CostPilot
Real-time API expense tracking, forecasting, and optimization for developers.
EcoContent Auditor
Analyze and reduce the digital carbon footprint of your website content.
ClientFlow Metrics
Custom client progress tracking for health & wellness practitioners.
Gap Alert
Today's gap expires in ~14 hours
Get tomorrow's blueprint delivered to your inbox so you never miss a profitable idea.
(Email delivery launching soon β sign up to be first!)