{"id":"04-landscape","number":4,"slug":"decision-models-compared","title":"Jev, Decisions, Clef, Strands: the landscape","short":"The landscape","module":"The idea","summary":"Four decision models you can use today, one request shape they almost share, and what they cost. Then what we measured ourselves: accuracy on a public benchmark and on fresh news published after every model's release, latency from a real server, and why you should trust your own evals over anyone's leaderboard.","voice":"Jessica","scenes":[{"template":"title","chapter":"Intro","narration":"You can use a decision model today from at least four places. They share one shape, but they differ in where they run, what they cost and how fast they answer from where you are. Let's lay them out, and then look at what we measured ourselves.","params":{"kicker":"Lesson 4","module":"Module 1 · The idea","title":"Jev, Decisions, Clef, *Strands*","subtitle":"Four decision models, one shape, and how to choose.","cast":["snap","curly"]},"start":0.5,"dur":15.306,"words":[{"text":"You","s":0.8,"e":0.96},{"text":"can","s":1.04,"e":1.12},{"text":"use","s":1.2,"e":1.28},{"text":"a","s":1.36,"e":1.4},{"text":"decision","s":1.44,"e":1.84},{"text":"model","s":1.92,"e":2.16},{"text":"today","s":2.36,"e":2.56},{"text":"from","s":2.64,"e":2.8},{"text":"at","s":2.88,"e":3.04},{"text":"least","s":3.2,"e":3.52},{"text":"four","s":3.68,"e":3.84},{"text":"places.","s":3.92,"e":4.56},{"text":"They","s":4.96,"e":5.04},{"text":"share","s":5.12,"e":5.36},{"text":"one","s":5.44,"e":5.6},{"text":"shape,","s":5.76,"e":6.24},{"text":"but","s":6.36,"e":6.48},{"text":"they","s":6.56,"e":6.64},{"text":"differ","s":6.72,"e":6.96},{"text":"in","s":7.04,"e":7.12},{"text":"where","s":7.2,"e":7.28},{"text":"they","s":7.36,"e":7.52},{"text":"run,","s":7.6,"e":8.08},{"text":"what","s":8.16,"e":8.24},{"text":"they","s":8.32,"e":8.4},{"text":"cost","s":8.48,"e":8.96},{"text":"and","s":9.04,"e":9.28},{"text":"how","s":9.36,"e":9.52},{"text":"fast","s":9.6,"e":9.84},{"text":"they","s":9.92,"e":10},{"text":"answer","s":10.16,"e":10.32},{"text":"from","s":10.4,"e":10.56},{"text":"where","s":10.64,"e":10.72},{"text":"you","s":10.8,"e":10.88},{"text":"are.","s":10.96,"e":11.76},{"text":"Let's","s":11.84,"e":11.96},{"text":"lay","s":12,"e":12.16},{"text":"them","s":12.24,"e":12.32},{"text":"out,","s":12.48,"e":12.72},{"text":"and","s":12.8,"e":12.88},{"text":"then","s":12.96,"e":13.12},{"text":"look","s":13.2,"e":13.28},{"text":"at","s":13.32,"e":13.36},{"text":"what","s":13.44,"e":13.52},{"text":"we","s":13.6,"e":13.68},{"text":"measured","s":13.72,"e":14},{"text":"ourselves.","s":14.12,"e":14.96}]},{"template":"table","chapter":"The four","narration":"Jev, from TypeSafe, is a hosted API at four point two cents per million input tokens. OpenAI's Decisions API runs on GPT-6 Luna at ten cents. Cloudflare's Clef comes in two sizes on Workers AI, and you can download the weights. And AWS's Strands Decider is a two billion parameter model you run yourself, even on a laptop. All four charge nothing for output.","params":{"title":"Decision models, October 2026","cols":["Model","From","$ / M input","Weights","Images"],"widths":"1.5fr 1.1fr 1fr 1.1fr 0.9fr","rows":[{"cells":["Jev 1.13 · 1.14","TypeSafe AI","$0.042","closed","preview"],"at":"Jev, from TypeSafe"},{"cells":["Decisions API (gpt-6-luna)","OpenAI","$0.10","closed","yes"],"at":"OpenAI's Decisions API"},{"cells":["Clef 27B · Clef-flash 9B","Cloudflare","$0.24 · $0.038","*Apache-2.0*","yes"],"at":"Cloudflare's Clef"},{"cells":["Strands Decider 2B","AWS Strands Labs","free (your hardware)","*open + data*","v1 only"],"at":"Strands Decider"}],"note":"Output is free on all four. Prices from each vendor's docs, 2026-10-15."},"start":15.806,"dur":26.916,"words":[{"text":"Jev,","s":16.106,"e":16.746},{"text":"from","s":16.826,"e":16.906},{"text":"TypeSafe,","s":16.986,"e":17.706},{"text":"is","s":17.786,"e":17.866},{"text":"a","s":17.946,"e":18.026},{"text":"hosted","s":18.146,"e":18.426},{"text":"API","s":18.506,"e":19.066},{"text":"at","s":19.146,"e":19.306},{"text":"four","s":19.386,"e":19.466},{"text":"point","s":19.626,"e":19.866},{"text":"two","s":19.946,"e":20.026},{"text":"cents","s":20.106,"e":20.346},{"text":"per","s":20.426,"e":20.586},{"text":"million","s":20.746,"e":21.146},{"text":"input","s":21.226,"e":21.466},{"text":"tokens.","s":21.546,"e":22.346},{"text":"OpenAI's","s":22.586,"e":23.146},{"text":"Decisions","s":23.226,"e":23.706},{"text":"API","s":23.786,"e":24.266},{"text":"runs","s":24.426,"e":24.666},{"text":"on","s":24.746,"e":24.826},{"text":"GPT-6","s":24.906,"e":25.626},{"text":"Luna","s":25.786,"e":26.186},{"text":"at","s":26.306,"e":26.426},{"text":"ten","s":26.546,"e":26.666},{"text":"cents.","s":26.746,"e":27.466},{"text":"Cloudflare's","s":27.706,"e":28.266},{"text":"Clef","s":28.346,"e":28.746},{"text":"comes","s":28.826,"e":29.066},{"text":"in","s":29.146,"e":29.226},{"text":"two","s":29.306,"e":29.386},{"text":"sizes","s":29.546,"e":29.946},{"text":"on","s":30.026,"e":30.106},{"text":"Workers","s":30.186,"e":30.506},{"text":"AI,","s":30.586,"e":31.066},{"text":"and","s":31.186,"e":31.306},{"text":"you","s":31.386,"e":31.466},{"text":"can","s":31.506,"e":31.546},{"text":"download","s":31.626,"e":31.866},{"text":"the","s":31.946,"e":31.986},{"text":"weights.","s":32.026,"e":32.626},{"text":"And","s":32.826,"e":32.986},{"text":"AWS's","s":33.066,"e":33.866},{"text":"Strands","s":33.946,"e":34.346},{"text":"Decider","s":34.426,"e":34.986},{"text":"is","s":35.066,"e":35.146},{"text":"a","s":35.226,"e":35.306},{"text":"two","s":35.386,"e":35.546},{"text":"billion","s":35.786,"e":36.106},{"text":"parameter","s":36.186,"e":36.586},{"text":"model","s":36.666,"e":36.986},{"text":"you","s":37.066,"e":37.146},{"text":"run","s":37.226,"e":37.386},{"text":"yourself,","s":37.506,"e":38.106},{"text":"even","s":38.186,"e":38.346},{"text":"on","s":38.426,"e":38.466},{"text":"a","s":38.506,"e":38.546},{"text":"laptop.","s":38.586,"e":39.306},{"text":"All","s":39.546,"e":39.706},{"text":"four","s":39.866,"e":40.106},{"text":"charge","s":40.266,"e":40.586},{"text":"nothing","s":40.826,"e":41.146},{"text":"for","s":41.226,"e":41.306},{"text":"output.","s":41.386,"e":42.106}]},{"template":"table","chapter":"One shape","narration":"And they speak nearly the same language. Jev's request format became a de facto standard: Clef and Strands accept it as is, so switching is a change of endpoint. OpenAI uses the same idea with different names: input instead of state, predicate instead of noul.","params":{"title":"One request shape, two dialects","cols":["Idea","Jev · Clef · Strands","OpenAI Decisions"],"rows":[{"cells":["your data","`state`","`input`"],"at":"same idea"},{"cells":["yes / no","`noul`","`predicate`"],"at":"predicate instead of noul"},{"cells":["one of a set","`choice` + criteria map","`choice` + choices list"]},{"cells":["ordered levels","`score` + criteria list","`score` + levels list"]},{"cells":["endpoint","`POST /v1/systemone`","`POST /v1/decisions`"],"at":"change of endpoint"}]},"start":42.722,"dur":18.661,"words":[{"text":"And","s":43.022,"e":43.182},{"text":"they","s":43.262,"e":43.342},{"text":"speak","s":43.382,"e":43.662},{"text":"nearly","s":43.822,"e":44.142},{"text":"the","s":44.222,"e":44.302},{"text":"same","s":44.422,"e":44.542},{"text":"language.","s":44.862,"e":45.422},{"text":"Jev's","s":45.662,"e":45.982},{"text":"request","s":46.062,"e":46.462},{"text":"format","s":46.542,"e":46.862},{"text":"became","s":46.942,"e":47.182},{"text":"a","s":47.262,"e":47.342},{"text":"de","s":47.422,"e":47.582},{"text":"facto","s":47.702,"e":47.902},{"text":"standard:","s":48.062,"e":49.022},{"text":"Clef","s":49.062,"e":49.262},{"text":"and","s":49.342,"e":49.422},{"text":"Strands","s":49.502,"e":49.902},{"text":"accept","s":50.102,"e":50.302},{"text":"it","s":50.382,"e":50.462},{"text":"as","s":50.542,"e":50.702},{"text":"is,","s":50.782,"e":51.262},{"text":"so","s":51.342,"e":51.502},{"text":"switching","s":51.662,"e":52.142},{"text":"is","s":52.182,"e":52.222},{"text":"a","s":52.302,"e":52.382},{"text":"change","s":52.502,"e":52.622},{"text":"of","s":52.662,"e":52.702},{"text":"endpoint.","s":52.782,"e":53.582},{"text":"OpenAI","s":53.822,"e":54.462},{"text":"uses","s":54.622,"e":54.782},{"text":"the","s":54.862,"e":55.022},{"text":"same","s":55.142,"e":55.262},{"text":"idea","s":55.342,"e":55.662},{"text":"with","s":55.782,"e":55.902},{"text":"different","s":56.062,"e":56.222},{"text":"names:","s":56.462,"e":57.182},{"text":"input","s":57.422,"e":57.662},{"text":"instead","s":57.742,"e":58.062},{"text":"of","s":58.102,"e":58.142},{"text":"state,","s":58.222,"e":59.022},{"text":"predicate","s":59.302,"e":59.582},{"text":"instead","s":59.662,"e":59.982},{"text":"of","s":60.022,"e":60.062},{"text":"noul.","s":60.142,"e":60.782}]},{"template":"chart","chapter":"What we measured","narration":"We ran all 3,080 messages of BANKING77, a public dataset of bank support questions with seventy seven intents, through each model we could reach. Jev 1.13 and 1.14 both got about eighty percent right. A fast LLM asked for its answer as JSON got seventy six. And Clef flash got ninety six percent.","params":{"title":"BANKING77: 77-way intent, label names only","kind":"bar","ymax":1.08,"data":[{"x":"Jev 1.13","y":0.801,"label":"80.1%","at":"Jev 1.13"},{"x":"Jev 1.14","y":0.803,"label":"80.3%"},{"x":"Haiku 5.5 (JSON)","y":0.761,"label":"76.1%","tone":"s2","at":"seventy six"},{"x":"Clef-flash","y":0.96,"label":"96.0%","hl":true,"at":"Clef flash"}],"src":"Measured for this course, 2026-10-15. Haiku on a stratified 616-message subset."},"start":61.383,"dur":23.703,"words":[{"text":"We","s":61.683,"e":61.843},{"text":"ran","s":61.923,"e":62.163},{"text":"all","s":62.243,"e":62.483},{"text":"3,080","s":62.563,"e":62.723},{"text":"messages","s":62.883,"e":64.163},{"text":"of","s":64.243,"e":64.323},{"text":"BANKING77,","s":64.403,"e":66.003},{"text":"a","s":66.043,"e":66.083},{"text":"public","s":66.163,"e":66.403},{"text":"dataset","s":66.483,"e":66.963},{"text":"of","s":67.003,"e":67.043},{"text":"bank","s":67.123,"e":67.363},{"text":"support","s":67.523,"e":67.683},{"text":"questions","s":67.763,"e":68.243},{"text":"with","s":68.363,"e":68.483},{"text":"seventy","s":68.563,"e":68.883},{"text":"seven","s":68.963,"e":69.203},{"text":"intents,","s":69.283,"e":70.003},{"text":"through","s":70.083,"e":70.323},{"text":"each","s":70.403,"e":70.563},{"text":"model","s":70.723,"e":70.963},{"text":"we","s":71.043,"e":71.123},{"text":"could","s":71.203,"e":71.283},{"text":"reach.","s":71.483,"e":72.163},{"text":"Jev","s":72.243,"e":72.483},{"text":"1.13","s":72.563,"e":72.963},{"text":"and","s":73.003,"e":73.843},{"text":"1.14","s":73.883,"e":74.723},{"text":"both","s":75.043,"e":75.283},{"text":"got","s":75.363,"e":75.443},{"text":"about","s":75.643,"e":75.843},{"text":"eighty","s":75.923,"e":76.083},{"text":"percent","s":76.163,"e":76.403},{"text":"right.","s":76.483,"e":77.203},{"text":"A","s":77.283,"e":77.363},{"text":"fast","s":77.523,"e":77.683},{"text":"LLM","s":77.763,"e":78.243},{"text":"asked","s":78.363,"e":78.563},{"text":"for","s":78.603,"e":78.643},{"text":"its","s":78.723,"e":78.803},{"text":"answer","s":78.883,"e":79.203},{"text":"as","s":79.283,"e":79.443},{"text":"JSON","s":79.603,"e":80.083},{"text":"got","s":80.163,"e":80.403},{"text":"seventy","s":80.483,"e":80.843},{"text":"six.","s":80.963,"e":81.683},{"text":"And","s":81.763,"e":81.843},{"text":"Clef","s":81.923,"e":82.163},{"text":"flash","s":82.363,"e":82.563},{"text":"got","s":82.643,"e":82.883},{"text":"ninety","s":82.963,"e":83.283},{"text":"six","s":83.443,"e":83.603},{"text":"percent.","s":83.683,"e":84.483}]},{"template":"statement","chapter":"What we measured","narration":"Before you crown a winner, notice something. BANKING77 has been public since 2020, and it's one of the benchmarks Cloudflare reports for Clef. Public test sets can end up in training data. So we built a fresh test: 279 news stories published after every one of these models was released. There, Jev 1.14 got eighty two percent, and the LLM eighty.","params":{"eyebrow":"Public benchmarks leak","text":"A score on a public benchmark is *an upper bound*, not a forecast.","sub":"On 279 fresh news stories (8 sections): Jev 1.14 81.7% · Jev 1.13 79.6% · Haiku 5.5 79.6%.","sub_at":"fresh test","art":"mull","mood":"think","punch":"fresh test"},"start":85.086,"dur":25.792,"words":[{"text":"Before","s":85.386,"e":85.706},{"text":"you","s":85.786,"e":85.866},{"text":"crown","s":85.946,"e":86.186},{"text":"a","s":86.226,"e":86.266},{"text":"winner,","s":86.346,"e":87.066},{"text":"notice","s":87.146,"e":87.466},{"text":"something.","s":87.706,"e":88.186},{"text":"BANKING77","s":88.426,"e":89.626},{"text":"has","s":89.706,"e":89.786},{"text":"been","s":89.866,"e":89.946},{"text":"public","s":90.026,"e":90.346},{"text":"since","s":90.426,"e":90.666},{"text":"2020,","s":90.746,"e":91.706},{"text":"and","s":91.786,"e":91.866},{"text":"it's","s":91.906,"e":92.026},{"text":"one","s":92.106,"e":92.186},{"text":"of","s":92.226,"e":92.266},{"text":"the","s":92.346,"e":92.426},{"text":"benchmarks","s":92.586,"e":93.066},{"text":"Cloudflare","s":93.226,"e":93.546},{"text":"reports","s":93.626,"e":93.946},{"text":"for","s":94.026,"e":94.106},{"text":"Clef.","s":94.186,"e":95.066},{"text":"Public","s":95.226,"e":95.386},{"text":"test","s":95.466,"e":95.626},{"text":"sets","s":95.706,"e":96.026},{"text":"can","s":96.146,"e":96.266},{"text":"end","s":96.346,"e":96.426},{"text":"up","s":96.466,"e":96.506},{"text":"in","s":96.586,"e":96.666},{"text":"training","s":96.746,"e":97.066},{"text":"data.","s":97.146,"e":97.946},{"text":"So","s":98.066,"e":98.186},{"text":"we","s":98.426,"e":98.506},{"text":"built","s":98.626,"e":98.746},{"text":"a","s":98.826,"e":98.906},{"text":"fresh","s":99.026,"e":99.146},{"text":"test:","s":99.226,"e":100.026},{"text":"279","s":100.106,"e":100.186},{"text":"news","s":100.266,"e":101.466},{"text":"stories","s":101.666,"e":101.866},{"text":"published","s":101.946,"e":102.346},{"text":"after","s":102.546,"e":102.746},{"text":"every","s":102.826,"e":103.066},{"text":"one","s":103.146,"e":103.226},{"text":"of","s":103.306,"e":103.386},{"text":"these","s":103.466,"e":103.546},{"text":"models","s":103.626,"e":103.866},{"text":"was","s":103.946,"e":104.106},{"text":"released.","s":104.346,"e":105.066},{"text":"There,","s":105.226,"e":105.786},{"text":"Jev","s":105.866,"e":106.106},{"text":"1.14","s":106.266,"e":107.146},{"text":"got","s":107.226,"e":107.546},{"text":"eighty","s":107.626,"e":107.866},{"text":"two","s":107.906,"e":107.946},{"text":"percent,","s":108.026,"e":108.746},{"text":"and","s":108.826,"e":108.906},{"text":"the","s":108.986,"e":109.066},{"text":"LLM","s":109.146,"e":109.626},{"text":"eighty.","s":109.706,"e":110.266}]},{"template":"stat","chapter":"Latency is local","narration":"Latency tells a similar story. Vendors quote model time, often under a tenth of a second. From our server in Brazil, the full round trip told the truth: Jev answered in a quarter of a second, Clef flash in eight tenths, and the LLM in one point two.","params":{"title":"Median round trip from a server in Brazil","items":[{"value":0.26,"decimals":2,"suffix":" s","label":"Jev 1.13","tone":"agent","at":"Jev answered"},{"value":0.81,"decimals":2,"suffix":" s","label":"Clef-flash","tone":"s2","at":"Clef flash"},{"value":1.21,"decimals":2,"suffix":" s","label":"Haiku 5.5, JSON","tone":"bad","at":"one point two"}],"src":"Vendors quote model time (Clef-flash: 39 ms median). Measure from where your code runs.","punch":false},"start":110.878,"dur":17.877,"words":[{"text":"Latency","s":111.178,"e":111.738},{"text":"tells","s":111.818,"e":112.058},{"text":"a","s":112.138,"e":112.218},{"text":"similar","s":112.418,"e":112.618},{"text":"story.","s":112.698,"e":113.178},{"text":"Vendors","s":113.578,"e":113.978},{"text":"quote","s":114.058,"e":114.298},{"text":"model","s":114.458,"e":114.778},{"text":"time,","s":114.858,"e":115.418},{"text":"often","s":115.578,"e":115.738},{"text":"under","s":115.818,"e":115.978},{"text":"a","s":116.058,"e":116.138},{"text":"tenth","s":116.218,"e":116.458},{"text":"of","s":116.538,"e":116.578},{"text":"a","s":116.618,"e":116.658},{"text":"second.","s":116.698,"e":117.458},{"text":"From","s":117.738,"e":117.818},{"text":"our","s":117.898,"e":118.058},{"text":"server","s":118.218,"e":118.378},{"text":"in","s":118.418,"e":118.458},{"text":"Brazil,","s":118.538,"e":119.178},{"text":"the","s":119.258,"e":119.338},{"text":"full","s":119.418,"e":119.578},{"text":"round","s":119.658,"e":119.898},{"text":"trip","s":119.978,"e":120.218},{"text":"told","s":120.258,"e":120.458},{"text":"the","s":120.498,"e":120.538},{"text":"truth:","s":120.618,"e":121.498},{"text":"Jev","s":121.578,"e":121.898},{"text":"answered","s":121.978,"e":122.298},{"text":"in","s":122.378,"e":122.458},{"text":"a","s":122.498,"e":122.538},{"text":"quarter","s":122.618,"e":122.938},{"text":"of","s":123.018,"e":123.098},{"text":"a","s":123.125,"e":123.151},{"text":"second,","s":123.178,"e":123.898},{"text":"Clef","s":123.978,"e":124.298},{"text":"flash","s":124.378,"e":124.698},{"text":"in","s":124.778,"e":124.858},{"text":"eight","s":124.898,"e":124.938},{"text":"tenths,","s":125.098,"e":125.898},{"text":"and","s":125.938,"e":125.978},{"text":"the","s":126.058,"e":126.138},{"text":"LLM","s":126.218,"e":126.778},{"text":"in","s":126.858,"e":127.018},{"text":"one","s":127.098,"e":127.178},{"text":"point","s":127.338,"e":127.578},{"text":"two.","s":127.698,"e":128.138}]},{"template":"stat","chapter":"Cents per thousand","narration":"And the bill? With seventy seven options in every question, about seventeen hundred tokens each, a thousand decisions cost about seven cents on Jev or on Clef flash. Even the LLM was only about eleven cents. At these prices, the question is never can we afford to ask. It's what else should we ask.","params":{"title":"Cost per 1,000 decisions (77 options each)","items":[{"value":0.071,"decimals":3,"prefix":"$","label":"Jev 1.13","tone":"agent","at":"seven cents"},{"value":0.07,"decimals":3,"prefix":"$","label":"Clef-flash","tone":"s2"},{"value":0.106,"decimals":3,"prefix":"$","label":"Haiku 5.5, JSON","tone":"bad","at":"eleven cents"}],"src":"Measured token counts × list prices, 2026-10-15","punch":false},"start":128.755,"dur":21.143,"words":[{"text":"And","s":129.055,"e":129.215},{"text":"the","s":129.255,"e":129.295},{"text":"bill?","s":129.375,"e":129.975},{"text":"With","s":130.175,"e":130.415},{"text":"seventy","s":130.495,"e":130.815},{"text":"seven","s":130.895,"e":131.055},{"text":"options","s":131.215,"e":131.615},{"text":"in","s":131.735,"e":131.855},{"text":"every","s":131.935,"e":132.175},{"text":"question,","s":132.255,"e":132.975},{"text":"about","s":133.135,"e":133.295},{"text":"seventeen","s":133.375,"e":133.775},{"text":"hundred","s":133.855,"e":134.095},{"text":"tokens","s":134.295,"e":134.495},{"text":"each,","s":134.575,"e":135.295},{"text":"a","s":135.375,"e":135.455},{"text":"thousand","s":135.535,"e":135.855},{"text":"decisions","s":135.935,"e":136.415},{"text":"cost","s":136.535,"e":136.655},{"text":"about","s":136.735,"e":137.055},{"text":"seven","s":137.215,"e":137.375},{"text":"cents","s":137.455,"e":137.775},{"text":"on","s":137.855,"e":138.015},{"text":"Jev","s":138.095,"e":138.415},{"text":"or","s":138.495,"e":138.655},{"text":"on","s":138.735,"e":138.815},{"text":"Clef","s":138.895,"e":139.135},{"text":"flash.","s":139.375,"e":140.015},{"text":"Even","s":140.135,"e":140.255},{"text":"the","s":140.335,"e":140.415},{"text":"LLM","s":140.495,"e":140.975},{"text":"was","s":141.055,"e":141.135},{"text":"only","s":141.255,"e":141.375},{"text":"about","s":141.495,"e":141.615},{"text":"eleven","s":141.695,"e":141.935},{"text":"cents.","s":142.095,"e":142.975},{"text":"At","s":143.055,"e":143.135},{"text":"these","s":143.255,"e":143.375},{"text":"prices,","s":143.655,"e":144.095},{"text":"the","s":144.175,"e":144.255},{"text":"question","s":144.455,"e":144.655},{"text":"is","s":144.735,"e":144.815},{"text":"never","s":144.895,"e":145.215},{"text":"can","s":145.455,"e":145.615},{"text":"we","s":145.695,"e":145.775},{"text":"afford","s":145.935,"e":146.255},{"text":"to","s":146.335,"e":146.415},{"text":"ask.","s":146.495,"e":147.215},{"text":"It's","s":147.295,"e":147.535},{"text":"what","s":147.775,"e":147.935},{"text":"else","s":148.015,"e":148.255},{"text":"should","s":148.335,"e":148.415},{"text":"we","s":148.495,"e":148.575},{"text":"ask.","s":148.815,"e":149.295}]},{"template":"list","chapter":"How to choose","narration":"So how do you choose? Start from your constraints. If data can't leave your servers, run open weights: Strands Decider, or Clef yourself. If you need images, OpenAI and Clef read them today. Pick the region closest to your code. Compare the price per thousand of your decisions, not per token. And if you'll want to fine tune, Cloudflare offers that for Clef.","params":{"title":"Choose on constraints, then measure","style":"num","items":[{"text":"**Data can't leave?** Open weights: Strands Decider, or self-hosted Clef","at":"data can't leave"},{"text":"**Images?** OpenAI Decisions and Clef read them today","at":"images"},{"text":"**Latency?** Measure the round trip from your own region","at":"closest to your code"},{"text":"**Cost?** Price your real decisions per 1,000, not per token","at":"per thousand"},{"text":"**Your domain?** Clef offers RL fine-tuning","at":"fine tune"}]},"start":149.898,"dur":24.277,"words":[{"text":"So","s":150.198,"e":150.378},{"text":"how","s":150.438,"e":150.785},{"text":"do","s":150.838,"e":150.898},{"text":"you","s":150.918,"e":151.051},{"text":"choose?","s":151.078,"e":151.798},{"text":"Start","s":152.358,"e":152.598},{"text":"from","s":152.678,"e":152.758},{"text":"your","s":152.838,"e":152.918},{"text":"constraints.","s":152.998,"e":153.878},{"text":"If","s":154.038,"e":154.198},{"text":"data","s":154.278,"e":154.518},{"text":"can't","s":154.598,"e":154.838},{"text":"leave","s":154.918,"e":154.998},{"text":"your","s":155.078,"e":155.158},{"text":"servers,","s":155.238,"e":155.878},{"text":"run","s":155.958,"e":156.198},{"text":"open","s":156.278,"e":156.518},{"text":"weights:","s":156.598,"e":157.238},{"text":"Strands","s":157.318,"e":157.638},{"text":"Decider,","s":157.758,"e":158.278},{"text":"or","s":158.358,"e":158.438},{"text":"Clef","s":158.598,"e":158.758},{"text":"yourself.","s":158.838,"e":159.518},{"text":"If","s":159.718,"e":159.878},{"text":"you","s":159.918,"e":159.958},{"text":"need","s":160.038,"e":160.198},{"text":"images,","s":160.478,"e":160.998},{"text":"OpenAI","s":161.158,"e":161.638},{"text":"and","s":161.678,"e":161.718},{"text":"Clef","s":161.878,"e":162.198},{"text":"read","s":162.358,"e":162.518},{"text":"them","s":162.638,"e":162.758},{"text":"today.","s":163.038,"e":163.558},{"text":"Pick","s":163.798,"e":163.958},{"text":"the","s":163.998,"e":164.038},{"text":"region","s":164.118,"e":164.518},{"text":"closest","s":164.598,"e":165.078},{"text":"to","s":165.118,"e":165.158},{"text":"your","s":165.238,"e":165.318},{"text":"code.","s":165.398,"e":166.038},{"text":"Compare","s":166.118,"e":166.358},{"text":"the","s":166.438,"e":166.518},{"text":"price","s":166.638,"e":166.758},{"text":"per","s":166.838,"e":166.998},{"text":"thousand","s":167.078,"e":167.478},{"text":"of","s":167.518,"e":167.558},{"text":"your","s":167.638,"e":167.718},{"text":"decisions,","s":167.798,"e":168.518},{"text":"not","s":168.598,"e":168.838},{"text":"per","s":168.878,"e":168.918},{"text":"token.","s":168.998,"e":169.878},{"text":"And","s":170.038,"e":170.198},{"text":"if","s":170.278,"e":170.358},{"text":"you'll","s":170.438,"e":170.518},{"text":"want","s":170.598,"e":170.678},{"text":"to","s":170.758,"e":170.838},{"text":"fine","s":170.958,"e":171.078},{"text":"tune,","s":171.158,"e":171.718},{"text":"Cloudflare","s":171.878,"e":172.278},{"text":"offers","s":172.438,"e":172.598},{"text":"that","s":172.678,"e":172.758},{"text":"for","s":172.838,"e":172.918},{"text":"Clef.","s":173.051,"e":173.558}]},{"template":"quote","chapter":"How to choose","narration":"And whatever you pick, take TypeSafe's own advice from their essay on benchmarks: run your own private evals, treat public ones with a grain of salt, and don't amplify every number or plot you see. That includes ours.","params":{"text":"Run your own private evals, treat public ones *with a grain of salt*, and don't amplify every number or plot you see.","who":"TypeSafe AI","role":"Lies, Damned Lies, and Benchmarks","src":"typesafe.ai blog, Sep 11 2026"},"start":174.175,"dur":14.116,"words":[{"text":"And","s":174.475,"e":174.635},{"text":"whatever","s":174.835,"e":175.035},{"text":"you","s":175.075,"e":175.115},{"text":"pick,","s":175.275,"e":175.755},{"text":"take","s":175.835,"e":175.995},{"text":"TypeSafe's","s":176.075,"e":176.635},{"text":"own","s":176.715,"e":176.875},{"text":"advice","s":176.955,"e":177.275},{"text":"from","s":177.355,"e":177.435},{"text":"their","s":177.515,"e":177.595},{"text":"essay","s":177.755,"e":177.915},{"text":"on","s":177.955,"e":177.995},{"text":"benchmarks:","s":178.075,"e":179.195},{"text":"run","s":179.275,"e":179.435},{"text":"your","s":179.515,"e":179.595},{"text":"own","s":179.675,"e":179.755},{"text":"private","s":179.835,"e":180.075},{"text":"evals,","s":180.155,"e":180.955},{"text":"treat","s":180.995,"e":181.195},{"text":"public","s":181.275,"e":181.595},{"text":"ones","s":181.675,"e":181.915},{"text":"with","s":181.955,"e":181.995},{"text":"a","s":182.075,"e":182.115},{"text":"grain","s":182.155,"e":182.315},{"text":"of","s":182.355,"e":182.395},{"text":"salt,","s":182.475,"e":183.115},{"text":"and","s":183.235,"e":183.355},{"text":"don't","s":183.435,"e":183.675},{"text":"amplify","s":183.755,"e":184.235},{"text":"every","s":184.315,"e":184.635},{"text":"number","s":184.715,"e":184.955},{"text":"or","s":185.035,"e":185.115},{"text":"plot","s":185.195,"e":185.435},{"text":"you","s":185.515,"e":185.595},{"text":"see.","s":185.675,"e":186.315},{"text":"That","s":186.395,"e":186.475},{"text":"includes","s":186.555,"e":186.955},{"text":"ours.","s":187.035,"e":187.675}]},{"template":"quiz","chapter":"Quick check","narration":"Quick check. Your customer data is not allowed to leave your own servers. Which option fits?","params":{"q":"Your data **can't leave your servers**. Which option fits?","options":["Jev's hosted API with long context turned on","OpenAI's Decisions API","Strands Decider, or Clef's open weights, run on your hardware","Whichever topped the latest leaderboard"],"answer":2,"explain":"Strands Decider and Clef publish their weights, so you can run them where your data lives. Then measure them on your own data."},"start":188.291,"dur":11.456,"words":[{"text":"Quick","s":188.591,"e":188.831},{"text":"check.","s":188.911,"e":189.431},{"text":"Your","s":189.631,"e":189.791},{"text":"customer","s":189.871,"e":190.191},{"text":"data","s":190.351,"e":190.671},{"text":"is","s":190.751,"e":190.991},{"text":"not","s":191.111,"e":191.231},{"text":"allowed","s":191.391,"e":191.551},{"text":"to","s":191.591,"e":191.631},{"text":"leave","s":191.711,"e":191.871},{"text":"your","s":191.951,"e":192.031},{"text":"own","s":192.111,"e":192.191},{"text":"servers.","s":192.271,"e":193.231},{"text":"Which","s":193.351,"e":193.471},{"text":"option","s":193.551,"e":193.791},{"text":"fits?","s":193.951,"e":194.591}]},{"template":"exercise","chapter":"Try it","narration":"Try it. Have your agent write one small adapter that can call any of these models with the same questions, and log the model, latency and probabilities, so every later lesson can compare them on your data.","params":{"title":"One adapter, any decision model","intro":"Paste this into your coding agent:","prompt":"Write decide.py with one function: decide(state, questions, provider).\nquestions use the System One shape (noul / choice / score). Support:\n- jev: POST https://api.typesafe.ai/v1/systemone (TYPESAFE_API_KEY)\n- clef: Cloudflare Workers AI @cf/cloudflare/clef-flash (same body)\n- openai: POST /v1/decisions (map state->input, noul->predicate,\n  criteria->choices/levels; model gpt-6-luna)\nReturn the same shape for all. Log provider, model id, latency and\nprobabilities to decisions.jsonl. Add a test that runs one question\nthrough every provider that has a key set."},"start":199.747,"dur":13.306,"words":[{"text":"Try","s":200.047,"e":200.287},{"text":"it.","s":200.367,"e":200.607},{"text":"Have","s":200.927,"e":201.087},{"text":"your","s":201.167,"e":201.247},{"text":"agent","s":201.407,"e":201.567},{"text":"write","s":201.727,"e":201.887},{"text":"one","s":201.967,"e":202.127},{"text":"small","s":202.287,"e":202.527},{"text":"adapter","s":202.767,"e":203.007},{"text":"that","s":203.087,"e":203.167},{"text":"can","s":203.247,"e":203.327},{"text":"call","s":203.407,"e":203.727},{"text":"any","s":203.847,"e":203.967},{"text":"of","s":204.047,"e":204.127},{"text":"these","s":204.207,"e":204.287},{"text":"models","s":204.367,"e":204.767},{"text":"with","s":204.847,"e":204.927},{"text":"the","s":205.007,"e":205.087},{"text":"same","s":205.167,"e":205.327},{"text":"questions,","s":205.487,"e":206.367},{"text":"and","s":206.447,"e":206.527},{"text":"log","s":206.607,"e":206.847},{"text":"the","s":206.887,"e":206.927},{"text":"model,","s":207.007,"e":207.567},{"text":"latency","s":207.647,"e":208.127},{"text":"and","s":208.207,"e":208.367},{"text":"probabilities,","s":208.487,"e":209.487},{"text":"so","s":209.607,"e":209.727},{"text":"every","s":209.887,"e":210.047},{"text":"later","s":210.127,"e":210.367},{"text":"lesson","s":210.447,"e":210.767},{"text":"can","s":210.847,"e":211.007},{"text":"compare","s":211.207,"e":211.407},{"text":"them","s":211.487,"e":211.567},{"text":"on","s":211.607,"e":211.647},{"text":"your","s":211.727,"e":211.807},{"text":"data.","s":211.887,"e":212.447}]},{"template":"recap","chapter":"Recap","narration":"So: four decision models, one shape, cents per thousand decisions. Public benchmarks are upper bounds, latency is local, and the only score that counts is the one on your data. That's module one. Next, how to ask good questions, starting with the simplest: the Noul.","params":{"items":["Jev, OpenAI Decisions, Clef and Strands share one request shape.","Output is free; a thousand decisions cost cents.","Public benchmarks are upper bounds; leaderboards move.","Choose on constraints, then measure on your own data."],"next":"Noul: the probability of yes","next_at":"Next"},"start":213.053,"dur":20.891,"words":[{"text":"So:","s":213.353,"e":214.073},{"text":"four","s":214.153,"e":214.233},{"text":"decision","s":214.313,"e":214.713},{"text":"models,","s":214.793,"e":215.513},{"text":"one","s":215.593,"e":215.753},{"text":"shape,","s":215.833,"e":216.553},{"text":"cents","s":216.713,"e":216.873},{"text":"per","s":216.953,"e":217.033},{"text":"thousand","s":217.193,"e":217.513},{"text":"decisions.","s":217.633,"e":218.473},{"text":"Public","s":218.713,"e":218.953},{"text":"benchmarks","s":219.033,"e":219.593},{"text":"are","s":219.673,"e":219.753},{"text":"upper","s":219.913,"e":220.073},{"text":"bounds,","s":220.153,"e":220.873},{"text":"latency","s":220.953,"e":221.513},{"text":"is","s":221.593,"e":221.673},{"text":"local,","s":221.753,"e":222.553},{"text":"and","s":222.593,"e":222.633},{"text":"the","s":222.713,"e":222.873},{"text":"only","s":222.993,"e":223.113},{"text":"score","s":223.193,"e":223.433},{"text":"that","s":223.513,"e":223.593},{"text":"counts","s":223.793,"e":223.993},{"text":"is","s":224.073,"e":224.153},{"text":"the","s":224.233,"e":224.313},{"text":"one","s":224.393,"e":224.553},{"text":"on","s":224.633,"e":224.793},{"text":"your","s":224.873,"e":225.033},{"text":"data.","s":225.113,"e":225.913},{"text":"That's","s":225.993,"e":226.233},{"text":"module","s":226.393,"e":226.553},{"text":"one.","s":226.633,"e":227.433},{"text":"Next,","s":227.673,"e":228.233},{"text":"how","s":228.313,"e":228.393},{"text":"to","s":228.473,"e":228.553},{"text":"ask","s":228.713,"e":228.873},{"text":"good","s":228.993,"e":229.113},{"text":"questions,","s":229.193,"e":229.993},{"text":"starting","s":230.073,"e":230.393},{"text":"with","s":230.433,"e":230.473},{"text":"the","s":230.553,"e":230.593},{"text":"simplest:","s":230.633,"e":231.513},{"text":"the","s":231.593,"e":231.673},{"text":"Noul.","s":231.753,"e":232.393}]}],"total":234.344,"audio":"/audio/04-landscape.mp3"}