<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="https://kevinolivar.com/feed.xml" rel="self" type="application/atom+xml" /><link href="https://kevinolivar.com/" rel="alternate" type="text/html" /><updated>2026-09-16T14:38:42+02:00</updated><id>https://kevinolivar.com/feed.xml</id><title type="html">Kevin Olivar</title><subtitle>Software engineering, technical leadership, side projects and Swiss life — by Kévin Olivar.</subtitle><author><name>Kévin Olivar</name></author><entry><title type="html">What I learned using AI outside software</title><link href="https://kevinolivar.com/2026/09/07/what-i-learned-using-ai-outside-software.html" rel="alternate" type="text/html" title="What I learned using AI outside software" /><published>2026-09-07T00:00:00+02:00</published><updated>2026-09-07T00:00:00+02:00</updated><id>https://kevinolivar.com/2026/09/07/what-i-learned-using-ai-outside-software</id><content type="html" xml:base="https://kevinolivar.com/2026/09/07/what-i-learned-using-ai-outside-software.html"><![CDATA[<p>At 47, after years in software development, I found myself back on the job market.</p>

<p>I’ve been applying for IT roles since the layoff and am still figuring out what the right next step looks like. At the same time, I’ve had more space than usual to explore something completely outside my normal technical world.</p>

<p>One of those explorations started almost accidentally, over dinner with a friend.</p>

<p>It became one of the most useful experiments I’ve had with AI outside software.</p>

<p>Not because AI gave me a brilliant idea. Not because it knew everything. And not because it replaced people with actual expertise.</p>

<p>What interested me was something else: how useful could AI become when I had to enter a field where I had almost no domain knowledge, no network, and no obvious starting point?</p>

<p>The subject happened to be the food industry.</p>

<p>I knew almost nothing about it.</p>

<p>That was exactly what made it interesting.</p>

<h2 id="it-started-over-dinner">It started over dinner</h2>

<p>During a casual dinner with a friend, adaptogens came up in conversation.</p>

<p>He (Silf) half-jokingly suggested there might be a business idea around them.</p>

<p>I barely knew what an adaptogen was.</p>

<p>The conversation could easily have ended there. Instead, curiosity followed me home.</p>

<p>I started where most people probably would: asking AI basic questions. What are adaptogens? What kinds of products exist? Who supplies them in Switzerland or Europe?</p>

<p>One of my first practical prompts was essentially:</p>

<p><strong>Who are the suppliers in Switzerland or Europe that work with adaptogen products?</strong></p>

<p>AI gave me a list of companies to investigate.</p>

<p>While going through them, one company caught my attention because it focused less on adaptogens in the broad sense and more on functional mushrooms, mushroom species commonly sold as powders, extracts, capsules, or tinctures rather than simply as food. Names like Lion’s Mane, Reishi, Cordyceps, and Chaga were suddenly part of a vocabulary I barely knew.</p>

<p>Then came the next layer: powder versus extract, fruiting body versus mycelium, beta-glucans, extract ratios, capsules, tinctures.</p>

<p>I had entered completely unfamiliar territory.</p>

<p>At that point, AI was still mostly a better starting point than a search engine. It helped me discover terminology, adjacent concepts, possible sources, and questions I did not know enough to ask five minutes earlier.</p>

<p>Useful, but still fairly conventional.</p>

<p>That changed later.</p>

<h2 id="there-was-no-single-source-of-truth">There was no single source of truth</h2>

<p>One of the first surprises was how difficult it was to get a clean answer to even basic questions.</p>

<p>The information was scattered across supplier websites, technical documents, laboratories, regulations, authorities, and people working in different parts of the industry. One source might explain the product, another the testing, another the import process, while none of them necessarily answered the whole question.</p>

<p>Even people working in the industry often had a clear view of their own part rather than the entire chain.</p>

<p>Coming from software, I kept looking for something that resembled a source of truth: documentation, a specification, an owner of the problem.</p>

<p>Instead, I found fragments.</p>

<p>AI was useful because it helped me orient myself inside those fragments. It could unpack unfamiliar terminology, suggest which kind of source might answer a question, compare explanations, and flag when two pieces of information did not quite line up.</p>

<p>But an AI summary did not make the underlying information authoritative.</p>

<p>That distinction quickly changed how I researched.</p>

<p>I stopped asking only, <strong>“What is the answer?”</strong></p>

<p>The more useful question became:</p>

<p><strong>What do I know, what is still unclear, and who or what can actually confirm it?</strong></p>

<p>Quite often, the answer was: ask the supplier.</p>

<h2 id="the-first-useful-supplier-questions-were-basic">The first useful supplier questions were basic</h2>

<p>Before worrying about extraction methods, detailed regulation, or technical documentation, I had a more immediate concern:</p>

<p><strong>Are these people legitimate, and do they actually know what they are doing?</strong></p>

<p>My first questions were not sophisticated. I wanted to know whether they had worked with other brands, whether their products had already been sold in Switzerland or the wider DACH market, what new clients usually started with, how products were stored, and whether they could actually ship to Switzerland.</p>

<p>Looking back, those questions seem obvious.</p>

<p>At the time, they were how I learned the shape of the problem.</p>

<p>It reminded me of requirements discovery in software. A client rarely arrives with a perfectly specified problem. You ask questions until something vague becomes concrete enough to work with.</p>

<p>The same thing was happening here.</p>

<p>I had started with: <em>adaptogens might be interesting.</em></p>

<p>Talking to suppliers forced that vague thought into something testable.</p>

<p>And then reality introduced constraints.</p>

<h2 id="a-small-acronym-changed-the-whole-system">A small acronym changed the whole system</h2>

<p>Some conversations went nowhere.</p>

<p>Some suppliers were clearly set up for established companies rather than someone trying to understand what a small-scale test might involve.</p>

<p>Some minimum order quantities were much larger than I expected.</p>

<p>And suddenly I had a new acronym to care about:</p>

<p><strong>MOQ stands for minimum order quantity.</strong></p>

<p>At first, MOQ sounded like a purchasing detail.</p>

<p>It wasn’t.</p>

<p>A larger MOQ meant more cash tied up in stock. More stock meant more storage. More products multiplied that again. Packaging, shipping, customs, and risk all moved with it.</p>

<p>One supplier constraint was suddenly affecting half the system.</p>

<p>That part felt familiar.</p>

<p>In software, one dependency can quietly affect six other things you thought were unrelated. Here, the dependencies were physical and financial rather than technical.</p>

<p>That was when my background started helping in a different way.</p>

<p>Instead of looking at each question on its own, I started asking:</p>

<p><strong>What does this change downstream?</strong></p>

<p>That became one of the most useful questions in the whole exercise.</p>

<h2 id="ai-stopped-being-a-search-tool-and-became-a-sparring-partner">AI stopped being a search tool and became a sparring partner</h2>

<p>The biggest change came once I had material of my own.</p>

<p>Supplier replies. Quotes. Specifications. Product documents. Notes. Conflicting answers. Questions that seemed clear on Monday and somehow looked less intelligent by Thursday.</p>

<p>Now I was no longer asking AI to explain an industry in the abstract.</p>

<p>I could put real material in front of it and say: <em>challenge this with me.</em></p>

<p>What does this document actually say? What am I assuming? Does this reply answer the question I asked? What is missing? Which uncertainty matters now, and which one can wait?</p>

<p>That felt very different from search.</p>

<p>Working solo on an unfamiliar topic, I did not have a colleague sitting next to me to ask, “Are you sure that’s what the supplier meant?” or “Why are you spending two hours on that if it doesn’t change the next decision?”</p>

<p>AI started filling part of that gap.</p>

<p>Not as an expert. More like a sparring partner.</p>

<p>I could push an idea at it, ask it to find holes, compare versions, challenge an assumption, or help me prepare the next question before I went back to someone who actually owned the answer.</p>

<p>That is where it became genuinely valuable to me.</p>

<h2 id="a-document-existing-does-not-mean-it-proves-what-you-think-it-proves">A document existing does not mean it proves what you think it proves</h2>

<p>Technical documentation became one of the clearest examples.</p>

<p>Initially, if a supplier sent a Certificate of Analysis, my reaction was roughly:</p>

<p><em>Good. There is a COA.</em></p>

<p>Then I learned that the more useful question was:</p>

<p><strong>What exactly does this document prove?</strong></p>

<p>A product specification is not necessarily a batch-specific laboratory result. A supplier declaration is not the same thing as raw test data. “Complies with EU legislation” is not the same thing as showing the measured values behind that statement.</p>

<p>AI helped me turn a vague reaction, <em>this document looks reassuring</em>, into a more disciplined review: what does it cover, is it batch-specific, and what remains unanswered?</p>

<p>That change in questioning mattered more than the summary itself.</p>

<p>AI could help me interrogate the evidence.</p>

<p>It could not turn missing evidence into evidence.</p>

<p>That became an important rule.</p>

<h2 id="regulation-taught-me-to-separate-answers-from-confidence">Regulation taught me to separate answers from confidence</h2>

<p>Swiss food regulation added another kind of complexity.</p>

<p>I kept expecting to find one authoritative page that would tell me exactly what to do.</p>

<p>Instead, I found federal information, cantonal responsibilities, EU material, supplier interpretations, laboratory advice, and product-specific details that did not always fit neatly together.</p>

<p>Novel Food was one example.</p>

<p>A question that sounded simple, <strong>“Can this mushroom product be sold in Switzerland?”</strong>, quickly became more specific: which mushroom, which part, what kind of extract, how it was produced, how it would be consumed, and what evidence existed around its previous use.</p>

<p>Again, the useful habit was not getting AI to give me a confident answer.</p>

<p>It was using AI to break the question down until I could see what needed evidence and where that evidence should come from.</p>

<p>I started mentally classifying information as official text, supplier statement, laboratory result, interpretation, assumption, or open question.</p>

<p>That reduced a lot of false certainty.</p>

<p>And it reinforced something I think matters far beyond this particular topic:</p>

<p><strong>A confident synthesis is still not confirmation.</strong></p>

<h2 id="my-to-do-list-stopped-being-a-list">My to-do list stopped being a list</h2>

<p>By then, my notes had expanded into products, suppliers, packaging, regulation, shipping, costs, testing, and marketing.</p>

<p>Each topic could easily become its own rabbit hole.</p>

<p>I know this tendency from software too. Give me a new API and I can spend days understanding every detail before integrating the one endpoint the project actually needs.</p>

<p>Sometimes that depth is useful.</p>

<p>Sometimes it is procrastination wearing technical clothes.</p>

<p>AI became useful here as a way to keep me honest.</p>

<p>Instead of asking, <strong>“What else should I research?”</strong>, I started asking, <strong>“What decision is blocked right now?”</strong></p>

<p>If the next step depended on a supplier answer, reading ten more articles was not helping. If packaging depended on choosing a product format first, I could stop thinking about packaging. If a regulatory detail only mattered later, it could stay later.</p>

<p>My to-do list gradually became a dependency map.</p>

<p>That was probably the moment when the whole exercise felt most familiar.</p>

<p>Not because it looked like software.</p>

<p>Because it looked like problem-solving.</p>

<h2 id="cost-modelling-made-the-dependencies-visible">Cost modelling made the dependencies visible</h2>

<p>The financial side reinforced the same lesson.</p>

<p>At first, the calculation seemed almost embarrassingly simple:</p>

<p><strong>product cost versus selling price.</strong></p>

<p>Then came shipping, customs, packaging, storage, recurring tools, possible testing, minimum orders, and inventory.</p>

<p>The question stopped being, <strong>“Is there margin on one pouch?”</strong></p>

<p>It became:</p>

<p><strong>How does the whole system behave?</strong></p>

<p>What happens when one assumption changes? Which costs are one-off and which keep running? Which number actually has enough impact to change the decision?</p>

<p>A spreadsheet could calculate the numbers.</p>

<p>AI was more useful as the thing I could challenge the model with.</p>

<p><em>What am I forgetting? Which assumption is carrying too much weight? If this cost changes, what else should I revisit?</em></p>

<p>Again, less “do the work for me” and more “help me think through the work I’m doing.”</p>

<p>That distinction became increasingly important.</p>

<h2 id="being-a-beginner-again-at-47">Being a beginner again at 47</h2>

<p>The technical learning was only part of the experience.</p>

<p>The other part was ego.</p>

<p>At 47, after years of professional experience, being a complete beginner again is uncomfortable.</p>

<p>In software, I generally know how to orient myself. I know what a useful technical question looks like. I know when documentation feels incomplete. I know roughly what I do not know.</p>

<p>Here, I initially had none of that.</p>

<p>Sometimes a supplier answer made me realize my question had been badly framed. Sometimes a new term invalidated an assumption I had carried for days, even worse, for weeks. Sometimes I spent far too long investigating something that did not matter yet.</p>

<p>And sometimes I hesitated to ask a basic question because I did not want to sound like a beginner.</p>

<p>Which was slightly ridiculous, because I was one.</p>

<p>Keeping that ego in check became part of the learning process.</p>

<p>I had to get comfortable saying:</p>

<p><em>I don’t understand this yet. What am I missing?</em></p>

<p>There is something strangely refreshing about that.</p>

<p>Experience is useful, but it can also create pressure to always look experienced. Starting again in an unfamiliar field reminded me that curiosity is often more useful than pretending to know.</p>

<h2 id="the-software-skills-were-there-but-ai-changed-how-i-used-them">The software skills were there, but AI changed how I used them</h2>

<p>Looking back, my software background helped, but not because food products resemble software.</p>

<p>They don’t.</p>

<p>What transferred was the way of thinking: break a large problem into smaller ones, follow dependencies, read documentation critically, separate facts from assumptions, test one variable at a time, and know when more research will not unblock the next decision.</p>

<p>Those habits gave me a framework.</p>

<p>AI gave me something I did not normally have when working alone: a responsive partner I could use to challenge that framework in real time.</p>

<p>That combination mattered more than either one on its own.</p>

<p>My experience helped me decide how to approach the problem.</p>

<p>AI helped me iterate on that thinking faster.</p>

<p>And the final call still stayed with me.</p>

<h2 id="what-ai-actually-changed">What AI actually changed</h2>

<p>There is a lot of talk about AI making people “10x” more productive.</p>

<p>I understand the appeal of the phrase.</p>

<p>But that is not how I experienced it.</p>

<p>AI did not make me ten people.</p>

<p>It shortened the learning loop.</p>

<p>I moved faster from:</p>

<p><strong>I don’t know what this is.</strong></p>

<p>to:</p>

<p><strong>I know enough to see what I don’t understand.</strong></p>

<p>to:</p>

<p><strong>I know where the answer should come from.</strong></p>

<p>to:</p>

<p><strong>I have enough evidence to make the next decision.</strong></p>

<p>Before AI, I probably would have spent much more time reading documentation, manually comparing sources, building notes, and repeatedly losing context. I have done exactly that on technical projects.</p>

<p>AI compressed part of that work.</p>

<p>But more importantly, it gave me a way to think out loud when I was working solo.</p>

<p>It became less like a machine I delegated tasks to and more like something I could reason with while still checking the sources, asking the people who actually knew, making the decision, and owning the consequences.</p>

<p>That distinction matters to me, especially in software.</p>

<p>Using AI should not mean caring less about the result because “the AI did it.”</p>

<p>If anything, the easier it becomes to produce an answer, the more important it is to understand what you are accepting and why.</p>

<h2 id="the-experiment-is-still-just-that">The experiment is still just that</h2>

<p>I still do not know where this exploration ultimately leads.</p>

<p>That is part of why I wanted to write about it now rather than wait for a neat ending.</p>

<p>A casual dinner conversation led to an AI query.</p>

<p>That query led to a supplier.</p>

<p>The supplier led to functional mushrooms.</p>

<p>Functional mushrooms led to terminology I did not understand, then to documents, regulation, logistics, costs, and a much larger system than I expected.</p>

<p>Somewhere along the way, the exercise stopped being mainly about mushrooms.</p>

<p>It became a test of how I approach the unknown.</p>

<p>At 47, I am still learning, still asking basic questions when I need to, and still discovering that skills built in one field can be useful somewhere completely different.</p>

<p>AI did not remove the uncertainty.</p>

<p>It gave me a better way to work through it.</p>

<p>And perhaps that is the lesson I will carry back into whatever problem comes next:</p>

<p><strong>AI is most useful to me not when it gives me the answer, but when it helps me understand which question is worth answering next.</strong></p>

<hr />

<h2 id="note">Note</h2>

<p>This article describes a personal learning exercise. It is not legal, regulatory, tax, customs, or food-safety advice. ;)</p>]]></content><author><name>Kévin Olivar</name></author><category term="ai" /><category term="software-engineering" /><category term="learning" /><category term="food-industry" /><category term="functional-mushrooms" /><summary type="html"><![CDATA[A layoff at 47, a casual dinner conversation, and an unexpected experiment in using AI and software-engineering habits to navigate an unfamiliar industry.]]></summary></entry><entry><title type="html">Building BeeHive Tracker: making beekeeping records easier</title><link href="https://kevinolivar.com/projects/design/2026/09/06/building-beehive-tracker.html" rel="alternate" type="text/html" title="Building BeeHive Tracker: making beekeeping records easier" /><published>2026-09-06T00:00:00+02:00</published><updated>2026-09-06T00:00:00+02:00</updated><id>https://kevinolivar.com/projects/design/2026/09/06/building-beehive-tracker</id><content type="html" xml:base="https://kevinolivar.com/projects/design/2026/09/06/building-beehive-tracker.html"><![CDATA[<p>The idea for <strong>BeeHive Tracker</strong> started with a conversation with a friend whose mum is a beekeeper. That sparked my interest in the tools beekeepers use to keep track of their hives.</p>

<p>I then asked some beekeepers which apps they used and tried a few myself. I wanted to understand what was already available and how it felt to use those tools.</p>

<p>The apps I tried left me wanting a simpler experience. Their interfaces felt dated, navigation was cumbersome, and getting to the task at hand took more effort than I expected. Readability, accessibility, and the overall experience on a phone felt like areas with room for improvement.</p>

<p>That became the motivation for BeeHive Tracker: make keeping beekeeping records as easy as possible.</p>

<p>I’m building it with Swiss hobby and small-scale beekeepers in mind. The main journey should be straightforward: open the app, choose an apiary, select a hive, record an inspection or treatment, and save. It should be obvious where to start, what to do next, and where to find a previous record.</p>

<p>For me, a modern interface means clear typography, readable contrast, comfortable touch targets, and consistent navigation. The most useful action should be easy to spot. Forms should ask for what matters, use simple selections where they make sense, and keep unnecessary typing to a minimum.</p>

<p>Responsive design is central to that. Recording an observation on a phone beside a hive and reviewing its history on a larger screen are different situations. The layout should make good use of each screen, keeping text readable and controls easy to reach. A phone deserves an interface designed for its size and how people use it.</p>

<p>Accessibility belongs in those decisions from the beginning: clear form labels, visible keyboard focus, meaningful button names, and information that can be understood without relying on colour alone. These are part of making an app comfortable to use. Outdoors, bright sunlight and limited time make clarity especially valuable.</p>

<p>I’m also trying to keep the scope focused. Apiaries, hives, inspections, feedings, treatments, and harvests give the app plenty to handle already. Every additional screen or field needs to earn its place by helping a beekeeper complete a useful task. A routine entry should feel like a short checklist, with a clear history to return to later.</p>

<p>The project is still taking shape. These are the principles guiding the work, and the next step is to keep checking them against how beekeepers actually use the app: where they hesitate, what takes too many taps, and what gets in their way.</p>

<p>I want BeeHive Tracker to feel familiar quickly, take little effort to navigate, and make it easy to get back to the bees.</p>

<p>You can try <a href="https://beewatch.vercel.app/">BeeHive Tracker</a>.</p>]]></content><author><name>Kévin Olivar</name></author><category term="projects" /><category term="design" /><category term="beekeeping" /><category term="ux" /><category term="accessibility" /><category term="responsive-design" /><summary type="html"><![CDATA[Why I'm building BeeHive Tracker: a modern, accessible app focused on simple navigation and easier everyday record keeping for beekeepers.]]></summary></entry><entry><title type="html">tinypdf: scratching my own itch in the age of AI</title><link href="https://kevinolivar.com/2026/09/06/tinypdf.html" rel="alternate" type="text/html" title="tinypdf: scratching my own itch in the age of AI" /><published>2026-09-06T00:00:00+02:00</published><updated>2026-09-06T00:00:00+02:00</updated><id>https://kevinolivar.com/2026/09/06/tinypdf</id><content type="html" xml:base="https://kevinolivar.com/2026/09/06/tinypdf.html"><![CDATA[<p>One thing I like about the current wave of AI-assisted development is how quickly a small frustration can turn into a working tool.</p>

<p>That is basically how <a href="https://tinypdf.ch">tinypdf</a> came about.</p>

<p>I regularly need to do two very simple things with PDFs:</p>

<ul>
  <li>merge and reorder pages</li>
  <li>compress a PDF before sending or uploading it somewhere</li>
</ul>

<p>There are already plenty of PDF services online, but I kept running into the same friction: create an account, start a trial, hit a free limit, or pay for something I only need for a minute.</p>

<p>So instead of looking for yet another service, I put together my own.</p>

<h2 id="keeping-it-deliberately-small">Keeping it deliberately small</h2>

<p>My goal with tinypdf was not to recreate a full PDF suite.</p>

<p>It only focuses on the things I actually use:</p>

<h3 id="merge--organize-pdfs">Merge &amp; Organize PDFs</h3>

<p>Choose or drop multiple PDFs, see the individual pages, reorder them, rotate or remove pages, and download a new PDF.</p>

<h3 id="compress-pdfs">Compress PDFs</h3>

<p>Choose one or more PDFs, select a compression level, and let the browser process them one at a time. Each result shows the original and output size, including the honest answer when a PDF cannot be made smaller.</p>

<p>That is pretty much it.</p>

<p>No dashboard. No subscription. No account.</p>

<h2 id="privacy-was-part-of-the-idea">Privacy was part of the idea</h2>

<p>One thing I specifically wanted was for PDF processing to happen directly in the browser.</p>

<p>The PDF contents are selected from your device, processed locally, and the resulting PDF is downloaded back to you. There is no tinypdf server endpoint receiving or storing documents.</p>

<p>In other words:</p>

<blockquote>
  <p>No account, no document uploads, no fuss.</p>
</blockquote>

<p>Besides being better for privacy, this also keeps the project technically simple. I do not need to store people’s documents, manage user accounts, or maintain a database just to merge a few pages together.</p>

<h2 id="keeping-it-friendly-to-slower-devices">Keeping it friendly to slower devices</h2>

<p>Local processing means the browser has to do the work, so I did not want to pretend every PDF was harmless. tinypdf keeps the limits deliberately conservative: up to 20 PDFs per selection, 25 MiB per PDF, 50 MiB in total, and 200 pages. Compression runs sequentially, and page previews load near the viewport with only a couple of renders running at once.</p>

<p>Those limits are not a boast about what every laptop can handle. They are there so a useful little tool does not turn into a frozen browser tab when someone drops in a large scanned document.</p>

<h2 id="ai-changed-the-economics-of-small-tools">AI changed the economics of small tools</h2>

<p>tinypdf is also a small example of how I think about prototyping now.</p>

<p>Not every idea needs to become a startup, SaaS platform, or large product.</p>

<p>Sometimes there is value in noticing something annoying and asking:</p>

<blockquote>
  <p>Could I just make a simpler version for myself?</p>
</blockquote>

<p>With AI-assisted coding, the distance between that question and a usable product has become much shorter.</p>

<p>That does not mean the work disappears. There are still plenty of decisions around UX, browser performance, PDF compatibility, accessibility, error handling, and making sure the result actually works reliably.</p>

<p>But the cost of trying an idea is much lower.</p>

<p>That makes small, focused tools much more interesting to me.</p>

<h2 id="why-only-two-features">Why only two features?</h2>

<p>It would be easy to keep adding things:</p>

<ul>
  <li>split PDFs</li>
  <li>convert images</li>
  <li>OCR</li>
  <li>signatures</li>
  <li>watermarks</li>
  <li>password protection</li>
  <li>dozens of file conversions</li>
</ul>

<p>But that would quickly turn tinypdf into the same kind of product I was trying to avoid.</p>

<p>For now, I prefer the narrower idea:</p>

<blockquote>
  <p>Two common PDF jobs, done quickly.</p>
</blockquote>

<p>If I need more later, I can add more later.</p>

<h2 id="try-it">Try it</h2>

<p>tinypdf is available at:</p>

<p><strong><a href="https://tinypdf.ch">tinypdf.ch</a></strong></p>

<p>It is free to use, does not require an account, and PDF contents are processed in your browser. There are normal hosting and aggregate analytics requests, but the documents themselves stay out of them.</p>

<p>If you happen to use it, feedback is welcome, especially around the merge/reorder experience and compression quality.</p>]]></content><author><name>Kévin Olivar</name></author><category term="pdf" /><category term="privacy" /><category term="ai" /><category term="web-development" /><summary type="html"><![CDATA[A small side project born from a simple frustration with PDF tools.]]></summary></entry><entry><title type="html">ASMR is weirdly specific, and that’s the point</title><link href="https://kevinolivar.com/2026/08/30/introduction-to-asmr.html" rel="alternate" type="text/html" title="ASMR is weirdly specific, and that’s the point" /><published>2026-08-30T00:00:00+02:00</published><updated>2026-08-30T00:00:00+02:00</updated><id>https://kevinolivar.com/2026/08/30/introduction-to-asmr</id><content type="html" xml:base="https://kevinolivar.com/2026/08/30/introduction-to-asmr.html"><![CDATA[<p>I’ve been listening to ASMR for quite a while.</p>

<p>Nothing particularly ceremonial about it. Sometimes it’s playing while I’m doing something else. Sometimes I actually watch. Quite often it’s just what I put on when I’m going to sleep.</p>

<p>One of my favorites is <a href="https://www.youtube.com/@TillYouSleepASMR">Till You Sleep ASMR</a>. It’s one of those channels I actually come back to instead of watching one random video and disappearing into the recommendation algorithm again.</p>

<p>The funny thing about ASMR, though, is how ridiculously specific it can get.</p>

<p>Sometimes you don’t just want <em>ASMR</em>.</p>

<p>You want a wooden comb.</p>

<p>Or scratching, but a particular kind of scratching.</p>

<p>Maybe a face roller.</p>

<p>Maybe no talking.</p>

<p>Maybe slow movements.</p>

<p>Maybe all of those things together.</p>

<p>And suddenly YouTube, a website containing what feels like several lifetimes of ASMR, somehow can’t quite find what you’re looking for.</p>

<p>That’s what sent me down this little rabbit hole.</p>

<hr />

<h2 id="asmr-is-kind-of-strange-when-you-think-about-it">ASMR is kind of strange when you think about it</h2>

<p>ASMR stands for <strong>Autonomous Sensory Meridian Response</strong>, which sounds considerably more serious than someone gently scratching a piece of wood next to a microphone.</p>

<p>For some people, certain sounds or movements create that familiar tingling sensation around the scalp, neck or spine.</p>

<p>For others, there are no tingles at all. They simply find it relaxing.</p>

<p>And some people feel absolutely nothing.</p>

<p>That’s already interesting to me.</p>

<p>You can take the exact same video, show it to three people, and get three completely different reactions.</p>

<p>One person is half asleep.</p>

<p>One has tingles.</p>

<p>One is wondering why somebody has been tapping on a bottle for twelve minutes.</p>

<p>There isn’t really one universal ASMR experience.</p>

<hr />

<h2 id="and-yes-apparently-it-is-actually-a-thing">And yes, apparently it is actually a thing</h2>

<p>There has been real research into ASMR.</p>

<p>Scientists have found that people who experience it can show measurable changes while watching ASMR videos, including feeling calmer and having a slightly lower heart rate.</p>

<p>So there seems to be something real happening beyond <em>“I enjoy listening to tiny noises on the internet.”</em></p>

<p>That said, I wouldn’t turn ASMR into some miracle sleep therapy either.</p>

<p>The research is still fairly young, and enjoying ASMR is obviously very different from treating an actual sleep disorder.</p>

<p>I mostly find the science interesting because it confirms something ASMR listeners already know intuitively:</p>

<p><strong>certain sounds and situations can produce surprisingly strong reactions.</strong></p>

<p>And those reactions can get very, very specific.</p>

<hr />

<h2 id="a-trigger-isnt-really-one-trigger">A trigger isn’t really one trigger</h2>

<p>Take tapping.</p>

<p>Sounds simple.</p>

<p>Except there is wooden tapping, glass tapping, plastic tapping, metal tapping, fingernail tapping, fingertip tapping, slow tapping, fast tapping, aggressive tapping…</p>

<p>And somehow those aren’t interchangeable.</p>

<p>You might love one and immediately skip another.</p>

<p>The same thing happens with scratching.</p>

<p>Or brushing.</p>

<p>Or whispering.</p>

<p>Even the object matters.</p>

<p>A hairbrush and a wooden comb are technically doing something similar, but they don’t necessarily sound or feel similar at all.</p>

<p>Once you notice this, ASMR stops looking like a collection of broad categories and starts looking more like an enormous collection of tiny sensory combinations.</p>

<hr />

<h2 id="then-there-are-the-things-that-barely-involve-sound">Then there are the things that barely involve sound</h2>

<p>This is another part of ASMR I find interesting.</p>

<p>Sometimes the trigger isn’t really a <em>sound</em>.</p>

<p>It can be watching someone carefully inspect something.</p>

<p>Writing.</p>

<p>Drawing.</p>

<p>Cleaning.</p>

<p>Measuring.</p>

<p>Repairing something.</p>

<p>Organizing objects.</p>

<p>There is even an entire category of <strong>unintentional ASMR</strong>, where the person in the video isn’t trying to make ASMR at all.</p>

<p>And there is one very famous example that existed long before anyone was using the word ASMR: <strong>Bob Ross</strong>.</p>

<p>I initially associated him with the 1970s, probably because everything about the show somehow looks like it belongs there, but <em>The Joy of Painting</em> actually started in 1983. Before him, his mentor Bill Alexander had been doing a similar painting show on PBS since 1974.</p>

<p>What makes Bob Ross interesting here isn’t really the painting.</p>

<p>It’s the whole thing.</p>

<p>The soft voice. The slow brush movements. The scraping and brushing sounds. The complete lack of urgency.</p>

<p>People watched him to learn how to paint, obviously, but plenty of people also found him incredibly relaxing. Looking back at those videos now, it’s difficult <em>not</em> to see the resemblance to ASMR.</p>

<p>No close-up microphone.</p>

<p>No trigger list.</p>

<p>No title promising sleep in eight minutes.</p>

<p>Just a guy calmly painting mountains and trees.</p>

<p>In a way, that is almost the purest version of unintentional ASMR.</p>

<p>And you still find this kind of thing everywhere.</p>

<p>Someone might just be quietly demonstrating how something works or carefully repairing an old watch.</p>

<p>No whispering.</p>

<p>No dramatic microphone setup.</p>

<p>No thumbnail promising <em>EXTREME TINGLES</em>.</p>

<p>And somehow it works.</p>

<p>Sometimes better.</p>

<hr />

<h2 id="personal-attention-is-another-weird-one">Personal attention is another weird one</h2>

<p>Haircuts.</p>

<p>Eye examinations.</p>

<p>Skincare.</p>

<p>Spa roleplays.</p>

<p>Someone pretending to measure your face for reasons that would probably be slightly concerning outside an ASMR video.</p>

<p>A huge amount of ASMR is built around the feeling that someone is calmly concentrating on <em>you</em>.</p>

<p>Obviously they aren’t.</p>

<p>You’re watching a prerecorded YouTube video along with potentially a few million other people.</p>

<p>Your brain apparently doesn’t care about that technicality.</p>

<p>Which I find kind of fascinating.</p>

<hr />

<h2 id="there-really-isnt-a-best-asmr">There really isn’t a “best ASMR”</h2>

<p>This is probably where ASMR recommendations fall apart.</p>

<p>Someone might love:</p>

<blockquote>
  <p>no talking + wooden comb + face roller + slow movements</p>
</blockquote>

<p>Someone else wants:</p>

<blockquote>
  <p>soft spoken + medical roleplay + gloves + close microphone</p>
</blockquote>

<p>Another person wants:</p>

<blockquote>
  <p>whispering + writing + paper sounds</p>
</blockquote>

<p>Put all three under <strong>ASMR for sleep</strong> and technically you’re correct.</p>

<p>But you’ve also described three completely different videos.</p>

<p>That’s why searching for <em>best ASMR</em> feels a little pointless.</p>

<p>It’s more like building a sensory profile.</p>

<p>You gradually figure out:</p>

<p><strong>this sound: yes.</strong></p>

<p><strong>that material: absolutely not.</strong></p>

<p><strong>slow: good.</strong></p>

<p><strong>fast: skip.</strong></p>

<p><strong>whispering: maybe.</strong></p>

<p><strong>mouth sounds: please leave.</strong></p>

<p>Eventually your preferences become weirdly precise.</p>

<p>And that’s where the real problem starts.</p>

<hr />

<h2 id="asmr-has-a-search-problem">ASMR has a search problem</h2>

<p>There is <em>so much</em> ASMR online.</p>

<p>Which should mean finding exactly what you want is easy.</p>

<p>It isn’t.</p>

<p>Imagine I want:</p>

<blockquote>
  <p>wooden comb + face roller + no talking</p>
</blockquote>

<p>Someone has almost certainly made that video.</p>

<p>Probably several people.</p>

<p>But one creator might call it:</p>

<blockquote>
  <p>Wood Sounds for Sleep</p>
</blockquote>

<p>Another:</p>

<blockquote>
  <p>Relaxing Face &amp; Hair Triggers</p>
</blockquote>

<p>Another:</p>

<blockquote>
  <p>20 ASMR Triggers</p>
</blockquote>

<p>The wooden comb might not be mentioned anywhere in the title.</p>

<p>The face roller might appear halfway through.</p>

<p>“No talking” might be obvious once you watch the video but missing from the description.</p>

<p>YouTube knows an unbelievable amount about videos, but it still mostly asks us to find ASMR through titles, descriptions and whatever creators happen to mention.</p>

<p>For something this specific, that’s surprisingly crude.</p>

<p>The video exists.</p>

<p>You just don’t necessarily know how to find it.</p>

<hr />

<h2 id="and-then-theres-the-attention-economy">And then there’s the attention economy</h2>

<p>There’s another side of modern ASMR that I personally don’t enjoy as much.</p>

<p>Some of it has become increasingly sexualized.</p>

<p>You search for ASMR and sometimes the thumbnail seems less interested in showing you what the trigger is than in showing a woman in very little clothing.</p>

<p>Of course, creators can present themselves however they want. That’s not really the point.</p>

<p>What bothers me is when the ASMR itself starts feeling secondary to grabbing attention.</p>

<p>A suggestive thumbnail.</p>

<p>More revealing clothing.</p>

<p>A title that pushes things just a little further.</p>

<p>Then another creator does the same thing.</p>

<p>Then everyone is competing for the same click.</p>

<p>At some point you’re not really optimizing for <em>“this is a great ASMR video”</em> anymore. You’re optimizing for <em>“will someone stop scrolling for half a second?”</em></p>

<p>But that’s hardly unique to ASMR.</p>

<p>That’s social media.</p>

<p>Instagram, TikTok, YouTube. Once attention becomes the currency, everything slowly gets pushed toward whatever earns the click.</p>

<p>ASMR just happens to be an interesting example because the original appeal can be almost the exact opposite: quiet, slow, subtle, low stimulation.</p>

<p>There’s something slightly ironic about turning that into clickbait.</p>

<hr />

<h2 id="of-course-i-checked-whether-someone-had-already-tried-to-fix-the-search-part">Of course, I checked whether someone had already tried to fix the search part</h2>

<p>There are ASMR-specific discovery sites.</p>

<p><a href="https://www.theasmrindex.com/">The ASMR Index</a> lets you browse channels and videos using things like triggers, creators, languages and countries.</p>

<p><a href="https://afterasmr.com/">AfterASMR</a> helps with creator discovery.</p>

<p><a href="https://asmrregistry.com/">ASMR Registry</a> takes a more structured approach to categorizing ASMR content.</p>

<p>They’re useful, and clearly I’m not the first person who has noticed the problem.</p>

<p>But I still feel there’s a layer missing.</p>

<p>Because I don’t necessarily want to search for an ASMR <em>category</em>.</p>

<p>Sometimes I want to search for what’s literally happening inside the video.</p>

<hr />

<h2 id="i-want-asmr-search-to-work-more-like-this">I want ASMR search to work more like this</h2>

<p>Give me the ingredients.</p>

<p><strong>Object</strong></p>

<p>Wooden comb. Face roller. Hairbrush. Paper. Gloves. Glass bottle.</p>

<p><strong>Action</strong></p>

<p>Scratch. Tap. Brush. Roll. Trace. Rub.</p>

<p><strong>Voice</strong></p>

<p>Whispering. Soft spoken. Unintelligible. No talking.</p>

<p><strong>Speed</strong></p>

<p>Very slow. Slow. Medium. Fast. Aggressive.</p>

<p><strong>Style</strong></p>

<p>Personal attention. Roleplay. Random triggers. Repetitive tasks. Unintentional.</p>

<p><strong>Audio</strong></p>

<p>Binaural. Close mic. Distant. Stereo.</p>

<p>Then let me combine them.</p>

<p>Instead of:</p>

<blockquote>
  <p>ASMR for sleep</p>
</blockquote>

<p>I want:</p>

<blockquote>
  <p><strong>wood + scratching + no talking + slow</strong></p>
</blockquote>

<p>Or:</p>

<blockquote>
  <p><strong>wooden comb + face roller + soft spoken</strong></p>
</blockquote>

<p>Add video length and suddenly we’re getting somewhere.</p>

<p>That feels much closer to how I actually think about ASMR.</p>

<p>Not by genre.</p>

<p>By ingredients.</p>

<hr />

<h2 id="finding-your-triggers-is-basically-trial-and-error">Finding your triggers is basically trial and error</h2>

<p>If you’ve never watched ASMR before, searching for <em>the best ASMR video</em> probably isn’t the best place to start.</p>

<p>Try completely different things.</p>

<p>Whispering.</p>

<p>Hair brushing.</p>

<p>Tapping.</p>

<p>Personal attention.</p>

<p>Scratching.</p>

<p>Someone carefully working on something.</p>

<p>No-talking videos.</p>

<p>Then pay attention to the bits you actually like.</p>

<p>If tapping works, what was being tapped?</p>

<p>Wood?</p>

<p>Glass?</p>

<p>Plastic?</p>

<p>If brushing works, was it the sound, the object or the movement?</p>

<p>If personal attention works, was it the haircut? The eye examination? The slow hand movements?</p>

<p>Eventually you stop looking for “ASMR” and start looking for increasingly ridiculous combinations of words.</p>

<p>That’s probably when you’ve figured it out.</p>

<hr />

<h2 id="the-annoying-part-what-works-can-stop-working">The annoying part: what works can stop working</h2>

<p>There’s another thing regular listeners probably recognize.</p>

<p>Sometimes a trigger just loses something.</p>

<p>A video that used to work perfectly suddenly doesn’t.</p>

<p>You’ve heard the sound too many times.</p>

<p>You know exactly what’s coming next.</p>

<p>The novelty is gone.</p>

<p>People have reported this in ASMR research too, and it makes sense to me.</p>

<p>Part of the appeal can be unpredictability.</p>

<p>Sometimes you don’t need <em>more intense</em> ASMR.</p>

<p>You just need something you haven’t heard fifty times already.</p>

<p>Which brings us straight back to discovery.</p>

<hr />

<h2 id="maybe-there-isnt-an-asmr-content-problem">Maybe there isn’t an ASMR content problem</h2>

<p>There are already millions of videos.</p>

<p>We probably have enough tapping.</p>

<p>Probably enough whispering too.</p>

<p>What I find more interesting is how incredibly narrow our preferences can become inside this enormous pile of content.</p>

<p>A whisper isn’t just a whisper.</p>

<p>Scratching isn’t just scratching.</p>

<p>The material matters.</p>

<p>The speed matters.</p>

<p>The movement matters.</p>

<p>The microphone can matter.</p>

<p>The person can matter.</p>

<p>Sometimes even knowing what happens next seems to matter.</p>

<p>And somehow our brains take all of those tiny variables and decide:</p>

<blockquote>
  <p>yep, this one.</p>
</blockquote>

<p>Or:</p>

<blockquote>
  <p>absolutely not.</p>
</blockquote>

<p>That’s the part of ASMR I find much more interesting than trying to decide which trigger is objectively “best.”</p>

<p>There probably isn’t one.</p>

<p>There’s just the oddly specific combination that works for you.</p>

<p>And somewhere on the internet, that exact video probably already exists.</p>

<p>Now we just need a better way to find it.</p>

<hr />

<h2 id="a-little-further-down-the-rabbit-hole">A little further down the rabbit hole</h2>

<p>If you’re curious about the research behind ASMR, these are good starting points:</p>

<ul>
  <li>
    <p>Barratt, E. L. &amp; Davis, N. J. (2015), <em>Autonomous Sensory Meridian Response (ASMR): a flow-like mental state</em>
https://pmc.ncbi.nlm.nih.gov/articles/PMC4380153/</p>
  </li>
  <li>
    <p>Poerio, G. L. et al. (2018), <em>More than a feeling: Autonomous sensory meridian response (ASMR) is characterized by reliable changes in affect and physiology</em>
https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0196645</p>
  </li>
  <li>
    <p>Fredborg, B. K. et al. (2018), research into ASMR triggers and individual differences
https://pmc.ncbi.nlm.nih.gov/articles/PMC6010208/</p>
  </li>
</ul>]]></content><author><name>Kévin Olivar</name></author><category term="asmr" /><category term="sleep" /><category term="relaxation" /><category term="curiosity" /><summary type="html"><![CDATA[A small rabbit hole into ASMR, oddly specific triggers, and why finding exactly what you want is harder than it should be.]]></summary></entry><entry><title type="html">I built a tiny place to talk to strangers (what could possibly go wrong?)</title><link href="https://kevinolivar.com/2026/08/27/i-built-a-small-place-to-talk-to-strangers.html" rel="alternate" type="text/html" title="I built a tiny place to talk to strangers (what could possibly go wrong?)" /><published>2026-08-27T00:00:00+02:00</published><updated>2026-08-27T00:00:00+02:00</updated><id>https://kevinolivar.com/2026/08/27/i-built-a-small-place-to-talk-to-strangers</id><content type="html" xml:base="https://kevinolivar.com/2026/08/27/i-built-a-small-place-to-talk-to-strangers.html"><![CDATA[<p>I have made a website where you can press one button and be paired with a stranger.</p>

<p>Yes, I am aware this sounds like the opening sentence of a cautionary tale.</p>

<p>The project is called <strong>Güggli</strong>: a small, anonymous place for a one-to-one video or text conversation. You pick a few things you might like to talk about, such as music, travel, tech, or whatever is on your mind, and it tries to find someone in the same mood. Or you choose random and hand the steering wheel to fate, which has never made a questionable decision online.</p>

<p>The premise is deliberately simple: no profile to curate, no follower count to accidentally acquire, no “personal brand” to moisturise before showing up. Just a conversation.</p>

<h2 id="why-make-this">Why make this?</h2>

<p>Because the internet is extremely good at making us adjacent to other people without necessarily letting us talk to them.</p>

<p>There are group chats, comment sections, feeds, communities, professional networks, unprofessional networks, and apps that want to know your favourite type of oat milk before they will let you send a thumbs-up. I wanted to see whether there was still room for something much smaller: <em>I feel like talking; does anyone else?</em></p>

<p>That is the entire pitch. It fits on a sticky note. The implementation, naturally, does not.</p>

<h2 id="the-bit-that-is-actually-built">The bit that is actually built</h2>

<p>Güggli is a mobile-first web app built with Next.js, TypeScript, Supabase and the browser’s WebRTC APIs.</p>

<p>The app creates a lightweight anonymous browser session, places it in a matching queue and pairs it with someone who chose the same mode, video or text. Shared interests are preferred, but the app can fall back to a random match because an empty queue is not a personality trait.</p>

<p>For video conversations, the actual audio and video travel directly between the two browsers with WebRTC. Supabase is the backstage person: it helps with matching and lets the browsers exchange the small bits of information they need to connect. It does not carry or store the call itself.</p>

<p>There is also a very unglamorous but important set of buttons: next, leave and report. The goal is low friction <em>into</em> a conversation, and even lower friction <em>out</em> of one. I consider that a feature, not an admission of defeat.</p>

<h2 id="things-i-learned-while-politely-asking-browsers-to-cooperate">Things I learned while politely asking browsers to cooperate</h2>

<p>WebRTC is one of those technologies that feels magical right up until two perfectly reasonable networks decide they have never heard of each other.</p>

<p>It turns out a random video chat needs more than a big “Find someone” button. It needs a matchmaking queue that does not pair people twice, signaling so browsers can negotiate a connection, ICE servers for finding a route through the internet, cleanup when someone leaves, and a plan for the person who presses “Next” with the speed and confidence of someone skipping YouTube ads.</p>

<p>The product decisions were also more interesting than I expected:</p>

<ul>
  <li><strong>No accounts.</strong> A conversation should not require creating another tiny digital résumé.</li>
  <li><strong>Interests are optional.</strong> They are a nudge toward a better first sentence, not a personality exam.</li>
  <li><strong>Text is a real mode.</strong> Sometimes talking to a stranger is easier when your face is not part of the opening ceremony.</li>
  <li><strong>Safety belongs in the first version.</strong> A report flow, the ability to leave, and blocking unsafe pairs are not “later” work when the product is about meeting people you do not know.</li>
</ul>

<p>The resulting app is intentionally modest. It does not promise that every conversation will be profound, life-changing, or even particularly coherent. It does promise not to make you upload a headshot before finding out.</p>

<h2 id="about-the-name">About the name</h2>

<p>“Güggli” has a suitably Swiss-German feel: cheerful, a little odd, and much better than naming the project something like <code class="language-plaintext highlighter-rouge">peer-connection-prototype-final-final-2</code>.</p>

<p>The current deployment is at <a href="https://guggeli.vercel.app/">guggeli.vercel.app</a>, which is admittedly the URL equivalent of turning up to a wedding in a lanyard. The app is Güggli; the domain is a temporary administrative compromise. A proper home for the little rooster is on the list.</p>

<h2 id="what-now">What now?</h2>

<p>I am treating Güggli as an experiment, not a grand declaration that I have solved human connection with a gradient and some TypeScript.</p>

<p>Next up is the practical work: testing the rough edges of video connections across real devices and networks, improving the matching experience, and learning whether people actually want this kind of small, spontaneous corner of the web.</p>

<p>If you try it and it leads to a lovely conversation, I will be delighted. If it leads to two people silently looking at each other while both wait for the other one to speak first, well: that is also a very authentic internet experience.</p>

<p>Either way, the little rooster is live.</p>]]></content><author><name>Kévin Olivar</name></author><category term="side-projects" /><category term="web-development" /><category term="webrtc" /><category term="supabase" /><summary type="html"><![CDATA[Güggli is an anonymous, interest-led video and text chat experiment. It has no accounts, a Swiss name, and a healthy respect for the Report button.]]></summary></entry><entry><title type="html">I got tired of design tokens playing hide-and-seek, so I made HaKa</title><link href="https://kevinolivar.com/figma/design-systems/tiny-tools/2026/08/27/i-got-tired-of-design-tokens-playing-hide-and-seek-so-i-made-haka.html" rel="alternate" type="text/html" title="I got tired of design tokens playing hide-and-seek, so I made HaKa" /><published>2026-08-27T00:00:00+02:00</published><updated>2026-08-27T00:00:00+02:00</updated><id>https://kevinolivar.com/figma/design-systems/tiny-tools/2026/08/27/i-got-tired-of-design-tokens-playing-hide-and-seek-so-i-made-haka</id><content type="html" xml:base="https://kevinolivar.com/figma/design-systems/tiny-tools/2026/08/27/i-got-tired-of-design-tokens-playing-hide-and-seek-so-i-made-haka.html"><![CDATA[<p>Design tokens are supposed to be the shared language between design and development. In practice, they can feel more like a long-distance relationship: everybody says they are communicating, but someone is definitely looking at an old JSON file.</p>

<p>So I made <a href="https://www.figma.com/community/plugin/1640753412567944113/haka-figma-variables-export-import">HaKa: Figma Variables Export &amp; Import</a>.</p>

<p>HaKa is a small Figma plugin for moving Variables in and out of Figma without turning every token update into a dramatic three-act play. You can import token files, review what would change before anything happens, export your Variables as JSON, and, if your team is ready for the fancy bit, trigger its own GitHub Actions workflow or HTTPS endpoint.</p>

<p>The name is short for <strong>Hand-off / Katalyst</strong>. Which is either a neat description of the tool or an admission that I have spent a suspicious amount of time naming things. Both can be true.</p>

<h2 id="the-very-relatable-problem">The very relatable problem</h2>

<p>I wanted a workflow where designers could work in Figma Variables and developers could work with token files, with neither side having to pretend they enjoy copy-pasting values across tools.</p>

<p>The important part is that designers can see the proposed changes before import. No “I clicked the button and now the colour system is an archaeological site” moment. And when it is time to send approved tokens downstream, developers still own the automation, credentials, and deployment decisions.</p>

<p>In other words: designers approve intent; developers own delivery. Everyone gets to keep their favourite kind of control.</p>

<h2 id="what-haka-does">What HaKa does</h2>

<ul>
  <li>Imports Canonical JSON, DTCG files, nested JSON, and related files such as <code class="language-plaintext highlighter-rouge">palette.json</code> and <code class="language-plaintext highlighter-rouge">theme.json</code>.</li>
  <li>Shows an import review before it updates Figma Variables.</li>
  <li>Exports Variables as HaKa’s full-fidelity Canonical JSON or interoperable DTCG JSON.</li>
  <li>Can trigger a team-owned GitHub Actions workflow or send a JSON payload to a team-owned HTTPS endpoint.</li>
  <li>Helps find unused local Variables, because apparently they do not clean themselves up overnight.</li>
</ul>

<h2 id="one-deliberately-unglamorous-decision">One deliberately unglamorous decision</h2>

<p>HaKa does not come with a shared cloud backend.</p>

<p>That is intentional. I did not want a plugin for design tokens to quietly become a tiny hosting company with a support inbox, a billing page, and a future involving phrases like “monthly active webhook.” If you publish from HaKa, your team uses its own GitHub Actions workflow or its own endpoint. Your infrastructure, your secrets, your rules.</p>

<p>For a quick start, export JSON and put it wherever your team already keeps token files. No network calls required. Very peaceful. Almost suspiciously peaceful.</p>

<h2 id="canonical-json-vs-dtcg-in-human-words">Canonical JSON vs. DTCG, in human words</h2>

<p>HaKa’s Canonical JSON is the “please remember everything exactly as it was” format. It is the best choice for bringing a file back into Figma with the least loss of Figma-specific detail.</p>

<p>DTCG JSON is the “let’s be good citizens of the token ecosystem” format. Use it when the file needs to work with other token tools and pipelines. HaKa supports it when the token graph is unambiguous and will warn you when a round trip starts getting philosophical.</p>

<h2 id="try-it">Try it</h2>

<p>You can install HaKa from the <a href="https://www.figma.com/community/plugin/1640753412567944113/haka-figma-variables-export-import">Figma Community</a>. If you try it, I would genuinely love to hear where it fits your workflow, where it feels weird, and which design-token problem has been quietly ruining your afternoon.</p>

<p>Because the dream is not “more JSON.” The dream is fewer tiny hand-off rituals standing between a good design decision and the product that needs it.</p>]]></content><author><name>Kévin Olivar</name></author><category term="figma" /><category term="design-systems" /><category term="tiny-tools" /><category term="figma" /><category term="design-systems" /><category term="developer-tools" /><summary type="html"><![CDATA[Design tokens are supposed to be the shared language between design and development. In practice, they can feel more like a long-distance relationship: everybody says they are communicating, but someone is definitely looking at an old JSON file.]]></summary></entry><entry><title type="html">Registering with RAV in Switzerland: a practical guide based on my Zürich experience</title><link href="https://kevinolivar.com/switzerland/rav/unemployment/2026/08/18/rav-onboarding-switzerland.html" rel="alternate" type="text/html" title="Registering with RAV in Switzerland: a practical guide based on my Zürich experience" /><published>2026-08-18T00:00:00+02:00</published><updated>2026-09-16T00:00:00+02:00</updated><id>https://kevinolivar.com/switzerland/rav/unemployment/2026/08/18/rav-onboarding-switzerland</id><content type="html" xml:base="https://kevinolivar.com/switzerland/rav/unemployment/2026/08/18/rav-onboarding-switzerland.html"><![CDATA[<p>When I became unemployed, what I really wanted was a simple answer to four questions:</p>

<p><strong>What do I do first? What do I need to provide? Where do I submit it? Who do I deal with?</strong></p>

<p>The information exists, but it is spread across the RAV, Job-Room, arbeit.swiss, the Arbeitslosenkasse, emails and PDFs.</p>

<p>This guide is the version I wish I had at the beginning.</p>

<blockquote>
  <p><strong>Scope:</strong> This is based on my RAV onboarding in the <strong>Canton of Zürich in 2026</strong>. The unemployment-insurance framework is federal, but the <strong>RAV system is organised at cantonal level</strong>, so practical steps and instructions can differ by canton. Always follow the instructions from your own RAV and Arbeitslosenkasse.</p>
</blockquote>

<hr />

<h2 id="quick-start">The short version</h2>

<p>If you have just become unemployed or know that you will be, this is the overall flow:</p>

<ol>
  <li><strong>Submit the RAV Anmeldung</strong> as early as possible.</li>
  <li><strong>Take the RAV validation call</strong> and choose an Arbeitslosenkasse.</li>
  <li><strong>Create your Job-Room account</strong> once you receive the information needed to access it.</li>
  <li><strong>Follow the first RAV instruction email/PDF</strong>: complete the required online course, upload documents and complete the SES before your first meeting.</li>
  <li><strong>Attend the first meeting with your RAV adviser</strong> and agree on your job-search requirements and next steps.</li>
  <li><strong>Submit the unemployment-benefit application</strong> to your Arbeitslosenkasse and provide any documents it requests.</li>
  <li>Then move into the monthly routine: <strong>apply for jobs, record your Arbeitsbemühungen, submit the monthly AvP and attend RAV appointments/courses</strong>.</li>
</ol>

<p>That is the process in one paragraph. The rest of this post explains each step only where clarification is useful.</p>

<hr />

<h2 id="contents">Contents</h2>

<ol>
  <li><a href="#who-does-what">Know who does what</a></li>
  <li><a href="#rav-anmeldung">Submit the RAV Anmeldung</a></li>
  <li><a href="#rav-call">Take the RAV validation call</a></li>
  <li><a href="#job-room">Create your Job-Room account</a></li>
  <li><a href="#first-instructions">Follow the first RAV instruction email</a></li>
  <li><a href="#first-meeting">Attend the first meeting with your adviser</a></li>
  <li><a href="#alk-application">Apply for unemployment compensation</a></li>
  <li><a href="#arbeitsbemuehungen">Document your job-search efforts</a></li>
  <li><a href="#monthly-routine">Follow the monthly routine</a></li>
  <li><a href="#my-case">A few adviser-specific details from my case</a></li>
  <li><a href="#problems">If something goes wrong</a></li>
  <li><a href="#visual-summary">Visual summary</a></li>
  <li><a href="#deal-portals">Portals one will have to deal with</a></li>
  <li><a href="#official-sources">Official sources</a></li>
</ol>

<hr />

<h2 id="who-does-what">1. Know who does what</h2>

<p>You mainly deal with three things:</p>

<table>
  <thead>
    <tr>
      <th>Who / what</th>
      <th>What it is for</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>RAV</strong></td>
      <td>Job search, adviser meetings, Arbeitsbemühungen, referrals, courses and labour-market measures</td>
    </tr>
    <tr>
      <td><strong>Arbeitslosenkasse (ALK)</strong></td>
      <td>Your unemployment-benefit claim, entitlement, salary/employer documents, monthly AvP and payment</td>
    </tr>
    <tr>
      <td><strong>Job-Room</strong></td>
      <td>The online portal used for RAV and Arbeitslosenkasse eServices</td>
    </tr>
  </tbody>
</table>

<p>The most important distinction is:</p>

<p><strong>Registering with the RAV is not the same thing as having your unemployment benefits approved.</strong></p>

<p>The RAV handles your employment-service registration and job-search obligations. The Arbeitslosenkasse separately assesses your claim for unemployment compensation.</p>

<p><strong>arbeit.swiss</strong> is the official federal information portal. It sits within the federal unemployment-insurance system overseen by <strong>SECO</strong>, but as a jobseeker you normally deal with your RAV and Arbeitslosenkasse rather than SECO directly.</p>

<p><strong>Official references:</strong><br />
<a href="https://www.arbeit.swiss/de/stellensuchende/anmeldung-und-registrierung">arbeit.swiss : Registration and Job-Room</a><br />
<a href="https://www.zh.ch/de/wirtschaft-arbeit/stellensuche-arbeitslosigkeit/anmeldung-rav-arbeitslosenkasse.html">Kanton Zürich : RAV &amp; Arbeitslosenkasse</a></p>

<hr />

<h2 id="rav-anmeldung">2. Submit the RAV Anmeldung</h2>

<p>The first step is the:</p>

<p><strong>Anmeldung zur Arbeitsvermittlung (RAV)</strong></p>

<p>In Zürich, the guidance is to register during your notice period if possible and no later than your first day of unemployment.</p>

<p>For the online Anmeldung, have your <strong>AHV number</strong> ready and enter your name as it appears in your AHV records.</p>

<p>You do <strong>not</strong> need an existing Job-Room account to submit this first RAV Anmeldung.</p>

<h3 id="also-start-keeping-proof-of-job-searches">Also start keeping proof of job searches</h3>

<p>Do not wait until your first RAV meeting to start documenting applications.</p>

<p>If you have received notice, begin your job search and keep evidence from the start. This becomes important when the RAV asks for your pre-unemployment <strong>Arbeitsbemühungen</strong>.</p>

<p><strong>Official references:</strong><br />
<a href="https://www.zh.ch/de/wirtschaft-arbeit/stellensuche-arbeitslosigkeit/anmeldung-rav-arbeitslosenkasse/online-anmelden-beim-rav.html">Kanton Zürich : Online RAV Anmeldung</a><br />
<a href="https://www.zh.ch/de/wirtschaft-arbeit/stellensuche-arbeitslosigkeit/beratung-vermittlung.html">Kanton Zürich : Counselling and job-search obligations</a></p>

<hr />

<h2 id="rav-call">3. Take the RAV validation call</h2>

<p>After I submitted the online Anmeldung, the RAV hotline called me.</p>

<p>The call was mainly used to:</p>

<ul>
  <li>validate my information;</li>
  <li>discuss my employment situation and job search;</li>
  <li>explain the next steps;</li>
  <li>discuss the choice of <strong>Arbeitslosenkasse</strong>.</li>
</ul>

<p>Zürich states that for online registrations the RAV normally calls within 24 hours after receiving the data.</p>

<h3 id="choose-an-arbeitslosenkasse">Choose an Arbeitslosenkasse</h3>

<p>You will need to choose an unemployment fund. In Zürich, several funds are available and provide the same statutory services.</p>

<p>I chose the <strong>Arbeitslosenkasse Kanton Zürich</strong>.</p>

<p>Choosing a fund does <strong>not</strong> mean that your claim has been approved. It simply determines which Arbeitslosenkasse will process it.</p>

<p><strong>Official references:</strong><br />
<a href="https://www.zh.ch/de/wirtschaft-arbeit/stellensuche-arbeitslosigkeit/anmeldung-rav-arbeitslosenkasse/online-anmelden-beim-rav.html">Kanton Zürich : Online RAV Anmeldung</a><br />
<a href="https://www.zh.ch/de/wirtschaft-arbeit/stellensuche-arbeitslosigkeit/anmeldung-rav-arbeitslosenkasse.html">Kanton Zürich : Choice of Arbeitslosenkasse</a></p>

<hr />

<h2 id="job-room">4. Create your Job-Room account</h2>

<p>The initial RAV Anmeldung and the Job-Room account are two separate things.</p>

<p>In my case, I received the <strong>personal number</strong> needed for the next steps by phone/email. I then created my Job-Room account.</p>

<p>Once the account was available, Job-Room became the main place where I could:</p>

<ul>
  <li>upload RAV documents;</li>
  <li>record Arbeitsbemühungen;</li>
  <li>complete the <strong>Antrag auf Arbeitslosenentschädigung</strong>;</li>
  <li>complete the monthly <strong>Angaben der versicherten Person (AvP)</strong>;</li>
  <li>upload documents requested later.</li>
</ul>

<p><strong>Official reference:</strong><br />
<a href="https://www.arbeit.swiss/de/stellensuchende/anmeldung-und-registrierung">arbeit.swiss : Registration and Job-Room</a></p>

<hr />

<h2 id="first-instructions">5. Follow the first RAV instruction email</h2>

<p>This was the most useful onboarding message I received.</p>

<p>After the RAV Anmeldung and validation call, I received an <strong>IncaMail</strong> containing my first appointment details, my assigned adviser and a PDF explaining what had to be done before the meeting.</p>

<p>Instead of thinking of the following as three or four separate stages, I would treat them as <strong>one checklist: complete everything requested in this first instruction message</strong>.</p>

<h3 id="my-checklist-before-the-first-meeting">My checklist before the first meeting</h3>

<table>
  <thead>
    <tr>
      <th>Task</th>
      <th>What I had to do</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Rechte und Pflichten verstehen</strong></td>
      <td>Complete the mandatory online course/test</td>
    </tr>
    <tr>
      <td><strong>Registrierung auf Onlineportal</strong></td>
      <td>Set up/access the online portal</td>
    </tr>
    <tr>
      <td><strong>Dokumente einreichen</strong></td>
      <td>Upload the requested documents</td>
    </tr>
    <tr>
      <td><strong>Selbsteinschätzung durchführen</strong></td>
      <td>Complete the SES or SES Light</td>
    </tr>
  </tbody>
</table>

<p>My PDF marked the rights-and-obligations course as <strong>urgent / within three days</strong>. The portal registration, document submission and self-assessment were to be completed <strong>as soon as possible and at the latest one day before the first meeting</strong>.</p>

<p>Your deadlines may differ. Use the PDF or instructions sent to you.</p>

<h3 id="documents-i-was-asked-to-prepare">Documents I was asked to prepare</h3>

<p>My RAV checklist included items such as:</p>

<ul>
  <li>AHV / health-insurance card information;</li>
  <li>employment contract;</li>
  <li>termination letter;</li>
  <li>CV;</li>
  <li>Arbeitszeugnisse;</li>
  <li>diplomas and certificates;</li>
  <li>a sample application / cover letter;</li>
  <li>confirmation of the Pflichtinformation;</li>
  <li>proof of the requested pre-unemployment job-search efforts.</li>
</ul>

<p>The exact list can differ by case.</p>

<h3 id="ses-or-ses-light">SES or SES Light</h3>

<p>The onboarding material I received presented two versions:</p>

<ul>
  <li><strong>SES – Ausführliche Version</strong> : detailed version for people with good German skills;</li>
  <li><strong>SES Light – Kurze Version</strong> : shorter version for people with limited German skills.</li>
</ul>

<p>I completed <strong>SES Light</strong>.</p>

<p>The SES is a self-assessment about your professional situation, job-search strategy and application readiness. It is there to prepare the first counselling discussion; it is not a technical exam.</p>

<details>
<summary><strong>More detail: what the SES covers</strong></summary>

The standard SES covers areas such as:

- Standortbestimmung;
- Suchbereich;
- Suchstrategie;
- Bewerbungsdossier;
- Selbstpräsentation.

The Zürich instructions ask for your ALV person number and your adviser's contact information. The result is used as preparation for the counselling meeting.

</details>

<h3 id="about-incamail">About IncaMail</h3>

<p>Some RAV communication may arrive through <strong>IncaMail</strong>, Swiss Post’s secure email service.</p>

<p>My adviser told me that although RAV employees use the secure system for certain communications, I could write to her from my normal personal email account. I treat that as guidance for my case rather than a universal rule.</p>

<p><strong>Official references:</strong><br />
<a href="https://www.zh.ch/de/wirtschaft-arbeit/stellensuche-arbeitslosigkeit/anmeldung-rav-arbeitslosenkasse/pflichtinformationen-fuer-stellensuchende.html">Kanton Zürich : Pflichtinformation</a><br />
<a href="https://www.zh.ch/de/wirtschaft-arbeit/stellensuche-arbeitslosigkeit/beratung-vermittlung/selbsteinschaetzung-ses.html">Kanton Zürich : SES</a><br />
<a href="https://www.zh.ch/de/wirtschaft-arbeit/stellensuche-arbeitslosigkeit/beratung-vermittlung/selbsteinschaetzung-ses-light.html">Kanton Zürich : SES Light</a><br />
<a href="https://www.post.ch/geschaeftsloesungen/e-mail-verschluesselung/support/onlinehilfe">Swiss Post : IncaMail</a></p>

<hr />

<h2 id="first-meeting">6. Attend the first meeting with your RAV adviser</h2>

<p>The first in-person meeting is where the process becomes much more concrete.</p>

<p>In my case, we covered:</p>

<ul>
  <li>my previous employment and why it ended;</li>
  <li>the jobs and Pensum I was targeting;</li>
  <li>my existing job applications;</li>
  <li>my German level;</li>
  <li>my Arbeitsbemühungen;</li>
  <li>missing documents;</li>
  <li>courses and assessments;</li>
  <li>what would be expected each month;</li>
  <li>the next appointment.</li>
</ul>

<p>I also received and signed the <strong>paper confirmation of my RAV registration</strong> during this meeting.</p>

<p>That is the only place in this guide where this confirmation really matters: it confirmed my <strong>RAV registration</strong>, not approval of unemployment benefits.</p>

<h3 id="what-to-bring">What to bring</h3>

<p>Follow your own invitation.</p>

<p>My invitation asked for an original <strong>residence permit or Swiss driving licence</strong> for identity verification. I happened to bring both.</p>

<h3 id="if-your-german-is-limited">If your German is limited</h3>

<p>Zürich states that people who do not speak German well should attend RAV appointments with translation assistance.</p>

<p>From friends who had been through RAV appointments, I understood that this can be someone you bring with you to help translate; I was not told this by my adviser, so I would confirm the arrangement with your own RAV if you need it.</p>

<p><strong>Official references:</strong><br />
<a href="https://www.zh.ch/de/wirtschaft-arbeit/stellensuche-arbeitslosigkeit/anmeldung-rav-arbeitslosenkasse/online-anmelden-beim-rav.html">Kanton Zürich : Online RAV Anmeldung / first meeting</a><br />
<a href="https://www.zh.ch/de/wirtschaft-arbeit/stellensuche-arbeitslosigkeit/anmeldung-rav-arbeitslosenkasse/anmelden-beim-rav.html">Kanton Zürich : Personal RAV registration</a></p>

<hr />

<h2 id="alk-application">7. Apply for unemployment compensation</h2>

<p>The financial side is handled separately by your <strong>Arbeitslosenkasse</strong>.</p>

<p>In Job-Room, the initial form is:</p>

<p><strong>Antrag auf Arbeitslosenentschädigung</strong></p>

<p><img src="/assets/images/rav-antrag-nav.png" alt="Job-Room: Antrag auf Arbeitslosenentschädigung navigation" class="post-screenshot" /></p>

<p>Complete it carefully. In my case, after submitting it I could no longer simply reopen and edit the answers myself.</p>

<h3 id="missing-attachment-that-is-different-from-an-incomplete-answer">Missing attachment? That is different from an incomplete answer</h3>

<p>My Job-Room application allowed me to mark a missing supporting document as:</p>

<p><strong>Später nachreichen</strong></p>

<p>That meant I could submit the application and provide the missing attachment later under <strong>Meine Dokumente</strong>.</p>

<p>The Arbeitslosenkasse then contacted me separately when it still needed documents.</p>

<h3 id="what-my-arbeitslosenkasse-requested">What my Arbeitslosenkasse requested</h3>

<p>In my case, this included:</p>

<ul>
  <li><strong>13 months of payslips</strong>;</li>
  <li>payslips for any received bonus;</li>
  <li>an <strong>Arbeitgeberbescheinigung</strong> completed by my previous employer.</li>
</ul>

<p>The 13-month request was specific to my claim. Follow whatever your own Arbeitslosenkasse asks you for.</p>

<p>The <strong>Arbeitgeberbescheinigung</strong> is completed by the employer, not by you.</p>

<details>
<summary><strong>More detail: 13 months vs. 24 months</strong></summary>

My Arbeitslosenkasse personally asked me for the last **13 months of payslips**.

Separately, the official Arbeitgeberbescheinigung form instructs the employer to attach payslips or payroll journals for the previous **24 months**.

Those are two different document requests, so I followed each request separately.

</details>

<h3 id="pension-fund-and-accident-insurance-after-employment-ends">Pension fund and accident insurance after employment ends</h3>

<p>Two other things changed after my employment ended.</p>

<p>For my <strong>second pillar</strong>, my previous employer’s pension fund was <strong>Profond</strong>. Since I was not moving directly into a new employer pension fund, I had to transfer the vested benefits to a vested benefits solution. In my case, I transferred them from <strong>Profond to VIAC</strong>.</p>

<p>If you do not provide transfer instructions, the previous pension fund cannot just keep the money indefinitely. The usual fallback is that the vested benefits are eventually transferred to the <strong>BVG Substitute Occupational Benefit Institution</strong>. I would still treat the deadline as something to confirm with your own pension fund, because the practical instructions and reminders come from them.</p>

<p>For <strong>accident insurance</strong>, my previous employer’s accident insurer was <strong>Vaudoise</strong>. Once you are entitled to unemployment compensation, accident insurance is handled automatically through <strong>Suva</strong>. I did not arrange a separate accident policy through the RAV; the coverage came through the unemployment-insurance process.</p>

<p>The point to watch is a possible gap between the end of your employer accident insurance and confirmed unemployment-compensation entitlement. If your dates are not straightforward, check this with your previous insurer, health insurer, RAV, Arbeitslosenkasse or Suva.</p>

<p><strong>Official references:</strong><br />
<a href="https://www.arbeit.swiss/de/stellensuchende/eservices-und-formulare-fuer-die-arbeitslosenentschaedigung">arbeit.swiss : eServices and forms</a><br />
<a href="https://www.zh.ch/de/wirtschaft-arbeit/stellensuche-arbeitslosigkeit/arbeitslosenentschaedigung.html">Kanton Zürich : Arbeitslosenentschädigung</a><br />
<a href="https://www.arbeit.swiss/api/media/fileservice/sdweb-docs-prod-arbeitswiss-files/files/2026/05/30/c660bdfa-eabf-4898-a9c3-a8cb9fa6b9fa.pdf">Current Arbeitgeberbescheinigung form</a><br />
<a href="https://www.suva.ch/de-ch/versicherung/unfallversicherung/unfallversicherung-bei-arbeitslosigkeit">Suva : Unfallversicherung bei Arbeitslosigkeit</a><br />
<a href="https://www.oak-bv.admin.ch/en/substitute-occupational-benefit-institution">BVG Substitute Occupational Benefit Institution : transfer of pension assets</a></p>

<hr />

<h2 id="arbeitsbemuehungen">8. Document your job-search efforts</h2>

<p>Your <strong>Persönliche Arbeitsbemühungen</strong> are one of the main ongoing RAV requirements.</p>

<p>In Zürich, the general guidance currently refers to <strong>10–12 efforts per month unless something different is agreed with your adviser</strong>. Your own agreed target is what matters.</p>

<p>The efforts should be spread across the month.</p>

<h3 id="deadline">Deadline</h3>

<p>Submit your Arbeitsbemühungen by:</p>

<p><strong>the 5th day of the following month</strong></p>

<p>For example:</p>

<p><strong>August → by 5 September</strong></p>

<p>I use Job-Room to record them and keep my own archive of evidence.</p>

<h3 id="keep-evidence">Keep evidence</h3>

<p>Save:</p>

<ul>
  <li>the job advertisement;</li>
  <li>application confirmation;</li>
  <li>CV / cover letter;</li>
  <li>recruiter or employer emails;</li>
  <li>interview invitations;</li>
  <li>rejection messages.</li>
</ul>

<p>A useful mental model is:</p>

<p><strong>Job-Room = official record</strong><br />
<strong>your archive = supporting evidence</strong></p>

<h3 id="which-months-before-unemployment">Which months before unemployment?</h3>

<p>This caused some confusion in my case because my notice, last working day and legal employment end date were different.</p>

<p>My timeline was:</p>

<ul>
  <li>termination communicated: <strong>January</strong>;</li>
  <li>normal notice period: <strong>February–April</strong>;</li>
  <li>last actual working day: <strong>30 April</strong>;</li>
  <li>garden leave: <strong>May–July</strong>;</li>
  <li>legal end of employment: <strong>31 July</strong>;</li>
  <li>unemployment: <strong>August</strong>.</li>
</ul>

<p>My RAV adviser asked me to provide the three months immediately before unemployment, so for me that was:</p>

<p><strong>May + June + July</strong></p>

<p>Without the garden-leave period, if employment had ended in April and unemployment had started in May, the comparable three months would have been:</p>

<p><strong>February + March + April</strong></p>

<p>The key point is that the <strong>date you receive notice is not necessarily the legal end of employment</strong>.</p>

<p>Also, do not interpret “three months of proof” as meaning you only need to search for three months. Zürich’s guidance says job-search efforts should already begin once notice has been given or received.</p>

<p><strong>Official references:</strong><br />
<a href="https://www.zh.ch/de/wirtschaft-arbeit/stellensuche-arbeitslosigkeit/beratung-vermittlung/persoenliche-arbeitsbemuehungen-machen.html">Kanton Zürich : Persönliche Arbeitsbemühungen</a><br />
<a href="https://www.zh.ch/de/wirtschaft-arbeit/stellensuche-arbeitslosigkeit/beratung-vermittlung.html">Kanton Zürich : Counselling and job-search obligations</a></p>

<hr />

<h2 id="monthly-routine">9. Follow the monthly routine</h2>

<p>Once the onboarding documents are largely done, the process becomes much simpler.</p>

<p>My recurring checklist is:</p>

<ol>
  <li><strong>Apply for suitable jobs throughout the month.</strong></li>
  <li><strong>Record the Arbeitsbemühungen in Job-Room and keep evidence.</strong></li>
  <li><strong>Submit/complete the monthly AvP for the Arbeitslosenkasse.</strong></li>
  <li><strong>Attend RAV appointments.</strong></li>
  <li><strong>Attend assigned courses, assessments or other labour-market measures.</strong></li>
  <li><strong>Respond to new document requests or report relevant changes.</strong></li>
</ol>

<h3 id="the-monthly-avp">The monthly AvP</h3>

<p>The Arbeitslosenkasse form is:</p>

<p><strong>Angaben der versicherten Person (AvP)</strong></p>

<p><img src="/assets/images/rav-avp-nav.png" alt="Job-Room: Angaben der versicherten Person navigation" class="post-screenshot" /></p>

<p>It reports what happened during the month, for example work, income, absence, or incapacity, and is used to claim the corresponding unemployment compensation.</p>

<p>In my Job-Room account, it could be prepared earlier but only transmitted <strong>from the 22nd of the relevant month</strong>. I treat that as what my portal displayed, not as a universal date for every case.</p>

<p><strong>Official references:</strong><br />
<a href="https://www.arbeit.swiss/de/stellensuchende/eservices-und-formulare-fuer-die-arbeitslosenentschaedigung">arbeit.swiss : eServices and forms</a><br />
<a href="https://www.zh.ch/de/wirtschaft-arbeit/stellensuche-arbeitslosigkeit/arbeitslosenentschaedigung.html">Kanton Zürich : Arbeitslosenentschädigung</a></p>

<hr />

<h2 id="my-case">10. A few adviser-specific details from my case</h2>

<p>These points came from discussions with <strong>my adviser</strong>. I would not treat them as universal Swiss rules.</p>

<h3 id="recruiters-and-headhunters">Recruiters and headhunters</h3>

<p>My adviser wanted the quota to reflect <strong>my own active job-search efforts</strong>.</p>

<p>If a recruiter contacts me and then presents several vacancies, I should not automatically count every vacancy as a separate Arbeitsbemühung. The recruiter is doing much of the searching in that situation.</p>

<p>Recruiter contacts can still be useful; the point was simply that:</p>

<p><strong>one recruiter presenting several opportunities did not automatically equal several quota entries in my case.</strong></p>

<h3 id="pensum-quality-matters-as-well-as-quantity">Pensum: quality matters as well as quantity</h3>

<p>My agreed search was 10 job applications per month for a pensum of around <strong>80–100%</strong> (Teilzeit), and we discussed whether a 100% vacancy made sense if I ultimately wanted 80%.</p>

<p>My reasoning was that applying to a 100% position could get me into the interview process and I could then ask whether 80% was possible.</p>

<p>My adviser did not want me to rely on that strategy simply to fill the monthly quota.</p>

<p>The way I understood it was:</p>

<p><strong>the quota should contain realistic applications you would genuinely be prepared to pursue, not applications submitted mainly to reach a number.</strong></p>

<p>If your strategy involves applying outside your agreed Pensum and negotiating later, clarify with your adviser whether those applications count.</p>

<h3 id="courses-and-assignments">Courses and assignments</h3>

<p>A course being discussed is not necessarily the same thing as a formal RAV assignment.</p>

<p>If the RAV formally assigns you to a course, assessment, meeting or suitable job, follow the instruction or contact the RAV promptly if you have a legitimate problem attending.</p>

<p><strong>Official references:</strong><br />
<a href="https://www.zh.ch/de/wirtschaft-arbeit/stellensuche-arbeitslosigkeit/beratung-vermittlung.html">Kanton Zürich : Counselling and job-search obligations</a><br />
<a href="https://www.arbeit.swiss/de/stellensuchende/arbeitsmarktliche-massnahmen">arbeit.swiss : Labour-market measures</a></p>

<hr />

<h2 id="problems">11. If something goes wrong</h2>

<p>The system has deadlines and obligations, so do not ignore a problem and hope it disappears.</p>

<p>Possible consequences can include <strong>Einstelltage</strong>, days during which unemployment benefits are suspended.</p>

<p>Examples include insufficient job-search efforts, missing RAV requirements, refusing suitable work or failing to follow assigned measures without an acceptable reason.</p>

<p>The federal FAQ states that an individual suspension can range from <strong>1 to 60 days</strong>, depending on the degree of fault.</p>

<p>If you cannot meet a requirement, contact the relevant <strong>RAV or Arbeitslosenkasse</strong> as early as possible.</p>

<h3 id="problems-with-your-adviser">Problems with your adviser</h3>

<p>If the working relationship with your adviser genuinely breaks down, the federal FAQ recommends:</p>

<ol>
  <li>discuss the issue directly;</li>
  <li>try to find a solution together;</li>
  <li>if that fails, raise the possibility of changing adviser with the adviser or RAV management.</li>
</ol>

<p><strong>Official reference:</strong><br />
<a href="https://www.arbeit.swiss/de/stellensuchende/faq-zur-arbeitslosenentschaedigung">arbeit.swiss : FAQ on unemployment compensation</a></p>

<hr />

<h2 id="visual-summary">12. Visual summary</h2>

<p>This is the high-level version of the process I went through in Zürich.</p>

<p>It intentionally groups the smaller administrative tasks together. The goal is to show the <strong>flow</strong>, not every click, upload or email.</p>

<p><img src="/assets/images/rav-onboarding-summary.png" alt="RAV onboarding in Switzerland : high-level visual summary" class="post-summary-image" /></p>

<hr />

<h2 id="final-thoughts">Final thoughts</h2>

<p>The process looked complicated at first mainly because several organisations and forms were involved at the same time.</p>

<p>Once I reduced it to a sequence, it became much easier:</p>

<p><strong>RAV Anmeldung → validation call → Job-Room + first instructions → first adviser meeting → Arbeitslosenkasse claim → monthly routine</strong></p>

<p>If you are starting now, I would focus on four things:</p>

<ul>
  <li><strong>register early;</strong></li>
  <li><strong>follow the first RAV checklist and deadlines;</strong></li>
  <li><strong>keep evidence of your job searches;</strong></li>
  <li><strong>treat the RAV and Arbeitslosenkasse as two related but separate processes.</strong></li>
</ul>

<p>Everything else becomes easier once those four points are clear.</p>

<hr />

<h1 id="deal-portals">Portals one will have to deal with</h1>

<p>Apart from the usual LinkedIn, XING and so on, job seekers can use other portals provided by RAV. In my case, as I worked in IT, it was,</p>

<ul>
  <li>https://www.jobagent.ch</li>
  <li>https://www.rollen-der-ict.ch/rollen-der-ict</li>
  <li>https://padlet.com</li>
</ul>

<p>Of course, don’t forget,</p>
<ul>
  <li>https://www.job-room-ch</li>
</ul>

<p><strong>Note:</strong></p>

<p>If you receive or hear anything related to “profilmatcher”, just ignore. This portal is ONLY used by RAV in order to generate coupons. Eg. for jobagent</p>

<hr />

<h1 id="official-sources">Official sources and useful forms</h1>

<p>The links below were checked when this post was reviewed on <strong>18 August 2026</strong>.</p>

<blockquote>
  <p><strong>Tip:</strong> For forms, the official forms index is the safest bookmark because direct PDF URLs can change when forms are updated.</p>
</blockquote>

<h3 id="rav-anmeldung-and-job-room">RAV Anmeldung and Job-Room</h3>

<ul>
  <li><a href="https://www.zh.ch/de/wirtschaft-arbeit/stellensuche-arbeitslosigkeit/anmeldung-rav-arbeitslosenkasse.html">Kanton Zürich : Anmeldung RAV &amp; Arbeitslosenkasse</a></li>
  <li><a href="https://www.zh.ch/de/wirtschaft-arbeit/stellensuche-arbeitslosigkeit/anmeldung-rav-arbeitslosenkasse/online-anmelden-beim-rav.html">Kanton Zürich : Online beim RAV anmelden</a></li>
  <li><a href="https://www.arbeit.swiss/de/stellensuchende/anmeldung-und-registrierung">arbeit.swiss : Anmeldung und Registrierung</a></li>
  <li><a href="https://www.job-room.ch/">Job-Room</a></li>
</ul>

<h3 id="pflichtinformation-and-ses">Pflichtinformation and SES</h3>

<ul>
  <li><a href="https://www.zh.ch/de/wirtschaft-arbeit/stellensuche-arbeitslosigkeit/anmeldung-rav-arbeitslosenkasse/pflichtinformationen-fuer-stellensuchende.html">Kanton Zürich : Pflichtinformation</a></li>
  <li><a href="https://www.zh.ch/de/wirtschaft-arbeit/stellensuche-arbeitslosigkeit/beratung-vermittlung/selbsteinschaetzung-ses.html">Kanton Zürich : SES</a></li>
  <li><a href="https://www.zh.ch/de/wirtschaft-arbeit/stellensuche-arbeitslosigkeit/beratung-vermittlung/selbsteinschaetzung-ses-light.html">Kanton Zürich : SES Light</a></li>
</ul>

<h3 id="arbeitslosenkasse">Arbeitslosenkasse</h3>

<ul>
  <li><a href="https://www.zh.ch/de/wirtschaft-arbeit/stellensuche-arbeitslosigkeit/arbeitslosenentschaedigung.html">Kanton Zürich : Arbeitslosenentschädigung</a></li>
  <li><a href="https://www.arbeit.swiss/de/stellensuchende/eservices-und-formulare-fuer-die-arbeitslosenentschaedigung">arbeit.swiss : eServices and forms</a></li>
  <li><a href="https://www.arbeit.swiss/de/stellensuchende/faq-zur-arbeitslosenentschaedigung">arbeit.swiss : FAQ</a></li>
</ul>

<h3 id="official-forms">Official forms</h3>

<ul>
  <li><a href="https://www.arbeit.swiss/de/stellensuchende/eservices-und-formulare-fuer-die-arbeitslosenentschaedigung">Forms index</a></li>
  <li><a href="https://www.arbeit.swiss/api/media/fileservice/sdweb-docs-prod-arbeitswiss-files/files/2026/04/16/ea81c4a0-5685-4d2d-a30e-a01d1433ee64.pdf">Antrag auf Arbeitslosenentschädigung : PDF (10000d)</a></li>
  <li><a href="https://www.arbeit.swiss/api/media/fileservice/sdweb-docs-prod-arbeitswiss-files/files/2026/05/30/c660bdfa-eabf-4898-a9c3-a8cb9fa6b9fa.pdf">Arbeitgeberbescheinigung : PDF (10006d)</a></li>
  <li><a href="https://www.arbeit.swiss/api/media/fileservice/sdweb-docs-prod-arbeitswiss-files/files/2026/04/16/f7d24607-31a7-49d1-9720-33e95a66b425.pdf">Nachweis der persönlichen Arbeitsbemühungen : PDF</a></li>
</ul>

<h3 id="job-search-obligations-and-labour-market-measures">Job-search obligations and labour-market measures</h3>

<ul>
  <li><a href="https://www.zh.ch/de/wirtschaft-arbeit/stellensuche-arbeitslosigkeit/beratung-vermittlung.html">Kanton Zürich : Beratung &amp; Vermittlung</a></li>
  <li><a href="https://www.zh.ch/de/wirtschaft-arbeit/stellensuche-arbeitslosigkeit/beratung-vermittlung/persoenliche-arbeitsbemuehungen-machen.html">Kanton Zürich : Persönliche Arbeitsbemühungen</a></li>
  <li><a href="https://www.arbeit.swiss/de/stellensuchende/arbeitsmarktliche-massnahmen">arbeit.swiss : Arbeitsmarktliche Massnahmen</a></li>
</ul>

<hr />

<p><em>This guide is informational and based partly on personal experience. It is not legal advice. If an instruction from your RAV, Arbeitslosenkasse or an official decision conflicts with this post, follow the official instruction and ask the responsible authority for clarification.</em></p>]]></content><author><name>Kévin Olivar</name></author><category term="Switzerland" /><category term="RAV" /><category term="Unemployment" /><category term="RAV" /><category term="Job-Room" /><category term="arbeit.swiss" /><category term="Arbeitslosenkasse" /><category term="Zurich" /><category term="Zürich" /><category term="Switzerland" /><category term="ALV" /><category term="unemployment insurance Switzerland" /><category term="expat Switzerland" /><category term="Stellensuche" /><category term="Arbeitsvermittlung" /><summary type="html"><![CDATA[A practical step-by-step guide to RAV onboarding in Zürich: what to do first, what to prepare, Job-Room, the Arbeitslosenkasse, job-search evidence, monthly forms and appointments.]]></summary></entry></feed>