<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[xyz]]></title><description><![CDATA[My hobby is playing with patterns, from individual minds to group culture. Tracing how they show up as behaviour, relationships, business models, philosophy. Different manifestations, same underlying mechanisms.]]></description><link>https://radudaniel.substack.com</link><image><url>https://substackcdn.com/image/fetch/$s_!i35G!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81b34056-6c8c-428d-a154-e698d3aeebbc_1024x1024.png</url><title>xyz</title><link>https://radudaniel.substack.com</link></image><generator>Substack</generator><lastBuildDate>Wed, 13 May 2026 17:58:57 GMT</lastBuildDate><atom:link href="https://radudaniel.substack.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[radu]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[radudaniel@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[radudaniel@substack.com]]></itunes:email><itunes:name><![CDATA[radu]]></itunes:name></itunes:owner><itunes:author><![CDATA[radu]]></itunes:author><googleplay:owner><![CDATA[radudaniel@substack.com]]></googleplay:owner><googleplay:email><![CDATA[radudaniel@substack.com]]></googleplay:email><googleplay:author><![CDATA[radu]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[A dialogue with my fitness data]]></title><description><![CDATA[How Poliquin, genetic testing, Apple Health and an LLM became a private training system*]]></description><link>https://radudaniel.substack.com/p/a-dialogue-with-my-fitness-data</link><guid isPermaLink="false">https://radudaniel.substack.com/p/a-dialogue-with-my-fitness-data</guid><dc:creator><![CDATA[radu]]></dc:creator><pubDate>Thu, 07 May 2026 09:19:05 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Ag-X!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F676c9edf-9ec0-4125-bbff-bd62288d413f_1206x2622.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h1>A Private Interface to My Own Body</h1><p>For the past few years, most of my useful software ideas have started from the same place: a structured dataset, a deterministic flow, and a persistent feeling that the interface sitting on top of them is not quite the right one.</p><p>On the surface, GeneFitt looks like a fitness app. It has training programs, exercises, sets, supersets, caloric intake, protein, carbs, Apple Health data, blood work, genetic data, reminders and dashboards. All the familiar pieces are there. But the interesting part is not that it tracks fitness data, because a lot of apps already do that. The interesting part is that I can have a conversation with my own fitness data, and that conversation can change something real: a program, a training day, a weight, a reminder, an interpretation, a protocol.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://radudaniel.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading xyz! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>That changes the relationship with the system. I am not just looking at numbers. I am not just filling in another dashboard. I am operating on a loop.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Ag-X!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F676c9edf-9ec0-4125-bbff-bd62288d413f_1206x2622.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Ag-X!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F676c9edf-9ec0-4125-bbff-bd62288d413f_1206x2622.png 424w, https://substackcdn.com/image/fetch/$s_!Ag-X!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F676c9edf-9ec0-4125-bbff-bd62288d413f_1206x2622.png 848w, https://substackcdn.com/image/fetch/$s_!Ag-X!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F676c9edf-9ec0-4125-bbff-bd62288d413f_1206x2622.png 1272w, https://substackcdn.com/image/fetch/$s_!Ag-X!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F676c9edf-9ec0-4125-bbff-bd62288d413f_1206x2622.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Ag-X!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F676c9edf-9ec0-4125-bbff-bd62288d413f_1206x2622.png" width="1206" height="2622" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/676c9edf-9ec0-4125-bbff-bd62288d413f_1206x2622.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2622,&quot;width&quot;:1206,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1088562,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://radudaniel.substack.com/i/196745923?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F676c9edf-9ec0-4125-bbff-bd62288d413f_1206x2622.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Ag-X!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F676c9edf-9ec0-4125-bbff-bd62288d413f_1206x2622.png 424w, https://substackcdn.com/image/fetch/$s_!Ag-X!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F676c9edf-9ec0-4125-bbff-bd62288d413f_1206x2622.png 848w, https://substackcdn.com/image/fetch/$s_!Ag-X!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F676c9edf-9ec0-4125-bbff-bd62288d413f_1206x2622.png 1272w, https://substackcdn.com/image/fetch/$s_!Ag-X!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F676c9edf-9ec0-4125-bbff-bd62288d413f_1206x2622.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!q6Tx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3be322a2-9214-4ead-b83a-c4453a4a7716_1206x2622.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!q6Tx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3be322a2-9214-4ead-b83a-c4453a4a7716_1206x2622.png 424w, https://substackcdn.com/image/fetch/$s_!q6Tx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3be322a2-9214-4ead-b83a-c4453a4a7716_1206x2622.png 848w, https://substackcdn.com/image/fetch/$s_!q6Tx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3be322a2-9214-4ead-b83a-c4453a4a7716_1206x2622.png 1272w, https://substackcdn.com/image/fetch/$s_!q6Tx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3be322a2-9214-4ead-b83a-c4453a4a7716_1206x2622.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!q6Tx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3be322a2-9214-4ead-b83a-c4453a4a7716_1206x2622.png" width="1206" height="2622" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3be322a2-9214-4ead-b83a-c4453a4a7716_1206x2622.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2622,&quot;width&quot;:1206,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:655734,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radudaniel.substack.com/i/196745923?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3be322a2-9214-4ead-b83a-c4453a4a7716_1206x2622.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!q6Tx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3be322a2-9214-4ead-b83a-c4453a4a7716_1206x2622.png 424w, https://substackcdn.com/image/fetch/$s_!q6Tx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3be322a2-9214-4ead-b83a-c4453a4a7716_1206x2622.png 848w, https://substackcdn.com/image/fetch/$s_!q6Tx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3be322a2-9214-4ead-b83a-c4453a4a7716_1206x2622.png 1272w, https://substackcdn.com/image/fetch/$s_!q6Tx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3be322a2-9214-4ead-b83a-c4453a4a7716_1206x2622.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><h2>The problem was never finding a program</h2><p>GeneFitt started from a simple frustration: building and adapting training programs takes too much time.</p><p>Not finding exercises. That part is easy. Not finding a &#8220;program&#8221; either. The internet is full of programs. The heavy part is building something that actually fits, then watching what happens, then changing it when the body does not behave the way the spreadsheet said it would.</p><p>You build a block. You input it into an app. You run it for a few weeks. Then recovery is slower than expected. One lift moves, another collapses. Sleep changes. Work stress changes. Nutrition changes. Suddenly the original plan is no longer quite the plan you need, so you start adjusting volume, intensity, exercises, rest time, estimated weights, progression logic and sometimes the entire structure.</p><p>Every fitness app I tried solved maybe sixty percent of this and then forced me into its own logic for the rest. I could track workouts, but not really think with the system. I could follow a plan, but not easily reshape it around my actual response. I could collect data, but not turn the data back into program architecture without a lot of manual work.</p><p>So I built my own thing. It is not public. I called it GeneFitt.</p><h2>I initially stumbled on this idea from Charles Poliquin</h2><p>The first version of the idea was not an LLM. It was not genetic testing. It was not Apple Health. It started much earlier, with Charles Poliquin.</p><p>I think it was fifteen or twenty yrs ago when I first got into Poliquin&#8217;s training methodology. Poliquin worked with elite athletes and built training systems around a very important idea: programs should not be designed only around the objective, whether that objective is hypertrophy, strength, fat loss or performance. They should also be designed around the nervous system profile of the person doing the work.</p><p>The language at the time was built around neurotransmitter dominance: dopamine-dominant, acetylcholine-dominant, GABA-dominant, serotonin-dominant. I do not mean this in the simplified personality-test sense of &#8220;I am this type of person,&#8221; because that usually makes people flatter than they are. I mean it in a practical training sense.</p><p>How much volume do you tolerate? How fast do you recover? How much intensity do you need before training feels alive? How often do you need exercise variation? Does repetition give you stability or does it kill your drive? Do you progress better with heavy low-rep work or with accumulated volume? Do you need novelty, precision, aggression, rhythm?</p><p>The premise was simple, but it stayed with me: training is not interacting only with muscles. It is interacting with muscles connected to a nervous system, which regulates stress response, recovery patterns, reward, motivation, arousal and fatigue.</p><p>At the time, there was no large-scale, commercially accessible genetic sequencing in the way we have it now. The closest thing I had was the Braverman Test, a self-administered questionnaire that tried to infer neurotransmitter dominance through verbal answers, symptoms, preferences and behavioural patterns. It was imprecise, obviously. In a way, I was trying to reverse-engineer biology through language. Still, it did the job, not because the test was absolutely true, because it probably was not, but because it forced the right question:</p><p><em>What kind of system am I adapting this program to?</em></p><p>That question stayed with me.</p><p>Years later, genetic testing gave me a better kind of approximation. Not certainty. Not destiny. Just a better map of where to look first.</p><p>For example, I found out about the MTHFR variant, which for me made a few things click into place. It gave me a better frame for things I had felt for years but could not properly explain, especially around nutrition, mood, energy, recovery and training response. Folate, methylation, homocysteine, B12, neurotransmitter synthesis and stress load became more than abstract words. They became parts of the system I needed to pay attention to.</p><p>Then other signals started adding layers: dopamine sensitivity, inflammation, insulin signalling, recovery speed, sympathetic response, parasympathetic tone. Each of them was incomplete on its own, but together they moved me further away from generic training logic and closer to the actual system being trained.</p><p>In that sense, GeneFitt did not really start as an app. It started as a fifteen-year attempt to replace generic training logic with increasingly better approximations of my own biological reality.</p><h2>Genetics is a prior, not a verdict</h2><p>I do not treat genetic data as destiny. That is the wrong frame. Genetics does not tell me exactly what to do. It tells me where to look first.</p><p>If there are signals around methylation, I pay more attention to homocysteine, B12, folate, energy and recovery. If there are signals around stress response, I pay more attention to HRV, resting heart rate, sleep and training density. If there are signals around insulin signaling and appetite regulation, I do not pretend that all calories are experientially identical just because they are mathematically identical.</p><p>The point is not to turn SNPs into identity. The point is to stop pretending that the body is a generic machine. Training is not just mechanical load. Nutrition is not just macros. Recovery is not just a rest day. All of them sit inside a larger control system made of nervous system regulation, hormones, inflammation, sleep, stress, reward and context.</p><p>This is where most apps break for me. They track one part. They show one dashboard. They give one recommendation. But they do not hold the loop together.</p><h2>What GeneFitt actually does</h2><p>GeneFitt is where I operationalise this without spending ten hours a week manually rebuilding everything.</p><p>I have biometric data from Apple Health. I have additional data I upload myself: genetic data, blood work, training history, nutrition logs, supplement protocols and personal constraints. Then I talk to the app.</p><p>Not in the vague &#8220;make me a workout&#8221; sense. More like: I want a new training block. This is the goal. This is how much time I have. This is the equipment. This is what worked last time. This is what did not. These are the constraints I care about.</p><p>The LLM helps generate the program, but the output is structured. Once I agree on a version, GeneFitt builds it directly into the workout zone: days, exercises, sets, supersets, warm-up, tempo and rest time. Where it has enough history, it calculates estimated 1RM and derives working weights based on the goal, rep count, tempo and progression logic.</p><div class="image-gallery-embed" data-attrs="{&quot;gallery&quot;:{&quot;images&quot;:[{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cd843adb-e422-409e-b366-2fcfb39efd68_1206x2622.png&quot;},{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6cc069a2-3134-490e-ac78-002f64e7e9c8_1206x2622.png&quot;},{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6452a8e4-2e1e-4cb9-8b36-626f21ba5149_1206x2622.png&quot;},{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3fbd11b8-6af1-47a7-9e92-09e782ab3627_1206x2622.png&quot;},{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/72405950-f3f4-470b-b791-eb2812b3d711_1206x2622.png&quot;},{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/132e946c-0810-4e6f-8c2e-2fb40dde591d_1206x2622.png&quot;},{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2c2ff89a-9e93-4280-a5ae-3c936a19ea86_1206x2622.png&quot;},{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/422d2e75-7985-4299-bc2d-1951c706c73b_1206x2622.png&quot;},{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ef27eeb9-ae91-4dee-8ebf-854e943340fa_1206x2622.png&quot;}],&quot;caption&quot;:&quot;&quot;,&quot;alt&quot;:&quot;&quot;,&quot;staticGalleryImage&quot;:{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9d51861b-9aa5-40f1-bb62-8c59fbb7c03d_1456x1454.png&quot;}},&quot;isEditorNode&quot;:true}"></div><p></p><p>That part is useful, but it is not the real value. The real value starts after the program is running.</p><p>At the end of each week, the system looks at what actually happened. Workouts completed. Biometric trends. Recovery signals. Nutritional intake. Bodyweight. Steps. Cardio. Sleep. Caloric expenditure. Whatever data is available.</p><p>Then it cross-references that with the priors: genetic data, blood work, known constraints and previous responses to similar blocks. From there, it proposes adjustments. Not generic fitness advice, but specific changes.</p><p>Reduce volume here. Keep intensity there. Move this session. Change this rep range. Add Zone 2. Remove a high-stress element. Keep the progression because the signal is good. Deload earlier because the recovery data is not there.</p><p>If I accept, the program updates in two or three minutes. No spreadsheet copy-paste. No manual rebuild. No re-entering everything into an app that was never designed for how I think.</p><h2>The loop is the product</h2><p>The useful part is the loop.</p><p>Genetic priors, blood work, biometric data, training program, actual execution, recovery signal, LLM interpretation, proposed change, human approval, updated program.</p><p>That last part matters. The LLM does not silently rewrite the system. It proposes. I accept or reject. Only then does the app modify structured data.</p><p>That distinction is important because I do not want a chatbot pretending to be a coach. I want an interface that helps me interrogate my own data and operate on it faster.</p><p>Chat is the interface. The app is the structure. The deterministic flow is what makes it useful.</p><h2>Nutrition became part of the control surface</h2><p>GeneFitt is not just about training. Nutrition also became part of the same control surface.</p><p>Not &#8220;what should I eat?&#8221; in the abstract. More like: what does this input do to recovery, cravings, sleep, inflammation, training output, body composition and cognitive energy?</p><p>I track caloric intake, protein, carbs, fats, caloric expenditure from walking and running, distance, steps, weight and other signals. I can group them by day, week or month, depending on the question I am trying to ask.</p><p>The point is not to worship data. Most dashboards show you data. Very few help you ask better questions of it.</p><p>If weight changes but training output collapses, that means one thing. If weight changes while strength and recovery stay stable, that means something else. If calories are low but protein is insufficient, the conclusion changes. If HRV drops after a certain training density, the program should know that. If sleep is bad and resting heart rate is elevated, the next workout should not be treated as if it exists in isolation.</p><p>This is the part I wanted: a personal sport and nutrition system with an LLM inside it, but not as a magic layer. More as a translator between messy reality and structured action.</p><h2>Protocols should not live only in documents</h2><p>I also use it for reminders and protocols I do not want to keep in my head.</p><p>Blood work checks. Supplements. Seasonal adjustments. Things that matter, but are easy to forget because they do not scream for attention every day.</p><p>The dashboard rotates them cyclically based on what I have told it I need at that point in the year. This sounds small, but it is not. A lot of personal health systems fail because they live either as documents or as apps.</p><p>Documents have context, but no execution. Apps have execution, but no memory of why the system exists.</p><p>I wanted both.</p><p>A protocol should not just sit in a note. If it matters, it should be able to become operational: reminder, rule, dashboard element, review point, proposed adjustment. Again, not because the app &#8220;knows&#8221; what is true, but because it keeps the loop alive.</p><h2>Why an LLM belongs here</h2><p>The LLM is useful because the data is heterogeneous.</p><p>A workout program has one structure. Apple Health has another. Nutrition logs have another. Blood work has another. Genetic data has another. Notes and protocols have another.</p><p>Humans are bad at continuously integrating all of that. Classic software is bad at flexible interpretation. LLMs are good at translation across messy contexts, but dangerous if you let them act without constraints.</p><p>So the architecture matters.</p><p>The LLM does not replace the database. It talks to it. It does not replace the program structure. It generates and modifies structured objects. It does not replace judgment. It accelerates the review loop.</p><p>This is the pattern I keep coming back to in personal software: conversational input, structured output, deterministic execution.</p><p>The chat is not the product. The state change is the product.</p><h2>The MCP layer: specialist inside, generalist outside</h2><p>One thing I added later was an MCP layer that connects GeneFitt to one of the agents I run in OpenClaw, my multi-agent system.</p><p>The in-app LLM runs through OpenRouter, so it costs me per call. But cost is not the main reason for the split. Context is.</p><p>The in-app LLM should stay narrow. It should be good at sport, nutrition, training programs, biometric interpretation and the internal logic of GeneFitt. The OpenClaw agent lives outside the app, in a broader swarm. It has access to more context from other domains I keep updating: calendar, work density, finance, projects and other personal systems.</p><p>So when I want the narrow health and training loop, I stay inside GeneFitt. When I want a broader perspective, such as correlating training load with work calendar density, pulling supplement spending into the same conversation, or understanding why a training block failed during a period of unusually high cognitive load, I go to the external agent.</p><p>The narrow specialist lives in the app. The generalist lives outside, in the swarm. They talk through MCP. Each stays good at what it is good at.</p><p>That separation changed how I think about personal tools. Not every app needs to become everything. Some tools should be narrow and precise. Others should hold broader context. The interesting part is not one giant assistant that does all things badly. The interesting part is building agents and apps that understand their boundary.</p><h2>A private interface to my own body</h2><div class="image-gallery-embed" data-attrs="{&quot;gallery&quot;:{&quot;images&quot;:[{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f45975c1-ddc1-449d-b0bf-538e755792a0_1206x2622.png&quot;},{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d67d2be0-617a-4aab-84cd-32934170659d_1206x2622.png&quot;},{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/512b2428-8069-4cd6-a90b-badf324cc3aa_1206x2622.png&quot;}],&quot;caption&quot;:&quot;&quot;,&quot;alt&quot;:&quot;&quot;,&quot;staticGalleryImage&quot;:{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6f89ec97-d5fb-478c-8658-020636ffd9f9_1456x474.png&quot;}},&quot;isEditorNode&quot;:true}"></div><p></p><p>I do not know if GeneFitt should ever be a public product. Maybe parts of it could be. But that is not the interesting part for me right now.</p><p>The interesting part is that it changes the relationship with personal data.</p><p>Apple Health, blood work, genetic priors, nutrition logs, training history, supplements and protocols normally live in separate places. Some in apps. Some in PDFs. Some in spreadsheets. Some in memory. Some in notes you never reopen.</p><p>GeneFitt turns them into something I can talk to.</p><p>Not in the performative AI demo sense. In the practical sense. I can ask a question, get an interpretation, approve a change and have the system update itself.</p><p>That is a different kind of software. Not a dashboard. Not a chatbot. Not a generic fitness app.</p><p>A private interface to my own body, built around a loop I actually use.</p><p>For me, this is where LLMs become genuinely useful: not when they produce more text, but when they make personal systems easier to operate.</p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://radudaniel.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading xyz! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[My agents setup: openclaw, bounded cognition with semantic memory]]></title><description><![CDATA[What I learned building specialist AI over a shared knowledge substrate]]></description><link>https://radudaniel.substack.com/p/my-agents-setup-openclaw-bounded</link><guid isPermaLink="false">https://radudaniel.substack.com/p/my-agents-setup-openclaw-bounded</guid><dc:creator><![CDATA[radu]]></dc:creator><pubDate>Mon, 04 May 2026 16:23:37 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!9Lm4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82ab50da-e4e9-4581-8f88-7bd8420ac0eb_1562x1296.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2>What I learned building specialist AI over a shared knowledge substrate</h2><p>I started from a practical irritation, not from a theory.</p><p>I wanted to understand whether a single LLM, placed in the middle of everything, could actually handle nutrition advice, training decisions, financial reasoning, code review, medical interpretation, and business operations inside the same broad context. Not whether it could talk about them. That part was obvious. It could talk about almost anything. The real question was whether it could make useful decisions inside each of those domains once the surface fluency stopped being impressive.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://radudaniel.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading xyz! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>My first answer was: not really. But the uncomfortable part was that it sounded like it could.</p><p>The outputs were plausible. The tone was competent. The system moved from one topic to another with a kind of elegant indifference, as if all domains were made out of the same conversational material. But the decisions were often generic, and the mistakes were not obvious enough to be rejected immediately. It failed in the way generalist systems often fail: not by producing nonsense, but by sounding reasonable while missing the structure of the specific case.</p><p>That led to the hypothesis behind this architecture.</p><p>A specialist who has worked with you for months, who has seen your decisions, accumulated your preferences, adjusted its method to your actual situation, is fundamentally different from a generalist agent created at task time with a good system prompt.</p><p>The difference is not only that the specialist has access to more information. It is that the specialist has acquired a shape. It has a bounded role, a memory of prior decisions, a method for the domain, a way of interpreting you, and a disciplined relationship with current state.</p><p>At the beginning, I thought the main difference would be knowledge. The specialist would simply know more about the user. That turned out to be true, but incomplete. The real difference came from structure. Memory provided perspective. Files provided rules. Tools provided live state. The specialist only became trustworthy when those three things stopped being mixed together.</p><p>That distinction became the spine of the system.</p><p>A specialist agent is not just a generalist with more memory attached to it. It is a persistent identity bounded by explicit structure, with accumulated perspective on shared facts, rules that evolve under user approval, and live state acquired only from canonical sources.</p><p>This sounds almost too formal when written out, but in practice it is the difference between a system that sounds personal and a system that can actually become reliable over time.</p><p>This is the architecture I built to test that idea, and what the idea became after being forced through implementation.</p><div><hr></div><h2>An agent in action</h2><p>The clearest example is not the one where the system gives a clever answer. A generalist can give clever answers. The clearer example is where the system refuses to design an answer until it checks whether the user&#8217;s premise is visible in the data.</p><p>Take a fitness and recovery question.</p><h3>User question</h3><blockquote><p>I keep seeing the same pattern. I train hard for several days, stay in a calorie deficit, feel in control for a while, and then I crash into a few days of no training and overeating. Can you help me structure next week so I don&#8217;t repeat this?</p></blockquote><p>A generic LLM can answer this immediately. It can produce a seven-day workout plan, add recovery advice, mention sleep, and sound useful. But the specialist does something different: it first checks whether the pattern exists in the instruments.</p><h3>Agent response</h3><blockquote><p>Before I structure the week, I want to verify whether the pattern you describe appears in the data, or whether we are only working from impression. If the pattern is not visible in the instruments, the intervention should be different.</p><p>I&#8217;m checking the last 30 days of workouts, the last 14 days of health snapshots, recent weekly analyses, the active training program, and the current nutrition targets.</p><p>The pattern is visible.</p><p>Workout records show clusters of several high-intensity days followed by two-to-four-day gaps. HRV drops below baseline after those clusters, often before the behavioral crash appears. Sleep quality worsens around the same windows. Nutrition data is partial, but where it exists, the gap days are also the days where calories rise above target.</p><p>I would not treat this as a motivation problem. I would treat it as a recovery design problem.</p><p>So next week should not be another aggressive cut with more discipline added on top. It should be structured to interrupt the sequence before it completes: capped training volume, one mid-week maintenance day, one structured refeed, active recovery, and numeric guardrails.</p><p>If HRV drops below baseline by the defined threshold, the day is downgraded automatically: strength becomes Zone 2, Zone 2 becomes walking, walking becomes rest. If sleep falls below the minimum threshold, intensity is capped regardless of what the plan says. If deficit days accumulate beyond your known tolerance, maintenance becomes mandatory.</p><p>I can use your recovery and metabolic profile as risk modifiers when setting these thresholds, but not as deterministic explanations. The instrumented pattern matters more than any single marker.</p><p>There are also limits in the data. External stress is not instrumented here. Recent body composition is missing. Nutrition logs are only partially populated. So I can structure the week around the pattern that is visible, but I would not pretend the picture is complete.</p></blockquote><h3>What this shows</h3><p>The relevant move happens before the plan. The agent does not begin by generating a plausible seven-day protocol. It begins by testing the user&#8217;s description against the available evidence.</p><p>That requires access to the user&#8217;s actual workouts, HRV, sleep, nutrition targets, active program state, prior weekly analyses, and recovery profile. It also requires knowing which signals are canonical, which are partial, and which are missing.</p><p>This is where the architecture becomes visible. Memory contributes the recurring pattern, prior interventions, and the user&#8217;s known thresholds. Tools provide live state from GeneFitt and connected health data. Domain rules interpret recovery, intensity, deficit exposure, and guardrails. The LLM composes the answer, but it does not invent the evidence.</p><p>A generic model can produce a plan that looks reasonable. The specialist first establishes whether the plan should exist in that form at all.</p><div><hr></div><h2>The three things I had to stop confusing</h2><p>The architecture started working when I stopped asking one layer to do every job.</p><p>Memory is not state. Rules are not memory. Tools are not judgment.</p><p>This sounds simple, but a surprising number of agent systems blur these distinctions. They put durable preferences, current facts, domain methodology, tool outputs, and conversational traces into one expanding context and hope the model will sort them out. Sometimes it does. Often it does not. More importantly, when it fails, it becomes hard to know why.</p><p>Memory should store perspective. It should remember that the user has a recurring overtraining-to-crash pattern. It should remember that the user responds better to pre-emptive guardrails than to reactive correction. It should remember decisions, tendencies, unresolved tensions, prior interventions, and recurring patterns. But asking memory what the user&#8217;s HRV was this morning would be a category error. That information belongs in the system that owns current health state.</p><p>Rules should live somewhere else. In this architecture they live as markdown files in a git-versioned vault. They define the specialist&#8217;s identity, domain method, user-specific protocol, personal operating patterns, refusals, boundaries, precedence rules, and communication style. The LLM does not invent its own method at runtime. The orchestrator assembles the method from files that can be inspected, edited, versioned, and rolled back.</p><p>Tools, in turn, fetch live state. If the recovery specialist needs workouts, HRV, sleep, nutrition targets, active program state, or weekly analyses, it reads them from GeneFitt and connected sources. If a finance specialist needs budgets and transactions, it reads them from the cashflow application. If another specialist needs a calendar, a database, a spreadsheet, or an external API, it calls a deterministic tool connected to the canonical source.</p><p>The LLM is not asked to remember numbers. Memory does not store current state. Files do not store current state. State lives in the system responsible for it.</p><p>Every time these boundaries were violated, the failures became predictable. Memory used as state produced stale or hallucinated numbers. Tools used as perspective produced answers with no continuity from one session to the next. Rules hidden inside prompts became difficult to audit and easy to lose. LLM-controlled workflows looked elegant until the model skipped a protocol under pressure. Automatic learning without a user gate turned passing conversational artifacts into durable behavior.</p><p>So the discipline is not philosophical decoration. It is what prevents the system from becoming a very articulate swamp.</p><div><hr></div><h2>What happens at runtime</h2><p>When a user sends a message, the system does not simply throw everything into the model and ask for wisdom. The runtime path is controlled by the orchestrator.</p><p>First, the message is classified. A small structured LLM call identifies the likely domain, intent, risk, complexity, candidate specialist, memory query terms, and possible live data sources. This is not the answer. It is a way to give the deterministic parts of the system a clean starting point.</p><p>Then memory is queried through the candidate specialist&#8217;s lens. This matters because the same workspace can be read differently by different specialists. A recovery specialist looking at the user&#8217;s memory should see training patterns, physiological thresholds, prior interventions, and failed protocols ranked highly. A finance specialist should see financial decisions, budget preferences, and prior tradeoffs. A business operations specialist should see processes, bottlenecks, handoffs, and recurring constraints.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9Lm4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82ab50da-e4e9-4581-8f88-7bd8420ac0eb_1562x1296.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9Lm4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82ab50da-e4e9-4581-8f88-7bd8420ac0eb_1562x1296.png 424w, https://substackcdn.com/image/fetch/$s_!9Lm4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82ab50da-e4e9-4581-8f88-7bd8420ac0eb_1562x1296.png 848w, https://substackcdn.com/image/fetch/$s_!9Lm4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82ab50da-e4e9-4581-8f88-7bd8420ac0eb_1562x1296.png 1272w, https://substackcdn.com/image/fetch/$s_!9Lm4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82ab50da-e4e9-4581-8f88-7bd8420ac0eb_1562x1296.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9Lm4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82ab50da-e4e9-4581-8f88-7bd8420ac0eb_1562x1296.png" width="1456" height="1208" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/82ab50da-e4e9-4581-8f88-7bd8420ac0eb_1562x1296.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1208,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:341257,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radudaniel.substack.com/i/196414189?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82ab50da-e4e9-4581-8f88-7bd8420ac0eb_1562x1296.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!9Lm4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82ab50da-e4e9-4581-8f88-7bd8420ac0eb_1562x1296.png 424w, https://substackcdn.com/image/fetch/$s_!9Lm4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82ab50da-e4e9-4581-8f88-7bd8420ac0eb_1562x1296.png 848w, https://substackcdn.com/image/fetch/$s_!9Lm4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82ab50da-e4e9-4581-8f88-7bd8420ac0eb_1562x1296.png 1272w, https://substackcdn.com/image/fetch/$s_!9Lm4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82ab50da-e4e9-4581-8f88-7bd8420ac0eb_1562x1296.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!p1sk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2ced27c-28a7-49df-be93-e85522be4c3f_1576x520.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!p1sk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2ced27c-28a7-49df-be93-e85522be4c3f_1576x520.png 424w, https://substackcdn.com/image/fetch/$s_!p1sk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2ced27c-28a7-49df-be93-e85522be4c3f_1576x520.png 848w, https://substackcdn.com/image/fetch/$s_!p1sk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2ced27c-28a7-49df-be93-e85522be4c3f_1576x520.png 1272w, https://substackcdn.com/image/fetch/$s_!p1sk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2ced27c-28a7-49df-be93-e85522be4c3f_1576x520.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!p1sk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2ced27c-28a7-49df-be93-e85522be4c3f_1576x520.png" width="1456" height="480" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a2ced27c-28a7-49df-be93-e85522be4c3f_1576x520.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:480,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:131844,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radudaniel.substack.com/i/196414189?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2ced27c-28a7-49df-be93-e85522be4c3f_1576x520.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!p1sk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2ced27c-28a7-49df-be93-e85522be4c3f_1576x520.png 424w, https://substackcdn.com/image/fetch/$s_!p1sk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2ced27c-28a7-49df-be93-e85522be4c3f_1576x520.png 848w, https://substackcdn.com/image/fetch/$s_!p1sk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2ced27c-28a7-49df-be93-e85522be4c3f_1576x520.png 1272w, https://substackcdn.com/image/fetch/$s_!p1sk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2ced27c-28a7-49df-be93-e85522be4c3f_1576x520.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The corpus may be shared, but the interpretation is not flat.</p><p>After that, the orchestrator loads the specialist&#8217;s framework from the vault. It composes identity, domain skill, project method, and personal patterns into a prompt stack. The composition is deterministic. Same files in, same structure out. The model is not choosing who it is today.</p><p>Only then does the specialist fetch live state through its allowed tools. In the GeneFitt example, this means reading workouts, health snapshots, weekly analyses, active program state, and nutrition targets. The answer&#8217;s evidence comes from these reads, not from memory and not from the model&#8217;s guesses.</p><p>Finally, the LLM receives the assembled system prompt, the relevant memory claims with provenance, the user message, recent session context if needed, and the specialist&#8217;s tool catalog. It synthesizes the response inside a bounded role.</p><p>One practical decision mattered more than I expected: the LLM layer runs through OAuth profiles, which made many small deterministic LLM calls affordable as an architectural habit rather than something to avoid. If every classification, recall shaping, review, and synthesis step carried a visible marginal cost, the design would be pushed toward fewer, heavier, more overloaded calls. The OAuth backbone made it easier to keep the system modular: several bounded calls, each with a narrow job, instead of one giant prompt asked to do everything.</p><p>This separation between structure and synthesis took several failed iterations to learn. I tried controlling the system by writing more detailed protocols into the prompt. It worked until it did not. The model would follow the protocol when the task was clean, then skip parts of it when the situation became long, ambiguous, or tempting. The more reliable pattern was to let code control the flow and let the LLM do what it is actually good at: synthesis inside a prepared frame.</p><p>Code decides what gets loaded, what gets called, what is allowed, and what has to be audited. The LLM composes meaning from the material it is given.</p><p>That is a very different architecture from asking the model to be the architecture.</p><div><hr></div><h2>Why bounded cognition matters</h2><p>The phrase &#8220;bounded cognition&#8221; matters because the problem is not only context size. Larger context windows help, but they do not remove the need for boundaries. Every instruction, tool definition, memory, file, and rule loaded into a model competes for attention. The fact that something can fit inside context does not mean it belongs there.</p><p>A generalist agent carrying nutrition knowledge, training rules, medical interpretation, code conventions, business operations, financial context, and personal preferences all at once becomes overloaded in a subtle way. It may still sound coherent. It may even sound more impressive than a narrower system. But fluency is not depth. The answer can become correct enough to pass a glance and wrong enough to fail in practice.</p><p>I kept seeing three recurring failure modes.</p><p>The first was context inflation. Every new tool, file, and memory felt useful in isolation, but the combined system became noisier. The second was boundary collapse. If every agent can access everything, specialization becomes theatrical. A recovery specialist with access to every personal, business, financial, medical, and operational claim is not really a recovery specialist. It is a generalist wearing a recovery costume. The third was session fragility. Without persistent identity, every session starts from zero, and the user keeps training the same new assistant again and again.</p><p>A specialist is not a smaller generalist. It is a persistent identity operating inside a bounded cognitive environment. It has accumulated domain knowledge, scoped tools, scoped memory, explicit permissions, and a specific way of interpreting the user over time.</p><p>The goal is not maximum context. The goal is the right context, through the right lens, with the right boundaries.</p><div><hr></div><h2>The three layers</h2><p>The system ended up with three layers and one cross-layer memory fabric.</p><p>The first layer is the substrate. This is the non-cognitive foundation: runtime, filesystem, version control, integrations, tool registry, project artifacts, and session infrastructure. It answers the basic questions: what exists, what is reachable, what can be loaded, and what can be executed.</p><p>In this implementation, the substrate is intentionally boring. Almost every durable piece of system state that is not live data lives as markdown in a git-versioned vault. Specialist identities are markdown files. Skills are markdown files. Project methods are markdown files. Personal patterns are markdown files. System documentation lives there too.</p><p>This is not because markdown is glamorous. It is because files and git give the system history, audit, rollback, branching, and inspectability. If a rule changes, there is a commit. If a specialist drifts, the change can be seen. If an experiment fails, it can be rolled back. There is no hidden personality evolving somewhere in a database fog.</p><p>The second layer is the orchestrator. This is the control layer. It handles intake, classification, routing, prompt composition, governance, session management, and write-back handling. It does not need to be the domain expert. Its job is to decide what should happen next and what context should be made available.</p><p>The third layer is the specialist layer. Specialists are bounded workers with persistent identity. Each specialist has a domain, a project context, data permissions, tool permissions, a memory lens, rules, a working surface, and a communication style. The important part is that these are not fused into one prompt blob. Voice does not grant domain authority. Personality does not grant access to data. Memory does not become state. Tools do not become judgment.</p><p>This makes the specialist inspectable. You can update the domain method without rewriting the voice. You can change the user-specific protocol without changing the underlying skill. You can adjust personal patterns without rebuilding the whole agent.</p><p>Across these layers sits semantic memory. That is what allows a system with multiple bounded specialists to remain coherent instead of becoming a committee of forgetful strangers.</p><div><hr></div><h2>Memory as perspective</h2><p>In a multi-agent system, fragmentation is intentional. One specialist handles recovery, another finance, another code, another operations. This gives depth, but it creates a new question: if cognition is distributed, where does continuity live?</p><p>It does not live in raw conversation history. That eventually becomes a transcript pile. It does not live only in files either. Files are durable and auditable, but they do not answer what currently matters, what has been decided, what is unresolved, or which past claim should influence this answer right now.</p><p>This is where IdMem becomes structurally important. It is not just a vector store attached to the side of the system. It is the semantic memory plane that lets multiple specialists operate over shared knowledge without collapsing into one undifferentiated assistant.</p><p>The unit of memory is a claim: a structured statement with provenance, timestamp, confidence, and epistemic tier. Claims live inside workspaces, which act as privacy boundaries. Personal claims and business claims are separate. A personal recovery specialist cannot read business pipeline claims. A business specialist cannot read personal health claims.</p><p>Within the same workspace, specialists do not get separate memory silos. They query the same corpus through different lenses. The recovery specialist sees training patterns, protocols, markers, symptoms, and interventions ranked higher. The finance specialist sees financial decisions and preferences ranked higher. The operations specialist sees processes, constraints, and recurring bottlenecks ranked higher.</p><p>Same world, different lens.</p><p>That middle path matters. Separate memory silos destroy continuity. Every specialist becomes the owner of its own partial user, and the system slowly fragments. But if every specialist sees everything equally, specialization collapses. Shared memory with agent-specific ranking gives continuity without flattening perspective.</p><p>Memory also needs epistemic discipline. A direct user assertion is not the same as an agent&#8217;s interpretation. A live tool reading is not the same as a derived hypothesis. A decision explicitly made by the user is stronger than a pattern inferred by the system. Interpretations can be useful for retrieval, but they should not silently overwrite facts.</p><p>The system treats this through three epistemic tiers. Tier A is authoritative: direct human assertions, explicit decisions, system events observed first-hand, and live tool readings. Tier B is operational: what an agent did, saw, processed, or reported while working. Tier C is support: hypotheses, derived insights, interpretations, and synthesis. Tier C can help retrieval and reasoning, but it cannot modify shared truth. A hypothesis may be useful, but it does not get to overwrite a decision.</p><p>There is also a temporal lifecycle. Most claims start in short-term memory, where they can remain useful without pretending to be permanent. Claims that keep resurfacing, or that become part of stable user behavior, can move into long-term memory. Dormant claims eventually fall into archive, where they are still retrievable by semantic pull, but no longer occupy the same active surface.</p><p>This matters because memory is not only about storing more. It is about knowing what kind of thing a memory is, how strong it is, how fresh it is, and which specialist should care about it.</p><p>When a new claim conflicts with a high-confidence existing claim, the system raises tension instead of quietly choosing the more recent sentence and moving on. That is how memory stays useful without becoming mud.</p><div><hr></div><h2>Tools should be small and deterministic</h2><p>Specialists do not compute live state from prompts. They fetch it from tools.</p><p>This sounds obvious, but it changes the way you build the surrounding system. A tool does not have to be a grand platform. It can be a full microservice with a database, but it can also be a lightweight HTTP server over a Google Sheet, a CLI wrapper around an external API, or a cache file refreshed on demand.</p><p>GeneFitt is a good example because it is not merely &#8220;context&#8221; pasted into an agent. It is a domain application that owns live state: workouts, snapshots, targets, program structure, and analyses. The specialist can read from it through explicit tools, and, where approved, can write back changes to the active program. That is a different relationship from asking a model to remember what the training plan was supposed to be.</p><p>The same pattern applies to less sensitive domains. A cashflow tool can use Google Sheets as the canonical store, with a small HTTP server exposing read endpoints and a basic HTML page for human inspection. The user gets a normal spreadsheet they can edit by hand. The specialist gets clean endpoints. Both operate against the same source of truth.</p><p>This is important because new domain capability should not require a new platform every time. Many useful specialist systems can start with a spreadsheet plus a thin deterministic interface. Others may need a more serious application. The architecture does not care, as long as the tool has a clear contract and the source of truth is explicit.</p><p>The tool&#8217;s job is to say what is currently true in the system it owns. The specialist&#8217;s job is to interpret that state through memory and rules. The LLM&#8217;s job is to synthesize the answer.</p><p>Again, the boundary is the feature.</p><div><hr></div><h2>Learning without turning into drift</h2><p>A specialist has to learn over time. Otherwise it is just a roleplay session with better filing. But automatic learning is dangerous, because conversation is full of half-thoughts, moods, trial balloons, exceptions, and temporary preferences. If every conversation rewrites the system, a passing remark can become a durable rule.</p><p>So learning happens through explicit loops, with the user as the gate. There are three of them.</p><p>The first is session harvest. At the end of a session, the specialist that participated in the conversation reads the transcript and proposes durable write-backs. It can identify facts the user asserted, decisions that were made, unresolved questions, validated protocols, and possible rule updates. Each proposal carries a reference quote, so a future belief can be traced back to the moment that produced it.</p><p>Facts and decisions can enter semantic memory quickly. Rule changes cannot. If a rule will change how the specialist behaves in future sessions, the user has to approve it. This creates a useful asymmetry: the system can remember efficiently, but it cannot casually rewrite its own operating method.</p><p>The second loop is the knowledge heartbeat. This is a scheduled review where a specialist&#8217;s rules can be compared against current external knowledge or updated domain consensus. The point is not to let the system auto-update itself from the web. The point is to surface proposed refinements with enough context for the user to approve, reject, or defer them.</p><p>The third loop is agent review. This looks not at the domain knowledge itself, but at the specialist as a working identity: where it hesitated, where the user corrected it, where its scope was too narrow or too loose, where its communication style created friction, or where a repeated pattern deserves to become part of its operating method.</p><p>The three loops touch different things. Harvest learns from conversations. Heartbeat learns from the outside world. Agent review learns from use. All three share the same discipline: the system may propose, but the user decides what becomes durable.</p><p>That is what prevents drift while still allowing compounding. The system improves, but it does not get to become a different system behind the user&#8217;s back.</p><div><hr></div><h2>Daily surfaces and operational spine</h2><p>The architecture is not tied to one chat window. That matters, because a specialist system that can only be used in one interface is still trapped inside a demo shape.</p><p>In daily use, the same brain can sit behind multiple surfaces. Telegram can be the quick personal interface. Slack can be the team-facing surface, where agents behave more like operational participants than private assistants. A dashboard can expose the system&#8217;s health: sessions, queues, costs, token usage, tool calls, learning proposals, cron activity, failures, and drift signals.</p><p>This is not just convenience. Multi-channel infrastructure tests whether the architecture is real. If the same pipeline, vault, memory, tools, and governance layer can operate behind Telegram, Slack, and a dashboard, then the channel is only transport. The cognition lives elsewhere.</p><p>The dashboard and cron jobs are part of that operational spine. Scheduled jobs can run heartbeat checks, drift detection, digests, maintenance tasks, and review queues. The dashboard turns the system from something you talk to into something you can observe. That changes the relationship completely. Debugging stops being folklore and starts becoming a checklist.</p><p>This is also why the architecture keeps surfaces thin. A new channel should not require a new brain. It should translate the incoming message into the internal call, attach session and channel metadata, and render the response back. Everything important remains shared: orchestrator, vault, IdMem, tools, governance, and audit.</p><div><hr></div><h2>Governance as mechanism</h2><p>Governance in this architecture is not mainly a policy document. It is mechanism.</p><p>Forbidden data is not injected into the prompt. Forbidden tools are not registered for the specialist&#8217;s LLM call. If a specialist tries to invoke a tool outside its bound list, the call is refused and audited. If new memory conflicts with high-confidence existing claims, the conflict is surfaced instead of silently overwritten.</p><p>The markdown vault becomes part of the governance layer because durable changes are commits. Rules have history. Rollbacks are possible. The system can explain not only what it currently believes or how it currently behaves, but how it got there.</p><p>This matters because trust in specialist AI will not come from smoother language. It will come from inspectability. Can I see what rule caused this behavior? Can I see where this memory came from? Can I see which tool produced this number? Can I prevent this specialist from touching that data? Can I roll back a bad change?</p><p>If the answer is no, the system may still be impressive, but it is not yet trustworthy.</p><div><hr></div><h2>What the hypothesis became</h2><p>The original hypothesis was that a specialist who knows you over time is fundamentally different from a generalist created at task time.</p><p>Building the architecture confirmed that, but not in the way I first expected. The difference is not just accumulated knowledge. Accumulated knowledge without structure produces a more confident generalist. It knows more fragments. It can imitate continuity. It can sound personal. But it still collapses perspective, rules, and state into one soup of context.</p><p>What creates a real specialist is accumulated structure.</p><p>Memory provides perspective. Vault files provide rules. Tools provide live state. The orchestrator keeps them separate. The specialist composes them inside a bounded identity. The user decides what becomes durable.</p><p>That is the architecture in one paragraph.</p><p>The strongest AI systems may not be the ones that maximize context. They may be the ones that bound it correctly. Not one giant agent with everything inside its head, but a substrate that knows what exists, an orchestrator that controls what happens next, specialists that operate within explicit limits, IdMem as a semantic memory plane that provides continuity without flattening perspective, tools that provide current state without pretending to reason, multiple surfaces that share the same cognitive backend, and learning loops that compound only through approval.</p><p>The difference between this architecture and a single giant agent is the difference between hiring someone for a day and working with a team that has known your world for months. Both can do tasks. Only one develops judgment in context. Only one improves without starting from zero every morning. Only one can become worthy of decisions that matter.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://radudaniel.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading xyz! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Din seria > llmul = UI care vorbește direct cu DB-ul]]></title><description><![CDATA[Aveam ni&#537;te re&#539;ete &#238;n 3 PDF-uri diferite.]]></description><link>https://radudaniel.substack.com/p/din-seria-llmul-ui-care-vorbeste</link><guid isPermaLink="false">https://radudaniel.substack.com/p/din-seria-llmul-ui-care-vorbeste</guid><dc:creator><![CDATA[radu]]></dc:creator><pubDate>Wed, 22 Apr 2026 08:42:59 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!U80U!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1507b412-4030-445c-9da7-06a91ad3fd0c_3456x1994.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Aveam ni&#537;te re&#539;ete &#238;n 3 PDF-uri diferite. &#206;n total, 857 de pagini. Doar c&#259; din ele doar vreo 20% erau re&#539;ete efective, restul era alt tip de con&#539;inut. Adic&#259; exact genul de material care exist&#259;, dar cu care nu prea po&#539;i lucra omene&#537;te. Cau&#539;i ceva, g&#259;se&#537;ti jum&#259;tate, mai pierzi o pagin&#259;, mai ui&#539;i unde era, mai &#238;nchizi, mai redeschizi. <br><br>L-am rugat pe Claude s&#259; scoat&#259; toate re&#539;etele, cu ingrediente &#537;i valori nutri&#539;ionale, s&#259; normalizeze totul la 100g, pentru c&#259; &#238;n multe cazuri valorile erau date per por&#539;ie, s&#259; pun&#259; labels de tipul &#8222;desert&#8221;, &#8222;soup&#8221; &#537;i ce alte categorii mai aveau sens, s&#259; le pun&#259; &#238;ntr-un excel, + un folder cu imaginile.<br><br>Dup&#259; asta, i-am cerut o interfa&#539;&#259; HTML, care se deschide &#238;n browser. F&#259;r&#259; server.<br><br>Pot s&#259; caut dup&#259; re&#539;et&#259;, dup&#259; categorie, s&#259; sortez dup&#259; nutrien&#539;i, s&#259; m&#259; uit rapid prin ele ca printr-o baz&#259; de date normal&#259;.<br><br>Dac&#259; pun tot folderul &#238;n iCloud, merge &#537;i pe mobil, &#537;i pe laptop. Totul local, totul simplu, f&#259;r&#259; setup-uri inutile, f&#259;r&#259; infrastructur&#259; doar de dragul infrastructurii.<br><br>&#536;i partea care &#238;mi place cel mai mult e c&#259;, dac&#259; vreau s&#259; v&#259;d ce este de fapt &#238;n sistem, deschid Excel-ul. Nu e nimic ascuns. Nu e niciun strat opac &#238;n care au disp&#259;rut datele. Baza de date e acolo, la vedere. HTML-ul e doar interfa&#539;a prin care m&#259; mi&#537;c mai u&#537;or prin ea.</p><div class="image-gallery-embed" data-attrs="{&quot;gallery&quot;:{&quot;images&quot;:[{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1507b412-4030-445c-9da7-06a91ad3fd0c_3456x1994.png&quot;},{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/19d07e18-b26b-4a51-a309-61604b16e261_1562x1936.png&quot;},{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f56ea768-7c8d-44df-a277-28ef82e9605f_2462x2094.png&quot;},{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d2ffb10e-0d66-4024-9151-d530f30c50e1_2184x2096.png&quot;},{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b58fad19-8e69-4ac0-a7c2-b8b08ef09fe0_2216x2036.png&quot;}],&quot;caption&quot;:&quot;&quot;,&quot;alt&quot;:&quot;&quot;,&quot;staticGalleryImage&quot;:{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c51e7757-dad7-4971-ae0d-6b0bf064c85d_1456x1210.png&quot;}},&quot;isEditorNode&quot;:true}"></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://radudaniel.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading xyz! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[When the project becomes my world]]></title><description><![CDATA[I&#8217;ve been working with a friend on a project these past few days.]]></description><link>https://radudaniel.substack.com/p/when-the-project-becomes-my-world</link><guid isPermaLink="false">https://radudaniel.substack.com/p/when-the-project-becomes-my-world</guid><dc:creator><![CDATA[radu]]></dc:creator><pubDate>Sun, 05 Apr 2026 08:14:03 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!i35G!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81b34056-6c8c-428d-a154-e698d3aeebbc_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I&#8217;ve been working with a friend on a project these past few days. Hard. Hard enough that, at some point, our bones were hurting from sitting at the computer too long, even though we both use standing desks. Each of us in our own home, in our own room, in front of our own screen, but locked into the same shared world, built out of ideas, problems, hypotheses, and corrections. After so many hours we&#8217;d lost count, we both said some version of the same thing: let&#8217;s take a break, because if 90% of what we&#8217;re doing is turning out badly, that&#8217;s a pretty clear sign we&#8217;re no longer thinking straight.</p><p>I stepped outside for a walk and everything felt strange. The streets I knew, the apartment blocks, the trees, the whole familiar set of daily life no longer felt like mine. Recognizable, but distant. As if the place had stayed where it was, but we had somehow gone very far away without ever leaving our chairs.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://radudaniel.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading xyz! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>That&#8217;s what happens to me when I go all the way into something. It isn&#8217;t just concentration. It&#8217;s a wholesale move into a different logic, one that doesn&#8217;t belong to ordinary life, one that pulls away from what is physically, emotionally, intellectually familiar. And the process is not just distance. It&#8217;s dismantling. To create something, or to repair something, I don&#8217;t just build. I take apart. I take an idea, break it open, rebuild it, break it again, rebuild it differently. I do that dozens, maybe hundreds of times, until I get to something that can stand on its own in reality, without me.</p><p>That&#8217;s why the process can sometimes feel like an attack on personal identity. The ideas I have about what I&#8217;m building are not cleanly separated from the way I see the world. They come from me. From how I process reality, from what I think makes sense, from what feels elegant, coherent, alive. So when I break the idea apart, I don&#8217;t come away untouched. Evisceration is a harsh word, but sometimes it&#8217;s the right one.</p><p>And after enough iterations, even if they all happen over a short stretch of time, it starts to feel as if I&#8217;ve been living in another world. The world of the problem. The world of the project. The world of that thing I have to metabolize in order to really learn it, and that, for a while, asks for everything I have. And when I come back out of it, the real world doesn&#8217;t take me back immediately. I have to reacclimate. I have to remember what simple things feel like, what normal life looks like, what it means to be present without breaking everything I see into components, causes, and logical relations.</p><p>This kind of effort is different from what people usually mean by &#8220;work&#8221; as it requires a different kind of approach. It is profoundly hostile to a person who no longer lives only for himself. It runs against social life, family life, against almost any modern idea of well-being. It asks for the whole of you. And during that time, you barely have anything left to give anyone else, not even yourself.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://radudaniel.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading xyz! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[AI: why affordable execution may lead to expensive confusion]]></title><description><![CDATA[There is a growing belief that because execution is more afordable and cheaper with AI, productivity will naturally go up.]]></description><link>https://radudaniel.substack.com/p/ai-why-affordable-execution-may-result</link><guid isPermaLink="false">https://radudaniel.substack.com/p/ai-why-affordable-execution-may-result</guid><dc:creator><![CDATA[radu]]></dc:creator><pubDate>Thu, 02 Apr 2026 15:57:46 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!i35G!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81b34056-6c8c-428d-a154-e698d3aeebbc_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>There is a growing belief that because execution is more afordable and cheaper with AI, productivity will naturally go up. On the surface, that sounds right. If people can build faster, write faster, code faster, and launch faster, then more value should be created.</p><p>But that is not necessarily what happens.</p><p>Cheaper and easier execution does not automatically create productivity. In many cases, it first creates volume. More products, more content, more ideas, more prototypes, more experiments. And a lot of them are only half-baked.</p><p>A good comparison is traffic in a city that was not built for a much larger number of cars. More people being able to drive does not automatically improve transportation. If the roads, rules, and habits are not ready, the result is congestion. You have more movement, but a worse experience overall. Satisfaction goes down, not up.</p><p>AI can create the same kind of effect.</p><p>When the cost of making things drops, more things get made. But the system around that production does not instantly improve. Companies do not suddenly become better at choosing what matters. Markets do not suddenly become better at filtering quality. People do not suddenly become better at judging what is useful and what is noise.</p><p>So the bottleneck moves.</p><p>Before, the hard part was producing. Now, the hard part is deciding. What is worth building? What is good enough to ship? What is real value and what is just fast output? AI makes creation cheaper, but it does not make judgment equally cheap.</p><p>That is where the real problem begins.</p><p>If the amount of output grows faster than our ability to evaluate and absorb it, then we do not get productivity. We get clutter. We get noise. We get too many weak solutions competing for attention. And that can make the whole system feel worse, even if the tools themselves are more powerful.</p><p>This is why AI alone is not enough. New tools also require new ways of thinking. They require better processes, better standards, better education, and better infrastructure around decision-making. Otherwise, we are just adding more cars to roads that are already overloaded.</p><p>So yes, AI can eventually create real productivity. But that only happens after people and organizations learn how to work with this new reality. Until then, what looks like progress may actually be a period of confusion, overload, and lower overall satisfaction with much higher output of noise. </p>]]></content:encoded></item><item><title><![CDATA[iDmem: a memory runtime> one shared worldview, different agent interpretation and perspective]]></title><description><![CDATA[a shared memory layer gives three agents three different answers deterministically.]]></description><link>https://radudaniel.substack.com/p/idmem-a-memory-runtime-one-shared</link><guid isPermaLink="false">https://radudaniel.substack.com/p/idmem-a-memory-runtime-one-shared</guid><dc:creator><![CDATA[radu]]></dc:creator><pubDate>Sat, 28 Mar 2026 09:36:04 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!j6q0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F044bcc66-41b0-4c42-99a5-45fd0ba09ae7_870x436.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote><p>This is a personal hobby project. It has no pretensions of being a commercial product or production-ready system just my curiosity about how data would work better as memory and should work for AI agents.</p></blockquote><p>I&#8217;ve been building something I call iDmem. It&#8217;s a shared memory layer that sits between the places where context shows up in our work and the agents that need to use it. Slack, email, GPT, Claude, documents, API events. Instead of letting all of that live in separate pockets, I wanted one memory that could hold it together.</p><p>I didn&#8217;t build it because I wanted another AI product. I built it because I kept running into the same problem: too much context, spread across too many places, with no reliable way to reuse it. Before I get into how it works, it&#8217;s easier to show what a normal day looks like with it running.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://radudaniel.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading xyz! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p><strong>What this looks like on a normal day</strong></p><p>Here&#8217;s a real Tuesday with iDmem running in the background.</p><p><strong>Morning. </strong>Slack is alive. In our #general channel, Lavinia posts that she&#8217;s confirmed a partnership with a university for an employer branding campaign. Matei replies with a timeline for the content drops. I jump in with a note that the client budget got approved but we need to invoice by end of month. Three different people, three different signals all flowing into the same memory through the Slack connector.</p><p><strong>Midday. </strong>I&#8217;m in Claude, working through some strategic thinking about next quarter. The conversation touches on which verticals to prioritize and why our current ratecard doesn&#8217;t work for smaller companies. This flows into iDmem through MCP  the same memory brain, different source.</p><p><strong>Afternoon. </strong>I drag-and-drop a PDF into the iDmem web UI a 15-page report on student brand perception from a survey we ran (653 respondents). The import pipeline segments it, extracts claims, resolves entities, and files it alongside everything else. Same brain, third source.</p><p><strong>Now the interesting part.</strong></p><p>I open a DM with our OpenClaw bot in Slack. Just me and the bot, private. I ask: &#8220;What&#8217;s our financial situation with active clients right now?&#8221;</p><p>The bot queries iDmem through my personal agent profile. It knows I care about revenue, cash flow, invoicing deadlines, pipeline risk. It pulls up the budget approval from this morning, cross-references it with the ratecard discussion from Claude, and gives me a view weighted toward commercial exposure and timing. It mentions the end-of-month invoice deadline as the top priority.</p><p><strong>Meanwhile, in #marketing</strong>, Lavinia asks the same bot: &#8220;What&#8217;s happening with our clients and campaigns?&#8221;</p><p>Same memory. Same 3,800+ events. Same bot. But Lavinia&#8217;s agent profile is tuned toward content strategy, employer branding, audience positioning. She gets the university partnership at the top, the content drop timeline second, the brand perception survey findings third. The invoice deadline? It&#8217;s there, but it&#8217;s page-two context for her  not the lead.</p><p><strong>In #production</strong>, Matei asks: &#8220;Ce campanii avem active &#537;i ce trebuie livrat?&#8221;</p><p>He gets the timeline he posted this morning surfaced first, alongside the content drop schedule, the asset status, and the delivery dependencies. The ratecard discussion from my Claude session? Irrelevant to his world. It doesn&#8217;t show up in his top results.</p><p><strong>Three people. Same memory. Same bot. Three different &#8220;most important&#8221; answers.</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!j6q0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F044bcc66-41b0-4c42-99a5-45fd0ba09ae7_870x436.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!j6q0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F044bcc66-41b0-4c42-99a5-45fd0ba09ae7_870x436.png 424w, https://substackcdn.com/image/fetch/$s_!j6q0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F044bcc66-41b0-4c42-99a5-45fd0ba09ae7_870x436.png 848w, https://substackcdn.com/image/fetch/$s_!j6q0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F044bcc66-41b0-4c42-99a5-45fd0ba09ae7_870x436.png 1272w, https://substackcdn.com/image/fetch/$s_!j6q0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F044bcc66-41b0-4c42-99a5-45fd0ba09ae7_870x436.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!j6q0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F044bcc66-41b0-4c42-99a5-45fd0ba09ae7_870x436.png" width="870" height="436" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/044bcc66-41b0-4c42-99a5-45fd0ba09ae7_870x436.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:436,&quot;width&quot;:870,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:197602,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radudaniel.substack.com/i/192390882?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F044bcc66-41b0-4c42-99a5-45fd0ba09ae7_870x436.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!j6q0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F044bcc66-41b0-4c42-99a5-45fd0ba09ae7_870x436.png 424w, https://substackcdn.com/image/fetch/$s_!j6q0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F044bcc66-41b0-4c42-99a5-45fd0ba09ae7_870x436.png 848w, https://substackcdn.com/image/fetch/$s_!j6q0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F044bcc66-41b0-4c42-99a5-45fd0ba09ae7_870x436.png 1272w, https://substackcdn.com/image/fetch/$s_!j6q0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F044bcc66-41b0-4c42-99a5-45fd0ba09ae7_870x436.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p><strong>This isn&#8217;t magic, it&#8217;s architecture</strong></p><p>What&#8217;s happening under the hood is a separation that seems obvious once you see it, but that I haven&#8217;t found in the memory systems I&#8217;ve tested.</p><p><strong>One shared memory layer. Slack messages, Claude conversations, uploaded documents, and API events all flow into the same shared operational record. Raw events get processed into structured claims, entities, relationships, and temporal state.</strong></p><p><strong>Many personal lenses. </strong>At read time, not at write time, each agent applies their own filter. Domain affinity, weight bias, familiarity, and principles. The retrieval engine combines vector similarity with structural signals like entity importance, conflict tension, recency, and then adds this per-agent adjustment on top.</p><p><strong>The result: </strong>the same query over the same data produces different orderings for different agents. Not different data, different relevance. And it&#8217;s deterministic: ask the same question twice, get the same answer. Ask from a different perspective, get a different answer, but always the same different answer.</p><p><em>I think of it as shared memory, subjective interpretation.</em></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!I8YA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F982e345c-4f88-4aac-9c4d-2a219f17c3ab_870x240.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!I8YA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F982e345c-4f88-4aac-9c4d-2a219f17c3ab_870x240.png 424w, https://substackcdn.com/image/fetch/$s_!I8YA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F982e345c-4f88-4aac-9c4d-2a219f17c3ab_870x240.png 848w, https://substackcdn.com/image/fetch/$s_!I8YA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F982e345c-4f88-4aac-9c4d-2a219f17c3ab_870x240.png 1272w, https://substackcdn.com/image/fetch/$s_!I8YA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F982e345c-4f88-4aac-9c4d-2a219f17c3ab_870x240.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!I8YA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F982e345c-4f88-4aac-9c4d-2a219f17c3ab_870x240.png" width="870" height="240" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/982e345c-4f88-4aac-9c4d-2a219f17c3ab_870x240.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:240,&quot;width&quot;:870,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:127790,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radudaniel.substack.com/i/192390882?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F982e345c-4f88-4aac-9c4d-2a219f17c3ab_870x240.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!I8YA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F982e345c-4f88-4aac-9c4d-2a219f17c3ab_870x240.png 424w, https://substackcdn.com/image/fetch/$s_!I8YA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F982e345c-4f88-4aac-9c4d-2a219f17c3ab_870x240.png 848w, https://substackcdn.com/image/fetch/$s_!I8YA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F982e345c-4f88-4aac-9c4d-2a219f17c3ab_870x240.png 1272w, https://substackcdn.com/image/fetch/$s_!I8YA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F982e345c-4f88-4aac-9c4d-2a219f17c3ab_870x240.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p></p><p><strong>The proof that it&#8217;s not just noise</strong></p><p>A fair question: maybe the different results are random variation, not real perspective. So I ran benchmarks on real data  3,800+ memories from my own startup, three agent profiles based on actual team roles, 10 queries across prioritization, clients, pricing, content, risk, and metrics.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!SraA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a28e6e0-54a9-4761-9cd8-19684cbf3c66_800x304.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!SraA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a28e6e0-54a9-4761-9cd8-19684cbf3c66_800x304.png 424w, https://substackcdn.com/image/fetch/$s_!SraA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a28e6e0-54a9-4761-9cd8-19684cbf3c66_800x304.png 848w, https://substackcdn.com/image/fetch/$s_!SraA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a28e6e0-54a9-4761-9cd8-19684cbf3c66_800x304.png 1272w, https://substackcdn.com/image/fetch/$s_!SraA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a28e6e0-54a9-4761-9cd8-19684cbf3c66_800x304.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!SraA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a28e6e0-54a9-4761-9cd8-19684cbf3c66_800x304.png" width="800" height="304" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3a28e6e0-54a9-4761-9cd8-19684cbf3c66_800x304.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:304,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:67410,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radudaniel.substack.com/i/192390882?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a28e6e0-54a9-4761-9cd8-19684cbf3c66_800x304.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!SraA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a28e6e0-54a9-4761-9cd8-19684cbf3c66_800x304.png 424w, https://substackcdn.com/image/fetch/$s_!SraA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a28e6e0-54a9-4761-9cd8-19684cbf3c66_800x304.png 848w, https://substackcdn.com/image/fetch/$s_!SraA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a28e6e0-54a9-4761-9cd8-19684cbf3c66_800x304.png 1272w, https://substackcdn.com/image/fetch/$s_!SraA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a28e6e0-54a9-4761-9cd8-19684cbf3c66_800x304.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><ul><li><p>70% of queries: at least one agent sees a different #1 result</p></li><li><p>61% worldview divergence across top-3 results</p></li><li><p>100% consistency within the same agent across 5 identical runs</p></li><li><p>560&#215; more divergence between agents than within the same agent</p></li></ul><p>That last number matters most. The perspective signal is 560 times stronger than the noise floor. This isn&#8217;t randomness. It&#8217;s a stable perspective signal, expressed deterministically.</p><p><strong>What I&#8217;ve actually built (so far)</strong></p><p>This is the part where I go into some detail, because the architecture decisions matter and they&#8217;re where most of the thinking went.</p><p><strong>The ingestion layer: Universal Memory Fabric</strong></p><p>I started from the premise that memory quality is bounded by ingest quality. If information arrives truncated, without speaker attribution, without thread continuity, then even perfect retrieval can&#8217;t compensate.</p><p>So I built a Universal Memory Fabric a single gateway that normalizes everything into canonical events before the semantic pipeline even touches it. Every source gets its own connector, its own normalizer, and per-source deduplication via SHA-256 idempotency keys. Six sources are live in production: Slack (OAuth, threads, channel names), Gmail (OAuth, HTML fallback, pagination), MCP (Streamable HTTP works with GPT and Claude), OpenClaw (native plugin hooks), file import (web UI, with segmentation for long documents), and direct REST API.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!qaKC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75eef080-2543-412c-8bbd-62d193d9b61f_870x158.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qaKC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75eef080-2543-412c-8bbd-62d193d9b61f_870x158.png 424w, https://substackcdn.com/image/fetch/$s_!qaKC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75eef080-2543-412c-8bbd-62d193d9b61f_870x158.png 848w, https://substackcdn.com/image/fetch/$s_!qaKC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75eef080-2543-412c-8bbd-62d193d9b61f_870x158.png 1272w, https://substackcdn.com/image/fetch/$s_!qaKC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75eef080-2543-412c-8bbd-62d193d9b61f_870x158.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qaKC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75eef080-2543-412c-8bbd-62d193d9b61f_870x158.png" width="870" height="158" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/75eef080-2543-412c-8bbd-62d193d9b61f_870x158.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:158,&quot;width&quot;:870,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:58501,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radudaniel.substack.com/i/192390882?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75eef080-2543-412c-8bbd-62d193d9b61f_870x158.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!qaKC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75eef080-2543-412c-8bbd-62d193d9b61f_870x158.png 424w, https://substackcdn.com/image/fetch/$s_!qaKC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75eef080-2543-412c-8bbd-62d193d9b61f_870x158.png 848w, https://substackcdn.com/image/fetch/$s_!qaKC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75eef080-2543-412c-8bbd-62d193d9b61f_870x158.png 1272w, https://substackcdn.com/image/fetch/$s_!qaKC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75eef080-2543-412c-8bbd-62d193d9b61f_870x158.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p></p><p>But raw ingest isn&#8217;t enough. I learned the hard way that not everything that comes in should be treated equally. So I added a curation layer that runs before extraction: keep_core (full semantic extraction), keep_context (lighter treatment), archive_only (persist and embed but skip full extraction), and drop (tabular noise, generated boilerplate). This alone dramatically improved retrieval signal-to-noise.</p><p><strong>The write pipeline: from text to semantic memory</strong></p><p>When an event clears curation, it goes through a multi-stage extraction pipeline: micro-extraction for fast flags (decisions, commitments, preferences, urgency), full LLM extraction for structured claims with subject/predicate/object, entity and topic resolution linking claims to the knowledge graph, embedding generation (text-embedding-3-large), world state projection updating the shared truth with temporal awareness, and relationship extraction building the entity graph.</p><p>Every event enters Short-Term Memory (STM). Organic engagement promotes it to Long-Term Memory (LTM). Dormant memories auto-archive after 90 days. Archived memories can re-awaken if they become relevant again. This lifecycle keeps retrieval sharp even as the corpus grows.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wZRA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb07d33e-f8cf-48df-8421-45e58a42c888_840x210.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wZRA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb07d33e-f8cf-48df-8421-45e58a42c888_840x210.png 424w, https://substackcdn.com/image/fetch/$s_!wZRA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb07d33e-f8cf-48df-8421-45e58a42c888_840x210.png 848w, https://substackcdn.com/image/fetch/$s_!wZRA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb07d33e-f8cf-48df-8421-45e58a42c888_840x210.png 1272w, https://substackcdn.com/image/fetch/$s_!wZRA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb07d33e-f8cf-48df-8421-45e58a42c888_840x210.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wZRA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb07d33e-f8cf-48df-8421-45e58a42c888_840x210.png" width="840" height="210" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/eb07d33e-f8cf-48df-8421-45e58a42c888_840x210.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:210,&quot;width&quot;:840,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:70519,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radudaniel.substack.com/i/192390882?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb07d33e-f8cf-48df-8421-45e58a42c888_840x210.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!wZRA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb07d33e-f8cf-48df-8421-45e58a42c888_840x210.png 424w, https://substackcdn.com/image/fetch/$s_!wZRA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb07d33e-f8cf-48df-8421-45e58a42c888_840x210.png 848w, https://substackcdn.com/image/fetch/$s_!wZRA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb07d33e-f8cf-48df-8421-45e58a42c888_840x210.png 1272w, https://substackcdn.com/image/fetch/$s_!wZRA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb07d33e-f8cf-48df-8421-45e58a42c888_840x210.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p></p><p><strong>The read pipeline: perspective-aware retrieval</strong></p><p>This is where iDmem diverges from everything else I&#8217;ve seen. The system doesn&#8217;t just run a vector search. It builds a retrieval decision combining vector similarity (60% base), gravity (entity importance), tension (conflict density), resonance (topic alignment), recency minus decay, and the per-agent talent adjustment (&#177;0.3 from domain affinity, signal amplification, familiarity boost). That talent adjustment reshapes the relevance surface per agent  it&#8217;s not a filter, it&#8217;s a scoring component.</p><p><strong>Epistemic authority: not every voice gets equal weight</strong></p><p>This is the newest piece, from mid-March 2026. I realized that in a system where bots and humans both contribute memories, I need explicit rules about what can shape the shared truth.</p><p>I introduced three epistemic tiers. Tier A (authoritative)  human direct facts, system events, tool-observed states. Can create and supersede current state. Tier B (operational)  agent direct reports. Can add new context but can&#8217;t override a Tier A fact. Tier C (support)  summaries, interpretations, hypotheses. Persists as support_only  available for recall but doesn&#8217;t move the worldview on its own.</p><p>This prevents the circular problem where a bot summarises something, the summary gets re-ingested, and suddenly the bot&#8217;s paraphrase becomes organisational truth.</p><p><strong>Temporal runtime: change is not contradiction</strong></p><p>Another lesson from production: &#8220;Mara moved from Marketing to Product&#8221; is an evolution, not a conflict. I built a temporal runtime with semantic property normalization, belief modes (single_current vs multi_active), and supersession logic. Previous states become historical, not deleted. When there&#8217;s a genuine conflict, the answer layer stays agnostic and explains why.</p><p></p><p><strong>The operational backbone: 23 maintenance jobs</strong></p><p>The system runs 23 automated background jobs on a cron schedule  memory tier lifecycle, knowledge graph maintenance, conflict detection, skill pipeline, identity resolution, quality regression tests, and a weekly auto-calibrator that suggests threshold adjustments based on review decisions and feedback. All per-workspace, multi-tenant, with full audit logging.</p><p><strong>Why I think this matters</strong></p><p>The agentic AI world is moving toward specialization. Nobody wants one generic assistant  they want agents with expertise, context, and perspective. But if all agents share the same flat memory with the same flat retrieval, they&#8217;re all the same agent wearing different hats.</p><p>The missing piece is a memory layer that&#8217;s shared (so agents aren&#8217;t working on isolated islands) but differentiated (so each agent sees what matters to them). Where the objective record stays clean and auditable, but the subjective reading adapts to who&#8217;s asking and why. And where bot-generated context doesn&#8217;t silently become the shared truth.</p><p>Several lines of research are moving in this direction: shared world plus personal lens, memory as runtime. But most products still flatten everything into one retrieval layer.</p><p>I don't know where this is heading. For now it's fun and I keep iterating because it helps me do context-aware retrieval for different agents in my day-to-day work. There are still many things I don't have solutions for. But for me, at the current scale a team of 10 people  it works well enough.</p><p><em>more details at idmem.com</em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://radudaniel.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading xyz! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Excel cu UI misto ]]></title><description><![CDATA[Mi se pare c&#259; una dintre cele mai utile chestii pe care le po&#539;i face cu AI e ceva foarte banal, cu haine noi.]]></description><link>https://radudaniel.substack.com/p/excel-cu-ui-misto</link><guid isPermaLink="false">https://radudaniel.substack.com/p/excel-cu-ui-misto</guid><dc:creator><![CDATA[radu]]></dc:creator><pubDate>Fri, 27 Mar 2026 16:18:34 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!2jc7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88f23520-8d5d-408c-abc5-b92289577a5f_3436x2154.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Mi se pare c&#259; una dintre cele mai utile chestii pe care le po&#539;i face cu AI e ceva foarte banal, cu haine noi. <br><br>To&#539;i lucr&#259;m &#238;n Excel. Sau aproape to&#539;i. Excel-ul e peste tot &#537;i, sincer, ca instrument de lucru cu date, e foarte bun. Po&#539;i s&#259; pui ordine &#238;n informa&#539;ie, s&#259; faci formule, s&#259; legi tabele, s&#259; construie&#537;ti destul de mult &#238;n el. Problema nu e c&#259; Excel-ul nu poate. Problema e c&#259; pentru foarte mul&#539;i oameni e greu de folosit. Datele sunt acolo, valoarea e acolo, doar c&#259; experien&#539;a de lucru cu ele e greoaie. &#536;i de aici apare problema real&#259;: c&#226;nd oamenilor le este greu s&#259; citeasc&#259; &#537;i s&#259; &#238;n&#539;eleag&#259; datele, ajung s&#259; ia decizii din feeling, nu din ce au efectiv &#238;n fa&#539;&#259;.<br><br>&#536;i aici mi se pare mie c&#259; AI-ul chiar ajut&#259; &#238;ntr-un mod foarte concret. am luat un Excel cu mai multe sheet-uri &#537;i i-am zis sa imi faca o interfa&#539;&#259; HTML peste datele astea. At&#226;t. <br><br>F&#259;r&#259; prompt-uri kilometrice, f&#259;r&#259; nu &#537;tiu ce arhitectur&#259;, f&#259;r&#259; complica&#539;ii. Focus-pocus, tot spreadsheet-ul &#259;la greu cu mai multe pagini si greu de urm&#259;rit s-a transformat &#238;ntr-un dashboard curat, pe care &#238;l deschizi &#238;n browser &#537;i &#238;l folose&#537;ti usor. Cu dropdown-uri, autocomplete, filtre, search, navigare clar&#259;. Adic&#259; exact genul de interac&#539;iune care vine natural pentru cineva care vrea doar s&#259; g&#259;seasc&#259; rapid informa&#539;ia &#537;i s&#259; o poat&#259; folosi.<br><br>De asta zic c&#259;, de multe ori, rat&#259;m esen&#539;a c&#226;nd vorbim despre AI. Ne uit&#259;m prea mult la ce e impresionant &#537;i prea pu&#539;in la ce e util. Pentru majoritatea echipelor, mai ales a celor non-tehnice, valoarea nu vine din cine &#537;tie ce sistem SF, ci din faptul c&#259; po&#539;i lua o fric&#539;iune banal&#259;, pe care toat&#259; lumea o accept&#259; de ani de zile, &#537;i s&#259; o faci mai u&#537;oar&#259;. At&#226;t. Nu trebuie s&#259; schimbi toat&#259; compania. Uneori e suficient s&#259; faci datele mai u&#537;or de v&#259;zut &#537;i de folosit.<br><br>P&#226;n&#259; la urm&#259;, Excel-ul t&#259;u nu are neap&#259;rat nevoie de un agent. Are nevoie doar s&#259; nu mai sperie omul care &#238;l deschide.<br><br>Nu e despre agen&#539;i, nu e despre workflow-uri complicate &#537;i nici despre pove&#537;ti din astea mari cu &#8222;LLM-urile vor &#238;nlocui tot&#8221;. Astea sun&#259; impresionant, dar pentru mul&#539;i oameni doar fac subiectul s&#259; par&#259; mai departe dec&#226;t este de fapt.<br>Realitatea e mult mai simpl&#259;.</p><div class="image-gallery-embed" data-attrs="{&quot;gallery&quot;:{&quot;images&quot;:[{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/88f23520-8d5d-408c-abc5-b92289577a5f_3436x2154.png&quot;},{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/17db0f38-aedc-46e0-9220-cbd838444216_3406x2166.png&quot;},{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d6a355e0-58bf-4def-8747-5b9bb1751b35_3432x2154.png&quot;},{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7a42c1bc-5e67-437a-a637-1276ab94aebe_1802x1914.png&quot;}],&quot;caption&quot;:&quot;&quot;,&quot;alt&quot;:&quot;&quot;,&quot;staticGalleryImage&quot;:{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0547009b-81cb-41ee-8c8c-12be9ad558e1_1456x1456.png&quot;}},&quot;isEditorNode&quot;:true}"></div><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://radudaniel.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading xyz! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[AI doesn’t just accelerate. It makes things transparent.]]></title><description><![CDATA[I move much faster with AI, but speed is only the obvious part of the story.]]></description><link>https://radudaniel.substack.com/p/ai-doesnt-just-accelerate-it-makes</link><guid isPermaLink="false">https://radudaniel.substack.com/p/ai-doesnt-just-accelerate-it-makes</guid><dc:creator><![CDATA[radu]]></dc:creator><pubDate>Tue, 24 Mar 2026 13:26:25 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!i35G!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81b34056-6c8c-428d-a154-e698d3aeebbc_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I move much faster with AI, but speed is only the obvious part of the story. The deeper shift is that whole areas I used to access only through other people with  specialised expertise are now available to me directly. An LLM can take a stream of ideas that is sometimes structured and logical, and other times messy, intuitive, and still in the process of becoming coherent, and translate it into whatever language I need: writing, code, legal framing, spreadsheets, UI. What makes it especially powerful is how quickly it moves across domains and combines them.</p><p>That changes how I test things. Ideas I would previously leave at the level of instinct or vague conviction can now be pushed into form, challenged, and either discarded or developed almost immediately. I can kill weak assumptions much faster and get to something functional in a fraction of the time it used to take.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://radudaniel.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading xyz! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>But that is also where the real tension begins, <strong>because AI does not just accelerate work. It radically increases transparency.</strong></p><p>It opens up areas that used to be gated by expert networks, referrals, and social proximity. In many cases, we were never actually equipped to evaluate those experts directly, so we evaluated them indirectly through outcomes. The problem is that in a lot of fields, outcomes do not reveal themselves right away. In accounting, for example, mediocre or sloppy work may not become visible until years later, during due diligence. The same basic pattern exists across many professions. Even when the feedback loop was not measured in years, it was still long enough that people relied mostly on reputation, trust, and the assumption that the person on the other side knew what they were doing.</p><p>A lot of subpar work was accepted not because it was truly convincing, but because there were few real alternatives or it was good enough and the difference would have meant a dispropotionate amount of effort or cost. The best people were either invisible to you or too expensive to access. And the same question always sat underneath the transaction: how do I know this is real? How do I know a document genuinely takes one hundred hours rather than two? How do I know a sprint really needs two weeks rather than two hours with the right tools and someone who actually knows how to think through the problem?</p><p>That is where the balance shifts.</p><p>People who were delivering mediocre work, fully aware that they were operating close to the minimum acceptable standard, but protected by the client&#8217;s lack of access, lack of visibility, or lack of alternatives, now have a real problem. The client is no longer locked out. They have access to the same tools. They can produce a decent first draft themselves. Someone with even a modest amount of cross-disciplinary experience can get surprisingly far, sometimes far enough to build a scalable MVP and put it in the market directly. It becomes much easier to tell the difference between substance and filler.</p><p>The core question is no longer simply, how much do you cost? It is: what thinking do you add on top of what the tool can already do?</p><p>For a lot of people, that is an uncomfortable question. Because if you are not adding real judgment, real taste, real synthesis, real accountability, then the only differentiator left is price. And price is a brutal place to compete, because costs are not abstract. They are shaped by where you live, how you are taxed, what your obligations are, and what kind of life your environment expects you to sustain. Those are not variables you can endlessly compress. Someone elsewhere may be operating at a fraction of your cost base.</p><p>So if the quality of your thinking does not clearly create value, price will.</p><p>And that exposes something that has been true for a long time: a significant share of internal and outsourced roles have been underdelivering for years. AI did not create that reality. It simply made it harder to hide behind process, opacity, jargon, or time.</p><p>At this point, the options are fairly stark. You either level up in a real way, in the depth of your judgment, the quality of your reasoning, and the value you create beyond raw execution, or you end up in a race to the bottom on cost.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://radudaniel.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading xyz! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Sales is hard, not glamorous]]></title><description><![CDATA[There&#8217;s no shortage of advice on how to sell: GTM, lead magnets, content generated from matrices built around who knows how many ICPs.]]></description><link>https://radudaniel.substack.com/p/sales-is-hard-not-fancy</link><guid isPermaLink="false">https://radudaniel.substack.com/p/sales-is-hard-not-fancy</guid><dc:creator><![CDATA[radu]]></dc:creator><pubDate>Mon, 16 Mar 2026 05:43:40 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!i35G!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81b34056-6c8c-428d-a154-e698d3aeebbc_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>There&#8217;s no shortage of advice on how to sell: GTM, lead magnets, content generated from matrices built around who knows how many ICPs. Out of all this, you often get systems that are absurdly complicated, with dozens of apps stitched together. On top of that, there are thousands of courses on persuasion techniques and behavioral psychology. It&#8217;s intimidating. It makes it feel like you need to be some kind of multidisciplinary expert. Technology helps, understanding human behavior helps, understanding market dynamics helps too, but the foundation is far less sophisticated or academically impressive and far more important: your offer has to clearly explain what it does, how it helps, what its key qualities are, and why it matters. It has to inform accurately, educate the potential buyer about the space, and reach the people who can actually decide whether they need it or not. In other words, people who understand the problem, have the context, and can make a decision. Simple, clear, no smoke and mirrors.</p><p>The ironic part is that this, the thing that looks simple, is actually the hardest part. It&#8217;s much easier to pile on bells and whistles, do spray-and-pray marketing, or fill the calendar with discovery sessions. Sales conversations and sales strategy would probably be more useful if they focused more on this part, even if it&#8217;s boring and moves at a snail&#8217;s pace, because that&#8217;s where the real work is. The bells and whistles don&#8217;t help much here.</p><p>Why is it hard? Because there&#8217;s a lot of guesswork, lots of small iterations repeated to the point of exhaustion, and an effort-to-reward ratio that can feel brutally bad. By comparison, building a funnel from discovery to closing, or even post-sale, with ten phases for five ICPs and a different tool for every step, is way more appealing. It doesn&#8217;t just sound fancy, it is fancy. Pure dopamine.</p>]]></content:encoded></item><item><title><![CDATA[AI created more work and more job roles in our company. ]]></title><description><![CDATA[So far, AI has given us more work, which does not translate to more contracts or more business directly, in the short term.]]></description><link>https://radudaniel.substack.com/p/ai-created-more-work-and-more-job</link><guid isPermaLink="false">https://radudaniel.substack.com/p/ai-created-more-work-and-more-job</guid><dc:creator><![CDATA[radu]]></dc:creator><pubDate>Fri, 13 Mar 2026 14:38:03 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!oWFL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf2e2a08-d0e2-4187-868b-c8f43d97f848_2340x1561.avif" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>So far, AI has given us more work, which does not translate to more contracts or more business directly, in the short term. For us it meant mostly much better internal tools that improved workflows which either used to take up a lot of time, or simply weren&#8217;t getting done at all because we kept pushing them down the list.</p><p>Metrics, KPIs, reporting. We sit on a lot of data &amp; now we can build tools, APIs, custom dashboards that automate the collection and consolidation we used to do by hand. I am as confident as anyone guessing the future could be that this will show in the business too in a few months, being 6 or 18 &#128578; but not because we did anything magical because we did things we simply couldn&#8217;t justify before. At our size, spending the $$, time &amp; team effort to buy that kind of capability just did not make sense. We tried every once in a while and realised we just do not have the scale or tools to absorb and have a consistent approach.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!oWFL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf2e2a08-d0e2-4187-868b-c8f43d97f848_2340x1561.avif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!oWFL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf2e2a08-d0e2-4187-868b-c8f43d97f848_2340x1561.avif 424w, https://substackcdn.com/image/fetch/$s_!oWFL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf2e2a08-d0e2-4187-868b-c8f43d97f848_2340x1561.avif 848w, https://substackcdn.com/image/fetch/$s_!oWFL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf2e2a08-d0e2-4187-868b-c8f43d97f848_2340x1561.avif 1272w, https://substackcdn.com/image/fetch/$s_!oWFL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf2e2a08-d0e2-4187-868b-c8f43d97f848_2340x1561.avif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!oWFL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf2e2a08-d0e2-4187-868b-c8f43d97f848_2340x1561.avif" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/af2e2a08-d0e2-4187-868b-c8f43d97f848_2340x1561.avif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:321251,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/avif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://radudaniel.substack.com/i/190841785?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf2e2a08-d0e2-4187-868b-c8f43d97f848_2340x1561.avif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!oWFL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf2e2a08-d0e2-4187-868b-c8f43d97f848_2340x1561.avif 424w, https://substackcdn.com/image/fetch/$s_!oWFL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf2e2a08-d0e2-4187-868b-c8f43d97f848_2340x1561.avif 848w, https://substackcdn.com/image/fetch/$s_!oWFL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf2e2a08-d0e2-4187-868b-c8f43d97f848_2340x1561.avif 1272w, https://substackcdn.com/image/fetch/$s_!oWFL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf2e2a08-d0e2-4187-868b-c8f43d97f848_2340x1561.avif 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>For many AI is a foot in the door to a new domain or a new way of doing things, one that used to require a specialist. AI makes this accesibile. it does not enable creating a product or service at market standards, but understanding the domain and toying around, iterating.. The ability to understand it at a macro level, with some effort, and to play within enough to actually learn it through rapid iterations and feedback loops.</p><p>I can start with a hypothesis, iterate on it quickly, and turn it into something I can communicate. I can test concepts, even at the intersection of different disciplines where I would previously have needed specialists: design, code, strategy, whatever. This can be done in days, not months, without waiting or imposing on a team to validate a hunch.</p><p>anyone who has ever worked on validating ideas knows how painful those processes can be. They&#8217;re slow, frustrating, and unclear for everyone involved. The objective is usually fuzzy, it keeps changing, and money gets burned without producing much in the short term. That&#8217;s what makes this kind of work expensive and puts pressure on the whole team. Now I can get to a PoC in a matter of days or weeks, without dragging other people into that process too early, and at a much lower cost.</p><p>But a PoC is not a market-ready product. The excitement of speed, and the fact that each of us can now cobble together something surprisingly fast, can induce a state of naive confidence. It looks &amp; feels good, but it doesn&#8217;t hold up once real pressure hits. If you want something that is actually business-ready, you still end up needing specialists. People with enough experience to anticipate edge cases, spot the critical angles no one has dealt with yet, and design scalable architecture that can hold the same standard no matter how many users you have. So it&#8217;s entirely possible that senior people won&#8217;t have less work, but more. Or maybe the same amount of work, just of a different kind. More multi-project work, more time spent where their expertise actually creates the most value.</p><p>The bigger question is juniors. How do people grow if the first 10,000 hours look completely different?</p><p>At the market level, I don&#8217;t know. But I can say what happened in our case. All of this gave us much more transparency and much more clarity in the data. Senior people now spend their time where they create the most value, because things are clearer, more actionable, and based on data that updates daily and hourly. We&#8217;re no longer working with no indicators, or with monthly lagging indicators. We have the data right now. The lag has been compressed to hours, which means we can act fast and act preventively. A large part of our capacity is now shifting into planning, forecasting, and real-time adjustment.</p><p>At the same time, there&#8217;s still a very long tail across data, admin, and operations that AI or tools can&#8217;t handle on their own. The difference is that this work is now visible, measurable, and clear. And there&#8217;s a lot of it. That&#8217;s where junior people come in for us. In the past, we wouldn&#8217;t even allocate resources there, because it wasn&#8217;t clear what needed to be done, and the process for surfacing and measuring that work simply didn&#8217;t exist. We even built tools specifically for junior team members, because it&#8217;s not enough to just see and measure the work. You also need to give people instruments they can actually use to act on it. Especially at junior level, where the tool, through its flow, doesn&#8217;t just guide the person but also teaches them how to work.</p><p>Without AI, which gave us the ability to build custom tools, we wouldn&#8217;t have been able to do that. We now have two junior people on the team that we probably wouldn&#8217;t have had otherwise. Not because the demand wasn&#8217;t there, but because we wouldn&#8217;t have been able to surface it clearly or give them a working method. So in our case, more things to do, we hired more.</p>]]></content:encoded></item><item><title><![CDATA[Some honest work #openClaw #agents #vibecoding]]></title><description><![CDATA[Kiki is useful.]]></description><link>https://radudaniel.substack.com/p/some-honest-work-openclaw-agents</link><guid isPermaLink="false">https://radudaniel.substack.com/p/some-honest-work-openclaw-agents</guid><dc:creator><![CDATA[radu]]></dc:creator><pubDate>Sat, 07 Mar 2026 13:37:48 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!E09I!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa388e191-bb3e-4462-ac02-914dfe467b77_2092x1192.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Kiki is useful. Not mind-blowing, but it saves us a few clicks, and being able to talk to it from anywhere without needing a big screen matters more than it sounds. I can speak to it and get information from the CRM without opening anything, without clicking around, without context switching. Did I need OpenClaw plus a custom-built CRM for that. that&#8217;s a big NO. What we do need, though, is an easy way to build specific workflows and define granular access. That is where it actually helps, especially once you add the idea of agents and orchestration.</p><div class="image-gallery-embed" data-attrs="{&quot;gallery&quot;:{&quot;images&quot;:[{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a388e191-bb3e-4462-ac02-914dfe467b77_2092x1192.png&quot;},{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/909917d2-d948-41ee-9dfc-07b62dcc4068_1790x964.png&quot;}],&quot;caption&quot;:&quot;&quot;,&quot;alt&quot;:&quot;&quot;,&quot;staticGalleryImage&quot;:{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5806c19d-13f4-4a58-9570-4278d95540e9_1456x720.png&quot;}},&quot;isEditorNode&quot;:true}"></div><p>It is still unclear whether these systems are genuinely useful beyond two or three narrow use cases, and whether they can become profitable. I had already sold myself on the business case: productivity, scale, automation. In practice, the gains are modest, they take a lot of time to unlock, and they come with dependencies across multiple layers. They consume time, demand patience and attention to detail, and require daily iteration measured in hours, not minutes.</p><p>I spent most of my time on the tooling side, mainly because I already had an internal foundation for financial management, plus a mix of outbound and CRM or, in the language of the current hype cycle, GTM. Some tools are good out of the box, like Notion or Monday. But most of them are not database-first, and they force opinionated interfaces into the interaction model, which creates friction. I built both the GTM/CRM system and the finance app from the database upward: the human agent gets access to a tabelar UI that mirrors the database structure, while the AI agent gets access to raw data &amp; and some of the functions that can manipulate that data directly. There are 2 more UI methods for the human agent to access data &amp; functions </p><ul><li><p>opinionated UIs </p></li><li><p>an LLM chat window </p></li></ul><p>The OpenClaw and CRM interaction demos are not exactly spectacular. But it is honest work. They save a few minutes a day and more relevant perhaps is the mental load, and those  matter even more when you are away from your computer. </p><h2>The architecture I am currently exploring to go forward for a small team of agents has four layers:</h2><ol><li><p><strong>The orchestrator.</strong> An LLM that coordinates the system, decides who comes in and in what order. It handles task routing and policy control. It does not execute. It directs.</p></li><li><p><strong>Specialized agents.</strong> Sales, Admin, Finance, People. Each has a clear role inside a small, tightly defined perimeter. Each does one thing well.</p></li><li><p><strong>Deterministic tools.</strong> Agents do not operate directly in text. They execute through concrete tools: Sales through the CRM and outbound systems, Admin through project management and docs, Finance through the tracking application. Text is the thinking interface. Execution happens in real systems.</p></li><li><p><strong>The memory layer, a shared pool.</strong> A memory layer all agents use so they can understand the world in a shared way and still interpret it differently depending on context. It has two modes:</p></li></ol><ul><li><p><strong>Shared World State:</strong> entities, events, states, history. What happened, what exists, what is true right now.</p></li><li><p><strong>Personal View:</strong> each agent&#8217;s lens on the same underlying reality. Sales sees a lead. Finance sees a cost. Same contact, different interpretations.</p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://radudaniel.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading xyz! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Using OpenClaw to make a VSM app using telegram. ]]></title><description><![CDATA[OpenClaw has been pretty quiet lately, had little time for it other than working on a memory app for it.]]></description><link>https://radudaniel.substack.com/p/using-openclaw-to-make-a-vsm-app</link><guid isPermaLink="false">https://radudaniel.substack.com/p/using-openclaw-to-make-a-vsm-app</guid><dc:creator><![CDATA[radu]]></dc:creator><pubDate>Fri, 27 Feb 2026 22:00:04 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!4SB4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62f1f38b-58ec-4c4f-b688-1c289a45fd74_1988x898.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>OpenClaw has been pretty quiet lately, had little time for it other than working on a memory app for it. </p><p><strong>the main question people throw at me: Does it help me in my day to day business?</strong></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://radudaniel.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading xyz! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>So I thought I would do a small experiment,  I&#8217;ve been working with a logistics team on a Value Stream Map.  old school, on walls, with post-its and flip charts. Then when data starting piling up we moved things to Miro. </p><p>Miro is great, has structure, collaboration, sticky notes, arrows, everything. </p><p>Except in a warehouse, you don&#8217;t live in Miro. You live between shelves, scanners, phones, and people who have 30 seconds to tell you something before they move on. And Miro isn&#8217;t exactly easy. on desktop it&#8217;s fine, on a phone in a warehouse it&#8217;s... rough. It gets technical fast.</p><p>So I pulled out my phone, took a photo of the board, sent it to Kiki (open claw assistant) via Telegram, and told it in Romanian, by voice: make something visual out of this VSM, with a small guide on each step in the flow.</p><p><strong>20 minutes later</strong>  a first view. <strong>1 hour later</strong>  a unique link, accessible to the whole team, with back-end storage. <strong>3 hours and 8 $ later</strong>  a site with users, login, responsive, where people can see the flow and input data. (the price does not include the domain for which I paid a bit more)  </p><p>A Value Stream &#8220;app&#8221;, not a static poster.</p><p>What it actually does:</p><p>Each point in the flow is a piece of the process. And on each one you can input &#8212; time, execution details, technical specifics, observations. Where it hurts, where people wait, what repeats.</p><p>Every person has an account. They input data. And we can see on each point who entered what. It&#8217;s not &#8220;I think someone did like this&#8221; It&#8217;s a trace. It&#8217;s real collaboration and it&#8217;s connected to a google sheet if we need spreadsheet format, the data is already there, ready to use.</p><div class="image-gallery-embed" data-attrs="{&quot;gallery&quot;:{&quot;images&quot;:[{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/62f1f38b-58ec-4c4f-b688-1c289a45fd74_1988x898.png&quot;},{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e10ca072-8764-4d48-b8f2-c54783450e71_702x817.png&quot;},{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/21ced360-c6b8-4f3f-8908-9e165982efaf_706x767.png&quot;},{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9e70b0e9-f330-4eed-b262-a60f852803b5_400x921.png&quot;}],&quot;caption&quot;:&quot;&quot;,&quot;alt&quot;:&quot;&quot;,&quot;staticGalleryImage&quot;:{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c91190f2-8df6-4677-8e07-3f453b7d07ea_1456x1456.png&quot;}},&quot;isEditorNode&quot;:true}"></div><p></p><p></p><p><strong>Next steps:</strong> I want to feed it photos and video for each process step, see how it analyzes them. I want to test if it can estimate cycle times from footage. Send notifications. Automate steps that otherwise need a human operator. invite others in TG to talk to Kiki and help build a better app for them, as they use it and need it, and they know their pain point way better than I do. </p><p>What is relevant and I want to emphasise - everything was done through a voice interface, on Telegram, in Romanian language, from a phone. </p><p>Could I have done this with other tools? Absolutely. But it was simple, it was actually fun, and 8 dollars doesn&#8217;t break the bank.</p><p>I used Kimi K2.5 as the model. The difference vs. Opus 4.6: a query to Opus costs on average between $0.05 and $0.80. The same query to Kimi K2.5 between $0.01 and $0.09. It&#8217;s slower, not as precise, but it did the job beautifully.</p><p>For me this is a concrete example of productivity. You move faster, clearer, and now I can build as many VSMs as I need. The next ones will be cheaper. And I&#8217;ll keep adding functionality.</p><p>That&#8217;s what a hobby is good for.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://radudaniel.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading xyz! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[From Demo to Teammate: Kiki on OpenClaw, Week One]]></title><description><![CDATA[4 days ago (Feb 14, 2026), I published my OpenClaw setup: My OpenClaw Setup.]]></description><link>https://radudaniel.substack.com/p/from-demo-to-teammate-kiki-on-openclaw</link><guid isPermaLink="false">https://radudaniel.substack.com/p/from-demo-to-teammate-kiki-on-openclaw</guid><dc:creator><![CDATA[radu]]></dc:creator><pubDate>Thu, 19 Feb 2026 07:12:08 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!DOMN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7977cad2-a447-4f50-bf33-5ce8605ced44_3402x1332.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>4 days ago (Feb 14, 2026), I published my OpenClaw setup: <a href="https://radudaniel.substack.com/p/my-openclaw-setup">My OpenClaw Setup</a>.</p><p>At that point, Kiki worked, but mostly in the &#8220;it responds in a channel&#8221; way. The team&#8230; wasn&#8217;t impressed. Not because they disliked it, but because early agent systems often feel like half-backed Slowly, people warmed up. They started giving Kiki small tasks. Low-risk requests. Things that wouldn&#8217;t break a day if they failed.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://radudaniel.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading xyz! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>Kiki has a clothes now</h2><p>built a small &#8220;command center&#8221; dashboard that answers the week-one questions to answer some question and because is cool</p><ul><li><p>Is the gateway up? Is the sandbox healthy?</p></li><li><p>Which model is running right now?</p></li><li><p>Are channels connected (Slack/Telegram)?</p></li><li><p>What&#8217;s the daily cost, cache hit rate, and token usage?</p></li><li><p>Which sessions are the most expensive (and why)?</p></li><li><p>What background jobs are running (watchdog, backups, log rotation)?</p></li><li><p>What&#8217;s in the task pipeline?</p></li></ul><p>It&#8217;s not fancy. It&#8217;s just enough visibility to turn debugging from folklore into a checklist.</p><div class="image-gallery-embed" data-attrs="{&quot;gallery&quot;:{&quot;images&quot;:[{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7977cad2-a447-4f50-bf33-5ce8605ced44_3402x1332.png&quot;},{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c029a1dd-578a-4941-8fe4-a16de8088405_2974x1916.png&quot;},{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/39db11c4-1eb7-4c17-98c6-a2db585bad96_3384x1894.png&quot;},{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9da9303e-5b71-4d2e-b56d-f873339c2987_3412x1866.png&quot;}],&quot;caption&quot;:&quot;&quot;,&quot;alt&quot;:&quot;&quot;,&quot;staticGalleryImage&quot;:{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ba31fc30-e4c9-4773-8495-a23b22c1bcf0_1456x1456.png&quot;}},&quot;isEditorNode&quot;:true}"></div><h2>The first real tasks</h2><p>One colleague asked for a contract translation, rewritten into a double-sided bilingual format, plus an addendum. Kiki produced a full draft in ~20 minutes, including a few product-specific details we needed in the addendum. this would have taken hours of manual work</p><p>That win triggered the next wave: more back-and-forth, more operational requests, more &#8220;okay, but can it do <em>this</em>?&#8221;</p><p>Then another colleague dropped:</p><blockquote><p>&#8220;Find tent suppliers. I need phone + email.&#8221;</p></blockquote><p>Claude Haiku 4.5 found three suppliers&#8230; then refused to continue, claiming it didn&#8217;t have web access. Same prompt. Same environment. Different model (Kimi K2.5): ten suppliers with full contact details, formatted cleanly.</p><p></p><h2>What changed in 4 days (Feb 14 &#8594; Feb 18)</h2><h3>1) Sandbox</h3><p><strong>Before:</strong> our sandbox was a plain <code>debian:bookworm-slim</code> container. Every recreate wiped tools. Curl, Python, basics. Gone. We logged <strong>574 fetch failures/week</strong>.</p><p><strong>Now:</strong> we baked a custom image: <code>cv30-sandbox:latest</code> with everything installed at build time:</p><ul><li><p>Python 3.11 + pip</p></li><li><p>curl/wget, jq, ripgrep, git</p></li><li><p>pandoc, poppler-utils, sqlite3</p></li><li><p>gog CLI</p></li><li><p>Python libs: <code>python-docx</code>, <code>openpyxl</code>, <code>beautifulsoup4</code>, <code>csvkit</code></p></li></ul><h3>2) Model roulette: &#8220;model choice&#8221; is workflow choice</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!u2Zk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdea064cb-f5d5-4f30-b91b-dea6825b6527_1294x442.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!u2Zk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdea064cb-f5d5-4f30-b91b-dea6825b6527_1294x442.png 424w, https://substackcdn.com/image/fetch/$s_!u2Zk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdea064cb-f5d5-4f30-b91b-dea6825b6527_1294x442.png 848w, https://substackcdn.com/image/fetch/$s_!u2Zk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdea064cb-f5d5-4f30-b91b-dea6825b6527_1294x442.png 1272w, https://substackcdn.com/image/fetch/$s_!u2Zk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdea064cb-f5d5-4f30-b91b-dea6825b6527_1294x442.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!u2Zk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdea064cb-f5d5-4f30-b91b-dea6825b6527_1294x442.png" width="1294" height="442" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dea064cb-f5d5-4f30-b91b-dea6825b6527_1294x442.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:442,&quot;width&quot;:1294,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:54567,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radudaniel.substack.com/i/188440094?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdea064cb-f5d5-4f30-b91b-dea6825b6527_1294x442.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!u2Zk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdea064cb-f5d5-4f30-b91b-dea6825b6527_1294x442.png 424w, https://substackcdn.com/image/fetch/$s_!u2Zk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdea064cb-f5d5-4f30-b91b-dea6825b6527_1294x442.png 848w, https://substackcdn.com/image/fetch/$s_!u2Zk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdea064cb-f5d5-4f30-b91b-dea6825b6527_1294x442.png 1272w, https://substackcdn.com/image/fetch/$s_!u2Zk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdea064cb-f5d5-4f30-b91b-dea6825b6527_1294x442.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>What mattered wasn&#8217;t &#8220;can it call tools&#8221;, but &#8220;does it chain them until the job is done&#8221;.</p><p>A good chain looks like:</p><p><code>web_search &#8594; web_fetch &#8594; verify &#8594; extract &#8594; format</code></p><p>A bad chain looks like:</p><p><code>web_search &#8594; shrug &#8594; &#8220;that&#8217;s all I can find&#8221;</code></p><p><strong>Rule:</strong> &#8220;best at benchmarks&#8221; is not &#8220;best at being useful at 4:47 PM on a Tuesday.&#8221;</p><div><hr></div><h3>3) <strong>Before:</strong> workspace mounted read-only. Kiki couldn&#8217;t write anything back. No persistence.</h3><p><strong>Now:</strong> read-write workspace. Kiki writes:</p><ul><li><p>tool learnings</p></li><li><p>daily observations</p></li><li><p>people profiles</p></li></ul><p>Everything is indexed via hybrid memory search (Gemini embeddings + BM25), so Kiki can retrieve the right scraps later.</p><div><hr></div><h3>4) Team access:  opened DMs </h3><p><strong>Before:</strong> one Slack channel + my DM.</p><p><strong>Now:</strong> <strong>12 team members</strong> can DM Kiki directly. Each DM is sandboxed. People started using it the way people actually use assistants: privately, casually, repeatedly.</p><p>Small change. Big impact.</p><p></p><h3>5) Workflows: </h3><p>We already had <code>web_search</code> and <code>web_fetch</code>. The problem was behavioral: Kiki didn&#8217;t reliably combine them. It would search once, get partial results, and stop.</p><p>So we added a small self-learning spine:</p><ol><li><p><strong>TOOLS.md</strong><br>A playbook of concrete workflows (research, document processing, contact research) plus anti-patterns (example: never claim &#8220;no web access&#8221; when the tools exist).</p></li><li><p><strong>memory/tool-learnings.md</strong><br>A living log of &#8220;what worked / what failed / what to try next time.&#8221;</p></li><li><p><strong>AGENTS.md (TOOL LEARNING section)</strong><br>Rules for self-improvement: check tool-learnings before using tools, log new discoveries, prefer repeatable patterns.</p></li></ol><p></p><h2>The original bottlenecks, now</h2><p>From the Feb 14 post, I had six bottlenecks. Here&#8217;s the scoreboard as of Feb 18:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!QBRM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2360b5e8-0e8e-42cb-a0da-1d3772cd9b96_1282x618.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QBRM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2360b5e8-0e8e-42cb-a0da-1d3772cd9b96_1282x618.png 424w, https://substackcdn.com/image/fetch/$s_!QBRM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2360b5e8-0e8e-42cb-a0da-1d3772cd9b96_1282x618.png 848w, https://substackcdn.com/image/fetch/$s_!QBRM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2360b5e8-0e8e-42cb-a0da-1d3772cd9b96_1282x618.png 1272w, https://substackcdn.com/image/fetch/$s_!QBRM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2360b5e8-0e8e-42cb-a0da-1d3772cd9b96_1282x618.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QBRM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2360b5e8-0e8e-42cb-a0da-1d3772cd9b96_1282x618.png" width="1282" height="618" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2360b5e8-0e8e-42cb-a0da-1d3772cd9b96_1282x618.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:618,&quot;width&quot;:1282,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:65021,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radudaniel.substack.com/i/188440094?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2360b5e8-0e8e-42cb-a0da-1d3772cd9b96_1282x618.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!QBRM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2360b5e8-0e8e-42cb-a0da-1d3772cd9b96_1282x618.png 424w, https://substackcdn.com/image/fetch/$s_!QBRM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2360b5e8-0e8e-42cb-a0da-1d3772cd9b96_1282x618.png 848w, https://substackcdn.com/image/fetch/$s_!QBRM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2360b5e8-0e8e-42cb-a0da-1d3772cd9b96_1282x618.png 1272w, https://substackcdn.com/image/fetch/$s_!QBRM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2360b5e8-0e8e-42cb-a0da-1d3772cd9b96_1282x618.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div><hr></div><h2>Raw stats </h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!qjaU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b92c485-5667-483f-9d5a-bbc341a7d5a6_1386x754.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qjaU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b92c485-5667-483f-9d5a-bbc341a7d5a6_1386x754.png 424w, https://substackcdn.com/image/fetch/$s_!qjaU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b92c485-5667-483f-9d5a-bbc341a7d5a6_1386x754.png 848w, https://substackcdn.com/image/fetch/$s_!qjaU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b92c485-5667-483f-9d5a-bbc341a7d5a6_1386x754.png 1272w, https://substackcdn.com/image/fetch/$s_!qjaU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b92c485-5667-483f-9d5a-bbc341a7d5a6_1386x754.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qjaU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b92c485-5667-483f-9d5a-bbc341a7d5a6_1386x754.png" width="1386" height="754" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6b92c485-5667-483f-9d5a-bbc341a7d5a6_1386x754.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:754,&quot;width&quot;:1386,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:78007,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://radudaniel.substack.com/i/188440094?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b92c485-5667-483f-9d5a-bbc341a7d5a6_1386x754.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!qjaU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b92c485-5667-483f-9d5a-bbc341a7d5a6_1386x754.png 424w, https://substackcdn.com/image/fetch/$s_!qjaU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b92c485-5667-483f-9d5a-bbc341a7d5a6_1386x754.png 848w, https://substackcdn.com/image/fetch/$s_!qjaU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b92c485-5667-483f-9d5a-bbc341a7d5a6_1386x754.png 1272w, https://substackcdn.com/image/fetch/$s_!qjaU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b92c485-5667-483f-9d5a-bbc341a7d5a6_1386x754.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>The lesson from week one</h2><p>Shipping the assistant was the easy part. Shipping the <em>workflow brain</em> is where the real complexity lives: hundreds of small rules, edge cases, and operational habits that decide whether the team trusts it.</p><h2>What&#8217;s next</h2><p>Next we&#8217;re pushing on the parts that make the assistant feel like a stable teammate instead of a clever chatbot:</p><p><strong>a 3-layer memory architecture (World State, Memories, Interpretations)</strong></p><p>This is a big one and working on it a lot, but a very userul one in the long term so that it can really be useful in real world context with tons of information from a bunch of different people. </p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://radudaniel.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading xyz! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[My OpenClaw Setup]]></title><description><![CDATA[Wanted a setup to serve a small team, non tech ppl]]></description><link>https://radudaniel.substack.com/p/my-openclaw-setup</link><guid isPermaLink="false">https://radudaniel.substack.com/p/my-openclaw-setup</guid><dc:creator><![CDATA[radu]]></dc:creator><pubDate>Sat, 14 Feb 2026 14:37:53 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!cv_I!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc028beb0-ac22-4161-ad60-2877d5fab86d_1156x1370.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I wanted an AI agent the team can use daily, directly from Slack, with two clear goals:</p><ol><li><p>speed up repetitive work (search, summaries, drafts, quick lookups across tools)</p></li><li><p>keep it operationally controllable (self-hosted, small perimeter, observability, clear access rules)</p></li></ol><p>Context: a small team (around 10 people), a shared knowledge base, and no dedicated IT department. Below is the architecture and what I learned, without config dumps or raw JSON.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://radudaniel.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading xyz! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cv_I!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc028beb0-ac22-4161-ad60-2877d5fab86d_1156x1370.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cv_I!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc028beb0-ac22-4161-ad60-2877d5fab86d_1156x1370.png 424w, https://substackcdn.com/image/fetch/$s_!cv_I!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc028beb0-ac22-4161-ad60-2877d5fab86d_1156x1370.png 848w, https://substackcdn.com/image/fetch/$s_!cv_I!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc028beb0-ac22-4161-ad60-2877d5fab86d_1156x1370.png 1272w, https://substackcdn.com/image/fetch/$s_!cv_I!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc028beb0-ac22-4161-ad60-2877d5fab86d_1156x1370.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cv_I!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc028beb0-ac22-4161-ad60-2877d5fab86d_1156x1370.png" width="1156" height="1370" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c028beb0-ac22-4161-ad60-2877d5fab86d_1156x1370.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1370,&quot;width&quot;:1156,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:242655,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://radudaniel.substack.com/i/187953709?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc028beb0-ac22-4161-ad60-2877d5fab86d_1156x1370.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!cv_I!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc028beb0-ac22-4161-ad60-2877d5fab86d_1156x1370.png 424w, https://substackcdn.com/image/fetch/$s_!cv_I!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc028beb0-ac22-4161-ad60-2877d5fab86d_1156x1370.png 848w, https://substackcdn.com/image/fetch/$s_!cv_I!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc028beb0-ac22-4161-ad60-2877d5fab86d_1156x1370.png 1272w, https://substackcdn.com/image/fetch/$s_!cv_I!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc028beb0-ac22-4161-ad60-2877d5fab86d_1156x1370.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p><strong>Setup decisions</strong></p><ul><li><p>Platform: <strong>OpenClaw</strong>, self-hosted on a VPS</p></li><li><p>Interface: <strong>Slack Socket Mode (WebSocket)</strong></p></li><li><p>Agents: <strong>two agents</strong> behind the same gateway (personal + team)</p></li><li><p>Isolated execution: <strong>Docker sandbox</strong> for the team agent</p></li><li><p>Memory: <strong>markdown files</strong> + embeddings + local index</p></li><li><p>Integrations: Monday.com, Google Workspace, web search, internal apps</p></li><li><p>Ops: watchdog, daily report, backups, log rotation</p></li></ul><p><strong>Two agents, not one.</strong> I split &#8220;personal chat&#8221; from &#8220;team agent&#8221; to get:</p><ul><li><p>simple routing (DM vs channel)</p></li><li><p>different rules and permissions (stricter for the team agent)</p></li><li><p>less context contamination between discussion and execution</p></li></ul><p><strong>Different models.</strong> The personal agent uses a fast model for general conversation; the team agent uses a model that behaved better at tool-use. I preferred manual control instead of auto-routing because the auto-router often picked weaker models in practice.</p><p><strong>Fallback chain.</strong> Each agent has a list of backup models. If the primary is down, the gateway automatically fails over to the next one (Gemini Flash, Qwen, GPT-5, Claude Sonnet, etc).</p><p><strong>Session expiry.</strong> Sessions reset after 30 minutes of inactivity. Without this, context grows incrementally and eventually things stall.</p><p><strong>Current shape (high level)</strong></p><p><strong>Important execution detail:</strong></p><ul><li><p>The team agent runs commands inside a <strong>Docker sandbox</strong> (workspace mounted read-only).</p></li><li><p>Some tools still run on the host. The container is configured in <strong>bridge mode</strong> so it can reach certain host-exposed capabilities in a controlled way. The goal is separation: isolated execution, practical integrations.</p></li></ul><p><strong>Architecture decisions</strong></p><p><strong>Infrastructure:</strong> Ubuntu VPS. OpenClaw runs as a systemd service. Slack connects via Socket Mode.</p><p><strong>Message routing:</strong> the gateway receives all Slack events and routes by channel:</p><ul><li><p>DM with me &#8594; personal agent</p></li><li><p>dedicated channel (#team) &#8594; team agent</p></li></ul><p>This is intentionally simple: a channel &#8594; agent binding.</p><p><strong>Docker sandbox for the team agent:</strong> commands and execution happen in the container, with a read-only mounted workspace. This reduces the risk that prompt injection turns into &#8220;write to disk / modify host state&#8221;.</p><p><strong>Static curl binary:</strong> the built-in fetch tool supports only GET, while Monday.com (GraphQL) requires POST. I solved this pragmatically by adding a static curl binary inside the sandbox (no extra dependencies on the host).</p><p><strong>Google Workspace:</strong> the agent has a dedicated workspace identity with controlled access. For Gmail specifically: it can read and create drafts, but it never sends without explicit confirmation.</p><p><strong>Skills on-demand:</strong> I keep instructions modular (&#8220;skills&#8221;) and load them only when needed. This was the difference between a generic agent and something useful in a real business.</p><p><strong>Security decisions (principles)</strong></p><p><strong>1) Minimal exposure</strong></p><ul><li><p>admin access only via VPN (Tailscale)</p></li><li><p>public ports closed with UFW</p></li><li><p>gateway bound to loopback only</p></li><li><p>Fail2Ban for basic access hardening</p></li></ul><p><strong>2) Least privilege</strong></p><ul><li><p>tight scopes on integrations</p></li><li><p>different permissions for personal vs team agent</p></li></ul><p><strong>3) Human-in-the-loop for write</strong></p><ul><li><p>reads are allowed by default (search, list, summarize)</p></li><li><p>writes require confirmation (send email, modify tasks, create docs, etc.)</p></li></ul><p><strong>4) Config integrity</strong></p><ul><li><p>agents are explicitly instructed to never modify config files (routing, auth profiles, sandbox, models)</p></li><li><p>any infrastructure change goes through an internal double confirmation</p></li></ul><p><strong>Monitoring and automated checks (based on real failure modes)</strong></p><p>I built this around &#8220;what could leave the system dead since Friday night&#8221;.</p><p><strong>Signals I track:</strong></p><ul><li><p>whether the gateway is running</p></li><li><p>recent log activity (detects &#8220;silent&#8221; disconnects)</p></li><li><p>session size (context growth)</p></li><li><p>stuck executions (lots of input, no output)</p></li></ul><p><strong>Automated actions:</strong></p><ul><li><p>cleanup + restart if sessions exceed thresholds</p></li><li><p>restart if there is no log activity for a window</p></li><li><p>daily health report</p></li><li><p>daily backups for workspace + config</p></li><li><p>log rotation</p></li></ul><p><strong>Memory (the decision that changes everything)</strong></p><p>An agent without persistent memory becomes a chatbot that forgets. For a team, that means every conversation starts from scratch: who&#8217;s who, how you name internal things, what projects are active, what the rules are for email/tasks, what &#8220;done&#8221; means.</p><p>In practice I need memory for two classes of questions:</p><ul><li><p><strong>Fast context recall:</strong> &#8220;what&#8217;s the status of project X&#8221;, &#8220;what were the latest decisions&#8221;, &#8220;what did we agree with client Y&#8221;. Semantic search works well here.</p></li><li><p><strong>Relational questions</strong> (the reason I&#8217;m looking at graph memory): &#8220;who owns X&#8221;, &#8220;what depends on Y&#8221;, &#8220;which tasks are blocked by Z&#8221;, &#8220;which docs matter for client A&#8221;, &#8220;who is allowed to approve/send/modify&#8221;. Pure vector search becomes approximate here.</p></li></ul><p><strong>Why I&#8217;m interested in graph memory</strong></p><p>Graph memory explicitly models entities (people, clients, projects, documents, tasks) and relations (owner-of, depends-on, belongs-to, mentioned-in, approved-by). The advantages I&#8217;m after:</p><ul><li><p><strong>Deterministic relation queries</strong> (&#8220;owner&#8221;, &#8220;depends on&#8221;), not just &#8220;most similar paragraphs&#8221;.</p></li><li><p><strong>Cleaner updates:</strong> when an owner/status changes, you update a node/edge instead of adding another paragraph that contradicts history.</p></li><li><p><strong>Less duplication:</strong> the same entity shows up across many conversations; a graph gives you a single source of truth.</p></li></ul><p><strong>Why I considered mem0 (and why I haven&#8217;t adopted it yet)</strong></p><p>I looked at <strong>mem0</strong> because it aligns with &#8220;graph memory&#8221;: entities + relations, and a structure that supports &#8220;who/what/where/depends-on&#8221; queries. In theory, it&#8217;s the natural next step once you move to shared memory across multiple people.</p><p>What stopped me for now (at our scale):</p><ul><li><p><strong>Extra infrastructure</strong> (often Neo4j as a separate service) and the ops overhead.</p></li><li><p><strong>Write overhead:</strong> typically multiple LLM calls to extract entities/relations, increasing latency and cost per &#8220;add to memory&#8221;.</p></li><li><p><strong>Isolation model:</strong> many implementations are oriented around per-user memory; for a company I want <em>shared</em> memory with clear permissions and provenance.</p></li></ul><p><strong>What I use today (and why)</strong></p><p>For now I&#8217;m using:</p><ul><li><p><strong>OpenClaw built-in memory search</strong>: transparent markdown files + embeddings + local index (SQLite) with hybrid search (semantic + keyword).</p></li></ul><p>It&#8217;s pragmatic: easy to operate, easy to audit, easy to repair, and good enough for ~80% of questions. The plan is to revisit graph memory after 1&#8211;2 months of stable usage and tighter discipline around what enters memory (otherwise a graph just structures chaos).</p><p><strong>Bottlenecks and issues (what broke and how I fixed it)</strong></p><ul><li><p><strong>The LLM &#8220;described&#8221; actions instead of calling tools</strong></p><ul><li><p><strong>Symptom:</strong> answers like &#8220;I would run command X&#8221; with no tool call visible in logs.</p></li><li><p><strong>Impact:</strong> in the team channel it looked &#8220;smart&#8221; but nothing actually happened.</p></li><li><p><strong>Fix:</strong> better tool-use model for the team agent + explicit instruction (&#8220;if you need a tool, call it, don&#8217;t describe it&#8221;) + a completion check (&#8220;done = output exists, not just steps&#8221;).</p></li></ul></li><li><p><strong>Context overflow from large responses (APIs returning huge JSON)</strong></p><ul><li><p><strong>Symptom:</strong> after a few interactions, session size grew to hundreds of KB; the agent became slow or stalled (Slack still looked &#8220;alive&#8221;).</p></li><li><p><strong>Cause:</strong> large raw responses kept verbatim in context.</p></li><li><p><strong>Fix:</strong> cap results (e.g., 25 items per query), aggressive summarization, avoid pasting raw JSON; watchdog clears sessions over a threshold (e.g., 500KB) + session expiry after 30 min of inactivity.</p></li></ul></li><li><p><strong>Slack Socket Mode &#8220;silent&#8221; disconnects</strong></p><ul><li><p><strong>Symptom:</strong> gateway reported &#8220;connected&#8221; but messages stopped arriving.</p></li><li><p><strong>Fix:</strong> 5-minute watchdog checks for recent log activity; if no new logs within a window (e.g., 15 minutes), it triggers a controlled restart.</p></li></ul></li><li><p><strong>Upgrade broke sessions / compatibility</strong></p><ul><li><p><strong>Symptom:</strong> after an upgrade, conversations started hanging immediately.</p></li><li><p><strong>Fix:</strong> rollback to the last stable version + version pinning; upgrades only after testing in a separate environment (staging) or during an accepted-risk window.</p></li></ul></li><li><p><strong>HTTPS failed inside the sandbox (missing CA certs in slim images)</strong></p><ul><li><p><strong>Symptom:</strong> HTTPS requests from the container failed with certificate errors.</p></li><li><p><strong>Fix:</strong> install/copy CA certificates into the container and set environment variables where needed (e.g., SSL_CERT_FILE).</p></li></ul></li><li><p><strong>Environment variables didn&#8217;t reliably inject into the container</strong></p><ul><li><p><strong>Symptom:</strong> commands worked sometimes, then returned 401/403 because env vars were missing.</p></li><li><p><strong>Fix:</strong> explicit inline exports in commands + preflight checks in the sandbox (printenv) before sensitive calls.</p></li></ul></li><li><p><strong>Built-in web_fetch didn&#8217;t support POST (Monday GraphQL)</strong></p><ul><li><p><strong>Symptom:</strong> couldn&#8217;t call GraphQL endpoints with GET-only tooling.</p></li><li><p><strong>Fix:</strong> static curl inside the sandbox and controlled POST calls.</p></li></ul></li></ul><p><strong>Questions for others running agents for teams</strong></p><ol><li><p>How do you do <strong>shared memory</strong> across multiple people without turning it into chaos?</p></li><li><p>How do you manage <strong>permissions and write actions</strong> (confirmations, auditability, rollback)?</p></li><li><p>Self-hosted vs SaaS vs hybrid: what hit you the hardest in production?</p></li></ol><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://radudaniel.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading xyz! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[What If CRM was a database first, application second?]]></title><description><![CDATA[Traditional CRMs have predetermined UI & flows. I&#8217;m exploring the inversion: a well-governed database with an LLM layer that can generate interfaces, flows, functions, and agents on demand.]]></description><link>https://radudaniel.substack.com/p/what-if-crm-was-a-database-first</link><guid isPermaLink="false">https://radudaniel.substack.com/p/what-if-crm-was-a-database-first</guid><dc:creator><![CDATA[radu]]></dc:creator><pubDate>Mon, 02 Feb 2026 19:56:19 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!i35G!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81b34056-6c8c-428d-a154-e698d3aeebbc_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I&#8217;ve been playing with a different approach to CRM, a different architecture.</p><p>Traditional CRMs are applications with predetermined UI &amp; flows. I&#8217;m exploring the inversion: a well-governed database with an LLM layer that can generate interfaces, flows, functions, and agents on demand.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://radudaniel.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading xyz! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>A database with a shape shifting CRM.</p><p><strong>The Problem with CRM-as-Application</strong></p><p>Most CRMs I&#8217;ve used ship with pre-designed screens. Those screens aren&#8217;t process flows, but they have a habit of becoming one. Over time, the UI turns into policy.</p><p>That works for the happy path. It breaks on edge cases.</p><p>And in real sales orgs, edge cases aren&#8217;t rare. They&#8217;re the daily reality: hundreds of micro-tasks, exceptions, handoffs, and one-off situations that don&#8217;t fit the vendor&#8217;s mental model of &#8220;the pipeline.&#8221;</p><p>The human adapts to the tool instead of the tool adapting to the work. And experimentation suffers. You don&#8217;t iterate your process, you work around the software.</p><p>When I need something slightly different, a specific view, a micro-automation, a report that cuts across predefined objects, I&#8217;m either fighting the system or paying for &#8220;enterprise customization.&#8221;</p><p><strong>The Alternative: Data First, Interface Fluid</strong></p><p>I&#8217;ve been building something different.</p><p>Not &#8220;raw database as UI,&#8221; but a grid-first interface that&#8217;s isomorphic to a well-designed schema: views, filters, bulk edits, stable primitives. The data model is visible and manipulable, not hidden behind opinionated screens.</p><p>Here&#8217;s the architecture as I currently play with  it.</p><p><strong>1) Data Nucleus</strong></p><p>The foundation is a data structure: schema, relationships, and an event log.</p><p>Entities like contacts, companies, deals, interactions, touchpoints, and the connections between them. This layer is the source of truth. Every change is logged as an event.</p><p>The goal is not a perfect ontology. The goal is a stable substrate that can evolve without turning into a junk drawer.</p><p><strong>2) Execution Layer</strong></p><p>On top of the nucleus sits an execution layer: deterministic tools that do exactly what they&#8217;re told.</p><p>Typed primitives like:</p><ul><li><p>create</p></li><li><p>update</p></li><li><p>link</p></li><li><p>log</p></li><li><p>merge</p></li><li><p>enrich</p></li><li><p>notify</p></li></ul><p>This is where permissions, policies, invariants, and guardrails live. Predictable operations that can be tested, audited, and trusted.</p><p><strong>3) Interface Layer</strong></p><p>Multiple ways to interact with the same data, depending on the user and the task.</p><p><strong>Grid-first views (baseline UI)</strong></p><p>For many sales operators, the fastest interface is still table-shaped:</p><ul><li><p>filter, sort, group</p></li><li><p>bulk edit</p></li><li><p>select a working set and run actions on it</p></li><li><p>scan for anomalies</p></li></ul><p>This is &#8220;DB as front end&#8221; in the practical sense: a stable, learnable surface that maps cleanly to the underlying model.</p><p><strong>Generated UIs (task-specific)</strong></p><p>On demand, the system can generate context-specific screens for particular workflows:</p><ul><li><p>renewals cockpit</p></li><li><p>inbound lead triage</p></li><li><p>enterprise deal room</p></li><li><p>partner onboarding</p></li><li><p>SDR daily queue</p></li></ul><p>These aren&#8217;t permanent application screens. They&#8217;re interface manifestations: purpose-built compositions of a stable component library (grid, record panel, timeline, wizard, dashboard).</p><p>Stable core, generative edges.</p><p><strong>Conversational interface (fast queries + commands)</strong></p><p>For certain operations, natural language is simply faster than clicking:</p><ul><li><p>&#8220;Show me all accounts with renewal in 60 days, usage down 20%, and an open support ticket.&#8221;</p></li><li><p>&#8220;Draft follow-ups for the top 30, but only for stakeholders I&#8217;ve emailed before.&#8221;</p></li><li><p>&#8220;Find duplicates of this company and propose a merge plan.&#8221;</p></li></ul><p>This is also where semantic search and fuzzy matching shine: not just text, but meaning and similarity.</p><p><strong>Example: Renewal risk in one flow</strong></p><p>I ask:</p><p>&#8220;Show me accounts with renewal in the next 60 days, declining usage, and recent unresolved tickets. Group by owner and sort by ARR.&#8221;</p><p>The system generates a working set in the grid. I can bulk-tag, reassign, or create tasks.</p><p>Then I ask:</p><p>&#8220;Propose an outreach plan for the top 20, using our last call notes and open ticket context. Flag any accounts where we don&#8217;t have an executive sponsor.&#8221;</p><p>The LLM drafts a plan. The system turns that into typed actions. I approve the high-stakes ones. Everything gets logged.</p><p>That combination is what I&#8217;m after: speed without chaos.</p><p><strong>4) Canvas Layer: the system map that stays current</strong></p><p>Multiple screens solve the &#8220;doing&#8221; problem. But I also need to see the whole system: how pieces connect, where data flows, which agents handle what, and where humans are in the loop.</p><p>That&#8217;s where a canvas layer comes in. Not as another execution tool, but as a visualization and thinking space.</p><p>Picture an infinite canvas (Miro-style) where the LLM continuously represents and updates:</p><ul><li><p>end-to-end business flows</p></li><li><p>how data entities connect to processes</p></li><li><p>which functions and agents handle which steps</p></li><li><p>where humans are in the loop vs where automation runs</p></li><li><p>handoffs, failure modes, and alerting points</p></li></ul><p>The canvas doesn&#8217;t command the backend directly. It&#8217;s where I design, discuss structure, and refactor workflows. When I sketch a new flow or restructure a process, the system figures out how to implement it in the execution layer and then updates the map to reflect reality.</p><p>A shared mental model, kept alive.</p><p><strong>LLM Proposes, Tools Execute</strong></p><p>At this point it&#8217;s tempting to say: &#8220;the LLM operates on the database.&#8221;</p><p>But that phrasing hides the most important design constraint: trust.</p><p>In this architecture, the LLM doesn&#8217;t mutate business-critical data directly. It proposes plans.</p><p>It suggests which primitives to call, in what order, with what parameters. Then deterministic tools execute those plans.</p><p>This separation is what makes the system usable in a real org.</p><p>A typical flow looks like:</p><ol><li><p>A request is made (UI or natural language)</p></li><li><p>The LLM produces a typed plan (a structured set of actions)</p></li><li><p>The plan is validated against permissions and invariants</p></li><li><p>The system shows a preview: what will change, and why</p></li><li><p>Execution happens through deterministic tools</p></li><li><p>Everything is logged: request, proposal, approvals, execution, outcomes</p></li></ol><p>For low-stakes operations, approval can be automatic. For critical operations, I review the plan before execution.</p><p>The LLM brings intelligence. The execution layer brings reliability. They stay separate.</p><p><strong>A wild speculation: onboarding as strategy work</strong></p><p>Imagine guided templates that walk someone through:</p><ul><li><p>defining positioning and business model</p></li><li><p>clarifying products and pricing</p></li><li><p>building an ICP derived from the above</p></li><li><p>mapping channels and discovery mechanisms</p></li><li><p>designing inbound/outbound strategies</p></li></ul><p>The user experiences it as strategic clarity work, which it is. But they&#8217;re also populating a structured data model. At the end, they get both: a clearer strategy and a working system.</p><p>The schema emerges from the strategy conversation, not from configuration screens.</p><p>And the canvas grows alongside it, visualizing what they&#8217;re building as they build it.</p><p><strong>Imagine having visibility across</strong></p><ul><li><p>business model and market positioning</p></li><li><p>products and pricing</p></li><li><p>ICP derived from all of the above</p></li><li><p>channels and discovery mechanisms</p></li><li><p>inbound/outbound strategies</p></li><li><p>enrichment and contact workflows</p></li><li><p>leads and pipeline stages</p></li><li><p>signals and alerts</p></li><li><p>custom dashboards and real-time reporting</p></li></ul><p>Not as separate tools stitched together, but as one coherent system: data model as foundation, multiple interfaces for operations, and a canvas layer to see how it all connects.</p><p><strong>Other things to be solved</strong></p><p><strong>Schema governance.</strong> &#8220;Well-defined database&#8221; sounds clean. In practice, business ontologies are messy. They evolve. They contradict themselves. Governance needs to feel like shipping code: proposed, reviewed, versioned, migrated.</p><p><strong>Muscle memory vs adaptability.</strong> Users develop reflexes. They know where the button is. If the UI shifts too much, predictability disappears. My current hypothesis is stable core views plus generative edges, but I haven&#8217;t proven the balance.</p><p><strong>Trust UX.</strong> Mechanisms like plans and audit trails are necessary, but not sufficient. The user experience of trust matters: previews that make sense, sensible risk thresholds, and clear explanations when the system refuses to execute.</p><p><strong>Cost of abundance.</strong> Custom UIs per user, dedicated agents per task, functions generated on demand. Inference costs and maintenance complexity can explode. There needs to be a notion of budgets, reuse, caching, and composable components.</p><p><strong>The question I&#8217;m sitting with</strong></p><p>Is this a product or a way of working?</p><p>The companies that need flexibility often lack the discipline to govern it well. The companies with that discipline already have deep investments in Salesforce or HubSpot, plus inertia.</p><p>Maybe onboarding-as-strategy-work is the unlock. Lower the barrier by disguising system setup as business coaching.</p><p>Or maybe this is infrastructure I build for myself, and the advantage is simply operating differently from competitors who are stuck in application-shaped boxes.</p><p>What&#8217;s your experience with CRM flexibility vs structure? Have you seen systems that successfully balance fluid interfaces with operational reliability?</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://radudaniel.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading xyz! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[The AI impact? mid career re-skilling and the identity cost]]></title><description><![CDATA[The discussion needs to be broader than "find the time, the motivation." After 20 years of building a life, a family, a career, those remarks feel incomplete, naive, even a bit dishonest.]]></description><link>https://radudaniel.substack.com/p/the-ai-impact-mid-career-re-skilling</link><guid isPermaLink="false">https://radudaniel.substack.com/p/the-ai-impact-mid-career-re-skilling</guid><dc:creator><![CDATA[radu]]></dc:creator><pubDate>Mon, 19 Jan 2026 05:53:20 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!i35G!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81b34056-6c8c-428d-a154-e698d3aeebbc_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I wrote and rewrote this many times, because what I want to say doesn&#8217;t have a tidy solution. It&#8217;s more of an open question. Or maybe it&#8217;s just a question in my mind, but this is why these platforms exist, to meet others in shared thought.</p><p>Questions are worth asking even if the answers do not lead to tidy solutions. This is one of them: what does re-skilling actually cost when you&#8217;re mid 40s, with a family, a mortgage, and a life you&#8217;ve spent twenty years building?</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://radudaniel.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading xyz! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>I&#8217;m 45. I run a company that works with 18-25 year-olds. We help them find opportunities &amp; make choices during the years when their identity is still forming.</p><p>Lately the conversations have shifted.  This essay is what I&#8217;ve been thinking about. It&#8217;s messy. I don&#8217;t have clean answers. But the question feels important enough to write it down.</p><h4><strong>Back to School, Mid-Career</strong></h4><p>It&#8217;s 9:47pm.</p><p>Kids are finally asleep. The kitchen is almost clean. Your brain is half-melted from meetings, decisions, and explaining the same thing three different ways to three different people who were technically in the same meeting.</p><p>You sit down with that familiar thought: &#8220;Okay. One hour. I&#8217;ll test that thing.&#8221;</p><p>That thing is always different. A new model. A new workflow. A new tool that claims to do 60% of your job faster. A new &#8220;best practice&#8221; that didn&#8217;t exist two weeks ago. A hype cycle disguised as a revolution, or worse, a real revolution disguised as a tweet.</p><p>And the clock is already negotiating against you.</p><p>This is what the AI era feels like for a lot of people: a flywheel with a snowball effect. Everything now demands faster, more frequent updates.</p><p>Not just learning new features. Learning new ways of working, in cycles of de-learning and re-learning, testing tools, and constantly separating signal from hype. Even if your company isn&#8217;t pushing you, the market is.</p><h4><strong>The old career deal</strong></h4><p>For a long time, there was an implicit deal most people lived by:</p><p>More experience becomes seniority. Seniority becomes higher output and better decisions. Higher output becomes optionality. Optionality becomes time.</p><p>Not immediately. But eventually.</p><p>Over the years, you buy back more of your life: family time, health, weekends that don&#8217;t feel like a second job. You also carry more responsibility as you age, but the ratio improves. You&#8217;re supposed to get better at the job and the job is supposed to give you back some oxygen.</p><p>That deal is being rewritten mid-game.</p><p>Not because AI will &#8220;take all jobs&#8221; tomorrow. The bigger disruption for many careers is that AI increases the speed of the game and forces reskilling at an age where reskilling is socially and cognitively expensive.</p><h4><strong>The shift: what becomes scarce</strong></h4><p>As AI lowers the barrier to entry for many knowledge tasks, the scarce resource shifts.</p><p>It&#8217;s not information. Information is abundant.</p><p>It&#8217;s not even raw capability, because capability keeps getting packaged into simpler interfaces.</p><p>The scarce resource becomes <strong>uninterrupted attention</strong>. Time you can actually use to iterate, test, and build judgment. Time that isn&#8217;t fragmented into tiny context switches. Time that allows you to run the loop properly.</p><p>Because the loop is the game.</p><h4><strong>The loop </strong></h4><p>Strip away the branding and the debates and the hot takes and you end up with the same learning cycle in every domain:</p><p><strong>idea &#8594; test &#8594; feedback &#8594; iterate</strong></p><p>That loop is how people get good. How teams improve. How products become real. How strategy stops being a belief and becomes something grounded.</p><p>Historically, the loop was slow and expensive. You needed years to write well, design well, analyse without lying to yourself, communicate clearly, persuade, coordinate, prototype. The friction was and still is real.</p><p>AI compresses parts of that friction. It doesn&#8217;t make everyone an expert overnight. But it makes it easier to express ideas, explore variations, prototype, summarise, translate, simulate, and compress the distance between &#8220;I have an idea&#8221; and &#8220;I can try it.&#8221;</p><p>So more people can run more of these cycles faster. AI isn&#8217;t just a tool. It&#8217;s an accelerator for iteration velocity. And once iteration velocity goes up, everything else gets re-priced: job roles, career trajectories, status, credibility, competition, and the time you thought you&#8217;d earn back with seniority.</p><h4><strong>The second disruption: most people don&#8217;t want to run the loop themselves</strong></h4><p>Here&#8217;s a complementary truth that matters just as much as speed: <strong>Most people don&#8217;t want to pioneer.</strong></p><p>They want predictability. They want the walked and battle tested path. They want to learn from the best, from the people who took the high road first, or from their followers who had the time to codify the doctrine into something teachable.</p><p>That&#8217;s what a course really is, whether it&#8217;s 10 hours or 18 months. It&#8217;s not just content, it&#8217;s a promise: &#8220;This has been proven. If you do this, you&#8217;ll get there.&#8221; This is how most learning has worked for decades:</p><ul><li><p>a few people explore chaos</p></li><li><p>then patterns stabilise</p></li><li><p>then a playbook emerges</p></li><li><p>then the majority follows a cleared, predictable road.</p></li></ul><p>It&#8217;s not cowardice. It&#8217;s rational.</p><p>People have families. Bills. Social roles. Reputations. They can&#8217;t afford unlimited uncertainty. They can&#8217;t be wrong in public too often. They can&#8217;t gamble months of attention on unproven paths.</p><p>The problem is that AI is accelerating the loop faster than doctrine can form. The map is being redrawn while you&#8217;re still trying to read it.</p><p>&#8220;Best practices&#8221; expire. The &#8220;clear path&#8221; arrives late, and when it arrives it&#8217;s already partially outdated.</p><p>So the AI era doesn&#8217;t just demand more learning. <strong>It demands a different relationship with uncertainty: more self-directed experimentation, more ambiguity tolerance, more willingness to be temporarily wrong.</strong></p><p>That&#8217;s an identity shift, not just a skill shift.</p><h3><strong>Why this hits mid-career differently</strong></h3><p>Up-skilling and continuous learning tends to decline after 25 across industries and geographies. Not because people get lazy. Because life fills up.</p><p>At 25, you can throw time at learning. Your identity is still flexible. Your social circle expects experimentation. Failure is annoying, but socially survivable. You have runway.</p><p>At 40, you don&#8217;t just have less time. You have more commitments tied to stability: mortgage, kids, parents aging, a professional identity that took years to build, a social role in multiple networks.</p><p>Re-skilling mid career isn&#8217;t just learning. It&#8217;s identity work. It&#8217;s renegotiating who you are, what you&#8217;re good at, and what you can credibly claim. And that process is taxing even when it goes well.</p><p>So when AI pushes loop speed up, it doesn&#8217;t pressure everyone equally.</p><h4><strong>Four people in the same economy</strong></h4><p>I&#8217;ve been thinking in four archetypes, not because humans are boxes, but because patterns help.</p><p><strong>Person A</strong> has real experience. Maybe they&#8217;re a manager in a big company. They have judgment, networks, domain depth. They know which questions matter and which signals are fake. They also tend to prefer proven playbooks because their risk budget is constrained.</p><p><strong>Person B</strong> has less experience, but they have something else: time. Fewer dependents, fewer constraints, more cognitive runway. They can run a lot of cycles. They can afford to be wrong more often, publicly and privately, and still recover.</p><p><strong>Person C</strong> has experience like A, but also has the mindset and selective reskilling required to leverage AI strategically. They don&#8217;t chase everything. They pick their bets. They build small experiments into a life that still has responsibilities.</p><p><strong>Person D</strong> has experience too, but they&#8217;re not wired for constant experimentation and rapid iteration. They thrive in stability and structure. They can go deep and maintain quality. The AI era can feel like it&#8217;s forcing them into a cognitive mode that doesn&#8217;t match their temperament. That&#8217;s not a moral failing. Different strengths exist.</p><p>On paper, B can run far more cycles than A.</p><p>But cycle quantity alone doesn&#8217;t determine outcomes. Quality matters. And A has something hard to copy quickly: judgment about what matters.</p><p>A knows which questions are worth asking, which metrics are signal vs noise, which feedback is relevant vs distraction, which iterations are worth pursuing.</p><p>That judgment is valuable. AI amplifies it. It doesn&#8217;t replace it.And yet, here&#8217;s the uncomfortable part.</p><p>Person A doesn&#8217;t actually have 10 hours per week for experimentation. That&#8217;s aspirational thinking.</p><p>Person A has:</p><ul><li><p>operational demands that consume the day</p></li><li><p>meetings and decisions and context switching</p></li><li><p>family obligations that start the moment work ends</p></li><li><p>extended family care (children, aging parents, logistics)</p></li><li><p>depleted bandwidth from decision fatigue</p></li></ul><p>So while A might be smarter in what to test, they have less oxygen to run the loop.</p><p>Finding 10<strong> hours/week</strong> for real experimentation (not just staying informed, but testing and iterating) becomes quite hard.</p><p>Meanwhile, Person B does have the time. And in 12&#8211;24 months of intense cycles, B can develop practical judgment that used to take years in slower environments.</p><p>Person C exists, but is rare, because balancing real responsibilities, real stability, and real experimentation without burning out is a knife-edge act. Many people who claim to be Person C are sprinting themselves into burnout and calling it optimization.</p><p>Person D faces a different risk: forcing a temperament mismatch. Tools can increase leverage, but they don&#8217;t change who you are. If your strength is depth and reliability, a culture of nonstop experiments can become slow identity erosion.</p><h4><strong>The hidden cost: volatility and social identity</strong></h4><p>The part that doesn&#8217;t get discussed enough is the social and familial cost of participating in acceleration.</p><p>This isn&#8217;t a neat corporate up-skilling course where your employer gives you 20&#8211;40 hours and you walk away with a certificate.</p><p>It&#8217;s closer to being back at university, except you&#8217;re doing it while managing a job, a family, and a reputation.</p><p>Reskilling at this level demands repeated reframing. It demands being bad at something again. It demands testing things that may fail. It demands tolerating uncertainty without guaranteed rewards.</p><p>And that has identity consequences.</p><p>A 25-year-old can pivot, experiment, fail, recover. Their identity is expected to be fluid.</p><p>A 40-year-old pays a higher volatility tax. The social contract they were sold (learn, work hard, gain stability, optionality arrives with time) is being rewritten mid-game.</p><p>Some costs can&#8217;t be compensated:</p><ul><li><p>a marriage strained by obsessive reskilling doesn&#8217;t automatically heal with higher income</p></li><li><p>kids don&#8217;t get those years back</p></li><li><p>networks don&#8217;t always reward visible instability</p></li></ul><p>This is why just keep learning is not serious advice unless we talk about trade-offs.</p><p>Because the real constraint isn&#8217;t motivation. It&#8217;s time, attention, and the fact that most people don&#8217;t want to pioneer. They want a paved road. They want doctrine. They want something battle-tested enough that the effort has a predictable payoff. And AI keeps moving the finish line faster than doctrine can form.</p><h4>So what&#8217;s the actual answer?</h4><p>Not everyone must become Person C. That&#8217;s survivorship bias and, frankly, unrealistic for many people with real constraints. Maybe a better answer is <strong>strategic selectivity</strong> and <strong>explicit trade-offs</strong>.</p><p>The goal isn&#8217;t to keep up with everything. The goal is to <strong>compound in the right places</strong>.</p><p><strong>If you&#8217;re closer to Person A</strong></p><p>You don&#8217;t need 100 experiments. You need <strong>5&#8211;10 exceptionally well-chosen ones</strong>.</p><p>Use your network to validate faster instead of grinding alone. Identify the 20% of AI capabilities that 10x your existing leverage and ignore the rest. Stop trying to &#8220;stay updated&#8221; in a general sense and focus on staying dangerous in the few places that matter for your role.</p><p>Most importantly, treat the social cost as real. Discuss it. Make conscious choices about acceptable volatility. If you&#8217;re going to take time from somewhere, don&#8217;t pretend it&#8217;s free.</p><p><strong>If you&#8217;re closer to Person B</strong></p><p>Your advantage is runway, but runway can turn into noise if you confuse activity with progress.</p><p>Expect that most cycles won&#8217;t work. That&#8217;s fine. But build systems that force feedback and real-world constraints. Seek mentorship or frameworks that compress judgment, not just skill. And build networks while you build competence, otherwise you may end up strong but isolated.</p><p><strong>If you&#8217;re closer to Person C</strong></p><p>You&#8217;re balancing on a knife&#8217;s edge.</p><p>Strategic re-skilling is not &#8220;learning everything.&#8221; It&#8217;s ruthless prioritisation. Your biggest risk is believing you can sustain this pace indefinitely. Watch for burnout like you watch for bugs: early detection matters.</p><p><strong>If you&#8217;re closer to Person D</strong></p><p>Be honest about fit.</p><p>If forcing yourself into constant experimentation makes you miserable, don&#8217;t moralize it. Consider roles where stability and depth are valued, or partner with B/C types and delegate the acceleration layer. Some people will thrive by being the anchor, not the speedboat.</p><h4><strong>The uncomfortable truth</strong></h4><p>Not everyone will successfully navigate this transition. And the cost of trying, in family stability, mental health, and identity, may exceed the benefit in certain paths.</p><p>This isn&#8217;t doom posting. It&#8217;s acknowledging reality, because pretending everyone can just &#8220;work smarter&#8221; or &#8220;find the time&#8221; seems to me a bit dishonest.</p><p>So I&#8217;ll end with the questions I actually care about:</p><ul><li><p>What&#8217;s your system?</p></li><li><p>What do you protect?</p></li><li><p>What do you stop doing?</p></li><li><p>And what do you intentionally ignore?</p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://radudaniel.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading xyz! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[AI may not be the rise of the machines, but the liberation of the human mind]]></title><description><![CDATA[Tech shifts &#8220;pick&#8221; winners, AI turns tacit knowledge into output]]></description><link>https://radudaniel.substack.com/p/tech-shifts-pick-winners-ai-turns</link><guid isPermaLink="false">https://radudaniel.substack.com/p/tech-shifts-pick-winners-ai-turns</guid><dc:creator><![CDATA[radu]]></dc:creator><pubDate>Sat, 17 Jan 2026 08:48:49 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!i35G!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81b34056-6c8c-428d-a154-e698d3aeebbc_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Big technological shifts produce major social shifts.</p><p>Each new wave forms a &#8220;partnership&#8221; with a certain category of people, augmenting them and giving them an edge. And that fit is not only about education. It&#8217;s also about temperament, habits, and the kinds of problems you naturally enjoy solving.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://radudaniel.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading xyz! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p><strong>The Partnership Pattern</strong></p><p>Writing and record-keeping elevated people who thrive on precision and structure: scribes, accountants, administrators. Power shifted toward those who could maintain archives and govern through documents.</p><p>Printing favored a different profile: people who could formulate ideas clearly and spread them widely. Editors, teachers, and reformers gained leverage because messages became cheap to reproduce and distribute.</p><p>The software revolution (PC, web, mobile) raised the builders: those who love systems, logic, and debugging, and who can create things that scale. Once distribution became global, a small number of people could build products used by millions, and financial status reorganized around those who built the digital infrastructure.</p><p>Social media rewarded another archetype: the curator and the performer, people who understand attention, narrative, and cadence. Influence became a direct asset: measurable, tradable, monetizable.</p><p><strong>What&#8217;s different this time?</strong></p><p>AI is the fastest-rolling technological shift we&#8217;ve seen, and the easiest to interact with.</p><p>What can be simpler than a tool you can speak to in natural language, that can understand what you mean and help you get there?</p><p>Access is unusually broad, the learning curve is low, and the gap in impact between specialists and non-specialists may be smaller than in past revolutions.</p><p><strong>AI as a translator of the implicit</strong></p><p>The deeper breakthrough is not just speed. It&#8217;s that AI can act as a <strong>translator of the implicit</strong>.</p><p>For decades, the bottleneck of human wisdom has been turning tacit knowledge, the intuitive expertise earned through years of trial and error, into something organized and shareable. Many people have insight. Far fewer have the time, training, or medium to convert it into coherent output.</p><p>AI can help close that gap.</p><p>AI doesn&#8217;t just generate text. It helps convert lived experience into usable structure.</p><p>With AI, an older person who barely uses a computer can dictate and iterate with their voice to write an article, or even a book. There are millions of untold stories locked inside people who never had the practice or the right environment to put them into words.</p><p>And beyond stories, there are models.</p><p>Someone who has moved across roles and industries carries mental frameworks others don&#8217;t notice: how incentives really work, where teams silently break, why certain processes fail in predictable ways. AI can help pull those frameworks to the surface and turn them into something usable faster: management models, better processes, more nuanced products.</p><p><strong>The new archetype: the experiential synthesizer</strong></p><p>In that sense, AI doesn&#8217;t partner with a single skill-based archetype like past revolutions did.</p><p>It partners with the <strong>experiential synthesizer</strong>: the person, of any age or background, who carries lived experience, tacit knowledge, and hard-won judgment.</p><p>The leverage shifts from the mechanics of execution (coding, writing, designing) to the discernment to ask the right questions, provide precise context, and guide the output. AI amplifies articulation and synthesis, turning latent wisdom into tangible value.</p><p>So the new divide may not be between those who can or cannot access the tool.</p><p>It may be between those who can feed it with insight and those who cannot.</p><p><strong>A democratic tool, an uneven world</strong></p><p>Still, an asymmetry remains. If AI is democratic in access, why would it produce a divide at all?</p><p>Because the raw material it amplifies, varied experience, exposure to different domains, time for reflection, is itself unevenly distributed. AI does not create judgment; it reveals and scales it. And if judgment is shaped by opportunity, then AI may amplify existing asymmetries as much as it disrupts them.</p><p>The question is not only whether AI democratizes <em>tools</em>, but whether our societies will democratize <em>the experiences</em> that make those tools transformative.</p><p><strong>Where this might lead</strong></p><p>In the end, the story may be less about machines replacing people and more about removing friction between what humans know and what they can express.</p><p>When expression becomes cheap, the scarce resource becomes judgment, and the depth of lived experience behind it.</p><p>If that&#8217;s true, what should we do next: invest in teaching people to use AI, or invest in giving more people the kinds of experiences that build better judgment in the first place?</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://radudaniel.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading xyz! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item></channel></rss>