[{"content":" Markus # Fullstack student experimenting with AI # My name is Markus Bjerrum Jørgensen. I\u0026rsquo;m 25 years old and currently studying software development at EK (Erhvervsakademi København). This is my portfolio — a place where I share projects, writing, and work in progress while learning fullstack development.\nI focus on Java, Javalin, PostgreSQL, HTML, CSS, and JavaScript. I’m also exploring how AI can support development, learning, and building better software.\nView Projects About Me Read Blog\n","date":"27 April 2026","externalUrl":null,"permalink":"/Portfolio/","section":"","summary":"","title":"","type":"page"},{"content":"","date":"27 April 2026","externalUrl":null,"permalink":"/Portfolio/tags/ai/","section":"Tags","summary":"","title":"AI","type":"tags"},{"content":"Writing about Java, fullstack development, projects, and experiments with AI.\n","date":"27 April 2026","externalUrl":null,"permalink":"/Portfolio/blog/","section":"Blog","summary":"","title":"Blog","type":"blog"},{"content":" Building a RAG Chatbot for My Portfolio # As part of my work with AI-driven applications, I wanted to explore how modern language models can be integrated into real software in a practical way. My goal was to build a chatbot for my portfolio website that could answer questions about me, my projects, and the content I publish on my site.\nRather than creating a generic chatbot, I wanted something more useful: a chatbot that understands my own content.\nThat led me to building a RAG chatbot.\nWhat is RAG? # RAG (Retrieval-Augmented Generation) is a way of improving AI responses by giving the model access to relevant information before it answers.\nInstead of relying only on what the model already knows, it can retrieve specific content from a knowledge base and use that as context when generating a response.\nIn my case, that knowledge base is my portfolio content:\nMy About page My blog posts Future content I publish on the site This means the chatbot can answer questions based on what I have actually written, rather than making assumptions or generating generic responses.\nChoosing a Platform # To build the chatbot, I used Dify, a platform for building AI applications with support for:\nLarge language models Knowledge bases Embeddings Retrieval pipelines Easy deployment I configured the chatbot using:\nGPT-4o Mini as the language model Embedding models for semantic search Reranking for improved retrieval quality A knowledge base connected to my portfolio content Integrating It Into My Portfolio # The chatbot is embedded directly into my website as a floating chat widget, making it accessible from every page.\nThe goal was for it to feel like a natural part of the portfolio rather than an external tool. I customized its styling to better match the design of the site, using colors and UI elements consistent with my overall portfolio theme.\nNow visitors can ask questions like:\nWhat technologies does Markus work with? What is he currently learning? What are his thoughts on AI applications? And the chatbot answers based on the actual content of my website.\nAutomating the Knowledge Base # One of the most interesting parts of the project was automating the chatbot’s knowledge.\nI set up a GitHub Actions workflow that automatically uploads my markdown content to Dify whenever I push updates to GitHub.\nThat means:\nWrite blog post → Push to GitHub → Knowledge updates → Chatbot learns new content What I Learned # One thing I learned during this project is that building a RAG chatbot sounds much more complicated than it actually is — at least once all the pieces click.\nAt first, the hardest part wasn’t setting up the chatbot itself. Dify made that part surprisingly straightforward. The real challenge was figuring out how to connect everything together in a way that made sense. I ran into problems with syncing content, GitHub Actions not triggering correctly, and making sure new blog posts were actually uploaded to the chatbot’s knowledge base.\nGetting the automation working was probably the biggest hurdle. Once I understood how GitHub Actions worked and how it could connect my portfolio content directly to Dify, everything suddenly became much simpler. After that, it turned into a system that more or less manages itself.\nI also learned that small technical details matter a lot. Something as simple as a wrong file path or a typo in a workflow script was enough to stop the entire sync process. Debugging those issues taught me a lot about automation and how different services connect behind the scenes.\nOverall, the biggest takeaway is that AI integration doesn’t have to be overly complex. Once the setup is in place, it becomes surprisingly simple to maintain.\nConclusion # Now that everything is set up, the best part is that I don’t really have to think about it anymore.\nWhenever I write a new blog post and push it to GitHub, GitHub Actions automatically uploads it to Dify, updates the chatbot’s knowledge, and makes that content available for future conversations. That means the chatbot grows together with my portfolio without any manual work from me.\nWhat started as a small experiment turned into something I’m genuinely proud of. It’s a practical use of AI, it improves my portfolio, and it gave me hands-on experience with building a real AI-driven application.\nAnd honestly — now that I understand how it works — it feels surprisingly simple.\n","date":"27 April 2026","externalUrl":null,"permalink":"/Portfolio/blog/rag-chatbot/","section":"Blog","summary":"","title":"Building a RAG Chatbot for My Portfolio","type":"blog"},{"content":"","date":"27 April 2026","externalUrl":null,"permalink":"/Portfolio/tags/chatbot/","section":"Tags","summary":"","title":"Chatbot","type":"tags"},{"content":"","date":"27 April 2026","externalUrl":null,"permalink":"/Portfolio/tags/dify/","section":"Tags","summary":"","title":"Dify","type":"tags"},{"content":"","date":"27 April 2026","externalUrl":null,"permalink":"/Portfolio/tags/portfolio/","section":"Tags","summary":"","title":"Portfolio","type":"tags"},{"content":"","date":"27 April 2026","externalUrl":null,"permalink":"/Portfolio/tags/rag/","section":"Tags","summary":"","title":"RAG","type":"tags"},{"content":"","date":"27 April 2026","externalUrl":null,"permalink":"/Portfolio/tags/","section":"Tags","summary":"","title":"Tags","type":"tags"},{"content":" Expectations for AI Applications # I’ve started a selective subject called AI Driven Applications, and I want to outline what I expect to learn and how it fits into my development journey.\nWhat I want to learn # My main goal is to understand how AI can be used in real applications — not just theory.\nI’m especially interested in:\nIntegrating AI into fullstack applications Using APIs like language models in backend systems Understanding limitations and trade-offs Building features that actually improve user experience How it fits my current skills # I’m currently working with Java, Javalin, and PostgreSQL, so I want to explore how AI can be added to that stack.\nSome ideas I want to experiment with:\nChat-based interfaces AI-assisted search Automating backend logic Expectations for the course # I hope the course focuses on practical work:\nBuilding real applications Working with AI tools and APIs Designing systems that include AI components I also expect challenges, especially around understanding how AI behaves and how to use it reliably.\nGoal # By the end of the course, I want to:\nBuild a complete AI-driven application Understand when AI is useful — and when it isn’t Combine AI with traditional backend development This course feels like a natural next step as AI becomes more integrated into modern applications. I’m looking forward to experimenting and building something useful.\n","date":"24 April 2026","externalUrl":null,"permalink":"/Portfolio/blog/ai-expectations/","section":"Blog","summary":"","title":"Expectations for AI Applications","type":"blog"},{"content":"I’m building this portfolio as a fullstack student experimenting with Java, web development, and AI-assisted workflows.\n","date":"24 April 2026","externalUrl":null,"permalink":"/Portfolio/blog/first-post/","section":"Blog","summary":"","title":"First Portfolio Update","type":"blog"},{"content":" About # I’m a developer focused on building fullstack applications using Java and modern web technologies.\nI enjoy working on:\nBackend systems and APIs Database design and queries Clean and maintainable code Current focus # Improving Java backend architecture Working with PostgreSQL and data modeling Building complete web applications from frontend to database Tech I use # Java Javalin PostgreSQL HTML / CSS / JavaScript This portfolio will grow as I build and refine projects.\n","externalUrl":null,"permalink":"/Portfolio/about/","section":"","summary":"","title":"About","type":"page"},{"content":"","externalUrl":null,"permalink":"/Portfolio/authors/","section":"Authors","summary":"","title":"Authors","type":"authors"},{"content":"","externalUrl":null,"permalink":"/Portfolio/categories/","section":"Categories","summary":"","title":"Categories","type":"categories"},{"content":" Projects # I’m currently building projects to showcase my skills.\nProjects will be added here soon.\nWhat to expect # Fullstack web applications Database-driven systems Clean and structured backend code Check back soon.\n","externalUrl":null,"permalink":"/Portfolio/project/","section":"","summary":"","title":"Projects","type":"page"},{"content":"I’m currently working on building projects.\nCheck back soon to see what I’ve created 🚀\n","externalUrl":null,"permalink":"/Portfolio/projects/","section":"Projects","summary":"","title":"Projects","type":"projects"},{"content":"","externalUrl":null,"permalink":"/Portfolio/series/","section":"Series","summary":"","title":"Series","type":"series"}]