<?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[Gregory Turkawka]]></title><description><![CDATA[18 years designing learning systems. Schools, UNICEF, game design. Always the architect, never the builder. Then AI bridged the gap. Built Kitsuno in 40 days. This is the journal.]]></description><link>https://turkawka.substack.com</link><image><url>https://substackcdn.com/image/fetch/$s_!8PX5!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed007868-79ee-4313-87ef-bf350b3583d2_1024x1024.png</url><title>Gregory Turkawka</title><link>https://turkawka.substack.com</link></image><generator>Substack</generator><lastBuildDate>Sun, 21 Jun 2026 11:30:58 GMT</lastBuildDate><atom:link href="https://turkawka.substack.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Gregory Turkawka]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[turkawka@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[turkawka@substack.com]]></itunes:email><itunes:name><![CDATA[Gregory Turkawka]]></itunes:name></itunes:owner><itunes:author><![CDATA[Gregory Turkawka]]></itunes:author><googleplay:owner><![CDATA[turkawka@substack.com]]></googleplay:owner><googleplay:email><![CDATA[turkawka@substack.com]]></googleplay:email><googleplay:author><![CDATA[Gregory Turkawka]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Two AI agents walk into a hiring funnel. Nobody hires anyone.]]></title><description><![CDATA[275,000 evaluations. 67 conversations. The protocol that explains the gap.]]></description><link>https://turkawka.substack.com/p/two-ai-agents-walk-into-a-hiring</link><guid isPermaLink="false">https://turkawka.substack.com/p/two-ai-agents-walk-into-a-hiring</guid><dc:creator><![CDATA[Gregory Turkawka]]></dc:creator><pubDate>Tue, 19 May 2026 14:55:16 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!h-be!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F620a9124-bc5d-44c3-862a-efb5463b597b_2944x1648.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!h-be!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F620a9124-bc5d-44c3-862a-efb5463b597b_2944x1648.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!h-be!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F620a9124-bc5d-44c3-862a-efb5463b597b_2944x1648.png 424w, https://substackcdn.com/image/fetch/$s_!h-be!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F620a9124-bc5d-44c3-862a-efb5463b597b_2944x1648.png 848w, https://substackcdn.com/image/fetch/$s_!h-be!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F620a9124-bc5d-44c3-862a-efb5463b597b_2944x1648.png 1272w, https://substackcdn.com/image/fetch/$s_!h-be!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F620a9124-bc5d-44c3-862a-efb5463b597b_2944x1648.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!h-be!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F620a9124-bc5d-44c3-862a-efb5463b597b_2944x1648.png" width="1456" height="815" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/620a9124-bc5d-44c3-862a-efb5463b597b_2944x1648.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:815,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:10675396,&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://turkawka.substack.com/i/198413416?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F620a9124-bc5d-44c3-862a-efb5463b597b_2944x1648.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_!h-be!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F620a9124-bc5d-44c3-862a-efb5463b597b_2944x1648.png 424w, https://substackcdn.com/image/fetch/$s_!h-be!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F620a9124-bc5d-44c3-862a-efb5463b597b_2944x1648.png 848w, https://substackcdn.com/image/fetch/$s_!h-be!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F620a9124-bc5d-44c3-862a-efb5463b597b_2944x1648.png 1272w, https://substackcdn.com/image/fetch/$s_!h-be!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F620a9124-bc5d-44c3-862a-efb5463b597b_2944x1648.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>The first agent represents a candidate. It scans postings, parses requirements, drafts a cover letter, and submits. It does this 200 times a week, with the patient cheerfulness only a script can manage.</p><p>The second agent represents the employer. It reads the cover letter, runs the keyword pass, weighs the role-family score, and rejects. It does this for 200 candidates a week, with the same patient cheerfulness.</p><p>Both agents are working as designed. The candidate&#8217;s score is going up &#8212; applications-per-week, that&#8217;s the headline KPI. The employer&#8217;s score is going up too &#8212; time-to-screen, candidates-processed, all green. The two humans on the ends of this exchange &#8212; the person hoping to be hired, the person hoping to hire &#8212; are getting nothing. Worse than nothing. They&#8217;re getting the noise of 200 mutually irrelevant transactions a week and being told, by their respective dashboards, that the system is working.</p><p>This is where most &#8220;AI in hiring&#8221; stories are right now. And it&#8217;s going to get worse before it gets better, because Google&#8217;s <a href="https://a2a-protocol.org/">A2A protocol</a> just made it dramatically easier for agents to talk to each other. A2A is good. We built on top of it. But A2A is transport. Transport in hiring, without a contract above it, doesn&#8217;t reduce noise. It scales it.</p><h2>What A2A doesn&#8217;t do</h2><p>A2A defines how two agents discover each other, authenticate, and exchange messages. It is intentionally domain-agnostic. It does not say what an agent representing a candidate owes an agent representing an employer. It does not say what either of them owes the human they represent. It does not say at what point in the conversation a name should be revealed, or compensation should be disclosed, or a yes/no should be answered.</p><p>That&#8217;s appropriate for transport. But hiring needs that opinion. Without it, the default outcome is the one above: auto-apply against auto-reject, both sides optimizing for volume, both humans paying the bill.</p><h2>What we built on top</h2><p><a href="https://kitsuno.ai/handshake/v0.2/">Kitsuno Handshake</a> is an open protocol that sits above A2A and adds the domain-specific contract. It&#8217;s Apache 2.0, federated, and deployed on our own product. Four commitments anchor it:</p><p><strong>1. Staged disclosure.</strong> A handshake moves through three tiers. <strong>L1</strong> is what any candidate would see on a public job board &#8212; title, location, skills, salary range. <strong>L2</strong> is what the candidate would learn during a screening call &#8212; full description, screening questions, structured answers from the candidate&#8217;s verified profile. <strong>L3</strong> is human-to-human &#8212; names, exact compensation, calendar links. The vacancy poster <em>chooses</em> what crosses each tier; the seeker <em>consents</em> before each crossing. No identity surface area expands without a real decision.</p><p><strong>2. state_hash for idempotency.</strong> Two agents that have already evaluated the same (seeker, vacancy) pair at the same state must not re-evaluate it. state_hash is a SHA-256 over a canonical subset of each card &#8212; the matching-relevant fields, ignoring cosmetic edits. When either side mutates something semantic, the hash changes and the conversation re-opens. When nothing has changed, the agents stop bothering each other. This is the protocol-level rule that prevents the auto-apply spiral. Counter-agents in the wild can cache verdicts indefinitely as long as both hashes hold &#8212; which means a validator-mediated decision becomes economically tractable at corpus scale, instead of an expense only enterprise budgets can carry.</p><p><strong>3. The validator: a quality gate, not a feed.</strong> Between L2 and L3-eligible, every conversation goes through a classifier that returns one of three buckets &#8212; <code>strong_fit</code>, <code>weak_fit</code>, <code>no_fit</code> &#8212; across four structured dimensions (role alignment, seniority fit, skill overlap, context). Only <code>strong_fit</code> reaches a human. <code>weak_fit</code> and <code>no_fit</code> are silent drops, stored for analytics, never surfaced. The principle in one line: <strong>a pipeline is a commitment surface, not a feed.</strong> If everything that passes the policy gate gets shown to a person, the person learns to stop looking.</p><p>The validator shipped public last week &#8212; interface, reference implementation, spec section, Apache 2.0 package. The full design note is at <a href="https://kitsuno.ai/handshake/v0.2/#validator">kitsuno.ai/handshake/v0.2/#validator</a>.</p><p><strong>4. Federation as a first-class primitive.</strong> Any operator self-hosts via <code>/.well-known/handshake-v0.2.json</code>. Other agents discover them without registering with us. Our own well-known sits at <a href="https://app.kitsuno.ai/.well-known/handshake-v0.2.json">app.kitsuno.ai/.well-known/handshake-v0.2.json</a> and advertises the cards-base, cards-index, vacancy-signal, and L3-release endpoints. There is no central registry, no API key issued by us, no permission gate. An ATS, a recruiter co-op, a university careers office, a country employment agency &#8212; any of them publishes a well-known on their own domain and the protocol routes to them. We&#8217;re the first operator, not the gatekeeper.</p><h2>The funnel, on our own product, right now</h2><p>We use this protocol on Kitsuno itself. We are the first operator. Here&#8217;s the live funnel as of this morning:</p><ul><li><p><strong>145,454 vacancy cards</strong> crawled, classified, and published with v0.2 handshake policies. Each carries its own <code>state_hash</code>.</p></li><li><p><strong>43 distinct sources</strong> feeding the corpus (public job APIs, country employment agencies, niche boards, the hidden-market channels we documented in <a href="https://turkawka.substack.com/p/most-jobs-are-filled-before-you-ever">Most Jobs Are Filled Before You Ever See Them</a>).</p></li><li><p><strong>2 active seeker cards</strong> publishing into the corpus &#8212; the founder profile, plus a second test profile with a broader scope to verify the logic against a larger addressable market.</p></li><li><p><strong>275,448 deterministic policy evaluations</strong> in the last seven days. 273,233 were <code>BLOCK_L2</code> (silent drops at the policy gate). 2,215 cleared to <code>ELIGIBLE_L2</code>.</p></li><li><p>Of those 2,215 cards that made it past the policy gate, the validator classified them: <strong>1,124 </strong><code>no_fit</code><strong>, 1,024 </strong><code>weak_fit</code><strong>, 67 </strong><code>strong_fit</code><strong>.</strong></p></li></ul><p>Sixty-seven conversations reaching a human, out of 275,000 evaluations. That ratio is the entire point. The deterministic policy filter blocks 99.2% of pairs upfront &#8212; wrong country, wrong seniority, wrong language, missing skill, salary outside range. The validator narrows another 99.7% of what survives &#8212; adjacent-but-not-target roles, on-paper matches that don&#8217;t actually match. What lands in a human&#8217;s pipeline is the residue: matches that survived both gates honestly.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wtfs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd78944e-358d-492f-a354-8698e3f03280_1456x816.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wtfs!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd78944e-358d-492f-a354-8698e3f03280_1456x816.png 424w, https://substackcdn.com/image/fetch/$s_!wtfs!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd78944e-358d-492f-a354-8698e3f03280_1456x816.png 848w, https://substackcdn.com/image/fetch/$s_!wtfs!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd78944e-358d-492f-a354-8698e3f03280_1456x816.png 1272w, https://substackcdn.com/image/fetch/$s_!wtfs!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd78944e-358d-492f-a354-8698e3f03280_1456x816.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wtfs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd78944e-358d-492f-a354-8698e3f03280_1456x816.png" width="1456" height="816" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fd78944e-358d-492f-a354-8698e3f03280_1456x816.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:816,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2554561,&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://turkawka.substack.com/i/198413416?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd78944e-358d-492f-a354-8698e3f03280_1456x816.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_!wtfs!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd78944e-358d-492f-a354-8698e3f03280_1456x816.png 424w, https://substackcdn.com/image/fetch/$s_!wtfs!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd78944e-358d-492f-a354-8698e3f03280_1456x816.png 848w, https://substackcdn.com/image/fetch/$s_!wtfs!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd78944e-358d-492f-a354-8698e3f03280_1456x816.png 1272w, https://substackcdn.com/image/fetch/$s_!wtfs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd78944e-358d-492f-a354-8698e3f03280_1456x816.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 numbers matter because the people closest to the problem have been naming it from three directions. Josh Bersin describes the shift to a five-layer agentic stack inside the enterprise tenant and the vendor race to be the &#8220;front door&#8221; to it. Hung Lee curates a weekly read on how auto-apply tools have killed signal on both sides. Jan Tegze published a controlled study just today: 1,072 respondents trying to spot AI-written resumes, overall detection rate 50.4% &#8212; &#8220;statistically indistinguishable from flipping a coin,&#8221; with self-preferencing bias in LLM screeners ranging from 68 to 88 percent. Three voices, three angles on the same architecture failure: there is no protocol governing what one side&#8217;s AI owes the other, so the artifact under review (the resume, the application, the screen) becomes a forensic battleground instead of a meeting point. The funnel above is what the meeting point looks like when the contract exists.</p><p>The asymmetry across the two seekers is instructive too. The Digital Marketing seeker got 60 strong fits against the 145k corpus. The AI + L&amp;D seeker got 7. Same protocol, same validator, same corpus. The narrower the role, the smaller the genuine fit set &#8212; and the bigger the gap between &#8220;things you could apply to&#8221; and &#8220;things actually worth your time.&#8221; A feed would have shown the L&amp;D seeker hundreds of weak-adjacency matches. The validator showed him seven.</p><p>As of today, Seeker is open to every Kitsuno user. Anyone with a Library set up can publish a seeker card and start receiving validated matches. On the vacancy side, anyone can register a card &#8212; through our hiring web form, the v0.2 API, an ATS integration, or by federating their own well-known endpoint per the protocol. The first operator graduates from being the only one.</p><p></p><h2>The gateway</h2><p>You don&#8217;t need our infrastructure to participate. The protocol is documented and the schemas are public at <a href="https://kitsuno.ai/handshake/v0.2/">kitsuno.ai/handshake/v0.2/</a>. The reference implementations &#8212; policy matcher, state_hash, handshake validator, seeker and vacancy agents &#8212; live in <a href="https://github.com/kitsuno-ai/kitso-handshake-agents">github.com/kitsuno-ai/kitso-handshake-agents</a>. Apache 2.0.</p><p>If you&#8217;re an ATS, you integrate once and accept verified candidate intent from any compliant seeker &#8212; Kitsuno or otherwise. If you&#8217;re a recruiter agency, you publish vacancy cards your seekers can read. If you&#8217;re a country employment agency or a university careers office sitting on labour-market data, your <code>/.well-known/handshake-v0.2.json</code> is the routing surface &#8212; no central API, no contract with us required. If you&#8217;re building an agent of your own, the contract is the rails: what your agent owes and what it can refuse, in writing, in code.</p><p>The two-agent failure mode at the top of this post is not inevitable. It&#8217;s the default when transport is the only layer. The contract above it &#8212; staged disclosure, idempotency, a quality gate, federation &#8212; is what turns two agents into two principals being properly served. We built it because we needed it. We&#8217;re using it because no one else is offering it. And we open-sourced it because the only way the agent economy doesn&#8217;t drown the humans in it is if the contract is shared.</p><p>Build with us, fork against us. Just don&#8217;t fake the handshake.</p><div><hr></div><p><strong>Resources</strong></p><ul><li><p>Protocol spec: <a href="https://kitsuno.ai/handshake/v0.2/">kitsuno.ai/handshake/v0.2/</a></p></li><li><p>Validator section: <a href="https://kitsuno.ai/handshake/v0.2/#validator">kitsuno.ai/handshake/v0.2/#validator</a></p></li><li><p>Reference implementations: <a href="https://github.com/kitsuno-ai/kitso-handshake-agents">github.com/kitsuno-ai/kitso-handshake-agents</a></p></li><li><p>Federation well-known (ours): <a href="https://app.kitsuno.ai/.well-known/handshake-v0.2.json">app.kitsuno.ai/.well-known/handshake-v0.2.json</a></p></li><li><p>Kitsuno product: <a href="https://kitsuno.ai/">kitsuno.ai</a></p></li></ul><p></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://turkawka.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://turkawka.substack.com/subscribe?"><span>Subscribe now</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[Most Jobs Are Filled Before You Ever See Them]]></title><description><![CDATA[Don&#8217;t apply to old jobs. Find them while they&#8217;re warm.]]></description><link>https://turkawka.substack.com/p/most-jobs-are-filled-before-you-ever</link><guid isPermaLink="false">https://turkawka.substack.com/p/most-jobs-are-filled-before-you-ever</guid><dc:creator><![CDATA[Gregory Turkawka]]></dc:creator><pubDate>Tue, 12 May 2026 12:36:27 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!KTv1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78f21118-48fa-44f3-ade9-96aee8ca9c33_2912x1632.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<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/78f21118-48fa-44f3-ade9-96aee8ca9c33_2912x1632.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/78f21118-48fa-44f3-ade9-96aee8ca9c33_2912x1632.png&quot;}},&quot;isEditorNode&quot;:true}"></div><div><hr></div><p>This is an essay about two hidden job markets.</p><p>The first exists right now &#8212; the entire layer of public portals, company applicant tracking systems, country-specific feeds, and informal channels where jobs surface before they reach Indeed or LinkedIn. Public. Free. But mostly unindexed by the aggregators most people use. Reachable, if you know to look.</p><p>The second is forming as we speak. A market where AI agents on the employer side talk to AI agents on the jobseeker side, with humans waiting downstream to see what got matched. Also reachable &#8212; but increasingly only if you own a key card to the right vendor&#8217;s walled garden.</p><p>Both matter. Both compound. Let&#8217;s start with the one you can already do something about.</p><div><hr></div><p>There&#8217;s a rule going around this year called the 48-Hour Rule. If a job posting has been on Indeed or LinkedIn for more than 48 hours, you can assume it has more than a thousand applicants. The rule is correct. It&#8217;s also a polite understatement.</p><p>For many roles &#8212; especially the ones people actually want &#8212; the aggregators are downstream. By the time a posting reaches Indeed or LinkedIn or Adzuna, it has usually been circulating for one to three weeks in places you haven&#8217;t been told to look. The job you see today is the job the network finished with last Tuesday.</p><p>This essay is about where the job actually was last Tuesday. And the Tuesday before that. And what changes if you read the room where it first appeared, instead of the room where it ends up.</p><h2>The aggregator is the last stop</h2><p>Loren Feldman wrote <a href="https://21hats.substack.com/p/are-job-boards-like-indeed-dead">something in </a><em><a href="https://21hats.substack.com/p/are-job-boards-like-indeed-dead">21Hats</a></em><a href="https://21hats.substack.com/p/are-job-boards-like-indeed-dead"> in January</a> that nobody on the jobseeker side seems to have noticed. He was talking to small-business owners who hire. They&#8217;ve stopped using the boards.</p><blockquote><p>&#8220;In their view, the LinkedIns, the Indeeds, basically all the job boards, have devolved into an automated slippery slope that, in their eyes, produces no signal, just noise. A lot of noise. So these companies are opting out. They&#8217;re posting jobs on their own websites, or sometimes not, and using their current employees&#8217; and investors&#8217; networks of networks to find channels.&#8221;</p></blockquote><p>That is the employer side saying out loud what jobseekers have suspected for years. The visible market &#8212; Indeed, LinkedIn, Adzuna &#8212; has become a kind of clearance shelf. The roles that arrive there are the ones that didn&#8217;t get filled through warmer paths first.</p><p>The numbers underneath this are uglier than the vibe. ResumeUp.AI ran an analysis of LinkedIn postings in September 2025 and concluded that 27.4% of US listings were &#8220;ghost jobs&#8221; &#8212; postings active for more than 30 days with no clear intent to hire. A Resume Builder survey of 1,641 hiring managers went further: 62% admit posting ghost jobs specifically to make their current employees feel replaceable. The wall isn&#8217;t just fake. Part of it is hostile by design.</p><p>But the more interesting story isn&#8217;t the ghost rate. It&#8217;s the structural one &#8212; the one a writer at <em><a href="https://culturestrategist.substack.com/p/the-truth-about-the-hidden-job-market">Culture Strategist</a></em> sketched six days ago:</p><blockquote><p>&#8220;The hidden job market is not a conspiracy. It is a consequence of how trust operates in hiring decisions.&#8221;</p></blockquote><p>When an organisation has a role to fill, especially a serious one, the path of least resistance is a warm introduction &#8212; someone whose work a colleague can vouch for. Public posting is expensive, slow, and produces a flood of applications that need to be filtered. Posting publicly is the <em>last</em> thing a competent hiring team does, not the first. By the time you see the role on a board, the people closer to it have already had two weeks with it.</p><p>This is not new. What is new is that the gap between the network&#8217;s window and the public window has widened to the point where the public window is mostly clearance.</p><h2>Every country, every niche, has its &#8220;here we post first&#8221; portal</h2><p>So the question shifts. If the boards are the last stop, what&#8217;s the first one?</p><p>The honest answer is: many things, and most of them are not hidden. They&#8217;re just unindexed for jobseekers. Public, free to access, often well-maintained &#8212; but invisible if your idea of &#8220;looking for a job&#8221; starts with opening Indeed.</p><p>Every country has its own version. France has France Travail, the public employment service portal. Germany has the Bundesagentur f&#252;r Arbeit, alongside the rapidly growing Arbeitnow for tech roles. Sweden has Platsbanken. Norway has NAV. Switzerland, Romania, Luxembourg, the Nordics &#8212; every one of them has its own ecosystem, its own dominant private board, its own public-sector portal, often its own developer-specific feed.</p><p>Every niche has its own version, too. The international development and humanitarian sector publishes first on Devex and ReliefWeb. The effective-altruism community uses 80,000 Hours. Remote-only work is fragmented across Remotive, RemoteOK, Himalayas, We Work Remotely, Jobicy, Working Nomads, and EU Remote Jobs &#8212; each curating a slightly different angle. The IT-by-stack boards &#8212; DevIT in the UK, US, France, Netherlands, Romania &#8212; segment by hiring geography. The Muse curates by company culture. Specialised regional boards exist for almost every developer-dense city in Europe.</p><p>Then there&#8217;s the <em>real</em> upstream layer: the company&#8217;s own applicant tracking system. Most formal hiring in 2026 originates in Greenhouse, Lever, Workday, Ashby, SmartRecruiters, or one of a dozen other ATS platforms. The role is created there. It&#8217;s circulated internally first. It goes out to referral networks next. <em>Then</em> it gets syndicated to a job board &#8212; sometimes immediately, sometimes days later, sometimes not at all. Indeed and LinkedIn are downstream consumers of these feeds. They are not where the role lives. They are where copies of the role land, eventually, if it isn&#8217;t filled before that.</p><p>And then, layered on top, there&#8217;s the informal channel. People announce hires on Hacker News under the monthly &#8220;Who is hiring?&#8221; thread. Lobsters has its quieter equivalent. Reddit threads in r/forhire, r/cscareerquestions, country-specific subreddits. Mastodon servers where academics, public-sector technologists, and EU-policy people post openings to followers. BlueSky, where part of the LinkedIn and Twitter conversation has migrated. Telegram channels for sector-specific or country-specific job circulation, sometimes with thousands of subscribers.</p><p>None of these are hidden. All of them are public. Most of them are free. But almost none of them are indexed by the job aggregators. They live outside the Indeed-and-LinkedIn frame.</p><p>So when people talk about the hidden job market, what they usually mean is <em>the entire labour-information layer upstream of the aggregator</em>. Not a secret. Just somewhere else.</p><h2>What &#8220;fresh&#8221; looks like</h2><p>I run a platform that watches this upstream layer.</p><p>In the last twenty-four hours, we ingested 96,656 job postings. In the last thirty days, just over 1.75 million. The mix is what makes the picture interesting: a minority of that volume comes from Indeed, LinkedIn, and Adzuna combined; the majority comes from everywhere else. The shape of the data matches the shape of the argument: the aggregator share is real but partial.</p><p>The newest layer &#8212; the informal channels &#8212; is small in absolute volume, but it&#8217;s where the <em>freshest</em> signal lives. In the last twenty-four hours, six informal-channel readers we run (Hacker News &#8220;Who is hiring?&#8221;, Lobsters&#8217; monthly equivalent, Reddit, Mastodon, BlueSky, Telegram) surfaced 179 job leads at high confidence &#8212; roles that, in many cases, hadn&#8217;t yet appeared on any board.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1uk4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c186ac6-af81-42cc-a322-41b372f6990a_2594x1254.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1uk4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c186ac6-af81-42cc-a322-41b372f6990a_2594x1254.png 424w, https://substackcdn.com/image/fetch/$s_!1uk4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c186ac6-af81-42cc-a322-41b372f6990a_2594x1254.png 848w, https://substackcdn.com/image/fetch/$s_!1uk4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c186ac6-af81-42cc-a322-41b372f6990a_2594x1254.png 1272w, https://substackcdn.com/image/fetch/$s_!1uk4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c186ac6-af81-42cc-a322-41b372f6990a_2594x1254.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1uk4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c186ac6-af81-42cc-a322-41b372f6990a_2594x1254.png" width="1456" height="704" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8c186ac6-af81-42cc-a322-41b372f6990a_2594x1254.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:704,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:236334,&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://turkawka.substack.com/i/197343750?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c186ac6-af81-42cc-a322-41b372f6990a_2594x1254.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_!1uk4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c186ac6-af81-42cc-a322-41b372f6990a_2594x1254.png 424w, https://substackcdn.com/image/fetch/$s_!1uk4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c186ac6-af81-42cc-a322-41b372f6990a_2594x1254.png 848w, https://substackcdn.com/image/fetch/$s_!1uk4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c186ac6-af81-42cc-a322-41b372f6990a_2594x1254.png 1272w, https://substackcdn.com/image/fetch/$s_!1uk4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c186ac6-af81-42cc-a322-41b372f6990a_2594x1254.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 dashboard above is from earlier today. It&#8217;s one chapter &#8212; not the whole book. The much larger volume comes from the country portals and the direct ATS feeds. But the informal layer is where you see the first move: engineers and managers writing about open seats in their own words, days or weeks before HR opens a formal posting.</p><p>These aren&#8217;t leads in the spammy sense. They&#8217;re early sightings. The same role often appears on the company&#8217;s careers page a few days later, on a niche board a few days after that, and on LinkedIn or Indeed a week or two on &#8212; by which point the warm introductions have already happened.</p><p>The 48-Hour Rule is a downstream observation. The upstream picture is more like a two-week arc, from first sighting to clearance shelf.</p><p>Roughly: days zero to three, the role lives in internal Slack and the company&#8217;s ATS. Days three to ten, it spreads to niche boards, country portals, sometimes the monthly Hacker News thread. Days ten to twenty, the aggregators pick it up. Day twenty onwards, it&#8217;s clearance &#8212; or it never existed in the first place.</p><p>The arrow of attention is supposed to run upstream. Most jobseekers&#8217; attention runs the other way.</p><h2>The wrong response is more arrows at older targets</h2><p>If you accept that the aggregators are downstream, there&#8217;s an obvious wrong move. Last October, Joel Levesque wrote a piece called <a href="https://jobsearchwithai.substack.com/p/i-let-ai-apply-to-819-jobs-for-me">&#8220;I Let AI Apply to 819 Jobs for Me&#8221;</a>, documenting an experiment in fully automated mass application. Three AI agents, three resumes, automatic form-filling, automatic cover letters, set-and-forget. He is honest about the result: it helped him find a few organisations he liked, and almost nothing else. Most of the 819 applications were noise.</p><p>A wave of similar tools and posts has followed since. The premise is always the same: the market is overwhelming, so let an AI overwhelm it back. Fire enough applications at enough listings and statistically something has to land. It&#8217;s a recognisable instinct &#8212; the same one that drove the 200-applications-a-week strategy in 2024 &#8212; just with the keyboard work taken out.</p><p>The problem isn&#8217;t the automation. The problem is the target. Applying faster to the clearance shelf doesn&#8217;t put you upstream of it. It puts more arrows at the same wall. If the wall is 27% ghost listings and 73% jobs the network already saw, your hit rate is bounded by the wall, not by your throughput. And as more agents do this on both sides, the wall gets harder to climb for everyone &#8212; hiring managers have stopped reading past the first page of inbound applications.</p><p>The fix isn&#8217;t to shoot more arrows. It&#8217;s to find rooms with fewer walls.</p><h2>The right move is to catch them where they appear first</h2><p>I started building <a href="https://kitsuno.ai">Kitsuno</a> in February. I&#8217;m a non-engineer with twenty-one years in pedagogy, EdTech, and learning design, and I&#8217;m not the right person to write a labour-economics manifesto. But I have spent the last three months, with AI as engineering partner, crawling the layer upstream of the aggregators &#8212; and what I&#8217;ve learned is that the technical problem is small and the cultural problem is large.</p><p>The technical problem: read all these rooms at once, deduplicate the same job across sources, and surface the earliest sighting. Tag every sighting with its source and timestamp. If the same role appears in two places, keep the earlier one and link the later one. That&#8217;s the cross-pollination work. It&#8217;s the kind of thing a small team plus AI can do now, and it&#8217;s the kind of thing that would have required twenty engineers and a multi-year roadmap five years ago. The fact that it&#8217;s plausible at all is the actual news of this AI moment &#8212; for jobseekers, at least.</p><p>The cultural problem is harder. People look where they were taught to look. Indeed and LinkedIn have spent fifteen years training a reflex &#8212; open the app, refresh, scroll, apply &#8212; and reading a Norwegian labour ministry feed, or a monthly Hacker News thread, does not fit the reflex. It is not harder; it is unfamiliar. And the places where the jobs are fresher are also the places where there are fewer applicants per role, less filtering noise, and more chance that your application reaches a human who actually reads it.</p><p>I&#8217;d rather you didn&#8217;t need <a href="https://kitsuno.ai">Kitsuno</a> to do this. You can do it yourself, with a calendar, a feed reader, and an hour a week. What we do is read the rooms for you and deliver the catch when it&#8217;s still warm. Same idea, less labour.</p><div><hr></div><p>Applying to a visible job is not wrong. It&#8217;s just expensive &#8212; in time, in attention, in the slow erosion of caring whether your applications get read. The upstream rooms aren&#8217;t gatekept. They were never pointed out.</p><p>That&#8217;s the first hidden market. There is a second one forming, and it is being gatekept on purpose.</p><h2>The other hidden market: the one forming now</h2><p>Korn Ferry&#8217;s 2026 talent-leader survey found that 52% of talent acquisition leaders are integrating autonomous AI agents into their recruiting teams this year &#8212; agents that source, screen, draft outreach, and schedule interviews with minimal human oversight. By the end of 2026, around 80% of enterprises are expected to be using AI somewhere in hiring. On the jobseeker side, autonomous auto-apply agents have been around for over a year. Both sides are scaling, in parallel.</p><p>The convergence is already happening inside vendor walled gardens. <a href="https://hackajob.com/">Hackajob</a>, for instance, now sells the same AI agent &#8212; &#8220;Archer&#8221; &#8212; to both sides of the market. To employers, Archer &#8220;finds, qualifies and introduces high-fit candidates for every role.&#8221; To jobseekers, the same Archer &#8220;works 24/7 finding matches&#8221; and &#8220;shows you exactly why&#8221; you fit. One agent, one company, both sides &#8212; a closed loop. It is not bot-meets-bot yet. It is bot-and-bot-as-the-same-thing.</p><p>The next step is obvious. Different vendors will need their agents to talk to each other across systems. Companies hiring through one platform; candidates represented by agents on another. Some kind of handshake protocol becomes inevitable. The question is who writes the grammar.</p><p>If the grammar gets written inside one or two of the biggest vendors, the second hidden market will look a lot like the first &#8212; only harder to access. Today&#8217;s hidden market is unindexed but free to read. Tomorrow&#8217;s, if we don&#8217;t watch out, will be machine-readable but key-card-locked. The jobseeker without a Mac mini under the desk and a few agents running wild will be on the wrong side of the door.</p><p>We don&#8217;t want that.</p><p>So we published <a href="https://github.com/kitsuno-ai/kitso-handshake">a first draft of an open agent-to-agent protocol</a> last week. A way for jobseeker agents and vacancy agents to handshake, exchange structured invitations, and consent to disclosures, on terms that don&#8217;t require you to own the infrastructure. Apache 2.0. JSON schemas live and CORS-enabled. Anyone can implement it. The hidden market of the future will be machine-readable. We&#8217;d rather it be open. And we&#8217;d rather the people without a Mac mini under the desk be in it.</p><div><hr></div><p>By the time you see a role on LinkedIn, you&#8217;re not early &#8212; you&#8217;re late.</p><p>Don&#8217;t apply to old jobs. Find them while they&#8217;re warm.</p><p>And don&#8217;t let the next hidden market get built behind a key card.</p><div><hr></div><p><em>Pieces referenced:</em></p><ul><li><p>Loren Feldman, <a href="https://21hats.substack.com/p/are-job-boards-like-indeed-dead">&#8220;Are Job Boards Like Indeed Dead?&#8221;</a>, <em>21Hats</em>, January 2026.</p></li><li><p><a href="https://culturestrategist.substack.com/p/the-truth-about-the-hidden-job-market">&#8220;The Truth About the Hidden Job Market (And What Nobody Is Saying About It)&#8221;</a>, <em>Culture Strategist</em>, May 2026.</p></li><li><p>Byron, <a href="https://careerstrategies.substack.com/p/the-human-signal-in-the-digital-noise">&#8220;The Human Signal in the Digital Noise: How to Navigate the 2026 Job Market&#8221;</a>, <em>Career Strategies</em>, February 2026.</p></li><li><p>Joel Levesque, <a href="https://jobsearchwithai.substack.com/p/i-let-ai-apply-to-819-jobs-for-me">&#8220;I Let AI Apply to 819 Jobs for Me. Here&#8217;s What Happened&#8221;</a>, <em>Jobsearchwithai</em>, October 2025.</p></li><li><p><a href="https://hackajob.com/">Hackajob &#8212; Archer agent</a> (vendor product reference).</p></li></ul><p><em>Data sources:</em> ResumeUp.AI LinkedIn ghost-job analysis (September 2025); Resume Builder hiring-manager survey (2024&#8211;2025); Korn Ferry 2026 Talent Acquisition Leader Survey (via PeopleScout / Phenom 2026 Definitive Guide); SHRM AI-in-HR adoption data.</p><div><hr></div><p><em>&#169; 2026 Gregory Turkawka. <a href="https://kitsuno.ai">Kitsuno.ai</a>. Licensed under <a href="https://creativecommons.org/licenses/by-nc-nd/4.0/">CC BY-NC-ND 4.0</a>.</em></p><p></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://substack.com/@turkawka/note/p-197343750&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://substack.com/@turkawka/note/p-197343750"><span>Leave a comment</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[A CV is text. Your career is a network. Here’s the architecture in between.]]></title><description><![CDATA[Build journal, entry 5]]></description><link>https://turkawka.substack.com/p/a-cv-is-text-your-career-is-a-network</link><guid isPermaLink="false">https://turkawka.substack.com/p/a-cv-is-text-your-career-is-a-network</guid><dc:creator><![CDATA[Gregory Turkawka]]></dc:creator><pubDate>Sat, 02 May 2026 16:58:11 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!SVn8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F590ffcb7-2bb5-4908-935b-03bd8e27a909_2915x1632.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!SVn8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F590ffcb7-2bb5-4908-935b-03bd8e27a909_2915x1632.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!SVn8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F590ffcb7-2bb5-4908-935b-03bd8e27a909_2915x1632.png 424w, https://substackcdn.com/image/fetch/$s_!SVn8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F590ffcb7-2bb5-4908-935b-03bd8e27a909_2915x1632.png 848w, https://substackcdn.com/image/fetch/$s_!SVn8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F590ffcb7-2bb5-4908-935b-03bd8e27a909_2915x1632.png 1272w, https://substackcdn.com/image/fetch/$s_!SVn8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F590ffcb7-2bb5-4908-935b-03bd8e27a909_2915x1632.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!SVn8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F590ffcb7-2bb5-4908-935b-03bd8e27a909_2915x1632.png" width="724.65625" height="405.6283267513736" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/590ffcb7-2bb5-4908-935b-03bd8e27a909_2915x1632.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:815,&quot;width&quot;:1456,&quot;resizeWidth&quot;:724.65625,&quot;bytes&quot;:19062907,&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://turkawka.substack.com/i/196233366?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F590ffcb7-2bb5-4908-935b-03bd8e27a909_2915x1632.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!SVn8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F590ffcb7-2bb5-4908-935b-03bd8e27a909_2915x1632.png 424w, https://substackcdn.com/image/fetch/$s_!SVn8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F590ffcb7-2bb5-4908-935b-03bd8e27a909_2915x1632.png 848w, https://substackcdn.com/image/fetch/$s_!SVn8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F590ffcb7-2bb5-4908-935b-03bd8e27a909_2915x1632.png 1272w, https://substackcdn.com/image/fetch/$s_!SVn8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F590ffcb7-2bb5-4908-935b-03bd8e27a909_2915x1632.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>Two weeks ago I argued that the Professional Record Store &#8212; the structured library of evidence inside Kitsuno &#8212; is what a SOUL.md looks like when it&#8217;s architecture instead of a file.</p><p>Reading more on the topic since, I realized two things in that piece were under-explored. What&#8217;s actually <em>in</em> the PRS &#8212; the layers, the structure, what makes it function as a brain rather than a database. And why any of this matters to a reader who isn&#8217;t building agents &#8212; the person looking for a job, who just wants an AI that writes a good cover letter.</p><p>Both turn out to need the same answer.</p><p>A CV is text. A LinkedIn profile is a list of strings. Both are flat. The actual record of your professional self &#8212; the project that earned the praise, the colleague who wrote the testimonial, the certificate that ratified the skill, the talk that brought new ideas into circulation &#8212; lives in nine different places, none of which talk to each other. The brag document is the closest historical pattern, and <a href="https://kitsuno.ai/content/en/brag-document-living-career-portfolio/">it fails for the reasons flat documents always fail</a>.</p><p>The PRS turns those nine places into one network. Once you&#8217;re inside that network, everything downstream becomes possible. Better matches. Better drafts. Honest validators. Coaches that don&#8217;t make things up. A public surface that holds up under questioning. Career advice rooted in your evidence and the market&#8217;s. A multi-agent system that feels like magic instead of feeling like the usual generative-AI lottery.</p><p>Let me show you what&#8217;s inside.</p><div><hr></div><h2>Six layers of evidence</h2><p>The PRS organizes your professional life into six layers. They&#8217;re not content categories &#8212; those would be &#8220;PDFs, videos, links, text.&#8221; They&#8217;re <em>kinds of proof</em>. Each layer carries a different weight when an agent (or a hiring manager) asks the question: what&#8217;s true about this person?</p><p><strong>Testimonials.</strong> Someone who worked with you said something. A former manager. A colleague. A client. The proof is relational: a witness saw the work and was willing to put their name on what they saw. The brain stores both the original quote (in whatever language it was given) and the context &#8212; who said it, when, in what role.</p><p><strong>Awards &amp; recognition.</strong> Ratified judgment. Someone with standing &#8212; a jury, a committee, an institution &#8212; assessed your work against criteria and concluded something formal. The HundrED Switzerland selection. The ETH Prize for STEM teaching. These don&#8217;t replace testimonials; they ratify a different kind of claim.</p><p><strong>Publications.</strong> Reach. You said something publicly that reached an audience and entered the record. Articles, papers, talks, podcast appearances. The proof is that ideas you formed got distributed and survived contact with readers.</p><p><strong>Documents.</strong> Credentials. Diplomas, certificates, transcripts. The proof is institutional: a qualifying body issued the document under defined conditions. Stored verbatim, never paraphrased.</p><p><strong>Kitso-generated.</strong> Ongoing reflection. Notes from coaching sessions. Field observations. Structured records of conversations you had with Kitso about your career. The proof here is internal &#8212; how your thinking has evolved over time, captured as it happened rather than reconstructed from memory.</p><p><strong>Media.</strong> Craft. Photos, videos, recordings of work in motion. A teaching demo. A keynote. A product walkthrough. The proof is direct: here&#8217;s the work itself, not a description of the work.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jW0G!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d65816f-07ef-4b9f-86ed-2c8da00aa79c_2340x1036.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jW0G!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d65816f-07ef-4b9f-86ed-2c8da00aa79c_2340x1036.png 424w, https://substackcdn.com/image/fetch/$s_!jW0G!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d65816f-07ef-4b9f-86ed-2c8da00aa79c_2340x1036.png 848w, https://substackcdn.com/image/fetch/$s_!jW0G!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d65816f-07ef-4b9f-86ed-2c8da00aa79c_2340x1036.png 1272w, https://substackcdn.com/image/fetch/$s_!jW0G!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d65816f-07ef-4b9f-86ed-2c8da00aa79c_2340x1036.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jW0G!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d65816f-07ef-4b9f-86ed-2c8da00aa79c_2340x1036.png" width="1456" height="645" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8d65816f-07ef-4b9f-86ed-2c8da00aa79c_2340x1036.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:645,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:278873,&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://turkawka.substack.com/i/196233366?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d65816f-07ef-4b9f-86ed-2c8da00aa79c_2340x1036.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_!jW0G!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d65816f-07ef-4b9f-86ed-2c8da00aa79c_2340x1036.png 424w, https://substackcdn.com/image/fetch/$s_!jW0G!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d65816f-07ef-4b9f-86ed-2c8da00aa79c_2340x1036.png 848w, https://substackcdn.com/image/fetch/$s_!jW0G!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d65816f-07ef-4b9f-86ed-2c8da00aa79c_2340x1036.png 1272w, https://substackcdn.com/image/fetch/$s_!jW0G!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d65816f-07ef-4b9f-86ed-2c8da00aa79c_2340x1036.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 you can&#8217;t see in a flat list of these layers but you can see in the screenshot above is that the brain has its own opinion about itself. The &#8220;Rich &#183; 100/100&#8221; status next to a profile means the brain is telling Kitso: <em>this person has enough evidence here that I can answer most questions about them with grounded confidence.</em> A profile sitting at &#8220;Sparse &#183; 30/100&#8221; tells Kitso: <em>be honest with this user that I don&#8217;t have much to work with yet.</em> Self-awareness, not performance.</p><div><hr></div><h2>Two boring standards underneath</h2><p>The brain works because two boring European standards do most of the heavy lifting. Neither is sexy. Both are essential.</p><p><strong>ESCO</strong> is the European Skills, Competences, Qualifications and Occupations classification. Think of it as the EU&#8217;s library catalog for work. Every recognized occupation gets a stable ID. Every recognized skill gets a stable ID. &#8220;JavaScript&#8221; is the same thing in Stockholm as it is in Lisbon, with the same code, available in 27 languages. &#8220;Headmaster&#8221; resolves to a specific occupation node with defined skill expectations and related roles. A forklift driver&#8217;s skills get the same structural treatment as a management consultant&#8217;s &#8212; no profession is second-class in the catalog.</p><p>Why this matters: without ESCO, every job platform invents its own taxonomy and the meanings don&#8217;t travel. &#8220;Customer success specialist&#8221; on one site might be &#8220;account manager&#8221; on another might be &#8220;client relationship lead&#8221; on a third &#8212; and a search engine can&#8217;t tell. With ESCO, the underlying ID is the same regardless of how the role is phrased, and any agent reading the catalog can compute real overlap between what someone has done and what a role requires.</p><p><strong>xAPI</strong> is a tiny grammar from the learning-analytics world. Originally designed to record what learners did across different educational systems, it&#8217;s the cleanest open standard for writing down structured statements about activity. The grammar is three slots: an actor, a verb, an object. <em>Greg led the L&amp;D platform redesign.</em> <em>Greg shipped the UNICEF programme in 11 countries.</em> <em>Greg taught the master&#8217;s seminar at PHZH for four years.</em> Each statement is structured, machine-readable, queryable, and &#8212; crucially &#8212; portable.</p><p>Why this matters: when your career evidence is written down in xAPI, it doesn&#8217;t belong to the platform that captured it. You can export every Statement, hand it to a different system, and it still means the same thing. No vendor lock-in. No &#8220;oh, you&#8217;ll lose your data if you cancel.&#8221; The format is the same whether the system is Kitsuno, a university LMS, or a platform that doesn&#8217;t exist yet.</p><p>Five years ago you couldn&#8217;t have built a brain like this. ESCO existed but few platforms used it as a first-class citizen. xAPI existed but mostly inside enterprise learning systems. What changed is the tooling to extract structured records from messy human evidence &#8212; which is what large language models actually do well &#8212; finally became reliable enough to make the front of the brain (the part where you put stuff in) not painful.</p><div><hr></div><h2>What makes something agent infrastructure</h2><p><a href="https://natesnewsletter.substack.com/p/issue-trackers-agent-infrastructure">Nate B. Jones published a piece this week</a> arguing that AI agents will route around every tool that can&#8217;t pass five structural tests. His thesis: the substrate agents actually need to do real work was built thirty years ago for human coordination, by accident, and the companies that own it (Atlassian, Salesforce, ServiceNow) are sitting on the most strategic data assets in enterprise software. He proposes a five-question diagnostic for telling agent infrastructure apart from tools that just chat:</p><ol><li><p>Does it have <strong>records, or just content</strong>?</p></li><li><p>Does it have a <strong>state machine, or just labels</strong>?</p></li><li><p>Is <strong>ownership a field, or an implication</strong>?</p></li><li><p>Are the verbs <strong>structural, or conversational</strong>?</p></li><li><p>Is the <strong>history queryable, or just visible</strong>?</p></li></ol><p>Run that diagnostic on the PRS.</p><p><strong>Records.</strong> Every piece of evidence is a discrete row with structured fields &#8212; ESCO IDs, xAPI Statements, source, date, permissions. Not content. Records.</p><p><strong>State machine.</strong> Drafts move from composed &#8594; validated &#8594; sent, and the Validator can refuse to advance them. Evidence has visibility states &#8212; private, visible-to-agents, public &#8212; independently set per record. Skills carry their evidence link as a structural relation, not a free-text claim. Defined transitions, not labels.</p><p><strong>Ownership.</strong> Every record carries an actor. Every visibility toggle is a field. The user owns the brain; the brain knows it.</p><p><strong>Structural verbs.</strong> Add. Link. Validate. Score. Compose. Surface. Publish. Export. Delete. Each verb has clear preconditions and a clear effect on state. None of them are &#8220;chat about it.&#8221;</p><p><strong>Queryable history.</strong> Every change is logged with timestamp and actor. The Validator can prove what it knew when. xAPI Statements are inherently queryable history.</p><p>Five out of five.</p><p>Run the same diagnostic on a CV: zero out of five. A LinkedIn profile: one, generously. A ChatGPT memory dump: one &#8212; state of a sort, but no defined verbs, no ownership-as-field, no structural transitions, no queryable history beyond scrollback.</p><p>Nate&#8217;s argument is that the boring tools won at the org level because they accidentally built the substrate that agents need. The same logic applies one level down: the boring architectural choices win at the personal level too. A clean PRS is the issue-tracker shape applied to professional evidence. Same five properties. Same reason it works for agents.</p><p>Now watch what that scoring buys you.</p><div><hr></div><h2>Watch the weaving</h2><p>A clean brain &#8212; six layers of evidence, indexed against ESCO, structured as xAPI Statements &#8212; is what makes a multi-agent system actually work. Six specialized agents inside Kitsuno, each doing one job, all reading from the same record:</p><ul><li><p><strong>Crawler</strong> finds jobs across 53 sources in four languages.</p></li><li><p><strong>Scorer</strong> reads each posting and computes a fit against your evidence using a transparent rubric.</p></li><li><p><strong>Writer</strong> drafts the application &#8212; CV, cover letter, message &#8212; composing from the brain.</p></li><li><p><strong>Validator</strong> checks every claim in the draft against the brain. If a sentence says &#8220;I led a team of 12,&#8221; there must be an experience record that supports it. If not, the claim is flagged.</p></li><li><p><strong>Coach</strong> runs the slower work: career direction conversations, mock interviews, pivot analysis grounded in market data.</p></li><li><p><strong>Concierge</strong> is the always-on layer &#8212; Kitso surfacing tensions, prompts, opportunities you didn&#8217;t ask for.</p></li></ul><p>None of them invent. All of them compose. That&#8217;s the architectural commitment that makes the multi-agent system feel like magic instead of feeling like the usual generative-AI lottery.</p><p>Watch one application go through:</p><p>A new posting drops in &#8212; <em>Senior Learning Designer at a fintech in Berlin. German required. Hybrid.</em> The Crawler hands it to the Scorer, which queries the brain: ESCO skills required &#8594; match against ESCO skills present in the PRS. Returns a fit score with a per-skill breakdown. The user opens the draft. The Writer composes the cover letter, and for every claim it makes it cites the source: the <em>led an L&amp;D platform redesign</em> line links to the experience record from the user&#8217;s third job. The <em>multilingual delivery experience</em> line links to two testimonials and one publication. The <em>ed-tech background</em> links to the diploma in the document layer. The Validator runs over the finished draft and flags one sentence &#8212; <em>Have led teams through three major product launches.</em> The brain only has evidence for two. The user revises. Then sends.</p><p>Now the next posting drops in &#8212; <em>Head of Curriculum at an international school in Vienna. English/German bilingual. Leadership experience required.</em> Same brain. Same agents. Different composition. The Scorer queries different ESCO skills. The Writer pulls different testimonials &#8212; the headmaster references this time, the teaching observations &#8212; and cites different metrics: students reached instead of users converted, eleven countries of programme delivery instead of fintech market launches. The diploma in the document layer is the same diploma; the framing is now pedagogy, not enterprise tech. The second cover letter doesn&#8217;t reuse a sentence from the first. It doesn&#8217;t need to. Every draft starts from the brain, not from the previous draft.</p><p>Nothing invented. Everything composed. The agent that wrote the cover letter cannot make claims the brain doesn&#8217;t support. The agent that scored the fit cannot fudge the rubric. The agent that found the job cannot pretend it crawled a source it didn&#8217;t.</p><p>That&#8217;s the difference a clean brain makes. A messy brain produces messy weaving &#8212; generic phrases, unsupported claims, the same paragraph that gets shipped to every employer. A clean brain produces specific, traceable, defensible drafts that read like the person they&#8217;re about, because they&#8217;re literally composed from that person&#8217;s record.</p><div><hr></div><h2>Turning the brain outward</h2><p>Everything I&#8217;ve described so far is what happens when <em>you</em> ask the brain to help you. There&#8217;s a second mode: opening selected parts of the brain to the outside world, and letting visitors interact with it directly.</p><p>This is what the public portfolio does &#8212; the <a href="https://kitsuno.ai/content/en/what-is-a-living-career-portfolio/">Living Career Portfolio</a> we describe for non-engineer readers. You pick what&#8217;s visible &#8212; the testimonials worth showing, the projects you&#8217;re proud of, the credentials worth signaling, the bio in your own words. Your URL, your career page, under your control. So far, standard portfolio territory.</p><p>What&#8217;s not standard is what you can layer on top.</p><p><strong>Ask Kitso (FAB).</strong> A recruiter, a hiring manager, a former colleague who wants to refresh their memory &#8212; anyone landing on your portfolio can ask Kitso about you. <em>Has she shipped products across multiple EU markets? What&#8217;s the largest team he&#8217;s led? Does she have any teaching background?</em> Kitso answers from your brain. Not generated guesses &#8212; composed answers grounded in the same six evidence layers I described above. Every claim is backed by an artifact, a testimonial, a document, or a publication, and the visitor can see what each answer is based on.</p><p><strong>Job Fit analyzer.</strong> A recruiter or company can drop a job description into a box on your portfolio and get a grounded fit score. Not your self-assessment, not a generic match &#8212; a real score: which required skills you have ESCO-aligned evidence for, which ones you don&#8217;t, where the strongest matches sit, and what evidence supports each. It runs the same Scorer that the inward-facing version uses, so the recruiter gets a defensible answer in seconds, and you get to see exactly what they saw.</p><p><strong>Both are off by default.</strong> The portfolio is private until you publish it. The FAB and the Job Fit analyzer are independent toggles &#8212; you can publish a static portfolio with neither, with one, or with both. Every layer of evidence is independently controllable: certain testimonials visible to you and your agents but not the public, certain documents private, certain projects featured, others kept internal. The brain&#8217;s structure makes this granular control possible, because every piece of evidence is a discrete record with its own permissions.</p><p>One product note: the public portfolio with the FAB and Job Fit analyzer is a Pro-tier feature. The PRS itself and the inward-facing agents drafting against your evidence work on the free Kit tier. The outward-facing surface is what Pro unlocks.</p><p>This is what the brain enables that a CV cannot, that a LinkedIn profile cannot, that a ChatGPT memory dump definitely cannot: a grounded, controllable, two-way interface between you and the people who might want to work with you. The visitor doesn&#8217;t read static text and try to imagine the rest. They ask, and the brain answers &#8212; from real evidence, with the receipts in plain view.</p><div><hr></div><h2>The brain reads the market</h2><p>There&#8217;s a third mode beyond drafting and showing: the brain as a window into what the market is doing right now, and what you&#8217;d need to change about your record to be considered somewhere new.</p><p>The Crawler scans more than a million job postings across 53 sources in four languages. Every posting it touches gets parsed for the ESCO skills it requires. Aggregate that across the postings adjacent to your profile and you have a real picture of what your market is actually asking for. Match against the skills present in your library and the deltas become visible.</p><p>Three things this enables.</p><p><strong>Skill suggestions grounded in real demand.</strong> When a skill keeps appearing in postings adjacent to your profile but isn&#8217;t in your library, Kitso flags it. <em>Three of last week&#8217;s postings in your search radius required FinOps awareness. Your evidence library doesn&#8217;t mention it. Did you forget to add it, or is this a gap?</em> If you have the experience but never thought to record it, you can add it in seconds. If it&#8217;s a real gap, that&#8217;s now a clear signal &#8212; not a vibe, not a generic LinkedIn-style skills suggestion, but a fact about what your specific market is asking for that your specific brain doesn&#8217;t have evidence for.</p><p><strong>Pivot guidance specific to you.</strong> You can ask Kitso the kind of question a career counselor used to charge &#8364;200 an hour to answer badly. <em>How should I tweak my library to be considered for the emerging medical-tech sector?</em> Or <em>what&#8217;s missing from my profile if I want to pivot into green tech?</em> Kitso queries the actual postings, identifies which ESCO skills cluster around those sectors, cross-references what&#8217;s already in your brain, and answers concretely. <em>Your L&amp;D platform experience translates well into medtech training &#8212; that&#8217;s two existing testimonials and one publication you can lead with. The gap is regulatory awareness; six recent postings mention CE marking and IVDR. Want to start a Coach session on building evidence in that area?</em> Specific delta. Computed from your specific brain against the specific market.</p><p><strong>Market intelligence at the broadest level.</strong> <em>What are the hottest sectors in the EU right now? Where would I fit with my current portfolio?</em> The brain has read more than a million jobs across 53 sources in four languages &#8212; published as <a href="https://kitsuno.ai/content/en/job-market-signal-april-2026/">the monthly Job Market Signal</a> for anyone to read. The Coach can tell you which sectors are growing, which are quietly contracting, where your existing evidence already gives you a strong starting position, and where you&#8217;d need to invest to reach a target. The advice is rooted in evidence on both sides &#8212; your evidence and the market&#8217;s, computed against each other.</p><p>This is what most career advice can&#8217;t be &#8212; specific to you AND specific to the market &#8212; because most career advice has access to neither side of the equation. Generic advice is generic because the advisor doesn&#8217;t know you. Personal advice is often outdated because the advisor doesn&#8217;t know what&#8217;s hiring. The brain has both.</p><div><hr></div><h2>&#8220;But couldn&#8217;t I just dump it all in ChatGPT?&#8221;</h2><p>A fair counter-question &#8212; the one I&#8217;d raise myself if I were reading this from the outside: couldn&#8217;t I just paste my CV, my testimonials, my certificates into ChatGPT&#8217;s memory and ask it to write applications for me? Or use one of those agents that crawls my desktop and builds context from my files?</p><p>Yes. You can. Both work, in the limited sense that they produce output. So let me be honest about what you&#8217;re trading when you take the convenient option, specifically for this kind of data.</p><p><strong>Sovereignty.</strong> Your career evidence is your most private document. It contains testimonials from people who put their names on it under the assumption it stayed somewhere bounded. It contains feedback from managers who&#8217;d be embarrassed if it was scraped into model training. ChatGPT&#8217;s default settings opt you into model improvement. Most desktop-crawler agents store extracted context in cloud services that are themselves training models. Kitsuno is hosted in Hetzner Nuremberg under European law. We don&#8217;t train on your data. JSON in, JSON out, on every tier including the free one. This isn&#8217;t a marketing claim &#8212; it&#8217;s an architectural fact you can verify by exporting your data and reading what came back.</p><p><strong>Transparency.</strong> When ChatGPT writes a cover letter for you, you have no way to inspect why it picked the phrases it picked. When a desktop-crawler agent makes a claim, you can&#8217;t see which file it pulled from, in what order, with what weight. Kitsuno&#8217;s Scorer shows its rubric, line by line, per posting. The Writer cites every claim back to a specific evidence record. The Validator&#8217;s flags are visible. The Concierge&#8217;s signals &#8212; <em>three strong fits unreviewed for more than five days, primary skill set doesn&#8217;t appear in title patterns of top-scored jobs</em> &#8212; are queryable observations, not vibes. You can see what the agent is doing because the agent doesn&#8217;t know how to do anything secret.</p><p><strong>Reversibility.</strong> GDPR Article 20 gives you the right to data portability and the right to erasure. With Kitsuno, both are one action. Download every piece of evidence in the format we stored it, including every xAPI Statement and every ESCO ID. Delete your account, and the data is gone &#8212; across primary database, backups, and all derived caches. With ChatGPT memory, you can clear the chat but the model doesn&#8217;t unlearn. With a desktop-crawler agent that ran six months ago, what got extracted, where, and to whom is a question you may not be able to answer.</p><p>None of this means the convenient option is wrong. It means the trade-off is real, and you should know what you&#8217;re trading. For career evidence specifically &#8212; for the document that decides whether you eat next month &#8212; I think the trade goes the other way.</p><div><hr></div><h2>The brain has to be yours</h2><p>In the brain article I named three souls in the Kitsuno system. Tenko &#8212; the operational memory of how the product gets built. Kitso&#8217;s architecture &#8212; the principles, voice contract, and diagnostic brain that produce a consistent character across the system&#8217;s agents. The PRS &#8212; the user&#8217;s professional record, structured so any AI system can read it.</p><p>All three follow the same principle: don&#8217;t describe yourself to the machine. Let the work describe you.</p><p>This piece adds a fourth: <strong>don&#8217;t let the machine learn you while pretending to help you.</strong> Sovereignty, transparency, reversibility &#8212; those aren&#8217;t features. They&#8217;re the conditions under which a brain can stay yours.</p><p>A CV is text. A LinkedIn profile is a list of strings. Both are flat. The PRS turns those flat surfaces into a network &#8212; six layers of evidence indexed against open European standards, queryable by six specialized agents that compose from your record without inventing on top of it. Once the brain is clean, everything else falls into place. Better matches, because the Scorer reads real evidence. Better drafts, because the Writer cites instead of generates. Honest validators, because the Validator can prove what it knows. Coaches that don&#8217;t make things up, because they can&#8217;t. A public portfolio that holds up under questioning, because the FAB and the Job Fit analyzer compose from the same receipts. Career advice that&#8217;s both personal and current, because the same brain reads your record and the market.</p><p>If you want to see it: <a href="https://kitsuno.ai/">kitsuno.ai</a>. You can build a complete PRS on the free Kit tier and run the inward-facing agents &#8212; Scorer, Writer, Validator drafting against your evidence &#8212; at &#8364;0. The outward-facing layer (public portfolio with the FAB and Job Fit analyzer) sits on Pro. If you want to read why we built it this way: <a href="https://turkawka.substack.com/p/my-ai-has-a-brain-it-didnt-need-a">the brain article</a>. If you want to verify the open standards aren&#8217;t just talk: <a href="https://github.com/kitsuno-ai">github.com/kitsuno-ai</a> &#8212; and we wrote about <a href="https://kitsuno.ai/content/en/open-source-eu-job-sources/">the open-source components powering Kitsuno</a> for the longer story. The <code>agentic-job-search-eu</code> repository is the machine-readable directory of EU job sources we crawl. Public, yours to fork, contributions welcome.</p><p>The brain has to be yours. Everything else follows.</p><div><hr></div><p><em>Greg Turkawka is the founder of <a href="https://kitsuno.ai/">Kitsuno.ai</a>, AI career intelligence for European job seekers &#8212; your evidence as the brain, six specialized agents that compose instead of invent, no auto-apply. 18 years in L&amp;D and EdTech. Building in Bucharest with a fox and an AI that reads its own session logs.</em></p><p><em>Next: Still walking. Maybe the prompt that turns twenty years of psychology, pedagogy, and systems thinking into one working tool. Maybe somewhere else entirely. We&#8217;ll see.</em></p><p></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://turkawka.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://turkawka.substack.com/subscribe?"><span>Subscribe now</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://substack.com/@turkawka/note/p-196233366&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://substack.com/@turkawka/note/p-196233366"><span>Leave a comment</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://turkawka.substack.com/?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share Gregory Turkawka&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://turkawka.substack.com/?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share Gregory Turkawka</span></a></p>]]></content:encoded></item><item><title><![CDATA[Is the job market broken?]]></title><description><![CDATA[I crawled 1 million jobs to find out.]]></description><link>https://turkawka.substack.com/p/is-the-job-market-broken</link><guid isPermaLink="false">https://turkawka.substack.com/p/is-the-job-market-broken</guid><dc:creator><![CDATA[Gregory Turkawka]]></dc:creator><pubDate>Fri, 24 Apr 2026 14:10:36 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!zwvA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa72f7cb1-13b5-48a4-b0f4-992c87f20465_2912x1632.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zwvA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa72f7cb1-13b5-48a4-b0f4-992c87f20465_2912x1632.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zwvA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa72f7cb1-13b5-48a4-b0f4-992c87f20465_2912x1632.png 424w, https://substackcdn.com/image/fetch/$s_!zwvA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa72f7cb1-13b5-48a4-b0f4-992c87f20465_2912x1632.png 848w, https://substackcdn.com/image/fetch/$s_!zwvA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa72f7cb1-13b5-48a4-b0f4-992c87f20465_2912x1632.png 1272w, https://substackcdn.com/image/fetch/$s_!zwvA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa72f7cb1-13b5-48a4-b0f4-992c87f20465_2912x1632.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zwvA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa72f7cb1-13b5-48a4-b0f4-992c87f20465_2912x1632.png" width="1456" height="816" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a72f7cb1-13b5-48a4-b0f4-992c87f20465_2912x1632.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:816,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:19043294,&quot;alt&quot;:&quot;Is the job market broken? 1 million jobs say yes.&quot;,&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://turkawka.substack.com/i/195349571?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa72f7cb1-13b5-48a4-b0f4-992c87f20465_2912x1632.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Is the job market broken? 1 million jobs say yes." title="Is the job market broken? 1 million jobs say yes." srcset="https://substackcdn.com/image/fetch/$s_!zwvA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa72f7cb1-13b5-48a4-b0f4-992c87f20465_2912x1632.png 424w, https://substackcdn.com/image/fetch/$s_!zwvA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa72f7cb1-13b5-48a4-b0f4-992c87f20465_2912x1632.png 848w, https://substackcdn.com/image/fetch/$s_!zwvA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa72f7cb1-13b5-48a4-b0f4-992c87f20465_2912x1632.png 1272w, https://substackcdn.com/image/fetch/$s_!zwvA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa72f7cb1-13b5-48a4-b0f4-992c87f20465_2912x1632.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>No. It&#8217;s worse than that.</p><p>Broken implies something worked once and stopped. The European job market was never designed to work for the people using it. It was designed for employers, for platforms, and for the recruitment industry. Job seekers are the traffic, not the customer.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://turkawka.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! 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 didn&#8217;t set out to prove this. I set out to build a product.</p><h2>The patterns showed up uninvited</h2><p>I&#8217;m building <a href="https://kitsuno.ai">Kitsuno</a> &#8212; an AI job search agent for European careers. To make it work, I need sources. Job boards, national employment agencies, niche platforms, ATS systems. I started with about 30. Five weeks and fifty-something sources later, my pipeline had crawled just under a million job postings.</p><p>I wasn&#8217;t doing market research. I was debugging a crawler. But when you read a million job postings programmatically &#8212; when you extract, classify, and compare them across countries and sources &#8212; patterns emerge that no amount of scrolling LinkedIn would ever reveal.</p><p>Three of them stopped me cold.</p><h2>1. The salary wall</h2><p>France publishes salary information in 73.2% of job postings. Norway: 56.6%. Sweden: 36.4%.</p><p>Germany? 13.8%. Austria: 11.9%. Italy: 7.7%.</p><p>This is not a gap. It is a wall. On one side, people applying for jobs can see what those jobs pay. On the other side, people walk into salary negotiations blind and call it normal.</p><p>The EU Pay Transparency Directive arrives in June 2026. It requires salary ranges in job postings across all member states. The data shows who is ready and who is not even close. France will barely notice the change. Germany and Italy will need to rebuild how they write job postings from scratch.</p><p>And here&#8217;s the part that should make you angry: this information has always existed. Employers know what the role pays. They chose not to tell you. Some countries decided that was unacceptable. Others decided it was business as usual.</p><p>73% versus 14%. Same continent. Same economy. Same workers looking for jobs.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!IJIF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8dbcdee4-09d0-4c6a-a936-c867ef0bfea2_3207x2306.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IJIF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8dbcdee4-09d0-4c6a-a936-c867ef0bfea2_3207x2306.png 424w, https://substackcdn.com/image/fetch/$s_!IJIF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8dbcdee4-09d0-4c6a-a936-c867ef0bfea2_3207x2306.png 848w, https://substackcdn.com/image/fetch/$s_!IJIF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8dbcdee4-09d0-4c6a-a936-c867ef0bfea2_3207x2306.png 1272w, https://substackcdn.com/image/fetch/$s_!IJIF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8dbcdee4-09d0-4c6a-a936-c867ef0bfea2_3207x2306.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!IJIF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8dbcdee4-09d0-4c6a-a936-c867ef0bfea2_3207x2306.png" width="3207" height="2306" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8dbcdee4-09d0-4c6a-a936-c867ef0bfea2_3207x2306.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2306,&quot;width&quot;:3207,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:347668,&quot;alt&quot;:&quot;salary transparency by country&quot;,&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://turkawka.substack.com/i/195349571?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9aa9f434-9853-4498-891f-7813dd8f4e7f_3214x2306.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="salary transparency by country" title="salary transparency by country" srcset="https://substackcdn.com/image/fetch/$s_!IJIF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8dbcdee4-09d0-4c6a-a936-c867ef0bfea2_3207x2306.png 424w, https://substackcdn.com/image/fetch/$s_!IJIF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8dbcdee4-09d0-4c6a-a936-c867ef0bfea2_3207x2306.png 848w, https://substackcdn.com/image/fetch/$s_!IJIF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8dbcdee4-09d0-4c6a-a936-c867ef0bfea2_3207x2306.png 1272w, https://substackcdn.com/image/fetch/$s_!IJIF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8dbcdee4-09d0-4c6a-a936-c867ef0bfea2_3207x2306.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>2. Remote is a search term, not a reality</h2><p>Everyone filters for remote jobs. The platforms know this &#8212; &#8220;remote&#8221; is consistently one of the top search filters. So you&#8217;d expect a healthy chunk of postings to offer it.</p><p>92.7% of the postings in our data are onsite. 5.2% are remote. 2.1% are hybrid.</p><p>The &#8220;remote revolution&#8221; is a filter-bubble artifact. People search for it because they want it. Platforms surface what little exists because engagement matters. The impression that remote work is widely available is created by algorithmic amplification, not by the actual job market.</p><p>It gets worse. Many postings that include the word &#8220;remote&#8221; are location-restricted. &#8220;Remote within Germany.&#8221; &#8220;Remote &#8212; must be based in the EU.&#8221; The word &#8220;remote&#8221; in a job title does not mean what most people think it means. Our geo-scope gate catches this: it checks whether a remote posting is genuinely international or quietly restricted to a country where you may not have work authorization.</p><p>People search for what doesn&#8217;t exist and blame the market for being broken. The market isn&#8217;t hiding remote jobs. They barely exist.</p><h2>3. Thirty markets pretending to be one</h2><p>France Travail &#8212; the French national employment agency &#8212; has a public API. Free. Fast. Well-documented. Nearly ten thousand unique postings in our dataset from a single source, most with salary information. It is, quietly, one of the best job data sources in Europe.</p><p>Platsbanken, Sweden&#8217;s public employment service, is a goldmine. Rich structured data, location standardized, updated daily. Almost nobody outside Scandinavia crawls it.</p><p>Meanwhile, Indeed blocks automated access aggressively. LinkedIn shows what employers pay to show. Glassdoor gates reviews behind registration walls. The commercial platforms treat job data as proprietary inventory, not public information about public labor markets.</p><p>Every country has its own infrastructure. Its own APIs, its own rate limits, its own authentication requirements, its own data format. Germany&#8217;s Arbeitsagentur works differently from Norway&#8217;s NAV, which works differently from the UK&#8217;s Indeed-dominated landscape.</p><p>There is no &#8220;European job market.&#8221; There are thirty-plus fragmented national markets with different rules, different transparency standards, and different levels of access. They share a currency and a directive. That&#8217;s about it.</p><p>This is why it feels broken to job seekers. You open LinkedIn, you see one feed, you think that&#8217;s the market. It&#8217;s not even close. You&#8217;re seeing a commercially curated slice of one source in one language, algorithmically ranked by what drives engagement &#8212; not by what matches your career.</p><h2>So we open-sourced the map</h2><p>When we started crawling, every source was a research project. Does this board have an API? What rate limits apply? Does it cover Austria or just Germany? Is authentication required? Does it return salary data or not?</p><p>This information is scattered across documentation pages, developer forums, and hard-won production experience. Every team building a job crawler rediscovers the same answers from scratch.</p><p>We decided that was wasteful.</p><p>The <a href="https://github.com/kitsuno-ai/agentic-job-search-eu">agentic-job-search-eu</a> repository is a structured, machine-readable directory of European job sources. One YAML file per source. Coverage details, access methods, rate limits, license postures, and real-world crawl notes from production &#8212; not from documentation, from actually running crawlers against these sources every day.</p><p>It launched with 32 documented sources. More are being added by the community and by us.</p><p>The directory is dual-licensed: MIT for the tools, CC-BY-SA 4.0 for the data. Use it however you want. If you find a source we missed or notice our crawl notes are wrong, open a pull request.</p><p>We published this because source fragmentation should not be anyone&#8217;s competitive advantage. The value is not in knowing that France Travail has an API. The value is in what you do with the data once you have it &#8212; how you score it, how you match it, how you present it to the human who needs to make a career decision.</p><p>The opacity is the problem. Anything that makes the landscape more legible makes the market work better for everyone.</p><h2>What this means for you</h2><p>If you&#8217;re looking for a job in Europe right now:</p><p><strong>Check the national employment agency of your target country first.</strong> France Travail, Platsbanken, Arbeitsagentur, NAV.no &#8212; these are free, comprehensive, and frequently updated. They are almost always better than the commercial aggregators for local roles.</p><p><strong>Stop filtering exclusively for remote.</strong> 93% of jobs are onsite. If you only search remote, you are looking at 5% of the market and wondering why nothing fits. Consider hybrid. Consider relocation. Consider which &#8220;remote&#8221; postings actually mean your country.</p><p><strong>Know your salary rights.</strong> If you&#8217;re applying in France, Norway, or Sweden, expect to see salary ranges. If you&#8217;re applying in Germany, Austria, or Italy &#8212; you probably won&#8217;t. That changes in June 2026 by law, but the law only works if someone enforces it.</p><p><strong>Look beyond LinkedIn.</strong> It is one source. A commercially motivated one. The European job market has dozens of sources that LinkedIn doesn&#8217;t index, doesn&#8217;t show, and has no incentive to surface.</p><h2>One more thing</h2><p>For the methodology behind how we turn these raw sources into scored, validated job matches &#8212; including the four-rubric scoring system, the 14-check validator, and the multi-model AI architecture &#8212; read <a href="https://kitsuno.ai/content/en/how-we-measure-job-market-signal/">How we measure job-market signal</a>.</p><p>For the principles behind the project, read <a href="https://kitsuno.ai/content/en/why-kitsuno-exists/">Why Kitsuno exists</a>.</p><p>The fox crawls so you don&#8217;t have to. But now you can see where it hunts.</p><div><hr></div><p><em>Gregory Turkawka is the founder of <a href="https://kitsuno.ai/">Kitsuno</a> &#8212; an AI job search agent built for European careers. Twenty years in L&amp;D, EdTech, and international organizations. Building in Bucharest. Powered by open-source AI.</em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://turkawka.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! 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 AI Has a Brain. It Didn’t Need a SOUL.md.]]></title><description><![CDATA[Nate says agents stall because people can't write a SOUL.md. We built 94 sessions of living memory instead. A response from the other side of the wall.]]></description><link>https://turkawka.substack.com/p/my-ai-has-a-brain-it-didnt-need-a</link><guid isPermaLink="false">https://turkawka.substack.com/p/my-ai-has-a-brain-it-didnt-need-a</guid><dc:creator><![CDATA[Gregory Turkawka]]></dc:creator><pubDate>Wed, 15 Apr 2026 18:02:40 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!2h2C!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d7e1bdb-74dc-4280-83c3-4e3cb7b07f9e_2912x1632.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!2h2C!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d7e1bdb-74dc-4280-83c3-4e3cb7b07f9e_2912x1632.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2h2C!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d7e1bdb-74dc-4280-83c3-4e3cb7b07f9e_2912x1632.png 424w, https://substackcdn.com/image/fetch/$s_!2h2C!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d7e1bdb-74dc-4280-83c3-4e3cb7b07f9e_2912x1632.png 848w, https://substackcdn.com/image/fetch/$s_!2h2C!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d7e1bdb-74dc-4280-83c3-4e3cb7b07f9e_2912x1632.png 1272w, https://substackcdn.com/image/fetch/$s_!2h2C!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d7e1bdb-74dc-4280-83c3-4e3cb7b07f9e_2912x1632.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!2h2C!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d7e1bdb-74dc-4280-83c3-4e3cb7b07f9e_2912x1632.png" width="1456" height="816" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6d7e1bdb-74dc-4280-83c3-4e3cb7b07f9e_2912x1632.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:816,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:19041866,&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://turkawka.substack.com/i/194316711?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d7e1bdb-74dc-4280-83c3-4e3cb7b07f9e_2912x1632.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_!2h2C!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d7e1bdb-74dc-4280-83c3-4e3cb7b07f9e_2912x1632.png 424w, https://substackcdn.com/image/fetch/$s_!2h2C!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d7e1bdb-74dc-4280-83c3-4e3cb7b07f9e_2912x1632.png 848w, https://substackcdn.com/image/fetch/$s_!2h2C!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d7e1bdb-74dc-4280-83c3-4e3cb7b07f9e_2912x1632.png 1272w, https://substackcdn.com/image/fetch/$s_!2h2C!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d7e1bdb-74dc-4280-83c3-4e3cb7b07f9e_2912x1632.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>This is the fourth entry in my build journal. In the first, I wrote about being a non-engineer who assembled a production SaaS in 40 days. In the second, I wrote about seeing a database for the first time. In the third, I wrote about the day a hallucinating fox taught me when not to use AI. This one is about what happens when you solve the same problem from three directions &#8212; and realize the agent revolution has a prerequisite that nobody&#8217;s selling.</p><div><hr></div><p><span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Nate&quot;,&quot;id&quot;:119476445,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a37385e3-0387-487a-9f2c-e13aa963da4c_1080x1080.png&quot;,&quot;uuid&quot;:&quot;8f87d866-3f83-4dbe-abcf-507474758f43&quot;}" data-component-name="MentionToDOM"></span> published a piece this week about the cold start problem in agents. It&#8217;s the best thing I&#8217;ve read on the topic and I want to respond to it honestly, because we&#8217;re building through the same wall from different sides.</p><p>His argument: the agent revolution stalls because people can&#8217;t describe their own work. OpenClaw has 250,000 GitHub stars. Installation takes ten minutes. And then the most common message in every agent community is three words: &#8220;Okay... now what?&#8221;</p><p>The answer, Nate argues, is a SOUL.md &#8212; a static file that describes who you are, how you work, what you value, what &#8220;done&#8221; looks like. He&#8217;s right. And he built an interviewer agent that helps people write one. It&#8217;s smart, well-designed, and it addresses a real gap.</p><p>But I think the SOUL.md is the wrong artifact. Not because it&#8217;s wrong in principle &#8212; because it&#8217;s wrong in form.</p><p>A markdown file is a snapshot. Work is a stream.</p><h2>The 94-session experiment</h2><p>For the past 94 build sessions &#8212; roughly six weeks &#8212; I&#8217;ve been building Kitsuno with Claude as my engineering partner. I&#8217;m not an engineer. I&#8217;m a domain expert with 18 years in Learning &amp; Development. Claude writes the code. I make the decisions.</p><p>But here&#8217;s what makes this different from most AI-assisted development: we built a memory system.</p><p>It&#8217;s called Tenko &#8212; our internal admin dashboard. It runs behind a Cloudflare Zero Trust tunnel, reads the live production database, and holds the full operational history of the project. Every build session gets a log: what was built, what broke, what decisions were made, what&#8217;s next. Every open bug, every architectural decision, every content piece we&#8217;ve published &#8212; tracked in database tables.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!VgxC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb7ac8c4-0f41-483f-abee-43dc8ca1f01f_2973x1672.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VgxC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb7ac8c4-0f41-483f-abee-43dc8ca1f01f_2973x1672.png 424w, https://substackcdn.com/image/fetch/$s_!VgxC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb7ac8c4-0f41-483f-abee-43dc8ca1f01f_2973x1672.png 848w, https://substackcdn.com/image/fetch/$s_!VgxC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb7ac8c4-0f41-483f-abee-43dc8ca1f01f_2973x1672.png 1272w, https://substackcdn.com/image/fetch/$s_!VgxC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb7ac8c4-0f41-483f-abee-43dc8ca1f01f_2973x1672.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!VgxC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb7ac8c4-0f41-483f-abee-43dc8ca1f01f_2973x1672.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fb7ac8c4-0f41-483f-abee-43dc8ca1f01f_2973x1672.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:19917131,&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://turkawka.substack.com/i/194316711?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb7ac8c4-0f41-483f-abee-43dc8ca1f01f_2973x1672.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_!VgxC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb7ac8c4-0f41-483f-abee-43dc8ca1f01f_2973x1672.png 424w, https://substackcdn.com/image/fetch/$s_!VgxC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb7ac8c4-0f41-483f-abee-43dc8ca1f01f_2973x1672.png 848w, https://substackcdn.com/image/fetch/$s_!VgxC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb7ac8c4-0f41-483f-abee-43dc8ca1f01f_2973x1672.png 1272w, https://substackcdn.com/image/fetch/$s_!VgxC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb7ac8c4-0f41-483f-abee-43dc8ca1f01f_2973x1672.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><em>Tenko's Claude Ops panel. 20 sessions, 104 open items, 162 done. The SOUL.md writes itself.</em></p><p>When a new session starts, the first thing that happens is Tenko loads. The AI reads the current state &#8212; open items, recent sessions, active bugs. It doesn&#8217;t need me to describe what we&#8217;re working on. It reads the ground truth.</p><p>When a session ends, we write back: session log to the database, open items updated, git commit tagged. The system state after every session is the input for the next one.</p><p>This isn&#8217;t a SOUL.md. It&#8217;s a living operational memory. And after 94 sessions, it contains something no static file could: the accumulated context of how this product was actually built &#8212; not how I&#8217;d describe building it in retrospect, but the real sequence of decisions, mistakes, and corrections that produced 107,000 lines of working code.</p><p>Nate identifies the core problem beautifully: expertise compresses into tacit knowledge, and tacit knowledge is invisible to its owner. A senior product manager doesn&#8217;t think about which tabs she opens &#8212; she just opens them. The pattern is compiled. The source code is lost.</p><p>Tenko solves this differently. It doesn&#8217;t ask me to decompile my expertise into a document. It captures the work as it happens. The decisions table records what we decided and why. The open items table records what&#8217;s broken and what&#8217;s next. The session logs record what was built. The ground truth accumulates automatically &#8212; not through a 45-minute interview, but through 94 sessions of actually working.</p><p>The SOUL.md is a photograph of who you were when you wrote it. Tenko is the journal of who you are becoming while you work.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!VJf8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8afe8ad-9c50-4a48-b14b-05f08b19a64e_2912x1632.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VJf8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8afe8ad-9c50-4a48-b14b-05f08b19a64e_2912x1632.png 424w, https://substackcdn.com/image/fetch/$s_!VJf8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8afe8ad-9c50-4a48-b14b-05f08b19a64e_2912x1632.png 848w, https://substackcdn.com/image/fetch/$s_!VJf8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8afe8ad-9c50-4a48-b14b-05f08b19a64e_2912x1632.png 1272w, https://substackcdn.com/image/fetch/$s_!VJf8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8afe8ad-9c50-4a48-b14b-05f08b19a64e_2912x1632.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!VJf8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8afe8ad-9c50-4a48-b14b-05f08b19a64e_2912x1632.png" width="1456" height="816" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d8afe8ad-9c50-4a48-b14b-05f08b19a64e_2912x1632.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:816,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:19043294,&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://turkawka.substack.com/i/194316711?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8afe8ad-9c50-4a48-b14b-05f08b19a64e_2912x1632.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_!VJf8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8afe8ad-9c50-4a48-b14b-05f08b19a64e_2912x1632.png 424w, https://substackcdn.com/image/fetch/$s_!VJf8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8afe8ad-9c50-4a48-b14b-05f08b19a64e_2912x1632.png 848w, https://substackcdn.com/image/fetch/$s_!VJf8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8afe8ad-9c50-4a48-b14b-05f08b19a64e_2912x1632.png 1272w, https://substackcdn.com/image/fetch/$s_!VJf8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8afe8ad-9c50-4a48-b14b-05f08b19a64e_2912x1632.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><em>Each ring is a session. 94 sessions of decisions, bugs, and builds &#8212; accumulated automatically, not described from memory.</em></p><h2>But the builder&#8217;s memory isn&#8217;t the only soul in the system</h2><p>Here&#8217;s where it gets interesting. Tenko is the operational memory for how we build the product. But the product itself &#8212; Kitsuno &#8212; has its own soul architecture. And it&#8217;s not a markdown file either.</p><p>Kitsuno has an AI character called Kitso. A fox that serves as career concierge, helping job seekers navigate their search. Kitso talks to users through a chat panel, writes daily observations, generates field notes, coaches people through career decisions. It operates across 12 different agent tasks &#8212; writing CVs, scoring job fits, extracting skills from documents, running mock interviews, answering product questions.</p><p>The agent community would say: Kitso needs a SOUL.md.</p><p>We built something different. Kitso has three layers of identity infrastructure:</p><p><strong>The 10 Principles.</strong> Not personality traits &#8212; architectural constraints. &#8220;Your Data Is Your Soul.&#8221; &#8220;Concierge, Not Executor.&#8221; &#8220;No Dark Patterns.&#8221; &#8220;Bloom At Your Own Speed.&#8221; These aren&#8217;t aspirational. They&#8217;re enforced. Every prompt that involves direct user communication gets the relevant principles injected. Every feature is measured against them. When a business decision conflicts with a principle, the principle wins.</p><p><strong>The Voice Contract.</strong> Kitso&#8217;s communication is grounded in Nonviolent Communication &#8212; not as a style choice, but as an ethical framework for how an AI should talk to people about their careers. Job searching is vulnerable. People are uncertain, sometimes desperate. The NVC framework gives Kitso four commitments: observe without evaluating, surface needs without prescribing, request without demanding, connect honestly without performing.</p><p>This means Kitso has a list of banned patterns &#8212; not arbitrary style rules, but violations of specific commitments. &#8220;You should apply&#8221; prescribes a strategy instead of offering one. &#8220;Don&#8217;t miss this opportunity&#8221; creates artificial urgency. &#8220;Great question!&#8221; performs warmth without meaning it. &#8220;I&#8217;ve noticed&#8221; frames an observation as a personal judgment. Each ban traces to a principle.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!MfSW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8e728ca-da6a-40e9-8cab-4c3cd5f82d5d_2912x1632.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!MfSW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8e728ca-da6a-40e9-8cab-4c3cd5f82d5d_2912x1632.png 424w, https://substackcdn.com/image/fetch/$s_!MfSW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8e728ca-da6a-40e9-8cab-4c3cd5f82d5d_2912x1632.png 848w, https://substackcdn.com/image/fetch/$s_!MfSW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8e728ca-da6a-40e9-8cab-4c3cd5f82d5d_2912x1632.png 1272w, https://substackcdn.com/image/fetch/$s_!MfSW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8e728ca-da6a-40e9-8cab-4c3cd5f82d5d_2912x1632.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!MfSW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8e728ca-da6a-40e9-8cab-4c3cd5f82d5d_2912x1632.png" width="1456" height="816" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c8e728ca-da6a-40e9-8cab-4c3cd5f82d5d_2912x1632.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:816,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:19043294,&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://turkawka.substack.com/i/194316711?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8e728ca-da6a-40e9-8cab-4c3cd5f82d5d_2912x1632.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_!MfSW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8e728ca-da6a-40e9-8cab-4c3cd5f82d5d_2912x1632.png 424w, https://substackcdn.com/image/fetch/$s_!MfSW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8e728ca-da6a-40e9-8cab-4c3cd5f82d5d_2912x1632.png 848w, https://substackcdn.com/image/fetch/$s_!MfSW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8e728ca-da6a-40e9-8cab-4c3cd5f82d5d_2912x1632.png 1272w, https://substackcdn.com/image/fetch/$s_!MfSW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8e728ca-da6a-40e9-8cab-4c3cd5f82d5d_2912x1632.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><em>Observe, reflect, offer. Never prescribe, never pressure, never perform.</em></p><p><strong>The Brain.</strong> Before any conversation starts, before any LLM is called, 21 diagnostic rules run across the user&#8217;s profile. Pure Python and SQL &#8212; zero tokens. The Brain produces structured observations: &#8220;User has 3 strong fits unreviewed for more than 3 days.&#8221; &#8220;Primary skill set doesn&#8217;t appear in title patterns of top-scored jobs.&#8221; &#8220;Evidence library has zero linked items despite active Writer use.&#8221;</p><p>These observations are written to the database. When Kitso speaks, it reads pre-computed facts about your career situation. The LLM&#8217;s job shifts from figuring out what&#8217;s going on to talking about it clearly.</p><p>The cost of the Brain: essentially zero. The benefit: every conversation is grounded in something real. Kitso doesn&#8217;t hallucinate your career status because it isn&#8217;t inferring it &#8212; it&#8217;s reading it.</p><p>This is what a SOUL.md looks like when it&#8217;s architecture instead of a file. The principles define what Kitso can and cannot do. The voice contract defines how Kitso speaks. The Brain defines what Kitso knows. Together, they produce a consistent character across 12 agents, 4 languages, and three subscription tiers &#8212; without a single static markdown file.</p><h2>And then there&#8217;s the user&#8217;s soul</h2><p>Here&#8217;s the part that ties this back to Nate&#8217;s piece about the labor market.</p><p>Nate argues that the K-shaped AI labor market rewards people who can describe their own work in &#8220;triggerable, verifiable language.&#8221; He&#8217;s right. And the exercise of writing a SOUL.md isn&#8217;t just useful for agents &#8212; it&#8217;s useful for career development. Making your work visible to an external system makes it visible to you.</p><p>We&#8217;re building the career version of this. Kitsuno&#8217;s Professional Record Store is, in a real sense, the job seeker&#8217;s SOUL.md.</p><p>Not a resume &#8212; a structured evidence library. Skills linked to experience. Experience linked to artifacts. Testimonials, appraisals, certificates &#8212; all connected, all weighted, all queryable. When Kitso helps you prepare for a role, it doesn&#8217;t generate generic advice. It maps your evidence against what the role actually requires and shows you &#8212; and the hiring manager &#8212; where the alignment is. I wrote about why this matters in <a href="https://medium.com/@turkawka/stop-being-a-meat-puppet-what-if-your-next-job-found-you-37e1d742fa0c">Stop Being a Meat-Puppet</a> &#8212; the difference between auto-applying to everything and building applications that actually land.</p><p>Nate&#8217;s seven skills for the AI era &#8212; specification precision, evaluation, decomposition, failure pattern recognition, trust boundary design, context architecture, cost economics &#8212; are a taxonomy. A taxonomy only becomes useful when individuals can map themselves against it with evidence, not self-assessment. &#8220;I have specification precision&#8221; means nothing. &#8220;Here&#8217;s a spec I wrote that an agent executed without hand-holding, and here&#8217;s the output&#8221; means everything.</p><p>That&#8217;s the artifact-over-badges philosophy. And it&#8217;s exactly what a Professional Record Store is designed to hold.</p><p>The PRS is the user&#8217;s operational memory &#8212; not for building software, but for building a career. It accumulates over time. It gets richer with every piece of evidence you add. And when an agent &#8212; Kitso or any other &#8212; needs to understand who you are professionally, it doesn&#8217;t need a 45-minute interview. It reads the record.</p><h2>Three souls, one principle</h2><p>So here&#8217;s what we actually built. Three layers of &#8220;soul,&#8221; none of them a markdown file:</p><p><strong>Tenko</strong> &#8212; the builder&#8217;s memory. How we make decisions, what we&#8217;ve built, what&#8217;s broken, what&#8217;s next. The AI reads it at the start of every session and writes to it at the end.</p><p><strong>Kitso&#8217;s architecture</strong> &#8212; the product&#8217;s character. Principles, voice contract, diagnostic brain. Consistent personality across 12 agents without a static personality file.</p><p><strong>The PRS</strong> &#8212; the user&#8217;s professional record. Structured evidence that any AI system can read. Your career soul gem &#8212; in kitsune mythology, the <em>hoshi no tama</em> that holds the fox&#8217;s power.</p><p>All three follow the same principle: <strong>don&#8217;t describe yourself to the machine. Let the work describe you.</strong></p><p>Nate&#8217;s insight about compiled knowledge is profound &#8212; the more expert you become, the less visible your own process is to you. His solution is an interviewer that helps you decompile. Our solution is infrastructure that captures the work as it happens, so decompiling isn&#8217;t necessary.</p><p>Both approaches are valid. They&#8217;re complementary. The interview gives you a starting point. The living system gives you compounding returns.</p><p>But I&#8217;ll say this: Brad Mills spent 40 hours writing a delegation framework for his agent. We&#8217;ve spent 94 sessions building a product, and the delegation framework wrote itself &#8212; session by session, decision by decision, bug by bug. The brain isn&#8217;t a file. It&#8217;s a practice.</p><h2>What I&#8217;ve learned about agent souls</h2><p>The agent ecosystem is fixated on configuration files because configuration files are what engineers build. SOUL.md, HEARTBEAT.md, USER.md &#8212; they&#8217;re the README pattern applied to identity. It&#8217;s a natural instinct, and it works for simple cases.</p><p>But the successful deployments Nate describes &#8212; the nine-agent system, the five-model R&amp;D council, the ad creative pipeline &#8212; they all share something beyond good config files. They have feedback loops. The SOUL.md gets edited. The MEMORY.md accumulates. The system evolves because the work teaches the machine what to do next.</p><p>That feedback loop is the actual soul. Not the initial description &#8212; the ongoing conversation between human judgment and machine capability. The description is just the first message.</p><p>We didn&#8217;t start with a SOUL.md for our build partnership. We started with a session protocol: pull state, work, write state. Ninety-four sessions later, the system knows more about how we build than any document I could write. Not because I described myself well &#8212; because the process described itself.</p><p>The first agent worth running isn&#8217;t an interviewer. It&#8217;s a partner that remembers what you did yesterday and shows up ready to continue.</p><div><hr></div><p><em>Greg Turkawka is the founder of <a href="https://kitsuno.ai">Kitsuno.ai</a>, an agentic job crawler for the European market. 18 years in L&amp;D and EdTech. Building in Bucharest with a fox and an AI that reads its own session logs.</em></p><p><em>Next: the social media campaign nobody asked for &#8212; how an animated fox is about to start posting on TikTok.</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://turkawka.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://turkawka.substack.com/subscribe?"><span>Subscribe now</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://turkawka.substack.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share&quot;,&quot;text&quot;:&quot;Share Gregory Turkawka&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://turkawka.substack.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share"><span>Share Gregory Turkawka</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://substack.com/@turkawka/note/p-194316711&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://substack.com/@turkawka/note/p-194316711"><span>Leave a comment</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[The Day I Stopped Trusting AI — And Made My AI Product Better]]></title><description><![CDATA[How a hallucinating fox taught us when not to use AI]]></description><link>https://turkawka.substack.com/p/the-day-i-stopped-trusting-ai-and</link><guid isPermaLink="false">https://turkawka.substack.com/p/the-day-i-stopped-trusting-ai-and</guid><dc:creator><![CDATA[Gregory Turkawka]]></dc:creator><pubDate>Sun, 05 Apr 2026 20:15:18 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!mVDD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96df7d58-465d-4bad-ae6a-1fcf3c34ff59_2400x1120.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!mVDD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96df7d58-465d-4bad-ae6a-1fcf3c34ff59_2400x1120.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mVDD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96df7d58-465d-4bad-ae6a-1fcf3c34ff59_2400x1120.png 424w, https://substackcdn.com/image/fetch/$s_!mVDD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96df7d58-465d-4bad-ae6a-1fcf3c34ff59_2400x1120.png 848w, https://substackcdn.com/image/fetch/$s_!mVDD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96df7d58-465d-4bad-ae6a-1fcf3c34ff59_2400x1120.png 1272w, https://substackcdn.com/image/fetch/$s_!mVDD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96df7d58-465d-4bad-ae6a-1fcf3c34ff59_2400x1120.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mVDD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96df7d58-465d-4bad-ae6a-1fcf3c34ff59_2400x1120.png" width="1456" height="679" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/96df7d58-465d-4bad-ae6a-1fcf3c34ff59_2400x1120.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:679,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:399706,&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://turkawka.substack.com/i/193266128?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96df7d58-465d-4bad-ae6a-1fcf3c34ff59_2400x1120.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_!mVDD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96df7d58-465d-4bad-ae6a-1fcf3c34ff59_2400x1120.png 424w, https://substackcdn.com/image/fetch/$s_!mVDD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96df7d58-465d-4bad-ae6a-1fcf3c34ff59_2400x1120.png 848w, https://substackcdn.com/image/fetch/$s_!mVDD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96df7d58-465d-4bad-ae6a-1fcf3c34ff59_2400x1120.png 1272w, https://substackcdn.com/image/fetch/$s_!mVDD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96df7d58-465d-4bad-ae6a-1fcf3c34ff59_2400x1120.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><em>Build journal, entry 3</em></p><p>This is the third entry in my build journal. In the first, I wrote about being a non-engineer who somehow assembled a production SaaS in 40 days. In the second, I wrote about the week I saw a database schema for the first time and watched real users find every assumption I&#8217;d made. This one is about something more uncomfortable: realising that the AI I was building with was also the AI I was building around.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://turkawka.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! 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><hr></div><h2>A beta tester asks a simple question</h2><p>About three weeks into beta, a user opened the fox chat &#8212; our AI concierge, Kitso &#8212; and asked something completely reasonable:</p><p><em>&#8220;Where do I find my keywords?&#8221;</em></p><p>Kitso answered confidently. It described a left navigation panel. Told the user to look for a settings icon. Suggested clicking through to the configuration screen.</p><p>None of that was accurate. There is no left navigation panel on that page. The settings icon doesn&#8217;t exist where Kitso said it did. The configuration path it described led nowhere.</p><p>This is hallucination in its least glamorous form. Not a grand philosophical error about the nature of consciousness. Just a chatbot making up directions to a room that doesn&#8217;t exist.</p><p>We fixed it. But the fix we chose changed how we think about what an AI product actually is.</p><div><hr></div><h2>The first instinct: better AI</h2><p>My first instinct was to fix the AI. Route the question differently. Add more context to the prompt. Try a different model. Build a detection layer that would flag navigation questions and answer them from a knowledge base.</p><p>We tried the routing approach. You can build a classifier that catches &#8220;where is X&#8221; questions with decent accuracy. But decent accuracy means you still get it wrong sometimes. And when an AI is confidently wrong about where to find a button, the user doesn&#8217;t think &#8220;classification error&#8221; &#8212; they think &#8220;this product is broken.&#8221;</p><p>The problem with solving a reliability problem with more AI is that you&#8217;re adding complexity to the exact layer that caused the failure. More moving parts. More things to drift. More ways to be confidently wrong.</p><div><hr></div><h2>The second instinct: no AI at all</h2><p>The fix that worked was boring. We wrote the answers ourselves.</p><p>Not a knowledge base that an AI queries. Not a retrieval system with embeddings. Just: over 70 context-aware help entries, each one written for a specific page and specific situation. When a user taps the ? icon on any screen, they get chips &#8212; small suggested questions &#8212; relevant to exactly where they are. Tap a chip, get an answer. The answer is text. Written by a human. Reviewed. Accurate. Fast.</p><p>Zero LLM calls. Zero hallucination risk. Zero latency. The help system knows what page you&#8217;re on because it reads the page. It knows which chips to show because of a simple rules engine, not a neural network. The answers are deterministic because they&#8217;re just text in a file.</p><p>It sounds obvious when I write it out. Navigation help doesn&#8217;t need to be intelligent. It needs to be correct.</p><p>That&#8217;s a different thing entirely.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ttPb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68bdd6a0-5593-4a8a-8a19-3e73fc1814cd_2400x912.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ttPb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68bdd6a0-5593-4a8a-8a19-3e73fc1814cd_2400x912.png 424w, https://substackcdn.com/image/fetch/$s_!ttPb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68bdd6a0-5593-4a8a-8a19-3e73fc1814cd_2400x912.png 848w, https://substackcdn.com/image/fetch/$s_!ttPb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68bdd6a0-5593-4a8a-8a19-3e73fc1814cd_2400x912.png 1272w, https://substackcdn.com/image/fetch/$s_!ttPb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68bdd6a0-5593-4a8a-8a19-3e73fc1814cd_2400x912.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ttPb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68bdd6a0-5593-4a8a-8a19-3e73fc1814cd_2400x912.png" width="1456" height="553" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/68bdd6a0-5593-4a8a-8a19-3e73fc1814cd_2400x912.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:553,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:163137,&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://turkawka.substack.com/i/193266128?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68bdd6a0-5593-4a8a-8a19-3e73fc1814cd_2400x912.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_!ttPb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68bdd6a0-5593-4a8a-8a19-3e73fc1814cd_2400x912.png 424w, https://substackcdn.com/image/fetch/$s_!ttPb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68bdd6a0-5593-4a8a-8a19-3e73fc1814cd_2400x912.png 848w, https://substackcdn.com/image/fetch/$s_!ttPb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68bdd6a0-5593-4a8a-8a19-3e73fc1814cd_2400x912.png 1272w, https://substackcdn.com/image/fetch/$s_!ttPb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68bdd6a0-5593-4a8a-8a19-3e73fc1814cd_2400x912.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>The same fix, everywhere</h2><p>Once we fixed the help system this way, we started noticing the same pattern everywhere. There were things we&#8217;d been routing through AI because AI was available &#8212; not because AI was the right tool.</p><p>The Kitso FAB &#8212; the floating fox button in the corner of every page &#8212; used to generate greetings on open. Every time you clicked the fox, it would call an LLM, build a prompt, generate a warm contextual hello. It had a caching system to avoid redundant calls. A fallback for when generation failed. A hash of the context to decide when to regenerate.</p><p>It was a small greeting. And we&#8217;d built a miniature AI pipeline for it.</p><p>We replaced it. Now the greeting is simply the latest unread observation Kitso has made about your job search. One database read. No API call. The greeting is real &#8212; it&#8217;s something Kitso actually noticed &#8212; and it&#8217;s instant. The fox opens and tells you something worth knowing, not something generated to seem warm.</p><p>Simpler. Faster. More honest.</p><div><hr></div><h2>The Kitso Brain</h2><p>This thinking led us to something we now call the Kitso Brain.</p><p>Most AI chat systems work the same way: user asks a question, the model gets some context, the model generates a response. The quality of the response depends on how much the model knows about the user <em>right now</em>. Every conversation starts cold. The AI has to rediscover who you are from whatever context you&#8217;ve stuffed into the prompt.</p><p>We built a different layer. Before any conversation starts, before any LLM is called, a lightweight Python process runs 21 diagnostic rules across your job search profile. It reads your Evidence Library. It looks at your scoring patterns. It checks whether your skills match the roles you&#8217;re targeting, whether your top-scoring jobs have been sitting unreviewed, whether the sources you&#8217;ve enabled are actually returning relevant results.</p><p>It doesn&#8217;t generate text. It produces structured observations: facts about your job search state, written into the database. Things like &#8220;user has 3 strong fits unreviewed for more than 3 days&#8221; or &#8220;primary skill set doesn&#8217;t appear in title patterns of top-scored jobs&#8221; or &#8220;evidence library has 0 linked items despite active Writer use.&#8221;</p><p>When Kitso answers a question, these observations are already there. The AI doesn&#8217;t need to deduce your situation from scratch &#8212; it reads a pre-computed diagnosis. The LLM&#8217;s job shifts from <em>figuring out what&#8217;s going on </em>to <em>talking to you about it clearly</em>.</p><p>The cost: essentially zero. The Brain runs on logic, not tokens. The benefit: every conversation Kitso has is grounded in something real.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!yMf3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3b8a366-d055-4ba4-b0f4-26d314258b8f_2400x824.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yMf3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3b8a366-d055-4ba4-b0f4-26d314258b8f_2400x824.png 424w, https://substackcdn.com/image/fetch/$s_!yMf3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3b8a366-d055-4ba4-b0f4-26d314258b8f_2400x824.png 848w, https://substackcdn.com/image/fetch/$s_!yMf3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3b8a366-d055-4ba4-b0f4-26d314258b8f_2400x824.png 1272w, https://substackcdn.com/image/fetch/$s_!yMf3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3b8a366-d055-4ba4-b0f4-26d314258b8f_2400x824.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yMf3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3b8a366-d055-4ba4-b0f4-26d314258b8f_2400x824.png" width="1456" height="500" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d3b8a366-d055-4ba4-b0f4-26d314258b8f_2400x824.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:500,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:318636,&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://turkawka.substack.com/i/193266128?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3b8a366-d055-4ba4-b0f4-26d314258b8f_2400x824.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_!yMf3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3b8a366-d055-4ba4-b0f4-26d314258b8f_2400x824.png 424w, https://substackcdn.com/image/fetch/$s_!yMf3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3b8a366-d055-4ba4-b0f4-26d314258b8f_2400x824.png 848w, https://substackcdn.com/image/fetch/$s_!yMf3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3b8a366-d055-4ba4-b0f4-26d314258b8f_2400x824.png 1272w, https://substackcdn.com/image/fetch/$s_!yMf3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3b8a366-d055-4ba4-b0f4-26d314258b8f_2400x824.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>Process maps and the honesty of transparency</h2><p>One thing that surprised us about building AI into a product: users want to know how it works.</p><p>Not the technical detail. They don&#8217;t want to read about model routing or vector similarity scores. But they do want to understand <em>what the system is doing with their data </em>and <em>why it&#8217;s suggesting what it&#8217;s suggesting</em>.</p><p>We built process maps into the platform &#8212; visual representations of the pipelines that run behind the scenes. How a job goes from crawled URL to scored result to your pipeline view. What gates it passes through. What happens when something gets filtered. The scoring section shows you the actual breakdown: what signals contributed to a match score &#8212; role alignment, location, seniority, org type &#8212; in what proportion.</p><p>This isn&#8217;t a transparency checkbox for compliance. It&#8217;s a design decision. When users understand the process, they trust the output. When they can see exactly which signals drove a score, they can engage with that intelligently. They can decide whether the weighting reflects their priorities, and adjust it if not.</p><p>An AI that just shows you results asks for faith. A system that shows you its reasoning earns it.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bq9P!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc1ccd3a-68e9-407b-ac43-c38093800d5e_2400x824.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bq9P!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc1ccd3a-68e9-407b-ac43-c38093800d5e_2400x824.png 424w, https://substackcdn.com/image/fetch/$s_!bq9P!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc1ccd3a-68e9-407b-ac43-c38093800d5e_2400x824.png 848w, https://substackcdn.com/image/fetch/$s_!bq9P!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc1ccd3a-68e9-407b-ac43-c38093800d5e_2400x824.png 1272w, https://substackcdn.com/image/fetch/$s_!bq9P!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc1ccd3a-68e9-407b-ac43-c38093800d5e_2400x824.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bq9P!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc1ccd3a-68e9-407b-ac43-c38093800d5e_2400x824.png" width="1456" height="500" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fc1ccd3a-68e9-407b-ac43-c38093800d5e_2400x824.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:500,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:224866,&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://turkawka.substack.com/i/193266128?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc1ccd3a-68e9-407b-ac43-c38093800d5e_2400x824.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_!bq9P!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc1ccd3a-68e9-407b-ac43-c38093800d5e_2400x824.png 424w, https://substackcdn.com/image/fetch/$s_!bq9P!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc1ccd3a-68e9-407b-ac43-c38093800d5e_2400x824.png 848w, https://substackcdn.com/image/fetch/$s_!bq9P!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc1ccd3a-68e9-407b-ac43-c38093800d5e_2400x824.png 1272w, https://substackcdn.com/image/fetch/$s_!bq9P!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc1ccd3a-68e9-407b-ac43-c38093800d5e_2400x824.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>Deterministic by default, AI by exception</h2><p>There&#8217;s a principle we&#8217;ve landed on that I didn&#8217;t have language for at the start of beta: <em>deterministic by default, AI by exception</em>.</p><p>The user-facing sitemap &#8212; the complete map of what exists in the product &#8212; is not AI-generated. It&#8217;s written, reviewed, and maintained. When Kitso tells you what a feature does, it&#8217;s reading from that source.</p><p>The clearest example of it isn&#8217;t in the product. It&#8217;s in how we build the product.</p><p><a href="https://kitsuno.ai">Kitsuno</a> runs on a shared brain we call Tenko &#8212; our internal admin dashboard and engineering memory. It reads the live production database: every user, every scan, every error, every bug report. It tracks every build session &#8212; what we decided, what we built, what broke, what&#8217;s next. It knows the architecture. It knows the open items. It knows what was done last week and what&#8217;s still unresolved.</p><p>When we sit down to build, the first thing that happens is Tenko loads. The AI reads the current state. Then we work.</p><p>But Tenko operates on a strict rule: no execution without reconfirmation. It proposes SQL, drafts commands, flags what needs attention &#8212; but nothing runs until we explicitly confirm and execute it. Every destructive operation, every deployment decision, every call on what to fix and what to defer: confirmed before it runs. The AI organises the information. The judgment is ours.</p><p>That&#8217;s the principle made literal. Tenko is the meta layer &#8212; the deterministic foundation that makes the AI useful. Without the structured session logs, the tracked decisions, the live database context, the AI would be guessing. With it, every conversation starts from ground truth, not inference.</p><p>The same logic runs through the product. The help chips are a rules engine. The scoring breakdown is a deterministic calculation. The Brain observations are pre-computed facts. These layers don&#8217;t need to be intelligent &#8212; they need to be reliable. They&#8217;re the ground Kitso stands on when it does the things only AI can do: reading your situation, finding the signal in the noise, telling you something you didn&#8217;t already know.</p><p>AI is expensive, non-deterministic, and capable of being wrong. You want it doing the things only AI can do. You don&#8217;t want it opening your help drawer &#8212; and you don&#8217;t want it deciding whether to drop a database table.</p><div><hr></div><h2>The tier question</h2><p>One consequence of this architecture is that it makes tiering honest.</p><p>When AI is doing everything, distinguishing between free and paid users means throttling the AI &#8212; giving free users slower responses, fewer tokens, lower-quality outputs. The product degrades gracefully but visibly. Free users get a worse experience by design.</p><p>Our approach is different. The deterministic layer &#8212; help chips, process maps, Brain observations, core navigation, search, filtering &#8212; is the same for every user. It costs us almost nothing. It&#8217;s not something we throttle.</p><p>What scales with tier is the AI depth. A free user&#8217;s Kitso can see the room. It knows what&#8217;s in your pipeline, can answer questions about the platform, can offer orientation. A Scout&#8217;s Kitso has read your files &#8212; it knows your Evidence Library, your skills, your search configuration. A Pro&#8217;s Kitso has read everything in the building and can brief you strategically on specific roles using the full context of your professional record.</p><p>Same fox. Same personality. Same warmth. What changes is what Kitso knows. And what Kitso knows is proportional to what you&#8217;ve invested in building your record &#8212; and in the subscription that unlocks full record access.</p><p>That feels like an honest business model. You&#8217;re not paying for a better version of the same interaction. You&#8217;re paying for deeper engagement with your own data.</p><div><hr></div><h2>What I&#8217;ve learned about AI products</h2><p>I&#8217;ve been in EdTech and Learning &amp; Development for 18 years. I&#8217;ve built systems that track what people learn and how they grow. Kitsuno is the career version of that &#8212; a platform where your Professional Record Store, your skills, your evidence, your history, belongs to you.</p><p>What building it has taught me about AI products is this: the magic trick is knowing when not to use magic.</p><p>The hallucination that triggered this whole investigation &#8212; Kitso making up a navigation path &#8212; happened because we reached for AI as the default tool. It was available. We were building an AI product. Of course AI should handle the questions.</p><p>But not every question needs intelligence. Some questions need accuracy. Some interactions need speed. Some parts of a product need to be so reliable that users stop thinking about them at all.</p><p>The help drawer should be invisible. The process map should be boring. The scoring breakdown should read like a spreadsheet.</p><p>Kitso should save its intelligence for the things that actually matter: telling you that a role at a company you&#8217;ve never heard of is the strongest match you&#8217;ve seen this month, and here&#8217;s why it maps to three specific things in your background that you didn&#8217;t Kitsuno is live in beta at app.kitsuno.ai. We&#8217;re building an AI career platform for the European job market &#8212; multilingual, GDPR-compliant, and built on the principle that your data belongs to you. Kitso is the fox in the corner. Kitsuno is what it&#8217;s built on. The fox is growing its tails.</p><div><hr></div><p><em>Kitsuno is live in beta at <a href="http://app.kitsuno.ai">app.kitsuno.ai</a>. We&#8217;re building an AI career platform for the European job market &#8212; multilingual, GDPR-compliant, and built on the principle that your data belongs to you. The fox is growing its tails.</em></p><p><em>Next: the architecture decision I keep second-guessing &#8212; and what the data says about it.</em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://turkawka.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! 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 Seven Skills Are Real. The Infrastructure to Match Them Isn’t. ]]></title><description><![CDATA[A response to Nate&#8217;s &#8220;infinite AI jobs&#8221; piece &#8212; from someone building the career tools for Market Two]]></description><link>https://turkawka.substack.com/p/the-seven-skills-are-real-the-infrastructure</link><guid isPermaLink="false">https://turkawka.substack.com/p/the-seven-skills-are-real-the-infrastructure</guid><dc:creator><![CDATA[Gregory Turkawka]]></dc:creator><pubDate>Mon, 30 Mar 2026 11:03:40 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!SmZz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc51dfe7-cd33-4cc5-aadb-1c5cb6065e46_1600x900.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!SmZz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc51dfe7-cd33-4cc5-aadb-1c5cb6065e46_1600x900.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!SmZz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc51dfe7-cd33-4cc5-aadb-1c5cb6065e46_1600x900.png 424w, https://substackcdn.com/image/fetch/$s_!SmZz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc51dfe7-cd33-4cc5-aadb-1c5cb6065e46_1600x900.png 848w, https://substackcdn.com/image/fetch/$s_!SmZz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc51dfe7-cd33-4cc5-aadb-1c5cb6065e46_1600x900.png 1272w, https://substackcdn.com/image/fetch/$s_!SmZz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc51dfe7-cd33-4cc5-aadb-1c5cb6065e46_1600x900.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!SmZz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc51dfe7-cd33-4cc5-aadb-1c5cb6065e46_1600x900.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dc51dfe7-cd33-4cc5-aadb-1c5cb6065e46_1600x900.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:121011,&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://turkawka.substack.com/i/192595680?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc51dfe7-cd33-4cc5-aadb-1c5cb6065e46_1600x900.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_!SmZz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc51dfe7-cd33-4cc5-aadb-1c5cb6065e46_1600x900.png 424w, https://substackcdn.com/image/fetch/$s_!SmZz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc51dfe7-cd33-4cc5-aadb-1c5cb6065e46_1600x900.png 848w, https://substackcdn.com/image/fetch/$s_!SmZz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc51dfe7-cd33-4cc5-aadb-1c5cb6065e46_1600x900.png 1272w, https://substackcdn.com/image/fetch/$s_!SmZz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc51dfe7-cd33-4cc5-aadb-1c5cb6065e46_1600x900.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="embedded-post-wrap" data-attrs="{&quot;id&quot;:191883965,&quot;url&quot;:&quot;https://natesnewsletter.substack.com/p/your-ai-credentials-dont-matter-your&quot;,&quot;publication_id&quot;:1373231,&quot;publication_name&quot;:&quot;Nate&#8217;s Substack&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!s4a7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3b96b13-6f01-4e56-b410-18e03e7bc8af_500x500.png&quot;,&quot;title&quot;:&quot;Your AI credentials don't matter. Your artifacts do. Here's how to build both sides &#8212; plus I'm launching Nate's Network.&quot;,&quot;truncated_body_text&quot;:&quot;Nobody is admitting this publicly, so I will: there are essentially infinite AI jobs right now. Not &#8220;growing demand.&#8221; Not &#8220;a hot sector.&#8221; Infinite, as in every company I work with has an uncapped budget for AI talent and will hire as many qualified people as they can find, and they still can&#8217;t find enough. I&#8217;ve been kicking around tech for decades and I have never seen a labor market this lopsided. Accenture is training 700,000 people on agentic AI. The ManpowerGroup survey of 39,000 employers across 41 countries says AI skills are now the single hardest capability to find on Earth. Not among the hardest. The hardest.&quot;,&quot;date&quot;:&quot;2026-03-26T13:03:05.974Z&quot;,&quot;like_count&quot;:216,&quot;comment_count&quot;:17,&quot;bylines&quot;:[{&quot;id&quot;:119476445,&quot;name&quot;:&quot;Nate&quot;,&quot;handle&quot;:&quot;natesnewsletter&quot;,&quot;previous_name&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a37385e3-0387-487a-9f2c-e13aa963da4c_1080x1080.png&quot;,&quot;bio&quot;:&quot;Dad, VP Product, suffering Seahawks fan. Roots in SE Asia. Writing with curiosity about product, tech, and life.&quot;,&quot;profile_set_up_at&quot;:&quot;2023-01-28T21:46:45.757Z&quot;,&quot;reader_installed_at&quot;:&quot;2023-02-11T17:07:20.099Z&quot;,&quot;publicationUsers&quot;:[{&quot;id&quot;:1334512,&quot;user_id&quot;:119476445,&quot;publication_id&quot;:1373231,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:true,&quot;publication&quot;:{&quot;id&quot;:1373231,&quot;name&quot;:&quot;Nate&#8217;s Substack&quot;,&quot;subdomain&quot;:&quot;natesnewsletter&quot;,&quot;custom_domain&quot;:null,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;Daily newsletters on AI strategy, news, and implementation for practitioners and leaders who are past the hype and ready to build.&quot;,&quot;logo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b3b96b13-6f01-4e56-b410-18e03e7bc8af_500x500.png&quot;,&quot;author_id&quot;:119476445,&quot;primary_user_id&quot;:119476445,&quot;theme_var_background_pop&quot;:&quot;#45D800&quot;,&quot;created_at&quot;:&quot;2023-02-02T05:43:18.307Z&quot;,&quot;email_from_name&quot;:null,&quot;copyright&quot;:&quot;Nate&quot;,&quot;founding_plan_name&quot;:&quot;AI Executive Circle&quot;,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;enabled&quot;,&quot;language&quot;:null,&quot;explicit&quot;:false,&quot;homepage_type&quot;:&quot;newspaper&quot;,&quot;is_personal_mode&quot;:false,&quot;logo_url_wide&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0b99d424-3fea-4fab-8f3d-2204a5ab1ad1_2934x567.png&quot;}}],&quot;twitter_screen_name&quot;:&quot;natebjones&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:10000,&quot;status&quot;:{&quot;bestsellerTier&quot;:10000,&quot;subscriberTier&quot;:1,&quot;leaderboard&quot;:null,&quot;vip&quot;:false,&quot;badge&quot;:{&quot;type&quot;:&quot;bestseller&quot;,&quot;tier&quot;:10000},&quot;paidPublicationIds&quot;:[10845],&quot;subscriber&quot;:null}}],&quot;utm_campaign&quot;:null,&quot;belowTheFold&quot;:false,&quot;type&quot;:&quot;podcast&quot;,&quot;language&quot;:&quot;en&quot;,&quot;source&quot;:null}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://natesnewsletter.substack.com/p/your-ai-credentials-dont-matter-your?utm_source=substack&amp;utm_campaign=post_embed&amp;utm_medium=web"><div class="embedded-post-header"><img class="embedded-post-publication-logo" src="https://substackcdn.com/image/fetch/$s_!s4a7!,w_56,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3b96b13-6f01-4e56-b410-18e03e7bc8af_500x500.png"><span class="embedded-post-publication-name">Nate&#8217;s Substack</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title-icon"><svg width="19" height="19" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
  <path d="M3 18V12C3 9.61305 3.94821 7.32387 5.63604 5.63604C7.32387 3.94821 9.61305 3 12 3C14.3869 3 16.6761 3.94821 18.364 5.63604C20.0518 7.32387 21 9.61305 21 12V18" stroke-linecap="round" stroke-linejoin="round"></path>
  <path d="M21 19C21 19.5304 20.7893 20.0391 20.4142 20.4142C20.0391 20.7893 19.5304 21 19 21H18C17.4696 21 16.9609 20.7893 16.5858 20.4142C16.2107 20.0391 16 19.5304 16 19V16C16 15.4696 16.2107 14.9609 16.5858 14.5858C16.9609 14.2107 17.4696 14 18 14H21V19ZM3 19C3 19.5304 3.21071 20.0391 3.58579 20.4142C3.96086 20.7893 4.46957 21 5 21H6C6.53043 21 7.03914 20.7893 7.41421 20.4142C7.78929 20.0391 8 19.5304 8 19V16C8 15.4696 7.78929 14.9609 7.41421 14.5858C7.03914 14.2107 6.53043 14 6 14H3V19Z" stroke-linecap="round" stroke-linejoin="round"></path>
</svg></div><div class="embedded-post-title">Your AI credentials don't matter. Your artifacts do. Here's how to build both sides &#8212; plus I'm launching Nate's Network.</div></div><div class="embedded-post-body">Nobody is admitting this publicly, so I will: there are essentially infinite AI jobs right now. Not &#8220;growing demand.&#8221; Not &#8220;a hot sector.&#8221; Infinite, as in every company I work with has an uncapped budget for AI talent and will hire as many qualified people as they can find, and they still can&#8217;t find enough. I&#8217;ve been kicking around tech for decades and I have never seen a labor market this lopsided. Accenture is training 700,000 people on agentic AI. The ManpowerGroup survey of 39,000 employers across 41 countries says AI skills are now the single hardest capability to find on Earth. Not among the hardest. The hardest&#8230;</div><div class="embedded-post-cta-wrapper"><div class="embedded-post-cta-icon"><svg width="32" height="32" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
  <path classname="inner-triangle" d="M10 8L16 12L10 16V8Z" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
</svg></div><span class="embedded-post-cta">Listen now</span></div><div class="embedded-post-meta">3 months ago &#183; 216 likes &#183; 17 comments &#183; Nate</div></a></div><p>Nate&#8217;s latest piece nails the diagnosis. The AI labor market is K-shaped: traditional roles contracting on one side, AI-native roles expanding on the other, and a skills gap in between that most upskilling programs don&#8217;t address. His seven skills &#8212; specification precision, evaluation, decomposition, failure pattern recognition, trust boundary design, context architecture, cost economics &#8212; are extracted from real postings, not think pieces. They map to reality.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://turkawka.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! 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 here&#8217;s what I keep thinking about: even if every job seeker in Europe read that article tonight and started the twelve-week path tomorrow, the infrastructure to match them to the right roles barely exists.</p><h2>The Matching Problem Nobody&#8217;s Solving</h2><p>Nate identifies the problem on the hiring side beautifully: companies posting incoherent job descriptions that combine four different roles, using the interview process as market research, burning candidates&#8217; time. His code of conduct for AI hiring &#8212; define the outcome, pick one track, publish evaluation criteria, respect the time &#8212; is exactly right.</p><p>But here&#8217;s the other half: the candidate side is equally broken.</p><p>A compliance officer who can design evaluation frameworks for AI-generated audit reports has a skill the market prices at a 23-35% premium. But how does she prove it? Her resume says &#8220;Senior Compliance Officer.&#8221; Her LinkedIn says &#8220;regulatory affairs&#8221; and &#8220;risk management.&#8221; The structured, evidence-backed proof that she can evaluate AI output in her domain &#8212; the projects, the error taxonomies, the test cases she&#8217;s designed &#8212; lives in her head or scattered across private documents.</p><p>The resume was designed for a world where your job title was your credential. In the K-shaped market, your title tells hiring managers almost nothing about whether you can operate in Market Two.</p><h2>Evidence Over Keywords</h2><p>This is what we&#8217;re building at <a href="https://kitsuno.ai">Kitsuno</a>. Not another job board. A Professional Record Store &#8212; a system that captures your skills, experience, and evidence as structured data. When Kitso, our AI concierge, helps you prepare for a role, it doesn&#8217;t generate generic cover letters. It maps your evidence against what the role actually requires and shows you &#8212; and the hiring manager &#8212; where your strengths align and where the gaps are.</p><p>Nate&#8217;s seven skills are a taxonomy. A taxonomy only becomes useful when individuals can map themselves against it with evidence, not self-assessment. &#8220;I have specification precision&#8221; means nothing. &#8220;Here&#8217;s a spec I wrote that an agent executed without hand-holding, and here&#8217;s the output quality evaluation&#8221; means everything.</p><p>That&#8217;s the artifact-over-badges philosophy Nate advocates, and it&#8217;s exactly what a Professional Record Store is designed to hold.</p><h2>The Language Problem in the Skills Gap</h2><p>Here&#8217;s something the American AI discourse consistently misses: the skills gap in Europe isn&#8217;t just a skills gap. It&#8217;s a language gap layered on top.</p><p>ManpowerGroup&#8217;s survey covers 41 countries. A meaningful chunk of those 1.6 million open AI positions are in Germany, France, Switzerland, the Netherlands, the Nordics. The candidates who could fill them speak German, French, Dutch, Swedish &#8212; and the career tools available to them operate almost exclusively in English.</p><p>We had a beta tester in Switzerland who filed a one-sentence bug report: &#8220;I didn&#8217;t try because everything was in English.&#8221; He had the skills. He had the experience. The tool we built to help him couldn&#8217;t even get out of his way.</p><p>Eight days later, the entire platform worked in his language. But most career platforms never make that investment. They lose those candidates silently &#8212; no error message, no crash report, just someone who closes the tab and goes back to the tools they already know, even if those tools are worse.</p><p>The K-shaped split isn&#8217;t just about skills. It&#8217;s about access. And access includes language.</p><h2>Where Nate&#8217;s Network and Kitsuno Rhyme</h2><p>Nate&#8217;s building a vetted talent network where profiles aren&#8217;t resumes &#8212; they&#8217;re demonstrations. Show what you&#8217;ve built, describe a spec you wrote, name a task you handed off to an AI system. That&#8217;s the right instinct. The profile structure maps to his seven skills, so matching happens on demonstrated capability, not keyword parsing.</p><p>We&#8217;re building something complementary from the other direction. Kitsuno starts earlier in the career journey: helping people identify and structure their evidence, discover roles that match their actual capabilities, and generate application materials that tell a true story. The Professional Record Store is the container. The AI concierge is the guide. The evidence library is the proof.</p><p>A world where Nate&#8217;s Network matches people based on what they can demonstrate, and Kitsuno helps them build and structure that demonstration from day one &#8212; that&#8217;s a world where the skills gap actually starts closing.</p><h2>The Real Gap</h2><p>The K-shaped split is closable. Nate&#8217;s right about that. But it won&#8217;t close through twelve-week courses alone, no matter how good they are. It closes when the entire infrastructure &#8212; how people discover their strengths, how they prove them, how they find roles, how companies specify what they need, how matching happens &#8212; catches up to the reality of the market.</p><p>The career tools most people use were built for a job market that&#8217;s disappearing. The new one needs new infrastructure. That&#8217;s what we&#8217;re building.</p><p>The fox is paying attention.</p><div><hr></div><p><em>Greg Turkawka is the founder of <a href="https://kitsuno.ai">Kitsuno</a>, an AI-powered career intelligence platform built in Bucharest for the European job market. 18 years in L&amp;D and EdTech. Believes the carpenter&#8217;s skills deserve the same quality of career tools as the CEO&#8217;s.</em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://turkawka.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! 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 First Week I Saw a Database — And What Broke When Real Users Arrived]]></title><description><![CDATA[Substack #2: What happens when a non-engineer hits PostgreSQL for the first time, builds an AI helper, and a beta tester proves it&#8217;s lying.]]></description><link>https://turkawka.substack.com/p/the-first-week-i-saw-a-database-and</link><guid isPermaLink="false">https://turkawka.substack.com/p/the-first-week-i-saw-a-database-and</guid><dc:creator><![CDATA[Gregory Turkawka]]></dc:creator><pubDate>Mon, 23 Mar 2026 19:42:31 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!XVFG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d0ac747-fc70-470f-a55c-914e8c0653c0_3200x1800.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!XVFG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d0ac747-fc70-470f-a55c-914e8c0653c0_3200x1800.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XVFG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d0ac747-fc70-470f-a55c-914e8c0653c0_3200x1800.png 424w, https://substackcdn.com/image/fetch/$s_!XVFG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d0ac747-fc70-470f-a55c-914e8c0653c0_3200x1800.png 848w, https://substackcdn.com/image/fetch/$s_!XVFG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d0ac747-fc70-470f-a55c-914e8c0653c0_3200x1800.png 1272w, https://substackcdn.com/image/fetch/$s_!XVFG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d0ac747-fc70-470f-a55c-914e8c0653c0_3200x1800.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!XVFG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d0ac747-fc70-470f-a55c-914e8c0653c0_3200x1800.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3d0ac747-fc70-470f-a55c-914e8c0653c0_3200x1800.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:239060,&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://turkawka.substack.com/i/191884959?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d0ac747-fc70-470f-a55c-914e8c0653c0_3200x1800.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_!XVFG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d0ac747-fc70-470f-a55c-914e8c0653c0_3200x1800.png 424w, https://substackcdn.com/image/fetch/$s_!XVFG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d0ac747-fc70-470f-a55c-914e8c0653c0_3200x1800.png 848w, https://substackcdn.com/image/fetch/$s_!XVFG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d0ac747-fc70-470f-a55c-914e8c0653c0_3200x1800.png 1272w, https://substackcdn.com/image/fetch/$s_!XVFG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d0ac747-fc70-470f-a55c-914e8c0653c0_3200x1800.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><br>Six days into building <a href="https://kitsuno.ai">Kitsuno</a>, I saw my first database.</p><p>Not a spreadsheet pretending to be a database. Not a diagram in a spec document. An actual PostgreSQL instance running in a Docker container, holding real data in real tables with real foreign keys. I typed a command and rows appeared. Rows I&#8217;d designed, that my AI partner had created, that now existed independently of either of us.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://turkawka.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! 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 stared at it the way you stare at your first apartment after moving out of your parents&#8217; house. This is mine. I made this. I have no idea what I&#8217;m doing.</p><div><hr></div><h2>Schemas by tomorrow</h2><p>The first article in this series was about the big picture &#8212; a non-engineer building a SaaS platform in 40 days with AI. This one is about two moments that defined the build: the first time I touched a real database, and the day a beta tester proved my AI was lying.</p><p>Here&#8217;s what I remember: everything was a word I&#8217;d heard before but never touched. Docker. Containers. Volumes. Migrations. Foreign keys. Connection strings. Environment variables. I knew what a database was the way a restaurant critic knows what a kitchen is &#8212; conceptually, from the outside, with opinions about the output.</p><p>Now I was in the kitchen.</p><p>Claude &#8212; my AI engineering partner &#8212; would say something like &#8220;we need to add a column to the search_profiles table.&#8221; And I&#8217;d nod like I understood, then watch as a SQL statement appeared and data changed shape in front of me. It was genuinely magical. And also terrifying, because I knew I was one bad command away from destroying something I couldn&#8217;t rebuild.</p><p>The thing nobody tells you about databases is that they&#8217;re not the hard part. The hard part is understanding what your data <em>means</em>. What relates to what. Why this field is a UUID and that one is TEXT. Why you store timestamps with timezones. Why you never, ever delete data without a snapshot first.</p><p>I already knew this &#8212; because I&#8217;d spent twenty years designing systems. I knew that a skill belongs to a person, not a profile. That evidence should be shared across profiles, not duplicated. That the relationship between a job and a match score depends on which profile is doing the matching. These aren&#8217;t engineering insights. They&#8217;re domain insights. And they turned out to matter more than any technical skill.</p><p>The AI could write any SQL I asked for. But it couldn&#8217;t know that my data model was wrong until I caught it &#8212; because I was the one who understood what the users needed.</p><div><hr></div><h2>The first real schema</h2><p>The first major table I designed was <code>search_profiles</code>. It held everything about a user&#8217;s job search configuration &#8212; what they&#8217;re looking for, where, what keywords matter, which sources to scan.</p><p>I remember the conversation with Claude. I described what a job seeker needs to configure. The AI proposed a schema. I looked at it and said: &#8220;No, the locations need to be separate from the permit status. Someone can have a work permit for Switzerland but be searching in Germany.&#8221;</p><p>That correction &#8212; a domain insight, not a technical one &#8212; shaped the entire architecture. The AI would never have known that on its own. It would have built something clean and technically correct that didn&#8217;t match how real people search for jobs.</p><p>This became the pattern. I&#8217;d describe the behavior. Claude would propose the structure. I&#8217;d catch the domain errors. Claude would fix them. Back and forth, sometimes for an hour on a single table. By the end of the first week, we had seventeen tables and I could read a schema like someone who&#8217;d been doing it for years.</p><p>I hadn&#8217;t. I&#8217;d been doing it for five days.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!MlVu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d4a5967-ec26-42b2-be8e-16ba58c7aef4_3200x1290.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!MlVu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d4a5967-ec26-42b2-be8e-16ba58c7aef4_3200x1290.png 424w, https://substackcdn.com/image/fetch/$s_!MlVu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d4a5967-ec26-42b2-be8e-16ba58c7aef4_3200x1290.png 848w, https://substackcdn.com/image/fetch/$s_!MlVu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d4a5967-ec26-42b2-be8e-16ba58c7aef4_3200x1290.png 1272w, https://substackcdn.com/image/fetch/$s_!MlVu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d4a5967-ec26-42b2-be8e-16ba58c7aef4_3200x1290.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!MlVu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d4a5967-ec26-42b2-be8e-16ba58c7aef4_3200x1290.png" width="1456" height="587" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8d4a5967-ec26-42b2-be8e-16ba58c7aef4_3200x1290.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:587,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:270485,&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://turkawka.substack.com/i/191884959?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d4a5967-ec26-42b2-be8e-16ba58c7aef4_3200x1290.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_!MlVu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d4a5967-ec26-42b2-be8e-16ba58c7aef4_3200x1290.png 424w, https://substackcdn.com/image/fetch/$s_!MlVu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d4a5967-ec26-42b2-be8e-16ba58c7aef4_3200x1290.png 848w, https://substackcdn.com/image/fetch/$s_!MlVu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d4a5967-ec26-42b2-be8e-16ba58c7aef4_3200x1290.png 1272w, https://substackcdn.com/image/fetch/$s_!MlVu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d4a5967-ec26-42b2-be8e-16ba58c7aef4_3200x1290.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>Forty days later, a beta user broke everything</h2><p>Fast forward. The platform is live. 134,000 lines of code. 2,300 git commits. Desktop, mobile, AI pipeline, payments, portfolio service, email digests, admin panel. Forty-two active build days. It works. Real users are on it.</p><p>Inside the platform lives Kitso &#8212; a fox AI companion that helps you navigate the system. Ask it about your skills, your pipeline, how to configure your search. It&#8217;s powered by a large language model. It knows your data. It has a system prompt with product knowledge.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!yTAA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73955cba-b0ea-4725-845d-457bfd38bad3_3096x1990.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yTAA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73955cba-b0ea-4725-845d-457bfd38bad3_3096x1990.png 424w, https://substackcdn.com/image/fetch/$s_!yTAA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73955cba-b0ea-4725-845d-457bfd38bad3_3096x1990.png 848w, https://substackcdn.com/image/fetch/$s_!yTAA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73955cba-b0ea-4725-845d-457bfd38bad3_3096x1990.png 1272w, https://substackcdn.com/image/fetch/$s_!yTAA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73955cba-b0ea-4725-845d-457bfd38bad3_3096x1990.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yTAA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73955cba-b0ea-4725-845d-457bfd38bad3_3096x1990.png" width="1456" height="936" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/73955cba-b0ea-4725-845d-457bfd38bad3_3096x1990.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:936,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:748580,&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://turkawka.substack.com/i/191884959?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73955cba-b0ea-4725-845d-457bfd38bad3_3096x1990.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_!yTAA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73955cba-b0ea-4725-845d-457bfd38bad3_3096x1990.png 424w, https://substackcdn.com/image/fetch/$s_!yTAA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73955cba-b0ea-4725-845d-457bfd38bad3_3096x1990.png 848w, https://substackcdn.com/image/fetch/$s_!yTAA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73955cba-b0ea-4725-845d-457bfd38bad3_3096x1990.png 1272w, https://substackcdn.com/image/fetch/$s_!yTAA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73955cba-b0ea-4725-845d-457bfd38bad3_3096x1990.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>One of the first beta testers was from Switzerland. German-speaking. He completed the onboarding interview with Kitso, got to the end, and didn&#8217;t know what to click next. He filed a bug report. Fair.</p><p>But then another tester asked Kitso a simple question: &#8220;Where do I find my keywords?&#8221;</p><p>Kitso responded with a detailed, confident, completely wrong answer. It told her to go to &#8220;AI + L&amp;D profile settings&#8221; and click on a &#8220;Search Keywords&#8221; section. It described buttons that don&#8217;t exist. Navigation that was never built. It sounded helpful. It was hallucinating.</p><p>I know what hallucination means in the AI context. I&#8217;d read about it, designed around it, thought I&#8217;d guarded against it. But seeing it happen to a real person using my product &#8212; someone who trusted the fox &#8212; was different.</p><p>She was stuck in the Library, trying to figure out how to describe her experiences. Kitso gave her step-by-step instructions. Steps that sounded perfect and led nowhere.</p><div><hr></div><h2>The instinct to fix it with more AI</h2><p>My first reaction was: fix the prompt. Give Kitso better instructions. More product knowledge. Longer system prompt. More guardrails.</p><p>We tried that. It helped &#8212; partially. But then we discovered something that anyone building with LLMs will eventually discover: the longer the system prompt, the worse the model performs. Specifically, we were using Qwen3 32B (an open-source model, cheaper than GPT-4, good enough for most tasks). With a short prompt, it was reliable. With a long prompt full of product knowledge, navigation instructions, and guardrails &#8212; it started inventing things.</p><p>This is the part the AI hype doesn&#8217;t prepare you for. The model doesn&#8217;t get <em>less confident</em> when it knows less. It gets <em>more creative</em>. It fills the gaps with plausible fiction. And to a user who doesn&#8217;t know the product yet, plausible fiction is indistinguishable from real instructions.</p><p>So I tried the next obvious solution: build a routing system. When someone asks a product question, route them to a &#8220;helper&#8221; with a short, focused prompt. When they ask a career question, route them to a &#8220;concierge&#8221; with full access to their data. Two paths, two prompts, two models.</p><p>The routing worked &#8212; in theory. In practice, it meant asking the AI to classify intent. &#8220;Where are my keywords?&#8221; &#8212; is that a product question or a career question? It&#8217;s obviously a product question. But &#8220;How does my profile look?&#8221; &#8212; that could be either. And the LLM couldn&#8217;t reliably tell the difference.</p><p>We built routing words. Help words. Coach words. Ambiguous words. We built clickable buttons that asked the user: &#8220;Did you mean product help or career advice?&#8221; It was getting complex. Every fix created a new edge case.</p><div><hr></div><h2>The moment it clicked</h2><p>Then one evening, I realized something.</p><p>I had just finished building a help system for the platform &#8212; 60 tooltip entries explaining every feature, every button, every concept. Each tip followed a simple format: what it is, how to use it, why it matters. Single source of truth. One JavaScript file. Human-written, accurate, comprehensive.</p><p>And I thought: why am I asking an AI to answer questions when I already wrote all the answers?</p><p>The solution was embarrassingly simple.</p><p>Instead of LLM-based routing, intent classification, prompt engineering, and model selection &#8212; I built a keyword lookup table. 132 keywords mapped to tooltip answers. User types &#8220;keywords&#8221; &#8594; instant, accurate answer about where to find keywords. User types &#8220;evidence&#8221; &#8594; exact explanation of the evidence system. Zero AI. Zero hallucination. Zero tokens. Zero cost.</p><p>For everything the lookup doesn&#8217;t catch, the user gets the AI concierge &#8212; with their actual data, for real career conversations. The kind of thing LLMs are actually good at.</p><p>The fix took one session. It replaced three sessions of increasingly complex LLM routing logic. And it works perfectly, because the answers come from the person who built the product &#8212; me.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!d3e-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F352f56c8-b1ff-4571-9a96-378713d9c912_3202x1922.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!d3e-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F352f56c8-b1ff-4571-9a96-378713d9c912_3202x1922.png 424w, https://substackcdn.com/image/fetch/$s_!d3e-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F352f56c8-b1ff-4571-9a96-378713d9c912_3202x1922.png 848w, https://substackcdn.com/image/fetch/$s_!d3e-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F352f56c8-b1ff-4571-9a96-378713d9c912_3202x1922.png 1272w, https://substackcdn.com/image/fetch/$s_!d3e-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F352f56c8-b1ff-4571-9a96-378713d9c912_3202x1922.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!d3e-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F352f56c8-b1ff-4571-9a96-378713d9c912_3202x1922.png" width="1456" height="874" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/352f56c8-b1ff-4571-9a96-378713d9c912_3202x1922.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:874,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:521163,&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://turkawka.substack.com/i/191884959?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F352f56c8-b1ff-4571-9a96-378713d9c912_3202x1922.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_!d3e-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F352f56c8-b1ff-4571-9a96-378713d9c912_3202x1922.png 424w, https://substackcdn.com/image/fetch/$s_!d3e-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F352f56c8-b1ff-4571-9a96-378713d9c912_3202x1922.png 848w, https://substackcdn.com/image/fetch/$s_!d3e-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F352f56c8-b1ff-4571-9a96-378713d9c912_3202x1922.png 1272w, https://substackcdn.com/image/fetch/$s_!d3e-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F352f56c8-b1ff-4571-9a96-378713d9c912_3202x1922.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>What I actually learned</h2><p>Two things.</p><p><strong>First: the database wasn&#8217;t the hard part.</strong> I was terrified of PostgreSQL in week one. By week two, I was writing queries. By week three, I had opinions about JSONB parsing. The technical barrier is real, but it&#8217;s thinner than it looks &#8212; especially with an AI partner that can explain anything in context. The hard part was always knowing what to build and why. That&#8217;s domain expertise, not engineering.</p><p><strong>Second: AI is bad at being reliable and good at being intelligent.</strong> The same model that hallucinates product navigation can have a genuinely insightful conversation about your career trajectory. The same model that invents buttons can analyze a job description against your skills and produce a match brief that&#8217;s sharper than most human recruiters would write.</p><p>The trick isn&#8217;t making AI reliable. It&#8217;s knowing where reliability matters and keeping AI away from those parts.</p><p>Product help needs to be deterministic. Always correct. Instant. That&#8217;s a lookup table. Career intelligence needs to be contextual, nuanced, personalized. That&#8217;s an LLM.</p><p>This sounds obvious in retrospect. It wasn&#8217;t obvious while I was knee-deep in routing logic trying to make a language model reliably distinguish between &#8220;how do I add a skill&#8221; and &#8220;what skills should I focus on.&#8221;</p><div><hr></div><h2>The non-engineer&#8217;s advantage</h2><p>Here&#8217;s the part that surprises people: being a non-engineer was an advantage in solving this problem.</p><p>An engineer might have gone deeper into the LLM stack. Better prompt engineering. Fine-tuning. Retrieval-augmented generation. More sophisticated routing. These are valid tools and an engineer would know how to reach for them.</p><p>I didn&#8217;t know any of that. So I asked a simpler question: do I even need AI here?</p><p>Twenty years of designing educational systems taught me that the best system is the one that gives the right answer at the right time with the least complexity. Not the smartest system. The <em>right</em> system.</p><p>A lookup table is not smart. It is right. And for product help, right beats smart every time.</p><div><hr></div><h2>What comes next</h2><p>The platform is live at <a href="https://kitsuno.ai/">kitsuno.ai</a>. Beta users are testing. Bugs are being found and fixed &#8212; sometimes within the same hour they&#8217;re reported. The help system works. The AI concierge is getting better with every guardrail we add.</p><p>Next post: I&#8217;ll write about <strong>what happened when I stopped designing screens and started designing a fox</strong> &#8212; how Kitso went from a chatbot in a sidebar to a companion with a voice, a personality, and opinions.</p><div><hr></div><p><em>If you&#8217;re building something and you&#8217;ve hit the moment where your AI is confidently wrong &#8212; you&#8217;re not behind. You&#8217;re exactly where every builder lands. The answer might be simpler than you think.</em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://turkawka.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! 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[I’m Not an Engineer. I Built a SaaS Platform in 40 Days.]]></title><description><![CDATA[This is the first post in a series about what happens when a domain expert gets AI as an engineering partner.]]></description><link>https://turkawka.substack.com/p/im-not-an-engineer-i-built-a-saas</link><guid isPermaLink="false">https://turkawka.substack.com/p/im-not-an-engineer-i-built-a-saas</guid><dc:creator><![CDATA[Gregory Turkawka]]></dc:creator><pubDate>Sat, 21 Mar 2026 22:08:34 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!csHl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20e8936a-9a0b-4e64-87c4-15a551c16ea8_3200x1800.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!csHl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20e8936a-9a0b-4e64-87c4-15a551c16ea8_3200x1800.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!csHl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20e8936a-9a0b-4e64-87c4-15a551c16ea8_3200x1800.png 424w, https://substackcdn.com/image/fetch/$s_!csHl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20e8936a-9a0b-4e64-87c4-15a551c16ea8_3200x1800.png 848w, https://substackcdn.com/image/fetch/$s_!csHl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20e8936a-9a0b-4e64-87c4-15a551c16ea8_3200x1800.png 1272w, https://substackcdn.com/image/fetch/$s_!csHl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20e8936a-9a0b-4e64-87c4-15a551c16ea8_3200x1800.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!csHl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20e8936a-9a0b-4e64-87c4-15a551c16ea8_3200x1800.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/20e8936a-9a0b-4e64-87c4-15a551c16ea8_3200x1800.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:766398,&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://turkawka.substack.com/i/191711317?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20e8936a-9a0b-4e64-87c4-15a551c16ea8_3200x1800.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_!csHl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20e8936a-9a0b-4e64-87c4-15a551c16ea8_3200x1800.png 424w, https://substackcdn.com/image/fetch/$s_!csHl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20e8936a-9a0b-4e64-87c4-15a551c16ea8_3200x1800.png 848w, https://substackcdn.com/image/fetch/$s_!csHl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20e8936a-9a0b-4e64-87c4-15a551c16ea8_3200x1800.png 1272w, https://substackcdn.com/image/fetch/$s_!csHl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20e8936a-9a0b-4e64-87c4-15a551c16ea8_3200x1800.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>Six weeks ago I had never shipped a production application.</p><p>I understood systems. I&#8217;d spent years designing digital learning ecosystems, writing a Master&#8217;s thesis on gamified platforms, configuring LMS architectures, thinking in data models and user flows. I could read code. I could spec a feature. I knew what I wanted to build and roughly how the pieces should fit together.</p><p>But I&#8217;d never built and deployed a full SaaS product. Never set up a production database. Never wired payments. Never configured a reverse proxy. The gap between &#8220;I can design this&#8221; and &#8220;I can ship this&#8221; had always been too wide to cross alone.</p><p>Today I have a live platform. Desktop and mobile. Authentication, payments, email, admin panel, portfolio service, workflow automation, 48 integrated job sources, and a multi-model AI pipeline that scores jobs, writes CVs, and generates cover letters.</p><p>160,000 lines of code. 2,291 git commits. 40 days. Under &#8364;500 in total costs.</p><p>I&#8217;m going to tell you how. Not the polished version &#8212; the real one.</p><div><hr></div><h2>Who I am (and who I&#8217;m not)</h2><p>I&#8217;m a learning and development professional. Eighteen years building educational systems &#8212; running schools in Switzerland, directing programs at a university, launching a UNICEF-partnered digital learning initiative across 11 countries. My Master&#8217;s thesis was a gamified digital ecosystem. I know how people learn, how systems shape behavior, how to design for motivation.</p><p>I am technical enough to be dangerous. I&#8217;ve configured LMS platforms, built WordPress sites, written specifications that developers actually followed. I&#8217;ve always been the person in the room who understood both the pedagogy and the technology.</p><p>But I am not a software engineer. I have never been employed as one. I have never shipped code to production. The idea that I could build a complete SaaS platform was, six weeks ago, genuinely absurd.</p><p>This is not the story of &#8220;senior developer uses AI to code faster.&#8221; It&#8217;s the story of <strong>a domain expert who spent twenty years on the design side of the gap &#8212; and AI built the bridge across.</strong></p><div><hr></div><h2>Why I started</h2><p>I&#8217;ve always been the person with the vision and no team fast enough to build it.</p><p>My Master&#8217;s thesis was a gamified digital learning ecosystem called LearnIn. The concept was ambitious &#8212; a platform that treated every learner&#8217;s journey as worthy of intelligent, personalized support. I brought it to UNICEF. We partnered across 11 countries. It was real, it was working, and it was important.</p><p>And it got killed. Not by bad ideas, but by slow processes. Rigid institutional workflows. Committees that took months to approve what should have taken days. Development teams that couldn&#8217;t keep up with the design vision &#8212; not because they were bad, but because translating what I saw in my head into specifications that survived the game of telephone between designer and developer was its own full-time job.</p><p>I&#8217;d experienced this my entire career. Always the architect, never the builder. Always dependent on teams, budgets, timelines, and institutional momentum to turn ideas into reality.</p><p>Then AI changed the equation.</p><p>Kitsuno is LearnIn 2.0. Different scope &#8212; career intelligence instead of learning ecosystems &#8212; but the same philosophy: every person&#8217;s journey deserves real intelligence, not keyword matching. Every worker matters. Systems should help people grow.</p><p>The difference this time? No committee. No dev team. No eighteen-month roadmap. Just me and an AI, building exactly what I see.</p><div><hr></div><h2>What &#8220;vibe coding&#8221; actually feels like</h2><p>The term &#8220;vibe coding&#8221; sounds frivolous. Like you&#8217;re just vibing and code appears. It&#8217;s not that.</p><p>Here&#8217;s what it actually is: you have a conversation about what you want to build. You describe the behavior, the user experience, the data model. The AI writes the code. You test it. It breaks. You describe what broke. The AI fixes it. You test again. It works, but not quite right. You refine. Back and forth, sometimes for hours on a single feature.</p><p>Here&#8217;s what I&#8217;ve learned that nobody talks about: <strong>vibe coding only works if you deeply know your domain.</strong> The AI can write any code you ask for. But if you don&#8217;t know what to ask for &#8212; if you can&#8217;t see that the UX is wrong, that the data model doesn&#8217;t fit the real workflow, that the scoring logic misses how people actually think &#8212; you&#8217;ll build something that looks impressive and does nothing useful.</p><p>Twenty years of designing systems that help people grow is what made this work. Not coding skills. Not prompt engineering. Domain expertise. I knew what every screen should feel like because I&#8217;d spent two decades designing the blueprints that teams never built fast enough. The AI had the hands. I had the eyes. And the eyes mattered more.</p><p>This is why I think vibe coding changes everything &#8212; not because it lets anyone build anything, but because it lets the people who understand the problem finally build the solution. The domain expert talks directly to the machine that builds.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wRMA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ed2cf47-8b12-44f3-a271-069487f9bb00_2400x1350.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wRMA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ed2cf47-8b12-44f3-a271-069487f9bb00_2400x1350.png 424w, https://substackcdn.com/image/fetch/$s_!wRMA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ed2cf47-8b12-44f3-a271-069487f9bb00_2400x1350.png 848w, https://substackcdn.com/image/fetch/$s_!wRMA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ed2cf47-8b12-44f3-a271-069487f9bb00_2400x1350.png 1272w, https://substackcdn.com/image/fetch/$s_!wRMA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ed2cf47-8b12-44f3-a271-069487f9bb00_2400x1350.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wRMA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ed2cf47-8b12-44f3-a271-069487f9bb00_2400x1350.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1ed2cf47-8b12-44f3-a271-069487f9bb00_2400x1350.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:375610,&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://turkawka.substack.com/i/191711317?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ed2cf47-8b12-44f3-a271-069487f9bb00_2400x1350.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_!wRMA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ed2cf47-8b12-44f3-a271-069487f9bb00_2400x1350.png 424w, https://substackcdn.com/image/fetch/$s_!wRMA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ed2cf47-8b12-44f3-a271-069487f9bb00_2400x1350.png 848w, https://substackcdn.com/image/fetch/$s_!wRMA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ed2cf47-8b12-44f3-a271-069487f9bb00_2400x1350.png 1272w, https://substackcdn.com/image/fetch/$s_!wRMA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ed2cf47-8b12-44f3-a271-069487f9bb00_2400x1350.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>What I&#8217;m going to write about</h2><p>This Substack is the journal of that journey. Not the highlight reel &#8212; the actual process.</p><p>I&#8217;ll write about:</p><ul><li><p><strong>The architecture decisions</strong> and why they were made (and the ones I got wrong)</p></li><li><p><strong>The moments it broke</strong> &#8212; and there were many &#8212; and what debugging looks like when you can&#8217;t read the stack trace</p></li><li><p><strong>The AI collaboration pattern</strong> that emerged &#8212; what works, what doesn&#8217;t, when to trust the AI and when to override it</p></li><li><p><strong>The cost reality</strong> of building with AI &#8212; what &#8364;500 actually bought</p></li><li><p><strong>The product philosophy</strong> behind Kitsuno &#8212; why quality over volume, why European values, why a fox</p></li><li><p><strong>The launch</strong> &#8212; what happens when you put something you built in 40 days in front of real users</p></li></ul><p>If you&#8217;re an indie builder, a non-technical founder with a product idea, someone curious about what AI can actually do (beyond the hype), or just someone who enjoys watching someone build something from scratch &#8212; this is for you.</p><div><hr></div><h2>The product</h2><p>The thing I built is called <a href="https://kitsuno.ai/">Kitsuno</a> &#8212; an AI career intelligence platform. The AI companion inside it is called Kitso &#8212; a fox spirit from Japanese folklore that hunts jobs while you sleep.</p><p>If you want the product story, I wrote about it <a href="https://medium.com/p/2f00066d9ab7">on Medium</a>. This Substack is the builder&#8217;s story.</p><p>Next post: <strong>the first week</strong> &#8212; what it feels like to see a database for the first time and realize you need to understand schemas by tomorrow.</p><div><hr></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://turkawka.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://turkawka.substack.com/subscribe?"><span>Subscribe now</span></a></p><p><em>Subscribe if you want to follow along. I&#8217;ll publish weekly, sometimes more often when something interesting breaks.</em></p>]]></content:encoded></item></channel></rss>