cookbook · personal · daily-recap
Recipe · personal

End-of-day, in one paragraph.

A local .kolm file that takes your day's git commits, calendar entries, browser history (if you want), and slack messages, and returns a one-paragraph recap in your own voice. 150 days of your past journal entries are the gold corpus. Verifier rejects any recap that mentions a project or person not present in the input.

base modelphi-3-mini-4k
gold pairs150 (105 train / 45 eval)
k-score floor0.78
artifact size2.1 GB
compile time~24 min
spec sourcestyle + grounded extraction

What this recipe does

You journal but skip days. This bridges the gap. It gathers what already exists (commits, calendar, slack DMs you bookmarked) and writes the entry that you would have written if you had sat down for ten minutes. It does not fabricate emotions, projects, or people — every named entity in the recap must appear in the input.

The verifier's tone-similarity check holds the recap close to the corpus of your own entries: same sentence rhythm, same hedge words, same trick of starting with the verb instead of "I."

The spec

{
  "output_kind": "json",
  "schema": {
    "required": ["recap", "highlights", "mood"],
    "properties": {
      "recap": { "type": "string", "maxLength": 800 },
      "highlights": { "type": "array", "items": {"type":"string"}, "maxItems": 5 },
      "mood": { "enum": ["flowing", "steady", "scattered", "drained", "sharp"] },
      "open_loops": { "type": "array", "items": {"type":"string"} }
    }
  },
  "verifier": {
    "named_entity_must_appear_in_input": true,
    "style_corpus": "journal/",
    "redact_before_train": "pii.regex"
  }
}

Gold pair (1 of 150 shown)

input - day's events (compacted)
commits: [kolm@a1b2c3] fix smoke 304 redirect, [kolm@d4e5f6] add cookbook idx
calendar: 10:00 standup, 14:00 design partner #2 call (45m)
slack-dms: alex@studio "thursday coffee?", jen "sent the contract"
keep-notes: "the verifier idea is the right wedge — write it down"
output
{
  "recap": "good day. fixed the smoke redirect that was eating my morning, then shipped the cookbook index. design partner call with #2 went well — they get the verifier wedge. jen sent the contract. wrote down the wedge framing because it's the right one.",
  "highlights": ["smoke fix", "DP #2 call", "contract from jen"],
  "mood": "flowing",
  "open_loops": ["thursday coffee with alex - reply needed"]
}

Compile

kolm compile "end-of-day recap in my voice" \
  --base phi-3-mini-4k \
  --pairs ~/.kolm/journal-pairs.jsonl \
  --style-corpus ~/.kolm/journal/ \
  --verifier entity-grounded,style-faithful \
  --k-floor 0.78 \
  --output daily-recap.kolm

ok wrote daily-recap.kolm
   k_score=0.82  signature=hmac-sha256

K-score gate

K-score 0.82 held-out 45 days · named-entity-grounded 100% · style-similarity 0.81 cosine vs journal · mood-correct 87%

Run-time profile

M2 MacBook
760ms
RTX 5090
200ms
iPhone 15 Pro
2.2s
CPU x86 (server)
2.9s

Deploy

# 9pm cron — write today's recap to your journal:
0 21 * * * /usr/local/bin/build-day-input.sh | \
  kolm run daily-recap.kolm | \
  jq -r .recap >> ~/journal/$(date +%Y-%m-%d).md