- Built a full-stack AI developer news platform in a pnpm + Turborepo monorepo (Next.js 15 frontend + NestJS 11 API) with Drizzle ORM, deployed on Vercel (web) and Render (API) backed by Neon PostgreSQL + pgvector.
- Engineered a 10-source daily ingestion pipeline (Hacker News, Dev.to, Reddit /r/programming & /r/webdev, Lobste.rs, Hashnode, Medium, TechCrunch, GitHub, HackerNoon) driven by user interest tags: parallel metadata fetch → concurrent Cheerio content scraping (batches of 5, 8k char cap) → gpt-4o-mini summarization + text-embedding-3-small embeddings. Idempotent via URL deduplication, 24h freshness filter, and tag-aware balancing.
- Designed a production-grade personalized feed using cached per-user query embeddings: pgvector cosine ANN + dynamic tag-overlap bonus (+0.15 per match, max +0.3), strict relevance threshold (distance < 0.5), 1-day recency, and source-diversity selection logic that returns the highest-ranked article per source before filling remaining slots (top 5–6).
- Implemented a LangGraph agentic RAG pipeline (retrieve → grade → rewrite → generate) accepting multi-turn history. Uses k=6 retrieval, structured LLM grader (Zod), query rewriting up to 2 iterations when no documents pass grading, and strict separation of originalQuestion vs. searchQuery. Integrated Langfuse tracing + fire-and-forget faithfulness/relevance/recall evaluations persisted to ai_evaluations.
- Built a complete MCP server (Streamable HTTP transport) exposing 5 user-scoped tools: search_articles, get_personalized_feed, ask_inferr (full agentic flow), get_market_report, and get_job_report. Implemented a full OAuth 2.1 + PKCE authorization server (delegated Google sign-in) with dedicated tables (mcp_clients, pending_mcp_authorizations, pending_auth_codes, mcp_tokens), SHA-256 refresh token rotation, replay detection that revokes the full token chain, and type-scoped JWTs ('mcp_access') separate from web sessions.
- Implemented dual secure auth systems: web uses 15-minute JWT access + 7-day HttpOnly refresh tokens with atomic replacement-chain traversal in Drizzle; MCP uses 1-hour access + 7-day refresh optimized for machine clients.
- Delivered a live Tech Market feature: Remotive jobs scraper + two GPT-4o-mini generated reports (demand signals + hiring stats) cached in Postgres (market_reports + jobs) with 24h TTL and in-flight request coalescing.
- Authored a complete Kubernetes deployment suite (StatefulSet for pgvector Postgres with PVC, Redis Deployment, API Deployment with initContainer wait-for-db + liveness/readiness probes, Services, nginx Ingress, and CronJob for nightly scraper runs) alongside the Render + Vercel cloud path.
- Added full observability: OpenTelemetry auto-instrumentation (traces to Jaeger) and Langfuse for every LLM and agent step.
Next.js 15NestJS 11TypeScriptDrizzle ORMpgvectorLangGraphOpenAIMCP SDKOAuth 2.1LangfuseKubernetes