01

RAG-powered read-it-later service

Next.js 16 TypeScript Prisma PostgreSQL Auth.js
Full-stack web app · Product Builder

An AI-powered read-it-later service built end-to-end with Next.js 16 App Router, Prisma ORM, and Auth.js. Save articles, highlights, and links from anywhere, then let an AI layer surface what actually matters across your reading history — no more forgotten bookmarks or overflowing reading lists.

I built this because existing read-it-later tools treat saving and reading as two separate things. The insight: saving content is only useful if you can reliably rediscover it when it's relevant. The AI layer connects the dots across everything you've saved, surfacing articles based on what you're currently working on or thinking about.

next.js app router server components prisma ORM postgresql auth.js · oauth email sign-in
02

Simple Chat

Claude API Next.js Tailwind CSS TypeScript
LLM Interface · Product Builder

A minimal, no-frills Claude chat interface with first-class support for model selection, editable system prompts, and full markdown rendering including syntax-highlighted code blocks. Built as a clean foundation for any LLM-powered product.

The goal was a tool I could actually use for daily prompt development and testing — without the overhead of a full-featured product. The system prompt editor is the key feature: being able to iterate on instructions without leaving the interface accelerates prompt engineering dramatically.

claude API streaming model selector system prompt editor markdown + code rendering next.js route handlers
03

Agentic News Composer

Python LangGraph Streamlit OpenRouter SQLite
Agentic AI Pipeline · Product Builder

A production-style agentic pipeline that turns the daily tech news firehose into three publish-ready blog drafts — with a human-in-the-loop review step before anything finalises. The system fetches from RSS feeds, Hacker News, and Reddit in parallel, ranks articles by relevance using an LLM, summarises the top stories, then fans out to three parallel draft-writing agents (Opinion, Newsletter Recap, Deep Dive).

The most technically interesting part: the graph pauses via interrupt() to surface all three drafts in the Streamlit UI, lets you approve or flag individual ones with free-text revision notes, then only regenerates the flagged drafts before looping back. Graph state is checkpointed to SQLite so a process restart mid-run doesn't lose progress.

langgraph stategraph send API fan-out interrupt / resume human-in-the-loop sqlitesaver checkpoint asyncio.gather conditional routing rss + hn + reddit
Get in touch

Let's build something
great together.

I'm looking for Senior PM and Head of Product roles where product craft, technical depth, and user focus matter. Open to a conversation.