Global Internship Discovery & Tracking Platform
822 positions across 600+ companies in 33 countries — the most comprehensive open-source internship tracker
🔗 Live Site · Features · Coverage · Tech Stack · Quick Start
| Feature | Description |
|---|---|
| 🔍 Discover | Browse & filter 822 internships by industry, function, region, country, tier, year, visa sponsorship, and keyword search |
| ⭐ Favorites | Save internships with one click — scoped to your user account |
| 📋 Track | Track application status: Applied → Interview → Offer → Accepted/Rejected |
| 📊 Analytics | Funnel visualization, industry breakdown, application stage tracking |
| 👤 Multi-User | Username + PIN login — each user has their own favorites, tracking, and profile |
| 🌐 i18n | Chinese / English one-click toggle |
| 🌙 Dark/Light | Full theme toggle with CSS custom properties design system |
| 📥 Export | Download filtered results as CSV (with BOM for Excel) |
| 💰 Zero Cost | Static JSON on Vercel CDN — no server, no database, no ongoing cost |
| Region | Entries | Highlights |
|---|---|---|
| 🇺🇸 North America | 451 | FAANG, Fortune 500, Unicorns, Gov/NPO |
| 🇪🇺 Europe | 216 | Siemens, Airbus, LVMH, Roche, Shell, IKEA |
| 🌏 APAC | 138 | Tencent (10K+ offers), Samsung, TSMC, Nubank |
| 🌐 Remote | 17 | GitLab, Zapier, Automattic, Binance |
| Industry | Count | Example Companies |
|---|---|---|
| 💻 Technology & Internet | 288 | Google, Meta, Apple, Microsoft, ByteDance, Stripe |
| 💰 Finance & Fintech | 169 | Goldman Sachs, JPMorgan, Stripe, HSBC, Nubank |
| 🏭 Industrial & Manufacturing | 89 | Tesla, SpaceX, Boeing, Toyota, Siemens, Foxconn |
| 🛍️ Consumer & Retail | 81 | Nike, LVMH, P&G, IKEA, Nestlé, PepsiCo |
| 🏥 Healthcare & Life Sciences | 45 | Pfizer, Novartis, Roche, Moderna, Merck |
| 📊 Consulting & Advisory | 36 | McKinsey, BCG, Bain, Deloitte, PwC, EY, KPMG |
| 🎬 Media & Entertainment | 33 | Disney, Netflix, Spotify, EA, Roblox, Epic Games |
| ⚡ Energy & CleanTech | 32 | Shell, BP, Equinor, Ørsted, CATL, NextEra |
| 🪙 Crypto & Web3 | 22 | Coinbase, Binance, Kraken, Ripple, Circle, Polygon |
| 🏛️ Government & Public Sector | 18 | World Bank, UN, OECD, IMF, NATO, WHO |
| Function | Count |
|---|---|
| Engineering & Development | 469 |
| AI / ML & Data | 110 |
| Marketing & Growth | 89 |
| Consulting & Research | 50 |
| Operations & Strategy | 37 |
| Product & Design | 27 |
| Finance & Accounting | 25 |
| Sales & BD | 24 |
| People & Culture | 18 |
| Quantitative Finance | 18 |
- Fortune 500 / Global Corp: 500+ entries
- Unicorn / Growth Stage: 175+ entries
- Startup / SME: 25+ entries
- Government / Non-profit: 18 entries
Internship Hunter
├── Frontend: Vanilla HTML/CSS/JS (zero framework)
├── Data: Static JSON pre-built from Notion API
├── Build: Node.js (scripts/build-data.js)
├── Deploy: Vercel static hosting (free tier)
├── Auth: localStorage multi-user system
└── CI/CD: GitHub Actions (daily data refresh)
Architecture: Notion databases → node scripts/build-data.js → public/data.json → Vercel CDN
- Zero server cost — all filtering, sorting, pagination happens client-side from a single static JSON
- Sub-second loads — Vercel global CDN + minimal footprint (~650KB data + ~15KB app)
- No framework bloat — vanilla JS under 500 lines
- Node.js v18+
- Notion API token (for data refresh)
- Vercel account (for deployment)
git clone https://github.com/ippq/internship-hunter.git
cd internship-hunter
# Rebuild data from Notion (requires token)
export NOTION_TOKEN=ntn_...
node scripts/build-data.js
# Serve locally
npx serve publicnpx vercel --prod --yes- Add
NOTION_TOKENto GitHub Secrets (Settings → Secrets and variables → Actions) - The workflow in
.github/workflows/refresh.ymlruns daily at 6am UTC
├── public/ — Static site (deployed to Vercel)
│ ├── index.html — Application shell
│ ├── app.js — Frontend logic (~500 lines, incl. i18n)
│ ├── style.css — Design system + responsive CSS
│ └── data.json — Pre-built internship data (822 entries, ~650KB)
├── scripts/
│ ├── build-data.js — Notion API → static JSON
│ ├── insert-batch.js — Batch insert new entries into Notion
│ └── new-entries.json — Staging file for new entries
├── config/
│ └── notion-dbs.json — Regional database IDs
├── .github/workflows/
│ └── refresh.yml — Daily data refresh action
├── vercel.json — Vercel deployment config
└── .env — NOTION_TOKEN (gitignored)
- Collection: Internships researched via Anysearch + verified against company career pages
- Storage: 4 Notion databases (NA / EU / APAC / Remote), standardized schema
- Build:
build-data.jsfetches all pages via Notion API (cursor pagination), flattens to JSON - Deploy:
data.jsoncommitted to repo, deployed to Vercel CDN as static asset - Refresh: GitHub Action runs daily, or manually via
node scripts/build-data.js
MIT — see LICENSE file.
Built with ❤️ using Notion API + Vercel · Live Demo