1<!DOCTYPE html> 2<html lang="en"> 3<head> 4<meta charset="utf-8"> 5<meta name="viewport" content="width=device-width, initial-scale=1"> 6<title>Notes | Taurist Technologies</title> 7<meta name="description" content="Field notes from Taurist Technologies on conversion, websites, AI workers, and the systems behind them."> 8 9<link rel="stylesheet" href="/hub-static/_ds/taurist-design-system-fba79875-878c-4f33-b84e-e049ab6486a9/assets/fonts/fonts.css"> 10<link rel="stylesheet" href="/hub-static/_ds/taurist-design-system-fba79875-878c-4f33-b84e-e049ab6486a9/tokens/colors.css"> 11<link rel="stylesheet" href="/hub-static/_ds/taurist-design-system-fba79875-878c-4f33-b84e-e049ab6486a9/tokens/typography.css"> 12<link rel="stylesheet" href="/hub-static/_ds/taurist-design-system-fba79875-878c-4f33-b84e-e049ab6486a9/tokens/spacing.css"> 13<link rel="stylesheet" href="/hub-static/_ds/taurist-design-system-fba79875-878c-4f33-b84e-e049ab6486a9/tokens/effects.css"> 14<link rel="stylesheet" href="/hub-static/styles.css"> 15 16<style> 17 /* ============================================================ 18 FIELD NOTES â Taurist editorial index, recent-news layout. 19 Smaller masthead, text tabs + view toggle, a featured block 20 (1 large + 3 stacked), then a chronological grid/list. 21 Everything scoped under .fn so it never collides with styles.css. 22 ============================================================ */ 23 .fn { 24 --acc-cw: #F22248; /* Conversion Works â red */ 25 --acc-sw: #F26422; /* Siteworks â orange */ 26 --acc-wk: #F222B0; /* Workers â magenta*/ 27 --acc-co: #7C3CE0; /* Company â violet */ 28 --panel: rgba(255,255,255,0.035); 29 --panel-2: rgba(255,255,255,0.06); 30 --hair: var(--on-ink-hair); 31 --col: 1216px; 32 position: relative; 33 min-height: 100vh; 34 color: var(--on-ink); 35 background: var(--ink); 36 overflow-x: clip; 37 } 38 .fn::before { 39 content: ""; position: fixed; inset: 0; z-index: 0; pointer-events: none; 40 background: 41 radial-gradient(46% 32% at 88% -6%, rgba(242,34,176,0.12), transparent 70%), 42 radial-gradient(40% 30% at 6% 2%, rgba(124,60,224,0.10), transparent 72%); 43 } 44 .fn > * { position: relative; z-index: 1; } 45 .fn a { color: inherit; text-decoration: none; } 46 .fn-wrap { max-width: var(--col); margin: 0 auto; padding: 0 var(--gutter); } 47 48 /* ---------- masthead ---------- */ 49 .fn-top { padding: clamp(40px, 6vh, 72px) 0 clamp(20px, 2.6vw, 30px); } 50 .fn-top__eyebrow { 51 font-size: 12px; font-weight: 600; letter-spacing: 0.2em; text-transform: uppercase; 52 color: var(--on-ink-faint); margin: 0 0 14px; 53 display: inline-flex; align-items: center; gap: 10px; 54 } 55 .fn-top__eyebrow .spark { width: 18px; height: 1px; background: linear-gradient(90deg, var(--c-red), var(--c-orange)); } 56 .fn-top h1 { 57 margin: 0; font-weight: 600; letter-spacing: -0.03em; line-height: 1.02; 58 font-size: clamp(30px, 4vw, 50px); color: #fff; 59 } 60 61 /* ---------- tab bar + view toggle (sticky double-nav) ---------- */ 62 .fn-barwrap { 63 position: sticky; top: var(--site-nav-h, 61px); z-index: 45; 64 background: rgba(5,5,5,0.72); 65 backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px); 66 border-bottom: 1px solid var(--hair); 67 transition: box-shadow 0.25s var(--ease), background 0.25s var(--ease); 68 } 69 .fn-barwrap.is-stuck { background: rgba(4,4,4,0.86); box-shadow: 0 18px 40px -28px rgba(0,0,0,0.9); } 70 .fn-bar { 71 display: flex; align-items: center; gap: 18px; 72 padding-block: 13px; 73 } 74 .fn-content { padding-top: clamp(28px, 3.6vw, 42px); } 75 .fn-tabs { display: flex; align-items: center; gap: clamp(14px, 1.8vw, 30px); overflow-x: auto; scrollbar-width: none; } 76 .fn-tabs::-webkit-scrollbar { display: none; } 77 .fn-tab { 78 background: none; border: 0; cursor: pointer; font: inherit; 79 font-size: 15px; font-weight: 500; letter-spacing: -0.01em; 80 color: var(--on-ink-faint); white-space: nowrap; padding: 2px 0; position: relative; 81 transition: color 0.2s var(--ease); 82 } 83 .fn-tab:hover { color: var(--on-ink-soft); } 84 .fn-tab.is-active { color: #fff; font-weight: 600; } 85 .fn-bar__spacer { flex: 1 1 auto; } 86 .fn-view { display: inline-flex; align-items: center; gap: 4px; flex: none; } 87 .fn-view button { 88 width: 34px; height: 34px; border-radius: 9px; cursor: pointer; 89 border: 1px solid transparent; background: none; color: var(--on-ink-faint); 90 display: inline-flex; align-items: center; justify-content: center; 91 transition: color 0.2s var(--ease), background 0.2s var(--ease), border-color 0.2s var(--ease); 92 } 93 .fn-view button:hover { color: var(--on-ink); } 94 .fn-view button.is-active { color: #fff; background: var(--panel-2); border-color: var(--hair); } 95 96 /* ---------- featured block ---------- */ 97 .fn-feat { display: grid; grid-template-columns: 1.55fr 1fr; gap: clamp(24px, 2.6vw, 40px); align-items: start; margin-bottom: clamp(48px, 6vh, 84px); } 98 .fn-feat__side { display: flex; flex-direction: column; gap: clamp(26px, 2.8vw, 38px); } 99
100 .fn-lead { 101 display: flex; flex-direction: column; 102 position: sticky; top: calc(var(--site-nav-h, 61px) + 70px); align-self: start; 103 } 104 .fn-lead__cover { 105 position: relative; border-radius: 16px; overflow: hidden; 106 aspect-ratio: 16 / 10; border: 1px solid var(--hair); 107 background-size: cover; background-position: center; 108 } 109 .fn-lead__title { 110 margin: clamp(18px, 1.8vw, 24px) 0 0; font-weight: 600; letter-spacing: -0.025em; 111 line-height: 1.06; font-size: clamp(26px, 3vw, 42px); color: #fff; text-wrap: balance; 112 } 113 .fn-lead__meta { margin: clamp(12px, 1.2vw, 16px) 0 0; } 114 115 .fn-side { display: flex; flex-direction: column; } 116 .fn-side__cover { 117 position: relative; border-radius: 14px; overflow: hidden; aspect-ratio: 16 / 10; 118 border: 1px solid var(--hair); transition: transform 0.3s var(--ease), border-color 0.3s var(--ease); 119 background-size: cover; background-position: center; 120 } 121 .fn-side:hover .fn-side__cover, .fn-lead__cover:hover { border-color: color-mix(in srgb, var(--acc) 55%, transparent); } 122 .fn-side:hover .fn-side__cover { transform: translateY(-3px); } 123 .fn-side__body { display: flex; flex-direction: column; gap: 9px; padding-top: clamp(12px, 1.2vw, 16px); } 124 .fn-side__title { font-weight: 600; letter-spacing: -0.02em; line-height: 1.16; font-size: clamp(16px, 1.3vw, 19px); color: #fff; text-wrap: balance; } 125 126 /* shared meta line */ 127 .fn-meta { display: inline-flex; align-items: center; gap: 9px; font-size: 13px; color: var(--on-ink-faint); white-space: nowrap; flex-wrap: wrap; } 128 .fn-meta .cat { display: inline-flex; align-items: center; gap: 7px; color: var(--on-ink-soft); font-weight: 600; } 129 .fn-meta .cat .dot { width: 7px; height: 7px; border-radius: 50%; background: var(--acc); box-shadow: 0 0 8px var(--acc); } 130 .fn-meta .sep { width: 3px; height: 3px; border-radius: 50%; background: currentColor; opacity: 0.6; } 131 132 /* ---------- section heading for filtered views ---------- */ 133 .fn-sechead { display: none; align-items: baseline; gap: 14px; margin: 0 0 clamp(22px, 2.6vw, 30px); } 134 .fn-sechead.show { display: flex; } 135 .fn-sechead h2 { margin: 0; font-weight: 600; font-size: clamp(22px, 2.4vw, 30px); letter-spacing: -0.025em; color: #fff; display: inline-flex; align-items: center; gap: 11px; } 136 .fn-sechead h2 .dot { width: 11px; height: 11px; border-radius: 50%; background: var(--acc); box-shadow: 0 0 12px var(--acc); } 137 .fn-sechead span { font-size: 14px; color: var(--on-ink-faint); } 138 139 .fn-morehead { font-size: 13px; font-weight: 600; letter-spacing: 0.14em; text-transform: uppercase; color: var(--on-ink-faint); margin: 0 0 clamp(20px, 2.2vw, 28px); } 140 141 /* ---------- the grid / list of notes ---------- */ 142 .fn-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: clamp(28px, 3vw, 44px) clamp(20px, 2vw, 28px); } 143 144 .fn-card { display: flex; flex-direction: column; } 145 .fn-card__cover { 146 position: relative; border-radius: 14px; overflow: hidden; aspect-ratio: 4 / 3; 147 border: 1px solid var(--hair); transition: transform 0.3s var(--ease), border-color 0.3s var(--ease); 148 background-size: cover; background-position: center; 149 } 150 .fn-card:hover .fn-card__cover { transform: translateY(-3px); border-color: color-mix(in srgb, var(--acc) 55%, transparent); } 151 .fn-card__body { display: flex; flex-direction: column; gap: 10px; padding-top: 16px; } 152 .fn-card__title { margin: 0; font-weight: 600; letter-spacing: -0.02em; line-height: 1.18; font-size: clamp(17px, 1.4vw, 20px); color: #fff; text-wrap: balance; } 153 .fn-card__ex { display: none; font-size: 14.5px; line-height: 1.55; color: var(--on-ink-soft); max-width: 62ch; } 154 .fn-card__arrow { display: none; } 155 .fn-card__date, .fn-card__brand { display: none; } 156 157 /* LIST VIEW â table: date · brand · title+desc · arrow */ 158 .fn-listhead { 159 display: none; 160 grid-template-columns: var(--list-cols, 132px 188px 1fr 52px); 161 gap: clamp(16px, 2vw, 34px); 162 padding: 0 clamp(4px, 0.8vw, 12px) 11px; 163 border-bottom: 1px solid var(--hair); 164 } 165 .fn-listhead.show { display: grid; } 166 .fn-listhead span { font-size: 11.5px; font-weight: 600; letter-spacing: 0.12em; text-transform: uppercase; color: var(--on-ink-faint); } 167
168 .fn-grid.is-list { display: block; } 169 .fn-grid.is-list .fn-card { 170 display: grid; 171 grid-template-columns: var(--list-cols, 132px 188px 1fr 52px); 172 align-items: center; gap: clamp(16px, 2vw, 34px); 173 padding: 13px clamp(4px, 0.8vw, 12px); 174 border-bottom: 1px solid var(--hair); 175 transition: background 0.2s var(--ease), padding-left 0.2s var(--ease); 176 } 177 .fn-grid.is-list .fn-card:hover { background: var(--panel); padding-left: clamp(12px, 1.4vw, 20px); } 178 .fn-grid.is-list .fn-card__cover { display: none; } 179 .fn-grid.is-list .fn-card .fn-meta { display: none; } 180 .fn-grid.is-list .fn-card__date { display: block; font-size: 14px; color: var(--on-ink-faint); white-space: nowrap; letter-spacing: 0.01em; } 181 .fn-grid.is-list .fn-card__brand { 182 display: inline-flex; align-items: center; gap: 8px; 183 font-size: 14px; font-weight: 500; letter-spacing: -0.005em; color: var(--on-ink-soft); min-width: 0; 184 } 185 .fn-grid.is-list .fn-card__brand .dot { width: 8px; height: 8px; flex: none; border-radius: 50%; background: var(--acc); box-shadow: 0 0 9px var(--acc); } 186 .fn-grid.is-list .fn-card__brand span:last-child { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } 187 .fn-grid.is-list .fn-card__body { display: block; min-width: 0; padding-top: 0; } 188 .fn-grid.is-list .fn-card__title { font-size: 15px; font-weight: 400; line-height: 1.4; color: rgba(255,255,255,0.92); letter-spacing: -0.005em; } 189 .fn-grid.is-list .fn-card:hover .fn-card__title { color: #fff; } 190 .fn-grid.is-list .fn-card__ex { display: none; } 191 .fn-grid.is-list .fn-card__arrow { 192 display: inline-flex; align-items: center; justify-content: center; justify-self: end; flex: none; 193 width: 30px; height: 30px; color: var(--on-ink-faint); opacity: 0; 194 transition: color 0.2s var(--ease), opacity 0.2s var(--ease), transform 0.2s var(--ease); 195 } 196 .fn-grid.is-list .fn-card:hover .fn-card__arrow { color: #fff; opacity: 1; transform: translateX(2px); } 197 198 .fn-empty { display: none; padding: 60px 0; text-align: center; color: var(--on-ink-faint); font-size: 15px; } 199 200 .fn-section { padding-bottom: clamp(60px, 8vh, 110px); } 201 202 /* ---------- newsletter ---------- */ 203 .fn-news { margin: 0 0 clamp(56px, 8vh, 96px); } 204 .fn-news__card { 205 position: relative; overflow: hidden; border: 1px solid var(--hair); border-radius: 24px; 206 padding: clamp(34px, 5vw, 60px); 207 background: linear-gradient(120deg, rgba(255,255,255,0.06), rgba(255,255,255,0.02)); 208 display: grid; grid-template-columns: 1.1fr 0.9fr; gap: clamp(28px, 4vw, 56px); align-items: center; 209 } 210 .fn-news__card::before { 211 content: ""; position: absolute; inset: 0; pointer-events: none; 212 background: radial-gradient(60% 120% at 100% 0%, rgba(242,34,176,0.18), transparent 60%), 213 radial-gradient(50% 120% at 0% 100%, rgba(242,100,34,0.14), transparent 60%); 214 } 215 .fn-news__card > * { position: relative; } 216 .fn-news h2 { margin: 0; font-weight: 600; font-size: clamp(24px, 3vw, 38px); letter-spacing: -0.03em; line-height: 1.04; text-wrap: balance; color: #fff; } 217 .fn-news p { margin: 14px 0 0; font-size: clamp(15px, 1.4vw, 17px); line-height: 1.6; color: var(--on-ink-soft); max-width: 44ch; } 218 .fn-news p a { color: #fff; text-decoration: underline; text-underline-offset: 4px; } 219 .fn-form { display: flex; flex-direction: column; gap: 12px; } 220 .fn-form__row { display: flex; gap: 10px; } 221 .fn-form input { 222 flex: 1 1 auto; min-width: 0; height: 52px; padding: 0 18px; border-radius: 13px; 223 border: 1px solid var(--hair); background: rgba(0,0,0,0.4); color: var(--on-ink); 224 font: inherit; font-size: 15px; transition: border-color 0.2s var(--ease); 225 } 226 .fn-form input::placeholder { color: var(--on-ink-faint); } 227 .fn-form input:focus { outline: none; border-color: rgba(242,34,72,0.55); } 228 .fn-form input[aria-invalid="true"] { border-color: rgba(242,34,72,0.78); } 229 .fn-form button { 230 position: relative; overflow: hidden; 231 flex: none; height: 52px; padding: 0 26px; border: 0; border-radius: var(--cta-radius); cursor: pointer; 232 font: inherit; font-size: 15px; font-weight: 600; color: #fff; 233 background: linear-gradient(-86deg, #F26422, #F22248 52%, #F222B0); 234 box-shadow: 0 12px 34px -14px rgba(242,34,72,0.7); 235 transition: transform 0.2s var(--ease), filter 0.2s var(--ease); 236 } 237 .fn-form button:hover:not(:disabled) { transform: translateY(-1px);
237 filter: brightness(1.06) saturate(1.08); } 238 .fn-form button:active { transform: translateY(0) scale(0.985); } 239 .fn-form button:disabled { cursor: not-allowed; opacity: 0.52; box-shadow: none; } 240 .fn-form button::after { content: ""; position: absolute; inset: 0; border-radius: inherit; pointer-events: none; z-index: 0; opacity: 0; transition: opacity 0.3s var(--ease); background: radial-gradient(150px 150px at var(--mx, 50%) var(--my, 50%), rgba(255,243,180,0.95), rgba(238,201,54,0.55) 38%, rgba(255,200,80,0) 72%); mix-blend-mode: screen; } 241 .fn-form button:hover:not(:disabled)::after, .fn-form button:focus-visible:not(:disabled)::after { opacity: 1; } 242 .fn-form button > span { position: relative; z-index: 1; } 243 .fn-form__note { font-size: 12.5px; line-height: 1.55; color: var(--on-ink-faint); } 244 .fn-form__note a { color: var(--on-ink-soft); text-decoration: underline; text-underline-offset: 3px; } 245 .fn-form__verify { min-height: 65px; } 246 .fn-form__field-error, .fn-form__error, .fn-form__config { 247 font-size: 13px; line-height: 1.45; color: #ff8a9f; 248 } 249 .fn-form__error { outline: none; } 250 .fn-form__ok { 251 padding: 16px 18px; border: 1px solid rgba(238,201,54,0.28); border-radius: 13px; 252 background: rgba(238,201,54,0.07); color: var(--on-ink-soft); 253 } 254 .fn-form__ok strong { display: block; margin-bottom: 5px; color: var(--c-yellow); font-size: 15px; } 255 .fn-form__ok span { display: block; font-size: 13.5px; line-height: 1.5; } 256 .newsletter-hp { 257 position: absolute !important; width: 1px !important; height: 1px !important; 258 padding: 0 !important; margin: -1px !important; overflow: hidden !important; 259 clip: rect(0, 0, 0, 0) !important; white-space: nowrap !important; border: 0 !important; 260 } 261 .fn-form [hidden] { display: none !important; } 262 263 /* ---------- footer (shared â see site-foot.js + styles.css) ---------- */ 264 265 /* ============================================================ RESPONSIVE */ 266 @media (max-width: 980px) { 267 .fn-feat { grid-template-columns: 1fr; } 268 .fn-lead { position: static; } 269 .fn-feat__side { flex-direction: row; } 270 .fn-feat__side > .fn-side { flex: 1 1 0; min-width: 0; } 271 .fn-news__card { grid-template-columns: 1fr; } 272 } 273 @media (max-width: 900px) { 274 .fn-listhead, .fn-grid.is-list .fn-card { --list-cols: 100px 144px 1fr 44px; gap: clamp(12px, 1.6vw, 22px); } 275 } 276 @media (max-width: 760px) { 277 .fn-grid { grid-template-columns: repeat(2, 1fr); } 278 .fn-feat__side { flex-direction: column; } 279 } 280 @media (max-width: 600px) { 281 .fn-grid { grid-template-columns: 1fr; } 282 .fn-form__row { flex-direction: column; } 283 .fn-form button { width: 100%; } 284 .fn-listhead { display: none !important; } 285 286 /* tabs and the view toggle stack onto separate lines */ 287 .fn-bar { flex-direction: column; align-items: stretch; gap: 12px; } 288 .fn-bar__spacer { display: none; } 289 .fn-view { align-self: flex-end; } 290 .fn-tab { font-size: 14px; } 291 292 /* list view: brand + date share a line, title beneath */ 293 .fn-grid.is-list .fn-card { 294 grid-template-columns: max-content 1fr; 295 column-gap: 12px; row-gap: 6px; 296 align-items: baseline; 297 padding-block: 14px; 298 } 299 .fn-grid.is-list .fn-card__arrow { display: none; } 300 .fn-grid.is-list .fn-card__brand { grid-column: 1; grid-row: 1; font-size: 13px; } 301 .fn-grid.is-list .fn-card__date { grid-column: 2; grid-row: 1; justify-self: start; font-size: 13px; } 302 .fn-grid.is-list .fn-card__body { grid-column: 1 / -1; grid-row: 2; } 303 } 304</style> 305<link rel="icon" href="/taurist-mark.png"> 306<link rel="canonical" href="https://www.taurist.com/notes"> 307<meta property="og:url" content="https://www.taurist.com/notes"> 308<meta property="og:title" content="Notes | Taurist Technologies"> 309<meta property="og:description" content="Field notes from Taurist Technologies on conversion, websites, AI workers, and the systems behind them."> 310<meta property="og:image" content="https://www.taurist.com/taurist-mark.png"> 311<meta property="og:type" content="website"> 312<meta property="og:site_name" content="Taurist Technologies"> 313<meta name="twitter:card" content="summary_large_image"> 314<meta name="twitter:title" content="Notes | Taurist Technologies"> 315<meta name="twitter:description" content="Field notes from Taurist Technologies on conversion, websites, AI workers, and the systems behind them."> 316<meta name="twitter:image" content="https://www.taurist.com/taurist-mark.png">
317<script type="application/ld+json" id="taurist-jsonld">{ 318 "@context": "https://schema.org", 319 "@graph": [ 320 { 321 "@type": "Organization", 322 "@id": "https://www.taurist.com/#organization", 323 "name": "Taurist Technologies", 324 "legalName": "Taurist Technologies Inc.", 325 "url": "https://www.taurist.com", 326 "logo": "https://www.taurist.com/taurist-mark.png", 327 "address": { 328 "@type": "PostalAddress", 329 "streetAddress": "1585 Springfield Ave, Suite 2", 330 "addressLocality": "Maplewood", 331 "addressRegion": "NJ", 332 "addressCountry": "US" 333 }, 334 "sameAs": [ 335 "https://www.linkedin.com/company/taurist/", 336 "https://x.com/taurist_" 337 ], 338 "brand": [ 339 { 340 "@type": "Brand", 341 "name": "Conversion Works", 342 "url": "https://www.taurist.com/conversion" 343 }, 344 { 345 "@type": "Brand", 346 "name": "Siteworks", 347 "url": "https://www.taurist.com/siteworks" 348 }, 349 { 350 "@type": "Brand", 351 "name": "Workers", 352 "url": "https://www.taurist.com/workers" 353 }, 354 { 355 "@type": "Brand", 356 "name": "/cro", 357 "url": "https://www.taurist.com/cro" 358 } 359 ] 360 }, 361 { 362 "@type": "WebSite", 363 "@id": "https://www.taurist.com/#website", 364 "name": "Taurist Technologies", 365 "url": "https://www.taurist.com", 366 "publisher": { 367 "@id": "https://www.taurist.com/#organization" 368 } 369 }, 370 { 371 "@type": "Blog", 372 "@id": "https://www.taurist.com/notes#webpage", 373 "url": "https://www.taurist.com/notes", 374 "name": "Notes | Taurist Technologies", 375 "description": "Field notes from Taurist Technologies on conversion, websites, AI workers, and the systems behind them.", 376 "isPartOf": { 377 "@id": "https://www.taurist.com/#website" 378 }, 379 "publisher": { 380 "@id": "https://www.taurist.com/#organization" 381 } 382 } 383 ] 384}</script>
vendor: 1 bytes, line 384
384
385<script>window.TAURIST_NEWSLETTER_CONFIG={ 386 "turnstileSiteKey": "0x4AAAAAAD6mjiN89anR3VUg" 387};</script>
387 388<meta name="facebook-domain-verification" content="8ydtuyieiq8ieej0o2gvaces7timge" />
389<script src="/hub-static/dw-consent.js"></script>
vendor: 1 bytes, line 389
389
390<script>
vendor: 323 bytes, line 390
390(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src='https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);})(window,document,'script','dataLayer','
390GTM-598V8RJP
vendor: 3 bytes, line 390
390');
390</script>
vendor: 1 bytes, line 390
390
391<script src="/hub-static/dw-track.js"></script>
vendor: 1 bytes, line 391
391
392<script src="/hub-static/dw-attribution.js"></script>
vendor: 1 bytes, line 392
392
393<script defer src="https://dataworks-ingest-production.taurist.workers.dev/dw.js" data-site="taurist-com" data-api="https://dataworks-ingest-production.taurist.workers.dev"></script>
393 394</head> 395<body>
vendor: 68 bytes, lines 395-396
395 396<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
396GTM-598V8RJP
vendor: 83 bytes, line 396
396" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
397<noscript><section class="taurist-crawl-copy"><h2>Latest Taurist Notes</h2><p>Field notes from Taurist Technologies on conversion, websites, AI workers, and the systems behind them.</p><ul><li><a href="/notes/verifiable-product-page-claims">Can shoppers verify the claims on your product page?</a> - Match product-page claims to relevant tests and certifications, explain their limits, and assess shopper understanding before claiming a commercial benefit.</li><li><a href="/notes/product-page-delivery-estimates">What should shoppers understand about when an order will arrive?</a> - A practical guide to arrival dates, operational inputs, useful fallbacks and maintaining delivery estimates across the purchase journey.</li><li><a href="/notes/customer-research-premium-ecommerce">Customer research for premium ecommerce: what to learn beyond income</a> - Learn what premium shoppers need beyond demographic profiles. Turn purchase stories, alternatives and constraints into product-page hypotheses you can assess.</li><li><a href="/notes/product-bundle-strategy">Does your product bundle solve a customer problemâor just add more products?</a> - Build useful product bundles around customer needs. Compare kits, quantity packs and add-ons, then check contribution, inventory and returns before scaling.</li><li><a href="/notes/explaining-ai-assisted-service-delivery">What should customers understand when AI helps deliver a service?</a> - An AI label leaves practical questions unanswered. Explain what the service does, which decisions it can make, and who is responsible when a customer needs help.</li><li><a href="/notes/low-traffic-store-conversion-decisions">How to improve a low-traffic store without overstating the results</a> - Match the evidence to the decision: verify a failure before repairing it, observe realistic tasks to investigate confusion, and assess experiment feasibility before claiming sales lift.</li><li><a href="/notes/free-shipping-threshold">How should you set a free-shipping threshold?</a> - Choose a free-shipping threshold using basket values, margins and fulfillment costs. Learn how to test contribution, conversion and returns before changing it.</li><li><a href="/notes/product-page-reviews-placement">Where should product-page reviews goâand what should shoppers be able to verify?</a> - Make review evidence easy to find and inspect. Link a concise rating-and-count summary to the full reviews, preserve relevant context, and test whether the position supports the shopperâs decision and your business outcome.</li><li><a href="/notes/ai-worker-tool-change-revalidation">What should you recheck when an AI Worker's connected tool changes?</a> - A practical change record for maintaining an AI Worker's job when connected tools, fields or permissions change.</li><li><a href="/notes/service-website-redesign-redirect-map">What happens to old URLs when your service website is redesigned?</a> - A redesigned site needs a plan for the links customers already have. Here is what to ask your team to preserve, test, and hand over before launch.</li><li><a href="/notes/service-website-process-page">What should your service website explain about working together?</a> - Help prospective clients understand their role, the work they receive and the dependencies that shape a service engagement.</li><li><a href="/notes/accessible-service-contact-forms">Can people complete your service websiteâs contact form?</a> - Review your service websiteâs contact form for clear labels, keyboard access, useful errors and truthful confirmation, with practical checks for your builder.</li><li><a href="/notes/temporarily-out-of-stock-product-page">What should a product page do when an item is temporarily out of stock?</a> - Help shoppers choose what to do when a product is temporarily out of stock, with honest timing, backorders, restock alerts and suitable available alternatives.</li><li><a href="/notes/credible-client-proof-service-websites">What counts as credible client proof on a service website?</a> - A practical guide to choosing, explaining, and maintaining client proof on a service website, without overstating what it establishes.</li><li><a href="/notes/questions-to-ask-an-ai-agency">Your agency uses AI. What should you ask before hiring them?</a>
397 - Practical questions and evidence to discuss before hiring an agency that uses AI for website, marketing or operational work.</li><li><a href="/notes/what-should-ai-worker-do-when-tool-goes-down">What should an AI Worker do when a tool goes down?</a> - How an AI Worker can continue unaffected work, retain the context of blocked tasks, and recover under the direction of its designated owner.</li><li><a href="/notes/ai-search-visibility-to-qualified-leads">How can a service business tell whether AI search brings qualified inquiries?</a> - Measure AI-search visibility, visits and qualified inquiries with current Google and Bing reports, practical lead records and clear limits on attribution.</li><li><a href="/notes/what-does-an-ai-worker-cost-to-run">What does an AI Worker cost to run?</a> - A Taurist AI Worker averages around $25,000 for a full year, including token usage, for a business role with connected responsibilities and ongoing operation.</li><li><a href="/notes/bfcm-offer-value-and-price-clarity">Can shoppers tell what your Black Friday offer is actually worth?</a> - Review Black Friday offer tests, clarify prices and bundle contents, and plan a CRO experiment that considers purchases, costs and returns for your store.</li><li><a href="/notes/bfcm-express-checkout-high-consideration">Should you add express checkout to a high-ticket product page before Black Friday?</a> - Review express-checkout tests for high-ticket products, spot where customers get stuck, and plan a product-page experiment before Black Friday traffic arrives.</li><li><a href="/notes/bfcm-product-page-purchase-doubts">Which doubts belong beside Add to Cart on an expensive product?</a> - Find the delivery, returns and payment questions stopping expensive purchases. Learn what to show near Add to Cart and how to test it before Black Friday.</li><li><a href="/notes/bfcm-product-discovery-and-comparison">Can Black Friday shoppers find the right model without opening ten tabs?</a> - Learn how to spot comparison friction before Black Friday, choose the right decision aid, and test completed purchases instead of tool clicks.</li><li><a href="/notes/bfcm-product-page-value-clarity">What should a high-ticket product page explain before Black Friday?</a> - What higher-priced product pages should explain before Black Friday, with A/B-test evidence on clarity, accordions, mobile behavior, and risk.</li><li><a href="/notes/where-does-your-data-go-ai-worker">Where Does Your Data Go When an AI Worker Does the Work?</a> - Follow one business document through an AI Worker and learn how to map its sources, recipients, artifacts, access, retention, deletion, evidence, and owners.</li><li><a href="/notes/how-ai-worker-connects-existing-analytics-stack">How Can an AI Worker Connect to Your Existing Analytics Stack?</a> - A practical framework for mapping interfaces, identities, authority, verification, approvals, and ownership across a Workerâs connected analytics responsibilities.</li><li><a href="/notes/ai-assisted-prospecting-without-spammy-outreach">AI-Assisted Prospecting Without Spammy Outreach</a> - A practical operating model for using AI to research, qualify, and draft prospecting messages while people verify fit, claims, permissions, and suppression.</li><li><a href="/notes/when-audience-growth-outruns-follow-up-capacity">When Audience Growth Outruns Follow-Up Capacity</a> - How a managed AI Worker can give growing teams more consistent lead follow-up without removing human judgment from high-context decisions.</li><li><a href="/notes/reducing-manual-data-entry-and-rework-ai-worker">Reducing Manual Data Entry and Rework With an AI Worker</a> - How to reduce repeated data entry with a managed AI Worker while protecting record quality, reviewability, and human control.</li><li><a href="/notes/ai-worker-team-fit">How an AI Worker Fits Alongside Your Existing Team</a> - A practical operating model for an AI Workerâs business role, connected responsibilities, evolving scope, human ownership, approvals, and escalation.</li><li>
397<a href="/notes/before-ai-worker-touches-live-work-evaluation-plan">Before an AI Worker Touches Live Work: A Practical Evaluation Plan for Workers</a> - A practical plan for evaluating an AI Workerâs agreed responsibilities, connected workflows, and operating authority before live use and as its role evolves.</li><li><a href="/notes/aeo-doesnt-need-more-pages-useful-service-page">AEO Doesnât Need More Pages. It Needs a Useful Service Page.</a> - A practical Siteworks framework for choosing between a stronger service page and more AEO content.</li><li><a href="/notes/ai-website-options-expert-ownership">The AI Website Choice: DIY, Template, Custom, or Expert-Led?</a> - A practical guide to choosing a website model that matches your business, not just the fastest way to get a page online.</li><li><a href="/notes/when-should-your-business-use-an-ai-voice-agent">When Should Your Business Use an AI Voice Agent?</a> - A practical framework for deciding whether an AI voice agent should handle more inbound callsâand how to run it as a managed Worker.</li><li><a href="/notes/high-conversion-rates-are-a-growth-system">You Donât Optimize Your Way to a High Conversion Rate</a> - A high conversion rate is not a page-level tactic. It is the compounded outcome of qualified demand, trust, message alignment, offers, shopper experience, retention, and a testing program that can learn quickly.</li><li><a href="/notes/how-ai-worker-knows-right-record">How Does an AI Worker Know It Found the Right Record?</a> - A practical framework for record selection, authority checks, state validation, and escalation in AI-worker workflows.</li><li><a href="/notes/when-no-api-should-ai-worker-use-browser">When There Is No API, Should an AI Worker Use the Browser?</a> - A browser can close the gap when a business system has no suitable API. The safe design is a bounded, monitored last-mile adapter with verification, approvals, and a human handoff.</li><li><a href="/notes/webflow-legacy-editor-deprecation">Webflow Is Retiring Its Legacy Editor. Some Clients Wanted Less.</a> - Webflowâs new editing experience is more capable than the legacy Editor. The backlash reveals a different question: do clients want an editorâor a dependable way to request a change?</li><li><a href="/notes/claude-code-leak-model-weights-ai-worker-safety">Claude Code Leaked. The Model Didnât.</a> - Claude Codeâs application source leaked; Claudeâs trained model did not. The distinction explains what a harness contributes, why general intelligence still needs company onboarding, and how scoped identity, tools, approvals, monitoring, and ownership make a Worker safer by design for a defined job.</li><li><a href="/notes/openai-hugging-face-breach-ai-evaluation-worker-controls">The Hugging Face Breach: When an AI Evaluation Lost Control</a> - OpenAIâs models breached Hugging Face during a cyber evaluation. See which boundaries failed and how bounded AI Workers limit the blast radius.</li><li><a href="/notes/gpt-5-6-file-deletion-ai-worker-access-controls">The AI Didnât Go Rogue. It Had Too Much Access.</a> - GPT-5.6 Sol deleted files in reported incidents. See how isolation, least privilege, approvals, and recovery keep one mistake from becoming a disaster.</li><li><a href="/notes/ecommerce-product-page-above-the-fold">What Belongs Above the Fold on an Ecommerce Product Page?</a> - Above the fold is not a packing list. It is the first usable decision frame: product, offer, required choices, action, and the proof needed nextâsequenced differently on desktop and mobile.</li><li><a href="/notes/ai-website-builder-vs-managed-cms">AI Can Build the Website. Who Owns It After Launch?</a> - AI can make website production faster. The real decision is who will own strategy, testing, hosting, updates, and improvement after launch.</li><li><a href="/notes/small-business-website-age-of-ai">Do Small Businesses Still Need a Website in the Age of AI?</a> - AI has changed how customers search, not the need for a trustworthy source. See how a website supports local SEO, answer engines, and action.</li><li><a href="/notes/small-team-serious-capability">Small Businesses Deserve Big-Company Capability</a> - AI has widened access to serious business technology. Taurist builds the connected systems that help ambitious small teams turn that access into operating capability.</li><li><a href="/notes/an-ai-worker-should-know-when-not-to-act">
397An AI Worker Should Know When Not to Act</a> - Useful AI workers know when to handle work, draft for review, ask for context, or escalate.</li><li><a href="/notes/diy-agent-packaged-agent-or-worker">Installing an Agent Is Not the Same as Forming a Worker</a> - Compare building an AI agent, adopting a pre-packaged agent, and forming a Worker by Taurist. Learn what it takes to give AI a real business mission, context, boundaries, and readiness proof.</li><li><a href="/notes/prompt-vs-managed-ai-worker">A Prompt Can Complete a Task. A Managed Worker Carries a Business Role.</a> - A managed AI Worker carries a business role across connected responsibilities, tools, and workflows, with ongoing follow-through and human oversight.</li><li><a href="/notes/ai-layoff-mistake-accountable-workers">The AI layoff mistake was treating tools like accountable workers.</a> - AI Workers need a clear business role, connected responsibilities, context, approval rules, quality checks, escalation, and human accountability.</li><li><a href="/notes/ai-worker-should-know-when-not-to-act">An AI worker should know when not to act</a> - Useful AI workers do not act on everything. Learn when AI workflows should pause, ask for approval, escalate, or route work to a person with context.</li><li><a href="/notes/is-automation-worth-it-small-business-first-workflow">Is automation worth it when youâre still small? Define the role and initial scope.</a> - How small teams can define an AI Workerâs business role, connected responsibilities, and initial scope with approvals, monitoring, and human oversight.</li><li><a href="/notes/ai-agents-which-workflow-first">AI Agents Are Everywhere. Which Responsibilities Should You Hand Off First?</a> - Define an AI Workerâs business role and initial responsibilities, connect the relevant workflows, and establish clear approval rules and human ownership.</li><li><a href="/notes/what-a-homepage-is-actually-for-and-the-four-jobs-it-keeps-failing">What a homepage is actually for - and the four jobs it keeps failing</a> - Most redesigns make the site prettier and still leave the buyer unsure. A homepage has a job list, not a mood board.</li><li><a href="/notes/the-three-seconds-of-doubt-before-the-pay-button">The three seconds of doubt before the pay button</a> - Checkout hesitation is rarely just about price. It is the small unresolved doubt that appears right before commitment.</li><li><a href="/notes/approvals-are-the-feature-not-the-friction">Approvals are the feature, not the friction</a> - An AI worker that acts without checkpoints can create risk. The teams getting value design the oversight first.</li><li><a href="/notes/why-we-split-one-company-into-focused-brands">Why we split one company into focused brands</a> - Taurist could have stayed a do-everything agency. We separated the work so the way in stays clear.</li><li><a href="/notes/stop-ab-testing-your-button-colors">Stop A/B testing your button colors</a> - Color tests are where conversion programs go to feel busy. The bigger gains usually sit higher in the decision hierarchy.</li><li><a href="/notes/the-work-that-should-never-have-been-manual">The work that should never have been manual</a> - Email triage, CRM updates, follow-ups, scheduling. Some repeat work becomes safer when a managed worker handles the first pass.</li><li><a href="/notes/conversion-aware-design-isnt-a-style">Conversion-aware design isn't a style</a> - You cannot bolt trust onto a finished site. Conversion-aware design is a set of decisions made before the first section is built.</li><li><a href="/notes/the-audit-we-run-before-touching-a-single-pixel">The audit we run before touching a single pixel</a> - Before redesigning the surface, a useful CRO audit diagnoses the friction, the evidence, and the first fix.</li><li><a href="/notes/founder-led-zero-fluff-how-we-actually-staff-a-project">Founder-led, zero fluff: how we actually staff a project</a> - No account managers relaying messages. The person who scopes the work is close to the person doing it.</li><li><a href="/notes/what-a-managed-ai-worker-does-on-day-one">What a managed AI worker does on day one</a> - A clear business role, connected responsibilities, and an agreed initial scope. Day one starts from evaluated readiness, useful handoffs, and human ownership.</li><li><a href="/notes/the-fold-is-dead-attention-isnt">The fold is dead. Attention isn't.</a> - Stop fighting over what sits above 600px. Map where attention actually goe
397s and build the page around it.</li><li><a href="/notes/your-checkout-has-a-memory-problem">Your checkout has a memory problem</a> - Returning shoppers should not have to re-prove what the store already knows. Every repeated field adds a reason to stop.</li><li><a href="/notes/more-force-less-friction-what-the-slogan-means-in-practice">More force, less friction: what the slogan means in practice</a> - It is not just a tagline. It is the filter we run every feature, page, workflow, and project through.</li><li><a href="/notes/where-ai-workers-quietly-fail-and-how-to-catch-it-early">Where AI workers quietly fail - and how to catch it early</a> - The failure is rarely loud. It is slow drift in quality that only a good oversight loop will surface.</li><li><a href="/notes/speed-is-a-conversion-feature-not-an-engineering-one">Speed is a conversion feature, not an engineering one</a> - Performance affects trust before a visitor reads a word. Speed belongs in the brief, not only the build ticket.</li><li><a href="/notes/60-percent-of-your-traffic-already-decided-design-for-the-other-40-percent">60% of your traffic already decided. Design for the other 40%.</a> - Some buyers will convert despite the page. Growth often lives with the undecided visitors who need better answers.</li><li><a href="/notes/the-handoff-document-that-makes-automation-safe">The handoff document that makes automation safe</a> - Before a worker touches a workflow, write down the edge cases. That single page prevents most avoidable problems.</li><li><a href="/notes/building-for-the-chamber-credible-sites-on-a-real-timeline">Building for the chamber: credible sites on a real timeline</a> - Local businesses do not need agency theater. They need a site that is live, fast, credible, and useful on day one.</li></ul></section></noscript> 398<div class="fn" data-screen-label="Field Notes index"> 399 400 <main class="fn-wrap"> 401 402 <!-- ===================== MASTHEAD ===================== --> 403 <header class="fn-top"> 404 <h1>The Taurist Field Notes</h1> 405 </header> 406 407 </main> 408 409 <!-- ===================== TABS + VIEW TOGGLE (sticky) ===================== --> 410 <nav class="fn-barwrap" id="fnBarWrap" aria-label="Filter and view notes"> 411 <div class="fn-wrap fn-bar"> 412 <div class="fn-tabs" id="fnTabs" role="tablist" aria-label="Filter notes by brand"> 413 <button type="button" class="fn-tab is-active" role="tab" aria-selected="true" data-filter="all">All</button> 414 <button type="button" class="fn-tab" role="tab" aria-selected="false" data-filter="cw">Conversion Works</button> 415 <button type="button" class="fn-tab" role="tab" aria-selected="false" data-filter="sw">Siteworks</button> 416 <button type="button" class="fn-tab" role="tab" aria-selected="false" data-filter="wk">Workers</button> 417 <button type="button" class="fn-tab" role="tab" aria-selected="false" data-filter="co">Company</button> 418 </div> 419 <span class="fn-bar__spacer"></span> 420 <div class="fn-view" id="fnView" role="group" aria-label="View as"> 421 <button type="button" data-view="grid" class="is-active" aria-label="Grid view" title="Grid view"> 422 <svg width="18" height="18" viewBox="0 0 24 24" fill="none"><rect x="3" y="3" width="7.5" height="7.5" rx="1.5" stroke="currentColor" stroke-width="1.7"/><rect x="13.5" y="3" width="7.5" height="7.5" rx="1.5" stroke="currentColor" stroke-width="1.7"/><rect x="3" y="13.5" width="7.5" height="7.5" rx="1.5" stroke="currentColor" stroke-width="1.7"/><rect x="13.5" y="13.5" width="7.5" height="7.5" rx="1.5" stroke="currentColor" stroke-width="1.7"/></svg> 423 </button> 424 <button type="button" data-view="list" aria-label="List view" title="List view"> 425 <svg width="18" height="18" viewBox="0 0 24 24" fill="none"><path d="M8 6h13M8 12h13M8 18h13" stroke="currentColor" stroke-width="1.7" stroke-linecap="round"/><circle cx="3.5" cy="6" r="1.4" fill="currentColor"/><circle cx="3.5" cy="12" r="1.4" fill="currentColor"/><circle cx="3.5" cy="18" r="1.4" fill="currentColor"/></svg> 426 </button> 427 </div> 428 </div> 429 </nav> 430 431 <main class="fn-wrap fn-content"> 432 433 <!-- ===================== FEATURED (All view only) ===================== --> 434 <section class="fn-feat" id="fnFeat" aria-label="Featured notes"></section> 435 436 <!-- ===================== FILTERED SECTION HEADING ===================== --> 437 <div class="fn-sechead" id="fnSecHead"> 438 <h2><span class="dot"></span><span id="fnSecTitle"></span></h2>
439 <span id="fnSecCount"></span> 440 </div> 441 442 <!-- ===================== MORE / CHRONOLOGICAL ===================== --> 443 <section class="fn-section"> 444 <p class="fn-morehead" id="fnMoreHead">More notes</p> 445 <div class="fn-listhead" id="fnListHead" aria-hidden="true"> 446 <span>Date</span><span>Brand</span><span>Title</span><span></span> 447 </div> 448 <div class="fn-grid" id="fnGrid"></div> 449 <p class="fn-empty" id="fnEmpty">No notes in this category yet â check back soon.</p> 450 </section> 451 452 <!-- ===================== NEWSLETTER ===================== --> 453 <section class="fn-news"> 454 <div class="fn-news__card"> 455 <div> 456 <h2>Field Notes, in your inbox.</h2> 457 <p>One practical weekly letter for small-business operators on conversion, websites, AI workers, and small-team systems. <a href="/newsletter">See whatâs inside.</a></p> 458 </div> 459 <form class="fn-form" id="fnForm" data-newsletter-form data-newsletter-source="notes_index" data-newsletter-acquisition="organic_site" novalidate> 460 <div class="fn-form__row" data-newsletter-inputs> 461 <label class="newsletter-hp" for="fnEmail">Email address</label> 462 <input id="fnEmail" name="email" type="email" inputmode="email" autocomplete="email" maxlength="320" placeholder="[email protected]" aria-describedby="fnEmailHelp fnEmailError" required> 463 <button type="submit" id="fnSubscribeBtn" disabled><span data-newsletter-button-label>Subscribe</span></button> 464 </div> 465 <span class="fn-form__field-error" id="fnEmailError" data-newsletter-email-error hidden></span> 466 <input type="hidden" name="source" value="notes_index"> 467 <input type="hidden" name="acquisitionChannel" value="organic_site"> 468 <label class="newsletter-hp" aria-hidden="true" hidden>Company website<input name="companyWebsite" type="text" tabindex="-1" autocomplete="off" aria-hidden="true"></label> 469 <div class="fn-form__verify" data-newsletter-turnstile-wrap> 470 <div data-newsletter-turnstile aria-label="Spam verification"></div> 471 <p class="fn-form__config" data-newsletter-config-error hidden>Newsletter signups are temporarily unavailable while verification is configured.</p> 472 </div> 473 <span class="fn-form__note" id="fnEmailHelp" data-newsletter-consent>One practical email every Tuesday. Confirm your email to subscribe. Unsubscribe anytime. <a href="/privacy-policy">Privacy Policy</a>.</span> 474 <div class="fn-form__error" data-newsletter-error role="alert" tabindex="-1" hidden></div> 475 <div class="fn-form__ok" data-newsletter-success role="status" hidden> 476 <strong>Check your inbox.</strong> 477 <span>We sent a confirmation email. Click the link within 24 hours to finish subscribing.</span> 478 </div> 479 </form> 480 </div> 481 </section> 482 483 </main> 484 485 <!-- ===================== FOOTER ===================== --> 486 487</div> 488
489<script src="/hub-static/site-nav.js" data-active="Notes"></script>
vendor: 1 bytes, line 489
489
490<script src="/hub-static/site-foot.js"></script>
490 491
492<script> 493(function () { 494 "use strict"; 495 496 var CATS = { 497 cw: { label: "Conversion Works", accent: "#F22248", href: "/notes?category=cw" }, 498 sw: { label: "Siteworks", accent: "#F26422", href: "/notes?category=sw" }, 499 wk: { label: "Workers", accent: "#F222B0", href: "/notes?category=wk" }, 500 co: { label: "Company", accent: "#7C3CE0", href: "/notes?category=co" } 501 }; 502 503 /* ---- cover art: brand-true luminous gradient meshes, no photos ---- */ 504 var BLEND = ["#EEC936", "#F26422", "#F222B0", "#7C3CE0", "#2C6BE6", "#009917", "#F22248"]; 505 function cover(note, seed) { 506 var cat = typeof note === "string" ? note : note.cat; 507 var A = CATS[cat].accent; 508 if (note && typeof note === "object" && note.heroImage) { 509 return "linear-gradient(180deg, rgba(0,0,0,0.02), rgba(0,0,0,0.22)), url('" + note.heroImage + "')"; 510 } 511 var B = BLEND[(seed * 3 + cat.charCodeAt(0)) % BLEND.length]; 512 var A1 = "color-mix(in oklab, " + A + " 74%, #fff)"; 513 var A2 = "color-mix(in oklab, " + A + " 60%, #000)"; 514 var B1 = "color-mix(in oklab, " + B + " 66%, #fff)"; 515 var V = [ 516 "radial-gradient(130% 120% at 18% 0%, "+A1+", transparent 56%), radial-gradient(120% 110% at 96% 26%, "+B1+", transparent 54%), radial-gradient(150% 140% at 50% 132%, "+A2+", transparent 60%), linear-gradient(158deg, "+A+", "+B+")", 517 "radial-gradient(120% 120% at 88% 6%, "+B1+", transparent 54%), radial-gradient(130% 120% at 8% 40%, "+A1+", transparent 56%), radial-gradient(150% 150% at 60% 128%, "+A2+", transparent 62%), linear-gradient(200deg, "+B+", "+A+")", 518 "radial-gradient(140% 130% at 50% -10%, "+A1+", transparent 58%), radial-gradient(110% 110% at 14% 96%, "+B1+", transparent 52%), radial-gradient(120% 120% at 92% 86%, "+A2+", transparent 56%), linear-gradient(135deg, "+A+", "+B+")", 519 "radial-gradient(120% 120% at 10% 10%, "+B1+", transparent 52%), radial-gradient(130% 130% at 90% 60%, "+A1+", transparent 56%), radial-gradient(140% 140% at 40% 140%, "+A2+", transparent 60%), linear-gradient(175deg, "+A+", "+B+")" 520 ]; 521 return V[seed % V.length]; 522 } 523 524 /* ---- content: newest first ---- */ 525 var NOTES = [ 526 { 527 "cat": "cw", 528 "categoryLabel": "Conversion Works", 529 "accent": "#F22248", 530 "title": "Can shoppers verify the claims on your product page?", 531 "ex": "Match product-page claims to relevant tests and certifications, explain their limits, and assess shopper understanding before claiming a commercial benefit.", 532 "date": "2026-10-08", 533 "read": "12 min", 534 "href": "/notes/verifiable-product-page-claims", 535 "heroImage": "/hub-static/assets/note-covers/conversion-works/verifiable-product-page-claims-cover.avif" 536 }, 537 { 538 "cat": "cw", 539 "categoryLabel": "Conversion Works", 540 "accent": "#F22248", 541 "title": "What should shoppers understand about when an order will arrive?", 542 "ex": "A practical guide to arrival dates, operational inputs, useful fallbacks and maintaining delivery estimates across the purchase journey.", 543 "date": "2026-10-07", 544 "read": "10 min", 545 "href": "/notes/product-page-delivery-estimates", 546 "heroImage": "/hub-static/assets/note-covers/conversion-works/product-page-delivery-estimates-cover.avif" 547 }, 548 { 549 "cat": "cw", 550 "categoryLabel": "Conversion Works", 551 "accent": "#F22248", 552 "title": "Customer research for premium ecommerce: what to learn beyond income", 553 "ex": "Learn what premium shoppers need beyond demographic profiles. Turn purchase stories, alternatives and constraints into product-page hypotheses you can assess.", 554 "date": "2026-10-05", 555 "read": "12 min", 556 "href": "/notes/customer-research-premium-ecommerce", 557 "heroImage": "/hub-static/assets/note-covers/conversion-works/customer-research-premium-ecommerce-cover.avif" 558 }, 559 { 560 "cat": "cw", 561 "categoryLabel": "Conversion Works", 562 "accent": "#F22248", 563 "title": "Does your product bundle solve a customer problemâor just add more products?", 564 "ex": "Build useful product bundles around customer needs. Compare kits, quantity packs and add-ons, then check contribution, inventory and returns before scaling.", 565 "date": "2026-10-02", 566 "read": "12 min", 567 "href": "/notes/product-bundle-strategy", 568 "heroImage": "/hub-static/assets/note-covers/conversion-works/product-bundle-strategy-cover.avif" 569 }, 570 { 571 "cat": "co", 572 "categoryLabel": "Company", 573 "accent": "#7C3CE0", 574 "title": "What should customers understand when AI helps deliver a service?", 575 "ex": "An AI label leaves practical questions unanswered. Explain what the service does, which decisions it can make, and who is responsible when a customer needs help.", 576 "date": "2026-10-02", 577 "read": "10 min", 578 "href": "/notes/explaining-ai-assisted-service-delivery", 579 "heroImage": "/hub-static/assets/note-covers/company/explaining-ai-assisted-service-delivery-cover.avif" 580 }, 581 { 582 "cat": "cw", 583 "categoryLabel": "Conversion Works", 584 "accent": "#F22248", 585 "title": "How to improve a low-traffic store without overstating the results", 586 "ex": "Match the evidence to the decision: verify a failure before repairing it, observe realistic tasks to investigate confusion, and assess experiment feasibility before claiming sales lift.", 587 "date": "2026-10-01", 588 "read": "10 min", 589 "href": "/notes/low-traffic-store-conversion-decisions", 590 "heroImage": "/hub-static/assets/note-covers/conversion-works/low-traffic-store-conversion-decisions-cover.avif" 591 }, 592 { 593 "cat": "cw", 594 "categoryLabel": "Conversion Works", 595 "accent": "#F22248", 596 "title": "How should you set a free-shipping threshold?", 597 "ex": "Choose a free-shipping threshold using basket values, margins and fulfillment costs. Learn how to test c
597ontribution, conversion and returns before changing it.", 598 "date": "2026-10-01", 599 "read": "10 min", 600 "href": "/notes/free-shipping-threshold", 601 "heroImage": "/hub-static/assets/note-covers/conversion-works/free-shipping-threshold-cover.avif" 602 }, 603 { 604 "cat": "cw", 605 "categoryLabel": "Conversion Works", 606 "accent": "#F22248", 607 "title": "Where should product-page reviews goâand what should shoppers be able to verify?", 608 "ex": "Make review evidence easy to find and inspect. Link a concise rating-and-count summary to the full reviews, preserve relevant context, and test whether the position supports the shopperâs decision and your business outcome.", 609 "date": "2026-09-30", 610 "read": "12 min", 611 "href": "/notes/product-page-reviews-placement", 612 "heroImage": "/hub-static/assets/note-covers/conversion-works/product-page-reviews-placement-cover.avif" 613 }, 614 { 615 "cat": "wk", 616 "categoryLabel": "Workers", 617 "accent": "#F222B0", 618 "title": "What should you recheck when an AI Worker's connected tool changes?", 619 "ex": "A practical change record for maintaining an AI Worker's job when connected tools, fields or permissions change.", 620 "date": "2026-09-30", 621 "read": "11 min", 622 "href": "/notes/ai-worker-tool-change-revalidation", 623 "heroImage": "/hub-static/assets/note-covers/workers/ai-worker-tool-change-revalidation-cover.avif" 624 }, 625 { 626 "cat": "sw", 627 "categoryLabel": "Siteworks", 628 "accent": "#F26422", 629 "title": "What happens to old URLs when your service website is redesigned?", 630 "ex": "A redesigned site needs a plan for the links customers already have. Here is what to ask your team to preserve, test, and hand over before launch.", 631 "date": "2026-09-29", 632 "read": "10 min", 633 "href": "/notes/service-website-redesign-redirect-map", 634 "heroImage": "/hub-static/assets/note-covers/siteworks/service-website-redesign-redirect-map-cover.avif" 635 }, 636 { 637 "cat": "sw", 638 "categoryLabel": "Siteworks", 639 "accent": "#F26422", 640 "title": "What should your service website explain about working together?", 641 "ex": "Help prospective clients understand their role, the work they receive and the dependencies that shape a service engagement.", 642 "date": "2026-09-28", 643 "read": "10 min", 644 "href": "/notes/service-website-process-page", 645 "heroImage": "/hub-static/assets/note-covers/siteworks/service-website-process-page-cover.avif" 646 }, 647 { 648 "cat": "sw", 649 "categoryLabel": "Siteworks", 650 "accent": "#F26422", 651 "title": "Can people complete your service websiteâs contact form?", 652 "ex": "Review your service websiteâs contact form for clear labels, keyboard access, useful errors and truthful confirmation, with practical checks for your builder.", 653 "date": "2026-09-25", 654 "read": "10 min", 655 "href": "/notes/accessible-service-contact-forms", 656 "heroImage": "/hub-static/assets/note-covers/siteworks/accessible-service-contact-forms-cover.avif" 657 }, 658 { 659 "cat": "cw", 660 "categoryLabel": "Conversion Works", 661 "accent": "#F22248", 662 "title": "What should a product page do when an item is temporarily out of stock?", 663 "ex": "Help shoppers choose what to do when a product is temporarily out of stock, with honest timing, backorders, restock alerts and suitable available alternatives.", 664 "date": "2026-09-24", 665 "read": "10 min", 666 "href": "/notes/temporarily-out-of-stock-product-page", 667 "heroImage": "/hub-static/assets/note-covers/conversion-works/temporarily-out-of-stock-product-page-cover.avif" 668 }, 669 { 670 "cat": "sw", 671 "categoryLabel": "Siteworks", 672 "accent": "#F26422", 673 "title": "What counts as credible client proof on a service website?", 674 "ex": "A practical guide to choosing, explaining, and maintaining client proof on a service website, without overstating what it establishes.", 675 "date": "2026-09-23", 676 "read": "10 min", 677 "href": "/notes/credible-client-proof-service-websites", 678 "heroImage": "/hub-static/assets/note-covers/siteworks/credible-client-proof-service-websites-cover.avif" 679 }, 680 { 681 "cat": "co", 682 "categoryLabel": "Company", 683 "accent": "#7C3CE0", 684 "title": "Your agency uses AI. What should you ask before hiring them?",
685 "ex": "Practical questions and evidence to discuss before hiring an agency that uses AI for website, marketing or operational work.", 686 "date": "2026-09-23", 687 "read": "11 min", 688 "href": "/notes/questions-to-ask-an-ai-agency", 689 "heroImage": "/hub-static/assets/note-covers/company/questions-to-ask-an-ai-agency-cover.avif" 690 }, 691 { 692 "cat": "wk", 693 "categoryLabel": "Workers", 694 "accent": "#F222B0", 695 "title": "What should an AI Worker do when a tool goes down?", 696 "ex": "How an AI Worker can continue unaffected work, retain the context of blocked tasks, and recover under the direction of its designated owner.", 697 "date": "2026-09-22", 698 "read": "11 min", 699 "href": "/notes/what-should-ai-worker-do-when-tool-goes-down", 700 "heroImage": "/hub-static/assets/note-covers/workers/what-should-ai-worker-do-when-tool-goes-down-cover.avif" 701 }, 702 { 703 "cat": "sw", 704 "categoryLabel": "Siteworks", 705 "accent": "#F26422", 706 "title": "How can a service business tell whether AI search brings qualified inquiries?", 707 "ex": "Measure AI-search visibility, visits and qualified inquiries with current Google and Bing reports, practical lead records and clear limits on attribution.", 708 "date": "2026-09-21", 709 "read": "10 min", 710 "href": "/notes/ai-search-visibility-to-qualified-leads", 711 "heroImage": "/hub-static/assets/note-covers/siteworks/ai-search-visibility-to-qualified-leads-cover.avif" 712 }, 713 { 714 "cat": "wk", 715 "categoryLabel": "Workers", 716 "accent": "#F222B0", 717 "title": "What does an AI Worker cost to run?", 718 "ex": "A Taurist AI Worker averages around $25,000 for a full year, including token usage, for a business role with connected responsibilities and ongoing operation.", 719 "date": "2026-09-18", 720 "read": "10 min", 721 "href": "/notes/what-does-an-ai-worker-cost-to-run", 722 "heroImage": "/hub-static/assets/note-covers/workers/what-does-an-ai-worker-cost-to-run-cover.avif" 723 }, 724 { 725 "cat": "cw", 726 "categoryLabel": "Conversion Works", 727 "accent": "#F22248", 728 "title": "Can shoppers tell what your Black Friday offer is actually worth?", 729 "ex": "Review Black Friday offer tests, clarify prices and bundle contents, and plan a CRO experiment that considers purchases, costs and returns for your store.", 730 "date": "2026-09-17", 731 "read": "12 min", 732 "href": "/notes/bfcm-offer-value-and-price-clarity", 733 "heroImage": "/hub-static/assets/note-covers/conversion-works/bfcm-offer-value-and-price-clarity-cover.avif" 734 }, 735 { 736 "cat": "cw", 737 "categoryLabel": "Conversion Works", 738 "accent": "#F22248", 739 "title": "Should you add express checkout to a high-ticket product page before Black Friday?", 740 "ex": "Review express-checkout tests for high-ticket products, spot where customers get stuck, and plan a product-page experiment before Black Friday traffic arrives.", 741 "date": "2026-09-15", 742 "read": "12 min", 743 "href": "/notes/bfcm-express-checkout-high-consideration", 744 "heroImage": "/hub-static/assets/note-covers/conversion-works/bfcm-express-checkout-high-consideration-cover.avif" 745 }, 746 { 747 "cat": "cw", 748 "categoryLabel": "Conversion Works", 749 "accent": "#F22248", 750 "title": "Which doubts belong beside Add to Cart on an expensive product?", 751 "ex": "Find the delivery, returns and payment questions stopping expensive purchases. Learn what to show near Add to Cart and how to test it before Black Friday.", 752 "date": "2026-09-14", 753 "read": "12 min", 754 "href": "/notes/bfcm-product-page-purchase-doubts", 755 "heroImage": "/hub-static/assets/note-covers/conversion-works/bfcm-product-page-purchase-doubts-cover.avif" 756 }, 757 { 758 "cat": "cw", 759 "categoryLabel": "Conversion Works", 760 "accent": "#F22248", 761 "title": "Can Black Friday shoppers find the right model without opening ten tabs?", 762 "ex": "Learn how to spot comparison friction before Black Friday, choose the right decision aid, and test completed purchases instead of tool clicks.", 763 "date": "2026-09-11", 764 "read": "12 min", 765 "href": "/notes/bfcm-product-discovery-and-comparison", 766 "heroImage": "/hub-static/assets/note-covers/conversion-works/bfcm-product-discovery-and-comparison-cover.avif" 767 }, 768 { 769 "cat": "cw", 770 "categoryLabel": "Conversion Works", 771 "accent": "#F22248", 772 "title": "What should a high-ticket product page explain before Black Friday?", 773 "ex": "What higher-priced product pages should explain before Black Friday, with A/B-test evidence on clarity, accordions, mobile behavior, and risk.", 774 "date": "2026-09-10", 775 "read": "10 min", 776 "href": "/notes/bfcm-product-page-value-clarity", 777 "heroImage": "/hub-static/assets/note-covers/conversion-works/bfcm-product-page-value-clarity-cover.avif" 778 }, 779 { 780 "cat": "wk", 781 "categoryLabel": "Workers", 782 "accent": "#F222B0", 783 "title": "Where Does Your Data Go When an AI Worker Does the Work?", 784 "ex": "Follow one business document through an AI Worker and learn how to map its sources, recipients, artifacts, access, retention, deleti
784on, evidence, and owners.", 785 "date": "2026-09-10", 786 "read": "12 min", 787 "href": "/notes/where-does-your-data-go-ai-worker", 788 "heroImage": "/hub-static/assets/note-covers/workers/where-does-your-data-go-ai-worker-cover.avif" 789 }, 790 { 791 "cat": "wk", 792 "categoryLabel": "Workers", 793 "accent": "#F222B0", 794 "title": "How Can an AI Worker Connect to Your Existing Analytics Stack?", 795 "ex": "A practical framework for mapping interfaces, identities, authority, verification, approvals, and ownership across a Workerâs connected analytics responsibilities.", 796 "date": "2026-09-09", 797 "read": "12 min", 798 "href": "/notes/how-ai-worker-connects-existing-analytics-stack", 799 "heroImage": "/hub-static/assets/note-covers/workers/how-ai-worker-connects-existing-analytics-stack-cover.avif" 800 }, 801 { 802 "cat": "wk", 803 "categoryLabel": "Workers", 804 "accent": "#F222B0", 805 "title": "AI-Assisted Prospecting Without Spammy Outreach", 806 "ex": "A practical operating model for using AI to research, qualify, and draft prospecting messages while people verify fit, claims, permissions, and suppression.", 807 "date": "2026-09-08", 808 "read": "14 min", 809 "href": "/notes/ai-assisted-prospecting-without-spammy-outreach", 810 "heroImage": "/hub-static/assets/note-covers/workers/ai-assisted-prospecting-without-spammy-outreach-cover.avif" 811 }, 812 { 813 "cat": "wk", 814 "categoryLabel": "Workers", 815 "accent": "#F222B0", 816 "title": "When Audience Growth Outruns Follow-Up Capacity", 817 "ex": "How a managed AI Worker can give growing teams more consistent lead follow-up without removing human judgment from high-context decisions.", 818 "date": "2026-08-31", 819 "read": "12 min", 820 "href": "/notes/when-audience-growth-outruns-follow-up-capacity", 821 "heroImage": "/hub-static/assets/note-covers/workers/when-audience-growth-outruns-follow-up-capacity-cover.avif" 822 }, 823 { 824 "cat": "wk", 825 "categoryLabel": "Workers", 826 "accent": "#F222B0", 827 "title": "Reducing Manual Data Entry and Rework With an AI Worker", 828 "ex": "How to reduce repeated data entry with a managed AI Worker while protecting record quality, reviewability, and human control.", 829 "date": "2026-08-24", 830 "read": "10 min", 831 "href": "/notes/reducing-manual-data-entry-and-rework-ai-worker", 832 "heroImage": "/hub-static/assets/note-covers/workers/reducing-manual-data-entry-and-rework-ai-worker-cover.avif" 833 }, 834 { 835 "cat": "wk", 836 "categoryLabel": "Workers", 837 "accent": "#F222B0", 838 "title": "How an AI Worker Fits Alongside Your Existing Team", 839 "ex": "A practical operating model for an AI Workerâs business role, connected responsibilities, evolving scope, human ownership, approvals, and escalation.", 840 "date": "2026-08-20", 841 "read": "9 min", 842 "href": "/notes/ai-worker-team-fit", 843 "heroImage": "/hub-static/assets/note-covers/workers/ai-worker-team-fit-cover.avif" 844 }, 845 { 846 "cat": "wk", 847 "categoryLabel": "Workers", 848 "accent": "#F222B0", 849 "title": "Before an AI Worker Touches Live Work: A Practical Evaluation Plan for Workers", 850 "ex": "A practical plan for evaluating an AI Workerâs agreed responsibilities, connected workflows, and operating authority before live use and as its role evolves.", 851 "date": "2026-08-19", 852 "read": "13 min", 853 "href": "/notes/before-ai-worker-touches-live-work-evaluation-plan", 854 "heroImage": "/hub-static/assets/note-covers/workers/before-ai-worker-touches-live-work-evaluation-plan-cover.avif" 855 }, 856 { 857 "cat": "sw", 858 "categoryLabel": "Siteworks", 859 "accent": "#F26422", 860 "title": "AEO Doesnât Need More Pages. It Needs a Useful Service Page.", 861 "ex": "A practical Siteworks framework for choosing between a stronger service page and more AEO content.", 862 "date": "2026-08-18", 863 "read": "11 min", 864 "href": "/notes/aeo-doesnt-need-more-pages-useful-service-page", 865 "heroImage": "/hub-static/assets/note-covers/siteworks/aeo-doesnt-need-more-pages-useful-service-page-cover.avif" 866 }, 867 { 868 "cat": "sw", 869 "categoryLabel": "Siteworks", 870 "accent": "#F26422", 871 "title": "The AI Website Choice: DIY, Template, Custom, or Expert-Led?", 872 "ex": "A practical guide to choosing a website model that matches your business, not just the fastest way to get a page online.", 873 "date": "2026-08-07", 874 "read": "10 min", 875 "href": "/notes/ai-website-options-expert-ownership", 876 "heroImage": "/hub-static/assets/note-covers/siteworks/ai-website-options-expert-ownership-cover.avif" 877 }, 878 { 879 "cat": "wk", 880 "categoryLabel": "Workers", 881 "accent": "#F222B0", 882 "title": "When Should Your Business Use an AI Voice Agent?", 883 "ex": "A practical framework for deciding whether an AI voice agent should handle more inbound callsâand how to run it as a managed Worker.", 884 "date": "2026-08-07", 885 "read": "10 min", 886 "href": "/notes/when-should-your-business-use-an-ai-voice-agent", 887 "heroImage": "/hub-static/assets/note-covers/workers/when-should-your-business-use-an-ai-voice-agent-cover.avif" 888 }, 889 { 890 "cat": "cw", 891 "categoryLabel": "Conversion Works", 892 "accent": "#F22248", 893 "title": "You Donât Optimize Your Way to a High Conversion Rate", 894 "ex": "A high conversion rate is not a page-level tactic. It is the compounded outcome of qualified demand, trust, message alignment, offers, shopper experience, retention, and a testing program that can learn quickly.", 895 "date": "2026-08-05", 896 "read": "9 min", 897 "href": "/notes/high-conversion-rates-are-a-growth-system", 898 "heroImage": "/hub-static/assets/note-covers/conversion-works/high-conversion-rates-are-a-growth-system-cover.avif" 899 }, 900 { 901 "cat": "wk", 902 "categoryLabel": "Workers", 903 "accent": "#F222B0", 904 "title": "How Does an AI Worker Know It Found the Right Record?", 905 "ex": "A practical framework for record selection, authority checks, state validation, and escalation in AI-worker workflows.", 906 "date": "2026-08-04", 907 "read": "9 min", 908 "href": "/notes/how-ai-worker-knows-right-record", 909 "heroImage": "/hub-static/assets/note-covers/workers/how-ai-worker-knows-right-record-v2-cover.avif" 910 }, 911 { 912 "cat": "wk", 913 "categoryLabel": "Workers", 914 "accent": "#F222B0", 915 "title": "When There Is No API, Should an AI Worker Use the Browser?", 916 "ex": "A browser can close the gap when a business system has no suitable API. The safe design is a bounded, monitored last-mile adapter with verification, approvals, and a human handoff.", 917 "date": "2026-07-31", 918 "read": "12 min", 919 "href": "/notes/when-no-api-should-ai-worker-use-browser", 920 "heroImage": "/hub-static/assets/note-covers/workers/when-no-api-should-ai-worker-use-browser-cover.avif" 921 }, 922 { 923 "cat": "sw", 924 "categoryLabel": "Siteworks", 925 "accent": "#F26422", 926 "title": "Webflow Is Retiring Its Legacy Editor. Some Clients Wanted Less.", 927 "ex": "Webflowâs new editing experience is more capable than the legacy Editor. The backlash reveals a different question: do clients want an editorâor a dependable way to request a change?", 928 "date": "2026-07-28", 929 "read": "13 min", 930 "href": "/notes/webflow-legacy-editor-deprecation", 931 "heroImage": "/hub-static/assets/note-covers/siteworks/webflow-legacy-editor-deprecation-cover.avif" 932 }, 933 { 934 "cat": "wk", 935 "categoryLabel": "Workers", 936 "accent": "#F222B0", 937 "title": "Claude Code Leaked. The Model Didnât.", 938 "ex": "Claude Codeâs application source leaked; Claudeâs trained model did not. The distinction explains what a harness contributes, why general intelligence still needs company onboarding, and how scoped identity, tools, approvals, monitoring, and ownership make a Worker safer by design for a defined job.", 939 "date": "2026-07-27", 940 "read": "12 min", 941 "href": "/notes/claude-code-leak-model-weights-ai-worker-safety", 942 "heroImage": "/hub-static/assets/note-covers/workers/claude-code-leak-model-weights-ai-worker-safety-cover.avif" 943 }, 944 { 945 "cat": "wk", 946 "categoryLabel": "Workers", 947 "accent": "#F222B0", 948 "title": "The Hugging Face Breach: When an AI Evaluation Lost Control", 949 "ex": "OpenAIâs models breached Hugging Face during a cyber evaluation. See which boundaries failed and how bounded AI Workers limit the blast radius.", 950 "date": "2026-07-27", 951 "read": "13 min", 952 "href": "/notes/openai-hugging-face-breach-ai-evaluation-worker-control
952s", 953 "heroImage": "/hub-static/assets/note-covers/workers/openai-hugging-face-breach-ai-evaluation-worker-controls-cover.avif" 954 }, 955 { 956 "cat": "wk", 957 "categoryLabel": "Workers", 958 "accent": "#F222B0", 959 "title": "The AI Didnât Go Rogue. It Had Too Much Access.", 960 "ex": "GPT-5.6 Sol deleted files in reported incidents. See how isolation, least privilege, approvals, and recovery keep one mistake from becoming a disaster.", 961 "date": "2026-07-24", 962 "read": "12 min", 963 "href": "/notes/gpt-5-6-file-deletion-ai-worker-access-controls", 964 "heroImage": "/hub-static/assets/note-covers/workers/gpt-5-6-file-deletion-ai-worker-access-controls-cover.avif" 965 }, 966 { 967 "cat": "cw", 968 "categoryLabel": "Conversion Works", 969 "accent": "#F22248", 970 "title": "What Belongs Above the Fold on an Ecommerce Product Page?", 971 "ex": "Above the fold is not a packing list. It is the first usable decision frame: product, offer, required choices, action, and the proof needed nextâsequenced differently on desktop and mobile.", 972 "date": "2026-07-23", 973 "read": "13 min", 974 "href": "/notes/ecommerce-product-page-above-the-fold", 975 "heroImage": "/hub-static/assets/note-covers/conversion-works/ecommerce-product-page-above-the-fold-cover.avif" 976 }, 977 { 978 "cat": "sw", 979 "categoryLabel": "Siteworks", 980 "accent": "#F26422", 981 "title": "AI Can Build the Website. Who Owns It After Launch?", 982 "ex": "AI can make website production faster. The real decision is who will own strategy, testing, hosting, updates, and improvement after launch.", 983 "date": "2026-07-22", 984 "read": "13 min", 985 "href": "/notes/ai-website-builder-vs-managed-cms", 986 "heroImage": "/hub-static/assets/note-covers/siteworks/ai-website-builder-vs-managed-cms-cover.avif" 987 }, 988 { 989 "cat": "sw", 990 "categoryLabel": "Siteworks", 991 "accent": "#F26422", 992 "title": "Do Small Businesses Still Need a Website in the Age of AI?", 993 "ex": "AI has changed how customers search, not the need for a trustworthy source. See how a website supports local SEO, answer engines, and action.", 994 "date": "2026-07-21", 995 "read": "12 min", 996 "href": "/notes/small-business-website-age-of-ai", 997 "heroImage": "/hub-static/assets/note-covers/siteworks/small-business-website-age-of-ai-cover.avif" 998 }, 999 { 1000 "cat": "co", 1001 "categoryLabel": "Company", 1002 "accent": "#7C3CE0", 1003 "title": "Small Businesses Deserve Big-Company Capability", 1004 "ex": "AI has widened access to serious business technology. Taurist builds the connected systems that help ambitious small teams turn that access into operating capability.", 1005 "date": "2026-07-20", 1006 "read": "12 min", 1007 "href": "/notes/small-team-serious-capability", 1008 "heroImage": "/hub-static/assets/note-covers/company/small-team-serious-capability-cover.avif" 1009 }, 1010 { 1011 "cat": "wk", 1012 "categoryLabel": "Workers", 1013 "accent": "#F222B0", 1014 "title": "An AI Worker Should Know When Not to Act", 1015 "ex": "Useful AI workers know when to handle work, draft for review, ask for context, or escalate.", 1016 "date": "2026-07-16", 1017 "read": "8 min", 1018 "href": "/notes/an-ai-worker-should-know-when-not-to-act", 1019 "heroImage": "/hub-static/assets/note-covers/workers/workers-when-not-to-act-hero-approval-junction-v1.webp" 1020 }, 1021 { 1022 "cat": "wk", 1023 "categoryLabel": "Workers", 1024 "accent": "#F222B0", 1025 "title": "Installing an Agent Is Not the Same as Forming a Worker", 1026 "ex": "Compare building an AI agent, adopting a pre-packaged agent, and forming a Worker by Taurist. Learn what it takes to give AI a real business mission, context, boundaries, and readiness proof.", 1027 "date": "2026-07-15", 1028 "read": "10 min", 1029 "href": "/notes/diy-agent-packaged-agent-or-worker", 1030 "heroImage": "/hub-static/assets/note-covers/workers/diy-agent-packaged-agent-or-worker-hero-v4.webp" 1031 }, 1032 { 1033 "cat": "wk", 1034 "categoryLabel": "Workers", 1035 "accent": "#F222B0", 1036 "title": "A Prompt Can Complete a Task. A Managed Worker Carries a Business Role.", 1037 "ex": "A managed AI Worker carries a business role across connected responsibilities, tools, and workflows, with ongoing follow-through and human oversight.", 1038 "date": "2026-07-13", 1039 "read": "9 min", 1040 "href": "/notes/prompt-vs-managed-ai-worker", 1041 "heroImage": "/hub-static/assets/note-covers/workers/prompt-vs-managed-ai-worker-hero.webp" 1042 }, 1043 { 1044 "cat": "wk", 1045 "categoryLabel": "Workers", 1046 "accent": "#F222B0", 1047 "title": "The AI layoff mistake was treating tools like accountable workers.", 1048 "ex": "AI Workers need a clear business role, connected responsibilities, context, approval rules, quality checks, escalation, and human accountability.", 1049 "date": "2026-07-10", 1050 "read": "8 min", 1051 "href": "/notes/ai-layoff-mistake-accountable-workers", 1052 "heroImage": "/hub-static/assets/note-covers/workers/ai-layoff-accountable-workers-hero.webp" 1053 }, 1054 { 1055 "cat": "wk", 1056 "categoryLabel": "Workers", 1057 "accent": "#F222B0", 1058 "title": "An AI worker should know when not to act", 1059 "ex": "Useful AI workers do not act on everything. Learn when AI workflows should pause, ask for approval, escalate, or route work to a person with context.", 1060 "date": "2026-07-08", 1061 "read": "7 min", 1062 "href": "/notes/ai-worker-should-know-when-not-to-act", 1063 "heroImage": "/hub-static/assets/note-covers/workers/workers-when-not-to-act-hero.webp" 1064 }, 1065 { 1066 "cat": "wk", 1067 "categoryLabel": "Workers", 1068 "accent": "#F222B0", 1069 "title": "Is automation worth it when youâre still small? Define the role and initial scope.", 1070 "ex": "How small teams can define an AI Workerâs business role, connected responsibilities, and initial scope with approvals, monitoring, and human oversight.", 1071 "date": "2026-07-07", 1072 "read": "8 min", 1073 "href": "/notes/is-automation-worth-it-small-business-first-workflow", 1074 "heroImage": "/hub-static/assets/note-covers/workers/is-automation-worth-it-small-business-first-workflow-cover-16x9.webp" 1075 }, 1076 { 1077 "cat": "wk", 1078 "categoryLabel": "Workers", 1079 "accent": "#F222B0", 1080 "title": "AI Agents Are Everywhere. Which Responsibilities Should You Hand Off First?", 1081 "ex": "Define an AI Workerâs business role and initial responsibilities, connect the relevant workflows, and establish clear approval rules and human ownership.", 1082 "date": "2026-07-06", 1083 "read": "7 min", 1084 "href": "/notes/ai-agents-which-workflow-first", 1085 "heroImage": "/hub-static/assets/note-covers/workers/workers-ai-agents-cover-16x9.webp" 1086 }, 1087 { 1088 "cat": "sw", 1089 "categoryLabel": "Siteworks", 1090 "accent": "#F26422", 1091 "title": "What a homepage is actually for - and the four jobs it keeps failing", 1092 "ex": "Most redesigns make the site prettier and still leave the buyer unsure. A homepage has a job list, not a mood board.", 1093 "date": "2026-06-22", 1094 "read": "5 min", 1095 "href": "/notes/what-a-homepage-is-actually-for-and-the-four-jobs-it-keeps-failing", 1096 "heroImage": "/hub-static/assets/note-covers/siteworks/siteworks-cover-04.avif" 1097 }, 1098 { 1099 "cat": "cw", 1100 "categoryLabel": "Conversion Works", 1101 "accent": "#F22248", 1102 "title": "The three seconds of doubt before the pay button", 1103 "ex": "Checkout hesitation is rarely just about price. It is the small unresolved doubt that appears right before commitment.", 1104 "date": "2026-06-18", 1105 "read": "7 min", 1106 "href": "/notes/the-three-seconds-of-doubt-before-the-pay-button", 1107 "heroImage": "/hub-static/assets/note-covers/conversion-works/conversion-cover-01.avif" 1108 }, 1109 { 1110 "cat": "wk", 1111 "categoryLabel": "Workers", 1112 "accent": "#F222B0", 1113 "title": "Approvals are the feature, not the friction", 1114 "ex": "An AI worker that acts without checkpoints can create risk. The teams getting value design the oversight first.", 1115 "date": "2026-06-15", 1116 "read": "6 min", 1117 "href": "/notes/approvals-are-the-feature-not-the-friction", 1118 "heroImage": "/hub-static/assets/note-covers/workers/workers-cover-01.avif" 1119 }, 1120 { 1121 "cat": "co", 1122 "categoryLabel": "Company", 1123 "accent": "#7C3CE0", 1124 "title": "Why we split one company into focused brands", 1125 "ex": "Taurist could have stayed a do-everything agency. We separated the work so the way in stays clear.", 1126 "date": "2026-06-11", 1127 "read": "4 min", 1128 "href": "/notes/why-we-split-one-company-into-focused-brands", 1129 "heroImage": "/hub-static/assets/note-covers/company/company-cover-04.avif" 1130 }, 1131 { 1132 "cat": "cw", 1133 "categoryLabel": "Conversion Works", 1134 "accent": "#F22248", 1135 "title": "Stop A/B testing your button colors", 1136 "ex": "Color tests are where conversion programs go to feel busy. The bigger gains usually sit higher in the decision hierarchy.", 1137 "date": "2026-06-06", 1138 "read": "8 min", 1139 "href": "/notes/stop-ab-testing-your-button-colors", 1140 "heroImage": "/hub-static/assets/note-covers/conversion-works/conversion-cover-05.avif" 1141 }, 1142 { 1143 "cat": "wk", 1144 "categoryLabel": "Workers", 1145 "accent": "#F222B0", 1146 "title": "The work that should never have been manual", 1147 "ex": "Email triage, CRM updates, follow-ups, scheduling. Some repeat work becomes safer when a managed worker handles the first pass.", 1148 "date": "2026-05-30", 1149 "read": "5 min", 1150 "href": "/notes/the-work-that-should-never-have-been-manual", 1151 "heroImage": "/hub-static/assets/note-covers/workers/workers-cover-03.avif" 1152 }, 1153 { 1154 "cat": "sw", 1155 "categoryLabel": "Siteworks", 1156 "accent": "#F26422", 1157 "title": "Conversion-aware design isn't a style", 1158 "ex": "You cannot bolt trust onto a finished site. Conversion-aware design is a set of decisions made before the first section is built.", 1159 "date": "2026-05-24", 1160 "read": "6 min", 1161 "href": "/notes/conversion-aware-design-isnt-a-style", 1162 "heroImage": "/hub-static/assets/note-covers/siteworks/siteworks-cover-02.avif" 1163 }, 1164 { 1165 "cat": "cw", 1166 "categoryLabel": "Conversion Works", 1167 "accent": "#F22248", 1168 "title": "The audit we run before touching a single pixel", 1169 "ex": "Before redesigning the surface, a useful CRO audit diagnoses the friction, the evidence, and the first fix.", 1170 "date": "2026-05-19", 1171 "read": "6 min", 1172 "href": "/notes/the-audit-we-run-before-touching-a-single-pixel", 1173 "heroImage": "/hub-static/assets/note-covers/conversion-works/conversion-cover-06.avif" 1174 }, 1175 { 1176 "cat": "co", 1177 "categoryLabel": "Company", 1178 "accent": "#7C3CE0", 1179 "title": "Founder-led, zero fluff: how we actually staff a project", 1180 "ex": "No account managers relaying messages. The person who scopes the work is close to the person doing it.", 1181 "date": "2026-05-14", 1182 "read": "4 min", 1183 "href": "/notes/founder-led-zero-fluff-how-we-actually-staff-a-project", 1184 "heroImage": "/hub-static/assets/note-covers/company/company-cover-01.avif" 1185 }, 1186 { 1187 "cat": "wk", 1188 "categoryLabel": "Workers", 1189 "accent": "#F222B0", 1190 "title": "What a managed AI worker does on day one", 1191 "ex": "A clear business role, connected responsibilities, and an agreed initial scope. Day one starts from evaluated readiness, useful handoffs, and human ownership.", 1192 "date": "2026-05-09", 1193 "read": "7 min", 1194 "href": "/notes/what-a-managed-ai-worker-does-on-day-one", 1195 "heroImage": "/hub-static/assets/note-covers/workers/workers-cover-05.avif" 1196 }, 1197 { 1198 "cat": "sw", 1199 "categoryLabel": "Siteworks", 1200 "accent": "#F26422", 1201 "title": "The fold is dead. Attention isn't.", 1202 "ex": "Stop fighting over what sits above 600px. Map where attention actually goe
1202s and build the page around it.", 1203 "date": "2026-05-03", 1204 "read": "5 min", 1205 "href": "/notes/the-fold-is-dead-attention-isnt", 1206 "heroImage": "/hub-static/assets/note-covers/siteworks/siteworks-cover-03.avif" 1207 }, 1208 { 1209 "cat": "cw", 1210 "categoryLabel": "Conversion Works", 1211 "accent": "#F22248", 1212 "title": "Your checkout has a memory problem", 1213 "ex": "Returning shoppers should not have to re-prove what the store already knows. Every repeated field adds a reason to stop.", 1214 "date": "2026-04-27", 1215 "read": "6 min", 1216 "href": "/notes/your-checkout-has-a-memory-problem", 1217 "heroImage": "/hub-static/assets/note-covers/conversion-works/conversion-cover-03.avif" 1218 }, 1219 { 1220 "cat": "co", 1221 "categoryLabel": "Company", 1222 "accent": "#7C3CE0", 1223 "title": "More force, less friction: what the slogan means in practice", 1224 "ex": "It is not just a tagline. It is the filter we run every feature, page, workflow, and project through.", 1225 "date": "2026-04-21", 1226 "read": "4 min", 1227 "href": "/notes/more-force-less-friction-what-the-slogan-means-in-practice", 1228 "heroImage": "/hub-static/assets/note-covers/company/company-cover-03.avif" 1229 }, 1230 { 1231 "cat": "wk", 1232 "categoryLabel": "Workers", 1233 "accent": "#F222B0", 1234 "title": "Where AI workers quietly fail - and how to catch it early", 1235 "ex": "The failure is rarely loud. It is slow drift in quality that only a good oversight loop will surface.", 1236 "date": "2026-04-15", 1237 "read": "6 min", 1238 "href": "/notes/where-ai-workers-quietly-fail-and-how-to-catch-it-early", 1239 "heroImage": "/hub-static/assets/note-covers/workers/workers-cover-06.avif" 1240 }, 1241 { 1242 "cat": "sw", 1243 "categoryLabel": "Siteworks", 1244 "accent": "#F26422", 1245 "title": "Speed is a conversion feature, not an engineering one", 1246 "ex": "Performance affects trust before a visitor reads a word. Speed belongs in the brief, not only the build ticket.", 1247 "date": "2026-04-09", 1248 "read": "5 min", 1249 "href": "/notes/speed-is-a-conversion-feature-not-an-engineering-one", 1250 "heroImage": "/hub-static/assets/note-covers/siteworks/siteworks-cover-06.avif" 1251 }, 1252 { 1253 "cat": "cw", 1254 "categoryLabel": "Conversion Works", 1255 "accent": "#F22248", 1256 "title": "60% of your traffic already decided. Design for the other 40%.", 1257 "ex": "Some buyers will convert despite the page. Growth often lives with the undecided visitors who need better answers.", 1258 "date": "2026-04-02", 1259 "read": "7 min", 1260 "href": "/notes/60-percent-of-your-traffic-already-decided-design-for-the-other-40-percent", 1261 "heroImage": "/hub-static/assets/note-covers/conversion-works/conversion-cover-04.avif" 1262 }, 1263 { 1264 "cat": "wk", 1265 "categoryLabel": "Workers", 1266 "accent": "#F222B0", 1267 "title": "The handoff document that makes automation safe", 1268 "ex": "Before a worker touches a workflow, write down the edge cases. That single page prevents most avoidable problems.", 1269 "date": "2026-03-27", 1270 "read": "5 min", 1271 "href": "/notes/the-handoff-document-that-makes-automation-safe", 1272 "heroImage": "/hub-static/assets/note-covers/workers/workers-cover-04.avif" 1273 }, 1274 { 1275 "cat": "sw", 1276 "categoryLabel": "Siteworks", 1277 "accent": "#F26422", 1278 "title": "Building for the chamber: credible sites on a real timeline", 1279 "ex": "Local businesses do not need agency theater. They need a site that is live, fast, credible, and useful on day one.", 1280 "date": "2026-03-20", 1281 "read": "4 min", 1282 "href": "/notes/building-for-the-chamber-credible-sites-on-a-real-timeline", 1283 "heroImage": "/hub-static/assets/note-covers/siteworks/siteworks-cover-07.avif" 1284 } 1285]; 1286 1287 function fmt(d) { 1288 var m = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]; 1289 var p = d.split("-"); 1290 return m[parseInt(p[1],10)-1] + " " + parseInt(p[2],10) + ", " + p[0]; 1291 } 1292 NOTES.sort(function (a, b) { return a.date < b.date ? 1 : a.date > b.date ? -1 : 0; }); 1293 1294 var feat = document.getElementById("fnFeat"); 1295 var grid = document.getElementById("fnGrid"); 1296 var listHead = document.getElementById("fnListHead"); 1297 var empty = document.getElementById("fnEmpty"); 1298 var moreHead = document.getElementById("fnMoreHead"); 1299 var secHead = document.getElementById("fnSecHead"); 1300 var secTitle = document.getElementById("fnSecTitle"); 1301 var secCount = document.getElementById("fnSecCount"); 1302 var tabs = Array.prototype.slice.call(document.querySelectorAll(".f
1302n-tab")); 1303 var viewBtns = Array.prototype.slice.call(document.querySelectorAll("#fnView button")); 1304 1305 var activeFilter = "all"; 1306 var activeView = "grid"; 1307 1308 function metaHTML(n, onDark) { 1309 var c = CATS[n.cat]; 1310 return '<span class="fn-meta">' + 1311 '<span class="cat"><span class="dot"></span>' + c.label + '</span>' + 1312 '<span class="sep"></span>' + fmt(n.date) + 1313 '</span>'; 1314 } 1315 1316 function leadHTML(n, seed) { 1317 var c = CATS[n.cat]; 1318 var href = n.href || c.href; 1319 return '<a class="fn-lead" href="' + href + '" style="--acc:' + c.accent + '">' + 1320 '<div class="fn-lead__cover" style="background-image:' + cover(n, seed) + '"></div>' + 1321 '<h2 class="fn-lead__title">' + n.title + '</h2>' + 1322 '<div class="fn-lead__meta">' + metaHTML(n) + '</div>' + 1323 '</a>'; 1324 } 1325 1326 function sideHTML(n, seed) { 1327 var c = CATS[n.cat]; 1328 var href = n.href || c.href; 1329 return '<a class="fn-side" href="' + href + '" style="--acc:' + c.accent + '">' + 1330 '<div class="fn-side__cover" style="background-image:' + cover(n, seed) + '"></div>' + 1331 '<div class="fn-side__body">' + 1332 '<div class="fn-side__title">' + n.title + '</div>' + 1333 metaHTML(n) + 1334 '</div>' + 1335 '</a>'; 1336 } 1337 1338 var ARROW = '<svg width="16" height="16" viewBox="0 0 24 24" fill="none"><path d="M5 12h14M13 6l6 6-6 6" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg>'; 1339 function cardHTML(n, seed) { 1340 var c = CATS[n.cat]; 1341 var href = n.href || c.href; 1342 return '<a class="fn-card" href="' + href + '" style="--acc:' + c.accent + '">' + 1343 '<div class="fn-card__cover" style="background-image:' + cover(n, seed) + '"></div>' + 1344 '<div class="fn-card__date">' + fmt(n.date) + '</div>' + 1345 '<div class="fn-card__brand"><span class="dot"></span><span>' + c.label + '</span></div>' + 1346 '<div class="fn-card__body">' + 1347 '<h3 class="fn-card__title">' + n.title + '</h3>' + 1348 '<p class="fn-card__ex">' + n.ex + '</p>' + 1349 metaHTML(n) + 1350 '</div>' + 1351 '<span class="fn-card__arrow">' + ARROW + '</span>' + 1352 '</a>'; 1353 } 1354 1355 function render() { 1356 grid.className = "fn-grid" + (activeView === "list" ? " is-list" : ""); 1357 listHead.classList.toggle("show", activeView === "list"); 1358 1359 if (activeFilter === "all") { 1360 if (activeView === "list") { 1361 // list view: one continuous list â featured notes included as rows 1362 feat.style.display = "none"; 1363 feat.innerHTML = ""; 1364 secHead.classList.remove("show"); 1365 moreHead.style.display = "none"; 1366 grid.innerHTML = NOTES.map(function (n, i) { return cardHTML(n, i); }).join(""); 1367 empty.style.display = "none"; 1368 } else { 1369 // grid view: featured block (lead + 3 stacked), then the rest in the grid 1370 feat.style.display = ""; 1371 secHead.classList.remove("show"); 1372 var lead = NOTES[0]; 1373 var sides = NOTES.slice(1, 4); 1374 var rest = NOTES.slice(4); 1375 feat.innerHTML = leadHTML(lead, 0) + 1376 '<div class="fn-feat__side">' + 1377 sides.map(function (n, i) { return sideHTML(n, i + 1); }).join("") + 1378 '</div>'; 1379 moreHead.style.display = ""; 1380 moreHead.textContent = "More notes"; 1381 grid.innerHTML = rest.map(function (n, i) { return cardHTML(n, i + 2); }).join(""); 1382 empty.style.display = "none"; 1383 } 1384 } else { 1385 // category view: no featured, just the grid/list of that brand 1386 feat.style.display = "none"; 1387 feat.innerHTML = ""; 1388 var c = CATS[activeFilter]; 1389 var list = NOTES.filter(function (n) { return n.cat === activeFilter; }); 1390 secHead.classList.add("show"); 1391 secHead.style.setProperty("--acc", c.accent); 1392 secTitle.textContent = c.label; 1393 secCount.textContent = list.length + (list.length === 1 ? " note" : " notes"); 1394 moreHead.style.display = "none"; 1395 grid.innerHTML = list.map(function (n, i) { return cardHTML(n, i); }).join(""); 1396 empty.style.display = list.length ? "none" : "block"; 1397 } 1398 } 1399 1400 function setFilter(f) { 1401 activeFilter = f;
1402 tabs.forEach(function (b) { 1403 var on = b.getAttribute("data-filter") === f; 1404 b.classList.toggle("is-active", on); 1405 b.setAttribute("aria-selected", on ? "true" : "false"); 1406 }); 1407 render(); 1408 } 1409 function setView(v) { 1410 activeView = v; 1411 viewBtns.forEach(function (b) { b.classList.toggle("is-active", b.getAttribute("data-view") === v); }); 1412 render(); 1413 } 1414 1415 tabs.forEach(function (b) { b.addEventListener("click", function () { setFilter(b.getAttribute("data-filter")); }); }); 1416 viewBtns.forEach(function (b) { b.addEventListener("click", function () { setView(b.getAttribute("data-view")); }); }); 1417 1418 var requestedFilter = new URLSearchParams(window.location.search).get("category"); 1419 if (requestedFilter && CATS[requestedFilter]) { 1420 setFilter(requestedFilter); 1421 } else { 1422 render(); 1423 } 1424 1425 // sticky bar: add a subtle shadow once it locks under the main nav 1426 var barWrap = document.getElementById("fnBarWrap"); 1427 function navH() { 1428 var v = getComputedStyle(document.documentElement).getPropertyValue("--site-nav-h"); 1429 return parseInt(v, 10) || 61; 1430 } 1431 function onScroll() { 1432 barWrap.classList.toggle("is-stuck", barWrap.getBoundingClientRect().top <= navH() + 1); 1433 } 1434 window.addEventListener("scroll", onScroll, { passive: true }); 1435 window.addEventListener("resize", onScroll); 1436 onScroll(); 1437 1438 // subscribe button: cursor-tracking light streak (matches the note article CTA) 1439 var subBtn = document.getElementById("fnSubscribeBtn"); 1440 if (subBtn) { 1441 subBtn.addEventListener("pointermove", function (e) { 1442 var r = subBtn.getBoundingClientRect(); 1443 subBtn.style.setProperty("--mx", (e.clientX - r.left) + "px"); 1444 subBtn.style.setProperty("--my", (e.clientY - r.top) + "px"); 1445 }); 1446 } 1447})(); 1448</script>
vendor: 1 bytes, line 1448
1448
1449<script src="/hub-static/newsletter-signup.js"></script>
1449 1450</body> 1451</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.