Writing on software engineering, computer networking, AI, and maybe some robotics in the future.

My thoughts on programming and system design as they change over time.

How I Built a Document-Grounded Question Answering Flow

A practical walkthrough of a document-grounded question-answering pipeline, covering authentication, embeddings, pgvector retrieval, prompt construction, LLM generation, streaming responses, and Postgres logging.

Moving Document Processing Into the Worker Layer

After setting up Scrappy’s frontend, backend, database, cache, and vector store, the next step was moving expensive document work out of the API and into a dedicated worker layer that handles parsing, chunking, embedding, and saving processed content back into the system.

Turning Scrappy Into a Full Application Stack

After setting up authentication, the next step for Scrappy was connecting the major pieces of the application: a frontend for users, a FastAPI backend to coordinate requests, Postgres for durable state, Redis for caching and async support, and pgvector for semantic document retrieval.

Building the Auth Foundation for Scrappy

Scrappy started with a simple requirement: every future app, tool, and service needed a reliable way to know who a user is. The first step was building a reusable authentication API that can handle accounts, login, token validation, logout, and identity management from one centralized service.