=================
== Claus' Blog ==
=================
Made with Hugo and ❤️

My personal AI recap of 2025 (Part 1)

#ai #personal #development #github #opensource #projects #llm

2025 was one of the most transformative years for me since the COVID-19 pandemic and the year I became a father. It marked the rise of “Vibe Coding” and agentic workflows, opening up previously unimaginable possibilities. For me, it all began in early 2025 as I started to realize just how effective Vibe Coding could be. Previously, I had only occasionally used ChatGPT for simple Python scripts, but the arrival of specialized Visual Studio Code plugins gave the hype real momentum. This trend is clearly reflected in the OpenRouter Rankings. While OpenRouter models aren’t used exclusively for Vibe Coding, they were undoubtedly a primary driver in the early months of 2025. These rankings remain an excellent resource for tracking current trends.

This period sparked a personal transformation that is still ongoing—one that has already reached a point where I write virtually no code manually anymore.

Vibe coding has turned senior devs into ‘AI babysitters’, but they say it’s worth it (TechCrunch)

Professionally, I transitioned from Data Scientist to AI Solution Consultant at breakneck speed. The efficiency with which my team and I can now develop solutions for other departments was previously unthinkable. However, we’ve also learned that AI is not a “magic bullet.” Success still requires the experience and foundational understanding of professional software development.

Reflections on the AI Era

Amidst all the excitement surrounding AI and agentic coding, I also find myself grappling with some more pessimistic thoughts:

  • Where is this journey leading? Some of my hobbies have lost their spark because I know an AI can produce better results in seconds than I ever could; music production as an example.
  • How do we remain “human”? What happens when the fruits of our labor are essentially generated by AI, and even scientific research is being automated? What does it mean when images are no longer of artistic origin but are simply AI output?
  • The erosion of trust: It’s becoming increasingly difficult to know if the content you’re reading was actually written by a human or just generated by an AI.

For me, this rapid development has also led to a growing detachment from the internet. Social media has become only an advertising platform for me; instead, I now subscribe to two paid newspapers for my daily information. Everything else is video streaming, self-hosted projects and software development.

Here is a brief overview of my vibe-coded software projects both professional and personal contexts…

Professional

Classification of procurement orders using UNSPSC

While it sounds trivial at first, achieving a high-quality result required several iterations. The goal was to classify procurement orders according to the official UNSPSC (United Nations Standard Products and Services Code). I generally believe that solutions requiring custom AI training should be a last resort. In this case, we worked with a customized, shortened list of official UNSPSC codes and descriptions. The challenge was ensuring that users only received codes from this specific list when entering an order. We mostly succeeded using a hybrid approach combining semantic search (ChromaDB) and BM25 keyword search. The workflow is as follows:

  1. Translate user input into a semantic term.
  2. Perform a semantic search in ChromaDB (via LLM prompt).
  3. Execute a BM25 keyword search against the official code list.
  4. Combine the search results.
  5. Use an LLM to rank the most plausible matches.

This project highlighted a common misconception: that AI makes everything simple. In reality, significant “brainpower” was required to meet the specific requirements of the department.

A note on expectations: Customers often ask, “Why all the effort? ChatGPT gave me a code instantly.” The reality is that they rarely verify those results. There is no guarantee that an LLM’s “hallucinated” code is valid, let alone part of our specific, customized list.

Classification of research publications

At first glance, this challenge was quite similar to the previous one. Back in 2024, we attempted to classify publications using the Australian ANZSRC system with SciBERT and custom training data. That approach proved unsuccessful, leading us to move away from model training.

Since the ANZSRC system provides detailed definitions and exclusion criteria for its codes, we tried a different approach: using a long, detailed prompt to assign labels at the second level (out of three). The results were more promising.

However, the core difficulty lies in the nature of the content: research papers and project proposals are rarely “black and white.” These works often span multiple scientific fields, and even human experts struggle to categorize an abstract definitively. This was a difficult reality to convey to stakeholders.

Ultimately, we concluded that AI-driven classification can only ever be an approximation. Hence, we developed a web application to assist users in selecting the correct labels. We hope to use the data gathered from this tool to refine our prompts or better instruct the AI in the future.

Bottom line: This was another reminder that AI is not a guaranteed success, even when it initially appears to be a straightforward task.

Personal Projects

In my personal life, things were a bit easier since I was my only “customer.”

startpage-vue

cloonix/startpage-vue

This is my personal start page, which I use daily. It is a Vue.js application that categorizes my most popular bookmarks and provides a search function. A key feature is its integration with linkding; the page automatically generates itself based on bookmark tags. The search functionality covers my entire bookmark collection. The page is protected by pangolin proxy (as an open-source alternative to Cloudflare’s zero trust tunnel).

simple-filedrop

cloonix/simple-filedrop

I don’t use Dropbox or similar file-sharing services. Thanks to Vibe Coding, I was able to quickly build my own. It supports S3 buckets or local directories as backends, with authentication handled via OIDC (pocket-id). Shared files can have expiration dates or a maximum number of downloads before they are automatically deleted.

excalidraw-ocr

This has become one of my most frequently used self-developed tools. I use Obsidian for almost everything, and with Excalidraw, I can capture handwritten notes on my tablet. A Docker container then processes these Excalidraw files to create text documents. Currently, it only supports text extraction and cannot yet handle diagrams or drawings.

obsidian-linkding

cloonix/obsidian-linkding

With Vibe Coding, the number of Obsidian plugins is skyrocketing. While my Linkding plugin hasn’t made it into the official directory yet, it serves me well. It integrates my bookmark collection directly into Obsidian Markdown documents. Using a simple code block, I can display bookmarks filtered by specific tags or keywords related to the current note.

yt-transcript

cloonix/yt-transcript

I needed a lean, functional script to generate YouTube transcripts for use with fabric-ai. It supports multiple languages and fits perfectly into my Fabric workflows. Fabric’s packaged YouTube transcript library gave me a lot of errors. Hence my own script.

obsidian-openrouter-integration

cloonix/obsidian-openrouter-integration

Another lightweight Obsidian plugin. I found existing “Copilot” integrations too complex and bloated. I just wanted a simple way to send a note or selected text to an LLM. I chose OpenRouter because it’s the easiest way to access various models within Obsidian. For example it helps me to insert facts or summaries.

Prefect Workflows

Prefect is a Python-based workflow orchestration tool that I use for various “little helpers.” Here are some of my most important flows:

  • Web Monitor: Scans my children’s elementary school website using crawl4ai and sends updates to our family chat. It also saves the school’s calendar as a Markdown file in my Obsidian vault.
  • Syncthing Monitor: Monitors my Syncthing directory pairs for errors.
  • Contact Sync: My contacts are stored as individual Markdown notes in Obsidian with metadata (frontmatter). A Python script synchronizes these bi-directionally with my Google account.
  • Calendar Dashboard: Retrieves various ICS calendars to create a daily appointment list for my Obsidian dashboard. It also automatically cleans up completed tasks in my vault.

Conclusion

This list represents only about half of the projects I tackled for personal or professional use in 2025. I can only imagine what 2026 will bring as agentic coding continues to evolve. Agentic workflows became a cornerstone of my daily work, particularly as I experimented with new tools and methodologies. With the current pace of innovation, you can literally try out a new tool every week. There were times when my colleagues and I just wanted a break from the constant “dopamine kick” of new releases and AI news.