{"data":{"projects":{"edges":[{"node":{"frontmatter":{"title":"Streaming ChatGPT clone","tech":["Node.js","Streaming","Markdown"],"github":null,"external":"https://revcopilot.in"},"html":"<p>Full-stack streaming chat: live tokens, Markdown and code blocks, conversation persistence, history, and token counting so context limits fail gracefully.</p>"}},{"node":{"frontmatter":{"title":"RAG architecture lab","tech":["RAG","Chunking","Embeddings"],"github":null,"external":null},"html":"<p>Indexing and query pipelines with fixed-size, semantic, and recursive chunking, plus document parsing for PDFs, Markdown, and HTML.</p>"}},{"node":{"frontmatter":{"title":"Vector search with Qdrant","tech":["Qdrant","Docker","Metadata filters"],"github":null,"external":null},"html":"<p>Local Qdrant for storing embeddings, similarity search, scoped metadata filters, and reranking when raw cosine scores are not enough.</p>"}},{"node":{"frontmatter":{"title":"Production ingestion","tech":["Queues","Workers","Retries"],"github":null,"external":null},"html":"<p>Queue-based document ingestion so indexing never blocks a web request: background workers, safe retries, and progress tracking.</p>"}},{"node":{"frontmatter":{"title":"Vectorless retrieval","tech":["PageIndex","Hybrid RAG","LLM wiki"],"github":null,"external":null},"html":"<p>Where vector RAG fails (chunk boundaries, embedding drift, multi-hop questions) and how vectorless / wiki-as-memory retrieval can complement it.</p>"}},{"node":{"frontmatter":{"title":"AI pitch deck pipeline","tech":["Structured output","Prompt chaining"],"github":null,"external":null},"html":"<p>Prompt to outline to slides with consistent structured formatting and a downloadable exported deck.</p>"}},{"node":{"frontmatter":{"title":"CLI agent from scratch","tech":["JavaScript","Tools","Claude-style CLI"],"github":"https://github.com/SatenderRathore","external":null},"html":"<p>A perceive-decide-act agent loop in plain JavaScript with file, directory, and shell tools plus guardrails against runaway loops.</p>"}},{"node":{"frontmatter":{"title":"OpenAI Agents SDK","tech":["Agents SDK","Handoffs","Guardrails"],"github":null,"external":null},"html":"<p>Rebuilt the CLI agent with the OpenAI Agents SDK: instructions, multi-agent handoffs, tracing, sessions, File Search, Web Search, and Code Interpreter.</p>"}},{"node":{"frontmatter":{"title":"Realtime voice agent","tech":["Realtime API","Audio streams"],"github":null,"external":null},"html":"<p>A real-time voice agent on the OpenAI Realtime API: bidirectional audio, tool use, and the same safety patterns as text agents.</p>"}},{"node":{"frontmatter":{"title":"Claude Agent SDK","tech":["Claude","Prompt caching","Citations"],"github":null,"external":null},"html":"<p>Long-context Claude workflows: PDFs without parsing, inline citations, prompt caching, extended thinking, batches, and a full agent loop in Node.js.</p>"}},{"node":{"frontmatter":{"title":"Memory layer","tech":["Mem0","Neo4j","Knowledge graphs"],"github":null,"external":null},"html":"<p>Short-term vs long-term, episodic, and semantic memory: write/update/forget policies, Mem0, and memories stored as graph nodes you can query across sessions.</p>"}},{"node":{"frontmatter":{"title":"MCP, Skills & Plugins","tech":["MCP","Claude Skills","Plugins"],"github":null,"external":null},"html":"<p>Model Context Protocol servers, Claude Skills with schemas, and plugins for packaging agent capabilities into something others can install.</p>"}},{"node":{"frontmatter":{"title":"The Perfect Blog","tech":["JavaScript"],"github":"https://github.com/SatenderRathore/ThePerfectBlog","external":null},"html":"<p>An early public project exploring blogging UX and frontend fundamentals.</p>"}},{"node":{"frontmatter":{"title":"ACM NIT Surat","tech":["HTML","CSS","JavaScript"],"github":"https://github.com/SatenderRathore/acm-nit-surat","external":null},"html":"<p>Website for the ACM NIT Surat student chapter, built while studying Computer Engineering.</p>"}}]}}}