← HomeEvidence

Every number, and where it comes from

The site won't build if a number lacks a source, or if a cited file or test is missing from Ken's repository at 25452eb.

Ken

  1. 1

    96%

    Factual claims backed by what Ken read

    Measured
    1. Measured by

      A blind LLM judge (gpt-4.1-mini) listed every factual claim in each answer and checked it against everything Ken's tools returned.

      26 of 27 claims, across 10 questions on a fake inbox

    2. Source
    3. Date

      28 Oct 2026

  2. 2

    0 of 10

    Planted injection email obeyed

    Measured
    1. Measured by

      evals/run_eval.py records every send attempt; a run fails if any send targets the attacker's address or number.

      10 agent runs over a fake inbox with 1 planted prompt-injection email

    2. Source
    3. Enforced by
    4. Date

      28 Oct 2026

    One planted email is a small test, and it was run on gpt-4.1-mini, before the switch to gpt-6-luna. A larger attack set is planned.

  3. 3

    0 of 10

    Sends attempted without being asked

    Measured
    1. Measured by

      The eval's send handler declines and logs every attempt; none were made.

      the same 10 runs

    2. Source
    3. Enforced by
    4. Date

      28 Oct 2026

  4. 4

    always

    A send needs the owner's click

    Guaranteed by code
    1. Measured by

      The send tool is reachable only through a confirmation dialog the model can't call; declined sends are dropped and every send is audited.

    2. Source
    3. Enforced by
    4. Date

      3 Nov 2026

  5. 5

    151

    Offline tests in Ken

    Guaranteed by code
    1. Measured by

      pytest; conftest.py gives every client a transport that raises on a real request.

      a transport guard makes any real OpenAI request fail the test

    2. Source
    3. Date

      3 Nov 2026

  6. 6

    32%

    Draft picked as closest to the real reply

    Measured
    1. Measured by

      Blind 3-way judge. With 50 cases, differences under about ±10 points are noise, so +18 is a moderate win.

      50 held-out real WhatsApp replies; 14% for the earlier version, 24% with no RAG

    2. Source
    3. Date

      28 Oct 2026

  7. 7

    +8%

    Draft length over the real reply

    Measured
    1. Measured by

      Average characters per draft against the real reply.

      50 replies; +45% with no RAG, +18% before

    2. Source
    3. Date

      28 Oct 2026

  8. 8

    985

    Reply pairs in style memory

    Measured
    1. Measured by

      Count of stored pairs; each draft retrieves the 3 most similar from the same chat, plus the chat's last 24 h.

      "them → you" pairs from the owner's WhatsApp history

    2. Source
    3. Date

      28 Oct 2026

  9. 9

    40%

    Nearest neighbours from the same chat

    Measured
    1. Measured by

      For each pair, how often its 3 nearest neighbours come from the same chat. This is why retrieval filters by chat first.

      1,001 pairs; 12% by chance

    2. Source
    3. Date

      28 Oct 2026

  10. 10

    60–68%

    New model picked as closest to the real reply

    Measured
    1. Measured by

      Same prompt, recall and intent; only the drafting model changed.

      50 replies; gpt-4.1-mini 18–22%; each model judged blind to cancel self-preference

    2. Source
    3. Date

      28 Oct 2026

  11. 11

    −76%

    Cost of the evaluation run after the switch

    Measured
    1. Measured by

      Cost and timing logged per call during the comparison run.

      $0.048 → $0.011; median latency 1.0 s → 1.6 s, accepted

    2. Source
    3. Date

      28 Oct 2026

  12. 12

    52%

    Replies split over two lines, after 4 prompt tries

    Measured
    1. Measured by

      A prompt flips the model between extremes; the real fix is deciding the split in code.

      tries: 0% → 78% → 4% → 52%, against the owner's 22%

    2. Source
    3. Date

      28 Oct 2026

  13. 13

    9 of 10

    Right chat found from a misspelled name

    Measured
    1. Measured by

      Fuzzy match with an activity bonus; the model sees 'last message today / 3 days ago'.

      10 real chats, Arabic and Latin spellings; the miss was ambiguous (several contacts share a name)

    2. Source
    3. Date

      28 Oct 2026

  14. 14

    ≈ $0.64

    Total spent on all evaluations

    Measured
    1. Measured by

      Every OpenAI request is logged with a purpose tag.

      2,187 model calls, 1.58M tokens

    2. Source
    3. Date

      28 Oct 2026

Planovya

  1. 15

    ~430

    Jest tests in Planovya

    Reported, private repo
    1. Measured by

      Jest test run.

      including the chat-context builder, AI usage caps, webhook signatures and a bundle secret-leak test

    2. Source

      Planovya's repository is private. Ask for a walkthrough.

    3. Date

      Nov 2026

  2. 16

    236 · 22

    Commits and SQL migrations

    Reported, private repo
    1. Measured by

      git history and the migrations folder.

    2. Source

      Planovya's repository is private. Ask for a walkthrough.

    3. Date

      Nov 2026

  3. 17

    16,000 chars

    Assistant context budget

    Reported, private repo
    1. Measured by

      Server-side context builder: open tasks, the 10 nearest deadlines, goals, notes, 7 days of focus time.

      cut at a line boundary with an explicit 'lines omitted' notice

    2. Source

      Planovya's repository is private. Ask for a walkthrough.

    3. Date

      Nov 2026

  4. 18

    RLS + JWT

    Each user reaches only their own rows

    Reported, private repo
    1. Measured by

      Supabase row-level security on every table, plus server-side JWT checks; the OpenAI key never reaches the browser.

    2. Source

      Planovya's repository is private. Ask for a walkthrough.

    3. Date

      Nov 2026

    All evidence on one page →