1<!DOCTYPE html><html lang="en" dir="ltr"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><link rel="stylesheet" href="/assets/styles-BbX6Ll98.css" data-precedence="default"/><title>Field Notes â CraftingProduct</title><meta name="author" content="Dima Abramov"/><meta name="description" content="Analytical field notes from AI workshops, build sessions, and the Amsterdam AI community, filed after the work by CraftingProduct."/><meta name="robots" content="index, follow"/><meta property="og:type" content="website"/><meta property="og:url" content="https://craftingproduct.io/field-notes"/><meta property="og:site_name" content="CraftingProduct"/><meta property="og:locale" content="en_US"/><meta property="og:title" content="Field Notes â CraftingProduct"/><meta property="og:description" content="Analytical field notes from AI workshops, build sessions, and the Amsterdam AI community, filed after the work by CraftingProduct."/><meta property="og:image" content="https://craftingproduct.io/og/field-notes.jpg"/><meta property="og:image:secure_url" content="https://craftingproduct.io/og/field-notes.jpg"/><meta property="og:image:width" content="1200"/><meta property="og:image:height" content="630"/><meta property="og:image:type" content="image/jpeg"/><meta property="og:image:alt" content="CraftingProduct Field Notes social card: âFiled after the work.â"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:title" content="Field Notes â CraftingProduct"/><meta name="twitter:description" content="Analytical field notes from AI workshops, build sessions, and the Amsterdam AI community, filed after the work by CraftingProduct."/><meta name="twitter:image" content="https://craftingproduct.io/og/field-notes.jpg"/><meta name="twitter:image:alt" content="CraftingProduct Field Notes social card: âFiled after the work.â"/><link rel="modulepreload" href="/assets/index-B-7KkYq8.js"/><link rel="modulepreload" href="/assets/rolldown-runtime-BNNRdYrd.js"/><link rel="modulepreload" href="/assets/react-dom-CagvwlZ5.js"/><link rel="modulepreload" href="/assets/Navigation-B4T-34VF.js"/><link rel="modulepreload" href="/assets/router-compat-D_eiPntG.js"/><link rel="modulepreload" href="/assets/jsx-runtime-Bb2r7ayK.js"/><link rel="modulepreload" href="/assets/utils-D10kMHym.js"/><link rel="modulepreload" href="/assets/client-SK0VLBZg.js"/><link rel="modulepreload" href="/assets/preload-helper-BATLnrmA.js"/><link rel="modulepreload" href="/assets/useQuery-Cy_vWJps.js"/><link rel="modulepreload" href="/assets/useMutation--BtVdtzA.js"/><link rel="modulepreload" href="/assets/use-toast-BpsFUxD3.js"/><link rel="modulepreload" href="/assets/dist-B-V3VBhL.js"/><link rel="modulepreload" href="/assets/es2015-CC2uZE_7.js"/><link rel="modulepreload" href="/assets/createLucideIcon-YmwL_13R.js"/><link rel="modulepreload" href="/assets/arrow-right-BH0vMp_c.js"/><link rel="modulepreload" href="/assets/usePrefersReducedMotion-82-Hllt4.js"/><link rel="modulepreload" href="/assets/linkedin-BgMLdBaM.js"/><link rel="modulepreload" href="/assets/mail-DfngN0jL.js"/><link rel="modulepreload" href="/assets/dist--Gt4zMxC.js"/><link rel="modulepreload" href="/assets/useAuth-Dac70DP5.js"/><link rel="modulepreload" href="/assets/usePortfolio-BE9-jrk_.js"/><link rel="modulepreload" href="/assets/dialog-CkRhPuPv.js"/><link rel="modulepreload" href="/assets/evidence-record-C5ZjSf6q.js"/><link rel="modulepreload" href="/assets/responsive-image-Dy9LaIRY.js"/><link rel="modulepreload" href="/assets/field-notes-DsSkXI9P.js"/><link rel="modulepreload" href="/assets/FieldNotesIndex-DQJbFTlF.js"/><link rel="preload" as="font" type="font/woff2" href="/fonts/archivo-100_900-latin.woff2" crossorigin="anonymous"/><link rel="preload" as="font" type="font/woff2" href="/fonts/ibm-plex-mono-400-latin.woff2" crossorigin="anonymous"/><link rel="dns-prefetch" href="https://cdn.gpteng.co"/><link rel="canonical" href="https://craftingproduct.io/field-notes"/>
1<script defer src="/~flock.js" data-proxy-url="/~api/analytics"></script>
1</head><body><div role="region" aria-label="Notifications (F8)" tabindex="-1" style="pointer-events:none"><ol tabindex="-1" class="fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]"></ol></div><section aria-label="Notifications alt+T" tabindex="-1" aria-live="polite" aria-relevant="additions text" aria-atomic="false"></section><!--$--><div class="min-h-screen bg-canvas text-ink"><a href="#main-content" class="sr-only focus:not-sr-only focus:absolute focus:top-4 focus:left-4 focus:z-[9999] focus:px-4 focus:py-3 focus:bg-primary focus:text-primary-foreground focus:rounded-md focus:shadow-lg focus:outline-hidden focus:ring-2 focus:ring-ring focus:ring-offset-2 focus:font-medium focus:text-sm focus:min-h-[44px] focus:min-w-[44px] focus:flex focus:items-center focus:justify-center">Skip to main content</a><header class="fixed inset-x-0 top-0 z-50 border-b border-ink/10 bg-canvas"><nav class="relative mx-auto flex h-16 w-full max-w-[1440px] items-center justify-between px-5 md:px-10" aria-label="Main navigation"><a aria-label="CraftingProduct â go to homepage" href="/" class="flex items-center gap-3 rounded-xs focus-visible:ring-2 focus-visible:ring-wine focus-visible:ring-offset-0 focus-visible:outline-hidden"><div class="flex items-center gap-[3px] tracking-tight" aria-hidden="true"><span class="text-lg font-black leading-none text-ink">â</span><span class="text-lg font-black leading-none text-ink">â</span><span class="text-lg font-black leading-none text-ink">â</span></div><span class="font-display text-base font-semibold tracking-tight text-ink">CraftingProduct</span></a><ol class="pointer-events-none absolute left-1/2 top-1/2 hidden -translate-x-1/2 -translate-y-1/2 items-center gap-8 lg:flex [&>li]:pointer-events-auto"><li class="relative"><a href="/workshops" class="group flex items-center rounded-xs focus-visible:outline-hidden"><span class="text-sm font-medium leading-none text-ink/70 transition-colors group-hover:text-ink group-[.is-active]:text-ink">For Teams</span></a></li><li class="relative"><a class="group flex items-center rounded-xs focus-visible:outline-hidden is-active" href="/field-notes" data-status="active" aria-current="page"><span class="text-sm font-medium leading-none text-ink/70 transition-colors group-hover:text-ink group-[.is-active]:text-ink">Field Notes</span></a><span aria-hidden="true" data-testid="nav-chapter-tracer" class="absolute -bottom-[23px] left-0 block h-[3px] w-full bg-plum"></span></li><li class="relative"><a href="/evidence" class="group flex items-center rounded-xs focus-visible:outline-hidden"><span class="text-sm font-medium leading-none text-ink/70 transition-colors group-hover:text-ink group-[.is-active]:text-ink">The Record</span></a></li><li class="relative"><a href="/studio" class="group flex items-center rounded-xs focus-visible:outline-hidden"><span class="text-sm font-medium leading-none text-ink/70 transition-colors group-hover:text-ink group-[.is-active]:text-ink">Studio</span></a></li></ol><div class="flex items-center gap-3"><div class="hidden lg:block"><button type="button" class="inline-flex min-h-11 items-center justify-center gap-2 bg-action px-5 py-2.5 font-mono text-xs font-medium uppercase tracking-[0.14em] text-action-foreground transition-colors duration-200 hover:bg-ink hover:text-canvas focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-cobalt" aria-label="Work with us â choose a team session or a project inquiry">Work with us</button></div><button type="button" class="inline-flex min-h-11 min-w-11 items-center justify-center text-ink transition-colors hover:bg-ink/5 focus-visible:outline-hidden lg:hidden" aria-expanded="false" aria-controls="mobile-menu" aria-label="Open main menu"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-menu size-6" aria-hidden="true"><path d="M4 5h16"></path><path d="M4 12h16"></path><path d="M4 19h16"></path></svg></button></div></nav></header><main id="main-content" tabindex="-1" class="pt-16"><div aria-live="polite" aria-atomic="true" class="sr-only"></div><section data-section="masthead" aria-labelledby="field-notes-heading" class="relative isolate overflow-hidden border-b border-ink/10"><div aria-hidden="true" class="h-2 bg-ink"></div><div class="mx-auto grid w-full max-w-[1440px] gap-12 px-5 pb-16 pt-20 md:grid-cols-[1.05fr_0.95fr] md:items-center md:gap-16 md:px-10 md:pb-24 md:pt-28"><div><div style="opacity:0;transform:translateY(24px)"><p class="flex items-baseline gap-3 font-mono text-[11px] uppercase tracking-[0.18em] text-ink/60"><span aria-hidden="true" class="h-[3px] w-7 shrink-0 self-center bg-cobalt"></span><span>Field Notes</span></p></div><div style="opacity:0;transform:translateY(24px)"><h1 id="field-notes-heading" class="mt-8 max-w-[9ch] font-display text-[clamp(3rem,11vw,9rem)] font-bold leading-[0.9] tracking-[-0.035em] text-ink [font-stretch:110%]">What the work<!-- --> <span class="relative block">taught us<span aria-hidden="true" class="absolute inset-x-0 bottom-[0.02em] block h-[0.1em] origin-left bg-gold" style="transform:scale
1X(0)"></span></span></h1></div><div style="opacity:0;transform:translateY(24px)"><div class="mt-10 max-w-2xl border-t-2 border-ink/80 pt-5"><p class="text-base leading-relaxed text-ink/80 md:text-lg">Notes from workshops, build sessions, and the communities around them. What happened, what broke, and what changed â written down while it was still useful.</p><p class="mt-5 font-mono text-[11px] uppercase tracking-[0.18em] text-ink/55">0<!-- --> published <!-- -->notes</p></div></div></div><div class="md:pt-6" style="opacity:0;transform:translateY(24px)"><div aria-hidden="true" data-artifact="field" class="pointer-events-none relative select-none mx-auto w-full max-w-[510px]"><div class="absolute right-6 top-2 hidden w-[78%] rotate-[-3.2deg] border border-ink/15 bg-canvas/80 p-5 shadow-[6px_10px_0_-6px_hsl(var(--ink)/0.18)] sm:block" style="transform:translateY(14px)"><p class="font-mono text-[10px] uppercase tracking-[0.2em] text-ink/35">Session plan · v1</p><div class="mt-4 space-y-2.5"><span class="block h-px bg-ink/15" style="width:86%"></span><span class="block h-px bg-ink/25" style="width:64%"></span><span class="block h-px bg-ink/15" style="width:92%"></span><span class="block h-px bg-ink/15" style="width:48%"></span></div></div><div class="absolute left-2 top-10 hidden w-[74%] rotate-[2.1deg] border border-ink/20 bg-canvas p-5 shadow-[8px_12px_0_-8px_hsl(var(--ink)/0.22)] sm:block" style="transform:translateY(7px)"><p class="font-mono text-[10px] uppercase tracking-[0.2em] text-ink/40">Agenda</p><p class="mt-3 font-mono text-[11px] leading-relaxed text-ink/35 line-through decoration-plum/70 decoration-2">09:30 Kickoff deck · 10:15 Vision alignment</p><p class="mt-2 font-mono text-[11px] leading-relaxed text-ink/60">09:30 Hands on keyboards</p></div><div class="relative w-full border border-ink/25 bg-canvas p-6 shadow-[12px_16px_0_-10px_hsl(var(--ink)/0.28)] md:p-8"><div class="flex items-baseline justify-between gap-4 border-b border-ink/20 pb-3"><p class="font-mono text-[10px] uppercase tracking-[0.2em] text-ink/55">Working method</p><p class="font-mono text-[10px] uppercase tracking-[0.2em] text-ink/35">Sheet 3</p></div><ol class="mt-5 space-y-4"><li class="flex gap-4"><span class="mt-[3px] size-3 shrink-0 border border-gold bg-gold/70"></span><span class="min-w-0"><span class="block font-mono text-[10px] uppercase tracking-[0.18em] text-ink/50">01<!-- --> · <!-- -->Situation</span><span class="mt-1 block font-display text-[15px] leading-snug text-ink/85 md:text-base">Six teams. Two weeks of talk, nothing shipped.</span></span></li><li class="flex gap-4"><span class="mt-[3px] size-3 shrink-0 border border-gold bg-gold/70"></span><span class="min-w-0"><span class="block font-mono text-[10px] uppercase tracking-[0.18em] text-ink/50">02<!-- --> · <!-- -->Objective</span><span class="mt-1 block font-display text-[15px] leading-snug text-ink/85 md:text-base">One working thing per team by 16:00.</span></span></li><li class="flex gap-4"><span class="mt-[3px] size-3 shrink-0 border border-ink/35 bg-transparent"></span><span class="min-w-0"><span class="block font-mono text-[10px] uppercase tracking-[0.18em] text-ink/50">03<!-- --> · <!-- -->Build</span><span class="mt-1 block font-display text-[15px] leading-snug text-ink/85 md:text-base">Real data. Real accounts. No slideware.</span></span></li><li class="flex gap-4"><span class="mt-[3px] size-3 shrink-0 border border-ink/35 bg-transparent"></span><span class="min-w-0"><span class="block font-mono text-[10px] uppercase tracking-[0.18em] text-ink/50">04<!-- --> · <!-- -->Review</span><span class="mt-1 block font-display text-[15px] leading-snug text-ink/85 md:text-base">What holds on Monday â and who owns it.</span></span></li></ol><p class="mt-6 border-l-2 border-plum/70 pl-3 font-mono text-[11px] italic leading-relaxed text-ink/55">Two teams stalled on access, not ideas. Fix that before 10:00 next time.</p></div></div></div></div></section><section data-section="archive-loading" aria-label="Loading field notes" class="border-b border-ink/10"><div class="mx-auto w-full max-w-[1440px] px-5 py-16 md:px-10 md:py-24"><p role="status" class="font-mono text-[11px] uppercase tracking-[0.18em] text-ink/60">Retrieving the recordâ¦</p><div class="mt-10 border-t border-ink/10" aria-hidden="true"><div class="grid grid-cols-12 gap-4 border-b border-ink/10 py-7 md:gap-6"><div class="col-span-3 h-3 w-14 bg-ink/10 motion-safe:animate-pulse md:col-span-2"></div><div class="col-span-9 space-y-3 md:col-span-7"><div class="h-5 w-3/4 bg-ink/10 motion-safe:animate-pulse"></div><div class="h-3 w-full bg-ink/5 motion-safe:animate-pulse"></div></div><div class="col-span-12 h-3 w-24 bg-ink/10 motion-safe:animate-pulse md:col-span-3"></div></div><div class="grid grid-cols-12 gap-4 border-b border-ink/10 py-7 md:gap-6"><div class="col-span-3 h-3 w-14 bg-ink/10 motion-safe:animate-pulse md:col-span-2"></div><div class="col-span-9 space-y-3 md:col-span-7"><div class="h-5 w-3/4 bg-ink/10 motion-safe:animate-pulse"></div><div class="h-3 w-full bg-ink/5 motion-safe:animate-pulse"></div></div><div class="col-span-12 h-3 w-24 bg-ink/10 motion-safe:animate-pulse md:col-span-3"></div></div><div class="grid grid-cols-12 gap-4 border-b border-ink/10 py-7 md:gap-6"><div class="col-span-3 h-3 w-14 bg-ink/10 motion-safe:animate-pulse md:col-span-2"></div><div class="col-span-9 space-y-3 md:col-span-7"><div class="h-5 w-3/4 bg-ink/10 motion-safe:animate-pulse"></div><div class="h-3 w-full bg-ink/5 motion-safe:animate-pulse"></div></div><div class="col-span-12 h-3 w-24 bg-ink/10 motion-safe:animate-pulse md:col-span-3"></div></div><div class="grid grid-cols-12 gap-4 border-b border-ink/10 py-7 md:gap-6"><div class="col-span-3 h-3 w-14 bg-ink/10 motion-safe:animate-pulse md:col-span-2"></div><div class="col-span-9 space-y-3 md:col-span-7"><div class="h-5 w-3/4 bg-ink/10 motion-safe:animate-pulse"></div><div class="h-3 w-full bg-ink/5 motion-safe:animate-pulse"></div></div><div class="col-span-12 h-3 w-24 bg-ink/10 motion-safe:animate-pulse md:col-span-3"></div></div></div></div></section><section data-section="studio-bridge" aria-label="Work with CraftingProduct" class="bg-ink text-canvas"><div class="mx-auto w-full max-w-[1440px] px-5 py-20 md:px-10 md:py-28"><p class="flex items-baseline gap-3 font-mono text-[11px] uppercase tracking-[0.18em] text-canvas/60"><span aria-hidden="true" class="h-[3px] w-7 shrink-0 self-center bg-action"></span><span>Next move</span></p><div class="mt-10 grid gap-10 lg:grid-cols-[1.15fr_0.85fr] lg:items-end lg:gap-16"><h2 class="max-w-[14ch] font-display text-[clamp(2.25rem,5.5vw,4.75rem)] font-medium leading-[1.02] tracking-tight">Put the notes to work.</h2><div><p class="max-w-[48ch] leading-relaxed text-canvas/70">Bring the real problem, the people who need to solve it, and enough room to make something that survives the meeting.</p><div class="mt-8 grid gap-3 sm:grid-cols-2"><button type="button" class="group inline-flex min-h-11 items-center justify-center gap-3 bg-action py-4 font-mono font-medium uppercase tracking-[0.14em] text-action-foreground transition-colors duration-200 hover:bg-canvas hover:text-ink focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-action w-full px-4 text-[11px]" aria-label="Plan a workshop or buildathon â choose a team session or a project inquiry">Plan a workshop or buildathon<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-right size-4 transition-transform duration-200 group-hover:translate-x-1 motion-reduce:transition-none motion-reduce:group-hover:translate-x-0" aria-hidden="true"><path d="M5 12h14"></path><path d="m12 5 7 7-7 7"></path></svg></button><button type="button" class="group inline-flex min-h-11 items-center justify-center gap-3 py-4 font-mono font-medium uppercase tracking-[0.14em] border border-canvas/35 bg-transparent text-canvas transition-colors duration-200 hover:border-canvas hover:bg-canvas/10 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-action w-full px-4 text-[11px]" aria-label="Discuss a custom project â opens the custom project inquiry form">Discuss a custom project<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-up-right size-4 transition-transform duration-200 group-hover:-translate-y-0.5 group-hover:translate-x-0.5 motion-reduce:transition-none motion-reduce:group-hover:translate-y-0 motion-reduce:group-hover:translate-x-0" aria-hidden="true"><path d="M7 7h10v10"></path><path d="M7 17 17 7"></path></svg></button></div><p class="mt-5 flex items-center gap-2 font-mono text-[10px] uppercase tracking-[0.16em] text-canvas/45"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-up-right size-3" aria-hidden="true"><path d="M7 7h10v10"></path><path d="M7 17 17 7"></path></svg>Plain questions. No deck required.</p></div></div></div></section></main><footer class="bg-night text-canvas" role="contentinfo"><div aria-hidden="true" class="ember-line h-[3px]"></div><div class="mx-auto w-full max-w-[1440px] px-5 py-14 md:px-10 md:py-20"><div class="grid gap-12 md:grid-cols-12"><div class="md:col-span-5"><a aria-label="CraftingProduct â go to homepage" href="/" class="flex items-center gap-3 rounded-xs focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-gold"><span class="flex items-center gap-[3px] tracking-tight" aria-hidden="true"><span class="text-lg font-black leading-none text-canvas">â</span><span class="text-lg font-black leading-none text-canvas">â</span><span class="text-lg font-black leading-none text-canvas">â</span></span><span class="font-display text-base font-semibold tracking-tight text-canvas">CraftingProduct</span></a><p class="mt-5 max-w-xs text-sm leading-relaxed text-canvas/70">AI enablement for teams, and digital products for ambitious ideas. Amsterdam.</p></div><nav class="md:col-span-3" aria-label="Footer index"><p class="font-mono text-[11px] uppercase tracking-[0.18em] text-canvas/50">Index</p><ol class="mt-4 space-y-2.5"><li class="relative"><a href="/workshops" class="group inline-flex min-h-6 items-center rounded-xs text-sm text-canvas/75 transition-colors hover:text-canvas focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-gold">
1<span aria-hidden="true" class="absolute -left-3.5 top-1/2 h-1.5 w-1.5 -translate-y-1/2 bg-action"></span>For Teams</a></li><li class="relative"><a class="group inline-flex min-h-6 items-center rounded-xs text-sm text-canvas/75 transition-colors hover:text-canvas focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-gold active" href="/field-notes" data-status="active" aria-current="page"><span aria-hidden="true" class="absolute -left-3.5 top-1/2 h-1.5 w-1.5 -translate-y-1/2 bg-plum"></span>Field Notes</a></li><li class="relative"><a href="/evidence" class="group inline-flex min-h-6 items-center rounded-xs text-sm text-canvas/75 transition-colors hover:text-canvas focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-gold"><span aria-hidden="true" class="absolute -left-3.5 top-1/2 h-1.5 w-1.5 -translate-y-1/2 bg-plum"></span>The Record</a></li><li class="relative"><a href="/studio" class="group inline-flex min-h-6 items-center rounded-xs text-sm text-canvas/75 transition-colors hover:text-canvas focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-gold"><span aria-hidden="true" class="absolute -left-3.5 top-1/2 h-1.5 w-1.5 -translate-y-1/2 bg-human"></span>Studio</a></li></ol></nav><nav class="md:col-span-2" aria-label="Footer resources"><p class="font-mono text-[11px] uppercase tracking-[0.18em] text-canvas/50">Record</p><ul class="mt-4 space-y-2.5"><li><a class="inline-flex min-h-6 items-center rounded-xs text-sm text-canvas/75 transition-colors hover:text-canvas focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-gold active" href="/field-notes" data-status="active" aria-current="page">Field Notes archive</a></li><li><a href="/sitemap" class="inline-flex min-h-6 items-center rounded-xs text-sm text-canvas/75 transition-colors hover:text-canvas focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-gold">Site index</a></li><li><a href="/privacy" class="inline-flex min-h-6 items-center rounded-xs text-sm text-canvas/75 transition-colors hover:text-canvas focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-gold">Privacy Policy</a></li></ul></nav><div class="md:col-span-2"><p class="font-mono text-[11px] uppercase tracking-[0.18em] text-canvas/50">Contact</p></div></div><div class="mt-14 flex flex-col gap-3 border-t border-canvas/15 pt-6 sm:flex-row sm:items-baseline sm:justify-between"><p class="font-mono text-[11px] uppercase tracking-[0.14em] text-canvas/50">© <!-- -->2026<!-- --> CraftingProduct â Dima Abramov</p><button type="button" class="inline-flex min-h-11 items-center self-start font-mono text-[11px] uppercase tracking-[0.14em] text-canvas/60 underline-offset-4 transition-colors hover:text-canvas hover:underline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-gold sm:self-auto">Privacy settings</button><p class="font-mono text-[11px] uppercase tracking-[0.14em] text-canvas/50">Amsterdam · Field Manual Edition</p></div></div><div data-footer-afterlight="static" class="relative w-full"><div class="afterlight-stage relative flex w-full items-center justify-center overflow-hidden min-h-[38vh] py-12"><div aria-hidden="true" class="afterlight-pigment absolute inset-0"></div><div class="relative w-full px-5 md:px-10"><a aria-label="CraftingProduct.io â go to homepage" data-afterlight-crisp="static" href="/" class="afterlight-wordmark block w-full rounded-xs focus-visible:outline-2 focus-visible:outline-offset-4 focus-visible:outline-gold"><span data-afterlight-text="true" class="inline-block">CraftingProduct<span class="text-gold">.io</span></span></a></div></div></div></footer></div>
1<script>(function(a,f){let l;try{l=JSON.parse(sessionStorage.getItem(a)||"{}")}catch{return}const n=l?.[f||history.state?.__TSR_key];let c=!1;for(const t in n){const e=n[t],o=e?.scrollX,s=e?.scrollY;if(Number.isFinite(o)&&Number.isFinite(s)){if(t==="window")scrollTo(o,s),c=!0;else if(t)try{const r=document.querySelector(t);r&&(r.scrollLeft=o,r.scrollTop=s)}catch{}}}if(c)return;const i=location.hash.slice(1);if(i){const t=history.state?.__hashScrollIntoViewOptions??!0;if(t){const e=document.getElementById(i);e&&e.scrollIntoView(t)}return}scrollTo(0,0)})("tsr-scroll-restoration-v1_3");document.currentScript.remove()</script>
1<!--/$--><p aria-live="polite" class="sr-only"></p>
1<script class="$tsr" id="$tsr-stream-barrier">(self.$R=self.$R||{})["tsr"]=[];self.$_TSR={h(){this.hydrated=!0,this.c()},e(){this.streamEnded=!0,this.c()},c(){this.hydrated&&this.streamEnded&&(delete self.$_TSR,delete self.$R.tsr)},p(e){this.initialized?e():this.buffer.push(e)},buffer:[]};$_TSR.router=($R=>$R[0]={manifest:$R[1]={routes:$R[2]={__root__:$R[3]={preloads:$R[4]=["/assets/index-B-7KkYq8.js","/assets/rolldown-runtime-BNNRdYrd.js","/assets/react-dom-CagvwlZ5.js","/assets/Navigation-B4T-34VF.js","/assets/router-compat-D_eiPntG.js","/assets/jsx-runtime-Bb2r7ayK.js","/assets/utils-D10kMHym.js","/assets/client-SK0VLBZg.js","/assets/preload-helper-BATLnrmA.js","/assets/useQuery-Cy_vWJps.js","/assets/useMutation--BtVdtzA.js","/assets/use-toast-BpsFUxD3.js","/assets/dist-B-V3VBhL.js","/assets/es2015-CC2uZE_7.js","/assets/createLucideIcon-YmwL_13R.js","/assets/arrow-right-BH0vMp_c.js","/assets/usePrefersReducedMotion-82-Hllt4.js","/assets/linkedin-BgMLdBaM.js","/assets/mail-DfngN0jL.js","/assets/dist--Gt4zMxC.js","/assets/useAuth-Dac70DP5.js","/assets/usePortfolio-BE9-jrk_.js","/assets/dialog-CkRhPuPv.js","/assets/evidence-record-C5ZjSf6q.js","/assets/responsive-image-Dy9LaIRY.js"],scripts:$R[5]=[$R[6]={attrs:$R[7]={type:"module",async:!0,src:"/assets/index-B-7KkYq8.js"}}]},"/field-notes":$R[8]={preloads:$R[9]=["/assets/field-notes-DsSkXI9P.js","/assets/FieldNotesIndex-DQJbFTlF.js"]}}}
1,matches:$R[10]=[$R[11]={i:"__root__�",u:1791190373004,s:"success",ssr:!0},$R[12]={i:"�field-notes�field-notes",u:1791190373004,s:"success",ssr:!0}],lastMatchId:"�field-notes�field-notes"})($R["tsr"]);$_TSR.e();document.currentScript.remove()</script>
1<script type="module" async="" src="/assets/index-B-7KkYq8.js"></script>
1</body></html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.