Interncept: Product Design & AI-Assisted Build by Omar AlfageehInterncept: Product Design & AI-Assisted Build by Omar Alfageeh

Interncept: Product Design & AI-Assisted Build

Omar Alfageeh

Omar Alfageeh

Live product. Solo product designer · May 2026–present · Figma, Google Antigravity, Cursor. Deliverables: product specification, brand identity, design system and a live web app.

Overview

Interncept is a free internship aggregator for students in the US. Instead of hosting applications, it sits above the job boards and company career sites as a discovery layer: it finds internships wherever they're posted, collapses copies of the same role into a single listing, and links out to every place you can apply. I designed the product and its design system, wrote the full product specification, and directed an AI-assisted build from database schema to launch.

The problem

Internship postings are scattered across dozens of job boards and thousands of company career sites, so a thorough search means keeping a wall of tabs open.
The same role is often posted to LinkedIn, Indeed and Glassdoor at once, so students click through near-identical listings again and again.
Stale and mislabeled posts waste time: roles that closed weeks ago, full-time jobs tagged as internships, and vague locations.

The idea

One role, many tabs. The same internship, found on three boards, becomes one listing with three places to apply.

Product premises

Decisions locked before a line of code. I wrote these into the spec as rules the product doesn't break without a deliberate change of intent.
Internships only. Every listing passes a strict internship gate: rule-based triage first, then AI confirmation for anything ambiguous.
US-focused. US roles under any arrangement, plus Canadian roles only when they're fully remote.
Freshness over volume. Listings older than 30 days are never ingested, and the feed is pruned every day.
One listing, many sources. The same role on several boards collapses into one card with a tile for every place it's posted.
Reliable locations. Raw location strings are normalized into clean "City, ST" or "Remote" labels.
Discovery, not applications. Apply always routes to the original posting. No auto-apply, no resume hosting.
Minimal auth. Everything works without an account; signing in just syncs saved and applied roles across devices.
No Handshake. Investigated and left out: its public pages return no internships and the rest sits behind a login.

How it works

Every posting runs the same gauntlet. Several times a day, a pipeline pulls fresh postings from every source and puts each one through the same gates before it can reach the feed.
Fetch. Pull postings from job boards (LinkedIn, Indeed, Glassdoor, Dice, Monster), Google Jobs, 1,721 company career boards, curated GitHub feeds, The Muse, USAJOBS, Adzuna, RemoteOK and Remotive.
Triage. Keep, drop or flag. Clear internship signals are kept; full-time, senior and licensed-medical roles are dropped at zero AI cost; ambiguous ones need AI confirmation at 60%+ confidence.
Geo-lock. US roles under any arrangement stay. Canadian roles stay only when they're remote. Everything else is dropped.
Freshness. Anything posted more than 30 days ago never enters the database, and the feed is pruned daily.
Locate. Messy location strings are normalized to clean "City, ST" or "Remote" labels applicants can scan.
Dedup. Exact, cross-board and semantic matching. A duplicate doesn't become a new card; it just adds another source tile to the listing that already exists.
Enrich. Only genuinely new listings go to the AI step, which classifies category and type, with automatic failover between providers.
Search. Postgres serves the feed in one call: filters, seven sort modes, synonym-aware search and infinite scroll.

Coverage

Every source, one feed: 1,721 company career boards, 12 live applicant-tracking platforms, a 30-day freshness window and 6 hours between refreshes of company boards. Source tiles always sit on white with a black border, so every logo stays legible in both themes.

Key design decisions

1. Brutalist, editorial, square

I wanted Interncept to read like a well-set classifieds page rather than another soft SaaS dashboard: flat surfaces, heavy 2px borders, zero corner radius and a single accent color reserved for action. Type is the Helix family (ExtraBold for the logo, Bold for headers, Regular for body), and the tokens stay few: a 0rem radius, 2px structural borders, a 4px spacing base and a 1584px feed. Tokens shape components; components don't shape tokens.

2. Red is held back for action

Magnet Red (#E53D35) follows a 60-30-10 rule. A white canvas does most of the work, black borders and type carry the structure, and Magnet Red is held back for calls to action, active states and brand moments, so a user always knows where to click.

3. State lives in borders and surfaces

A card can be saved, expanded in place and applied to. A multi-source listing asks where you'd like to apply, then turns mint once you have.
Expand in place: the card scrolls to sit just below the sticky toolbar.
Filters live in a right-hand drawer: source, arrangement, type, location and category.
Density: 2, 4 or 6 cards per row on desktop, always one on mobile. Density 2 gives roomy cards with a line-clamped description; density 6 is a fast scan for people who know what they want.

4. Both themes ship finished

Surfaces flip through a single token layer, while Magnet Red and the white source tiles stay put in both modes.

5. Reconciled against what shipped

Once v1.0 shipped, I reconciled the v0.5 spec against it:
Magnet Red: two candidate reds documented, resolved to #E53D35.
Corners: a six-step radius scale became a single 0rem radius, everywhere.
Grid: an 8pt scale and a fixed 1728px frame became a 4px base and a fluid 1584px container.
Saved state: a tinted card surface became a filled bookmark only.
Sources: 5 platforms became 27+ platform tiles.
Body weight: Helix Light became Helix Medium and Semibold.

Shipping it

I wrote the product specification and the design system first, then directed an AI-assisted build in Google Antigravity and Cursor: Next.js and Tailwind on the front end, a FastAPI pipeline running on Railway, and Supabase Postgres for data and accounts. Every change went through design QA before it shipped, and the docs are kept current so any new session can pick up exactly where the last one left off.

What's next

Deeper employer coverage on Workday and iCIMS career sites.
An alerting layer for the pipeline, beyond logs.
Backfilling older listings with cleaner locations and descriptions.
Like this project

Posted Oct 5, 2026

Designed and shipped a live US internship aggregator that merges duplicate listings across job boards into one card linking to every source.