ICN Career Hub
Volunteer — sole architect and builder
Stack
- TypeScript
- Next.js
- Claude Code
- Anthropic API
- PostgreSQL
- MCP
Numbers
- Two Google Forms + Sheets replaced; ~290 seeker profiles and ~120 referred roles migrated
- Manual housekeeping → one daily job: reminders, expiry, alert digests, dead-link checks
- Runs on ICN-owned free tiers for roughly $0–10/month
Problem
The Insights Career Network is a free, volunteer-run community for market research, analytics, and insights professionals. Its two most-used services — the Active Insights Job Seeker List and the Insights Job Referral List — ran on Google Forms feeding Google Sheets. The community showed up, and the lists grew past what a spreadsheet can carry. Nobody could tell who was still looking. The only way to update a profile was to submit again and flag the old row as a duplicate, and dozens of rows had. The form never collected an email address, so members couldn’t be reminded, alerted, or reached at all. Referred roles sat on the list after they were filled, and every bit of upkeep fell on volunteers. I had my own profile on that list, saw the gap between what the sheet could do and what the community needed, and offered to build the replacement.
Approach
Built the ICN Career Hub end-to-end with Claude Code, on a stack ICN owns outright — GitHub organization, Vercel, Neon Postgres, its own domain — so nothing depends on a volunteer’s accounts. The two lists became two live directories with real filters, shareable URLs, and accounts: anyone can browse open roles, a free account unlocks the referral context and job alerts, and seeker details are visible only to employers and recruiters ICN approves one by one. Independent consultants get their own availability model instead of being filed under “job seeker.” A daily housekeeping job replaces the manual upkeep: renewal reminders with one-click magic links, automatic expiry, relist notices, alert digests on both sides, and a link checker that flags applications that have closed or 404. The judgment calls go to software before they go to a person. A Claude-backed assistant turns plain-language requests into directory filters, returning a match count and a “view results” button rather than a sample that would bias attention toward whoever it quoted; it files support tickets with consent and, for admins, searches the operating guide and files platform requests straight onto the roadmap. Claims on imported profiles are screened in tiers — exact-match rules, then a small model’s review behind a hard floor in code, and only the unsure cases reach an admin. Every model call is metered on a budget tab, and partner sites and AI agents pull approved listings through a REST feed and an MCP server.
Outcome
Live at hub.insightscareernetwork.org, with the seeker list and referral list migrated and the Google Forms retired at cutover. ICN’s volunteers now triage exceptions instead of maintaining spreadsheets, and members get what a shared sheet never could: job alerts matched to their own criteria, profiles they control, networking with other seekers, and a talent directory employers can actually search. It is deliberately a foundation rather than a finished product. Access rules, thresholds, and partner scopes are settings, not code changes; the shared taxonomy between profiles and postings and the alert-matching engine are the groundwork for automated job matching; the admin roadmap is the community’s own backlog; and the assistant’s tools and the MCP endpoint are the pattern for every future agent ICN wants to add. Running cost on free tiers is a few dollars a month.