Code

The code, and where the rest lives.

Every claim on this site sits next to the thing I shipped. Here's what's public, what's private by employer, and the engine that answers questions on the homepage.

01 · Public

This site and its answer engine

Plain HTML, CSS, and JavaScript with no build step. The answer engine, its knowledge base, and the test scripts are all in one public repository.

02 · Private, by employer

The work code lives with Financial Finesse

Global Content StudioPrivate repo

TypeScript and Lit on Vercel, a Cloudflare Worker in front of the Anthropic API and Azure storage, and the localization engine. 524 commits, 493 of them mine, and 221 tests (September 2026).

Content review in the admin platformPrivate repo

Content writing and localization review inside the company's CMS. TypeScript and Lit on the 2026 branch, with tests (October 2026).

Localization review API and consolePrivate repo

The review API on the Python pipeline platform, its tests, and the React console reviewers work in (October 2026).

Aimee SDKPrivate repo

Engineering built the SDK from my coded prototypes and spec. I merged the token layer and four components into it, July to August 2026.

03 · The engine

The function answering you on the homepage

Copied from index.html. It's keyword matching, not an AI model: clean up the question, match it against what I wrote about my work, and score the best fit.

// index.html — the engine answering you right now (verbatim)
function keyHits(nq, kl) {
  if (kl.includes(' ')) return nq.includes(kl);
  const k = kl.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
  return new RegExp('(^|\\s)' + k + (kl.length <= 4 ? 's?(\\s|$)' : '')).test(nq);
}
function retrieve(query) {
  const nq = norm(query);
  const qt = toks(query);
  let best = null, bestScore = 0, second = null, secondScore = 0;
  const scored = [];
  for (const e of KB) {
    // `not` keys veto an entry outright — this is what stops "case study"
    // scoring against the education entry via the word "study".
    if (e.not && e.not.some(n => nq.includes(n))) continue;
    let sc = 0;
    const used = new Set(); // a query word can score once per entry, however many keys share it
    for (const key of e.keys) {
      const kl = key.toLowerCase().trim();
      // A multi-word key is a much stronger signal than a single word,
      // so it outranks a generic one-word match on another entry.
      // Single words must start a word (so "tech" never matches "fintech"), and
      // short ones must be the whole word (so "ai" never matches "Aimee").
      if (kl.length >= 2 && keyHits(nq, kl)) { sc += 3 + (kl.split(' ').length - 1) * 2; continue; }
      for (const w of kl.split(' ')) {
        if (!w || STOP.has(w)) continue;
        const t = qt.find(t => fuzzy(t, w));
        if (t && !used.has(t)) { used.add(t); sc += 1; break; }
      }
    }
    if (sc > 0) scored.push({ e, sc });
    if (sc > bestScore) { second = best; secondScore = bestScore; best = e; bestScore = sc; }
    else if (sc > secondScore) { second = e; secondScore = sc; }
  }
  scored.sort((a, b) => b.sc - a.sc);
  return { entry: best, score: bestScore, second: secondScore >= 2 ? second : null, scored };
}