ISNA
International Student News Alliance — AI-curated policy updates
Portfolio Project
ISNA
International Student News Alliance
An AI-powered news aggregation platform built for F-1 visa holders. A fully automated agentic pipeline crawls, evaluates, and curates immigration, education, and policy news — surfacing only what matters.

Overview
Architecture
Agentic Pipeline
The backend is a LangGraph state machine — a directed graph of agent nodes where data flows from raw RSS feeds through AI reasoning to a curated database.
RSS Ingestion
LangChain document loaders pull articles from curated RSS feeds on a scheduled interval. Raw text and metadata are extracted and normalized.
ReAct Agent — Reasoning Loop
A LangGraph ReAct agent iterates over each article, reasoning about F-1 relevance and calling scoring/tagging tools.
Relevancy Gate
The agent assigns a relevancy score (0–100). Articles below the threshold are pruned via a LangGraph conditional edge.
Enrichment — Tagging & Summarization
Passing articles are enriched: summaries, topic tags (visa, OPT, CPT, housing, finance), and representative images.
Supabase Storage
Enriched articles are written to a Supabase Postgres table. The Next.js frontend reads from this table via server actions.
Next.js Frontend
A React/Next.js 14 app renders the curated news feed with animated cards, tag filtering, and a detail modal.
Tech Stack at a Glance
Features
ISNA combines agentic AI engineering with a polished consumer interface. The heavy lifting happens in the Python backend — the Next.js frontend simply displays what the agent decided was worth reading.
Automated RSS Crawling
LangChain document loaders fetch and parse multiple RSS news feeds on a schedule. No manual curation — the pipeline runs autonomously.
ReAct Agent Reasoning
Each article passes through a ReAct loop. The agent thinks step-by-step about relevance before calling tools to score, tag, or discard.
Relevancy Score Gate
The agent scores each article 0–100 for F-1 relevance. Low-scoring articles are routed to a discard branch, never reaching storage.
Auto-Tagging
Articles that pass the gate are tagged: Visa, OPT, CPT, Immigration, Finance, Education, Housing. Tags drive filtering on the frontend.
Curated News Feed
A responsive card grid with animated hover states, article summaries, source links, and an expandable detail modal.
Immigration Timeline
A chronological timeline of key events — H-1B registration windows, OPT deadlines, policy changes.
Demo
Screenshots of the live application and agentic pipeline traces.

Curated articles displayed in a responsive card grid. Each card shows a summary, auto-generated tags, and links to the original source.
Under the Hood
LangGraph State Machine — Relevancy Gate
RSS Feeds
│
▼
┌──────────────────────┐
│ Fetch & Parse Node │ ← LangChain RSS loader
└──────────┬───────────┘
│
▼
┌──────────────────────┐
│ ReAct Agent Node │ ← Reason: "Is this F-1 relevant?"
│ (LangGraph node) │ Act: call scoring tool
└──────────┬───────────┘
│
▼ score ∈ [0, 100]
┌───────┴────────┐
│ GATE STATE │ ← LangGraph conditional edge
└──┬──────────┬──┘
│ ≥ 70 │ < 70
▼ ▼
Enrich Discard
& Tag (pruned)
│
▼
Supabase → Next.js FrontendConclusion
ISNA demonstrates how agentic engineering can replace brittle rule-based pipelines. Instead of hand-crafting filters, the system delegates curation decisions to a reasoning agent — making the pipeline more adaptable to changing news landscapes without code changes.
The relevancy gate pattern — scoring content and branching on that score as a LangGraph state condition — is a reusable pattern for any content-filtering pipeline.
LangGraph
Orchestrated the agentic pipeline as a typed state machine. Conditional edges implement gate logic.
LangChain
Provided document loaders for RSS ingestion, LLM chain wrappers, and tool definitions for the ReAct loop.
ReAct Pattern
The agent alternates between Reasoning (chain-of-thought) and Acting (tool calls) — producing transparent, auditable decisions.
Agentic Engineering
Designed around autonomous agent decisions rather than deterministic rules. The agent adapts based on article content.
Next.js 14
App Router with React Server Components. Server actions fetch from Supabase with no additional API layer.
Supabase
Postgres database as the integration layer between Python backend and Next.js frontend.