Web apps · React
Hiring pipeline
Move candidates from application to offer, with roles, interview dates and a stage board.

What you get
A hiring tracker for a growing team: log candidates, their role, source and next interview, then drag the conversation forward stage by stage on the board. The roles, stages and sample candidates live in src/app.ts.
Files
Exactly what is copied into a new project: 12 files, nothing generated.
Explorer 12
import type { AppSpec } from "./types"; /** Everything this app shows. Edit freely. */export const app: AppSpec = { "brand": "Shortlist", "icon": "star", "storageKey": "shortlist-candidates-v1", "entity": { "singular": "Candidate", "plural": "Candidates" }, "title": "Candidates", "subtitle": "Open roles: product designer, backend engineer, support lead", "currency": "$", "titleKey": "name", "statusKey": "stage", "tones": { "Applied": "neutral", "Screening": "accent", "Interview": "warn", "Offer": "good", "Rejected": "bad" }, "views": [ "table", "board" ], "fields": [ { "key": "name", "label": "Name", "type": "text", "required": true }, { "key": "role", "label": "Role", "type": "select", "options": [ "Product designer", "Backend engineer", "Support lead" ] }, { "key": "email", "label": "Email", "type": "email", "hideInTable": true }, { "key": "source", "label": "Source", "type": "select", "options": [ "Referral", "Job board", "Careers page", "Outreach" ] }, { "key": "interview", "label": "Next interview", "type": "date" }, { "key": "salary", "label": "Expected salary", "type": "money" }, { "key": "stage", "label": "Stage", "type": "select", "options": [ "Applied", "Screening", "Interview", "Offer", "Rejected" ] }, { "key": "notes", "label": "Notes", "type": "longtext", "hideInTable": true } ], "summary": [ { "label": "Candidates", "kind": "count" }, { "label": "In interviews", "kind": "count", "status": "Interview" }, { "label": "Offers out", "kind": "count", "status": "Offer" }, { "label": "Offer budget", "kind": "sum", "field": "salary", "status": "Offer" } ], "seed": [ { "name": "Maya Fernandes", "role": "Product designer", "email": "maya.fernandes@mail.com", "source": "Referral", "interview": "2026-11-02", "salary": 118000, "stage": "Interview", "notes": "Strong portfolio, mobile banking case study." }, { "name": "Daniel Kim", "role": "Backend engineer", "email": "dkim.dev@mail.com", "source": "Careers page", "interview": "2026-10-29", "salary": 142000, "stage": "Interview", "notes": "Go and Postgres. Systems round next." }, { "name": "Grace Adeyemi", "role": "Support lead", "email": "grace.adeyemi@mail.com", "source": "Job board", "interview": "2026-10-24", "salary": 84000, "stage": "Offer", "notes": "Offer sent Oct 26, start date flexible." }, { "name": "Jonas Weber", "role": "Backend engineer", "email": "jonas.weber@mail.com", "source": "Outreach", "interview": "2026-11-06", "salary": 136000, "stage": "Screening", "notes": "" }, { "name": "Lucia Moreno", "role": "Product designer", "email": "lucia.m@mail.com", "source": "Job board", "interview": "2026-11-09", "salary": 105000, "stage": "Applied", "notes": "" }, { "name": "Ethan Cole", "role": "Support lead", "email": "ethan.cole@mail.com", "source": "Referral", "interview": "2026-10-20", "salary": 79000, "stage": "Rejected", "notes": "Great attitude, not enough team-lead experience yet." }, { "name": "Aisha Rahman", "role": "Backend engineer", "email": "aisha.rahman@mail.com", "source": "Referral", "interview": "2026-10-27", "salary": 148000, "stage": "Offer", "notes": "Competing offer, decision by Nov 4." }, { "name": "Noah Petersen", "role": "Product designer", "email": "noah.p@mail.com", "source": "Careers page", "interview": "2026-11-04", "salary": 98000, "stage": "Screening", "notes": "" } ]};Remix
Remix this template
Describe what to change and the agent starts from Hiring pipeline's files. The box is already started for you: finish “Start from Hiring pipeline and …”
Dependencies
Documented from the template's package.json. The runtime has a prebuilt dependency set for Vite + React + TypeScript, so installs are fast.
- react^19.1.0
- react-dom^19.1.0
- vite^6.3.0
- @vitejs/plugin-react^4.4.0
- tailwindcss^4.1.0
- @tailwindcss/vite^4.1.0
- typescript^5.8.0
How it runs
- Framework
- Vite + React + TypeScript
- Dev command
- npm run dev
- Build command
- npm run build
- Output directory
- dist
- Port
- 5173
- Entry route
- /
Projects run in an isolated sandbox with a live preview. Read the projects documentation for settings, snapshots and deployment.
Keep browsing
All templates
React starter
A clean React + TypeScript + Tailwind single-page app. The default target for AI generation.

Sales leads CRM
A lean CRM for a small sales team: leads, deal values, next follow-ups and a pipeline board.

Wedding guest list
Keep the guest list, RSVPs, meal choices and table plan for the big day in one place.
Build on Hiring pipeline
Create a free account, start from this template, and ask the AI agent to turn it into your app.