Valahol egy ügyfél bejegyzésében, egy hétköznapi telefonhívásról szóló hétköznapi jegyzet közepén, van egy ilyen mondat: “A költségvetés most szűkös, megegyeztünk, hogy két hónap múlva jelentkezünk náluk, hogy újra átbeszéljük.”
Egyszer leírva. Soha többé nem nézve. Nem azért, mert valaki elfelejtette, hogy fontos, hanem mert semmi nem utalt rá, hogy feladat lenne. Nem volt naptárbejegyzés. Nem volt emlékeztető. Csak egy mondat volt, amely azt tette, amit a jegyzetekben lévő mondatok tesznek: ott ült, technikailag igaz, funkcionálisan láthatatlan.
Kíváncsiak voltunk, hogy a rendszer önmagától is felismeri-e az ilyesmit, anélkül, hogy bárkinek emlékeznie kellene visszatérni, és kézzel feladattá alakítani a mondatot.
Amit ténylegesen felépítettünk, és amit szándékosan nem
Egy ilyen funkciónál az az ösztön, hogy hagyjuk az AI-t az egészet elvégezni — olvassa el a jegyzetet, állapítsa meg a dátumot, döntse el, hogy lejárt-e, talán még a követő üzenetet is fogalmazza meg. Ehelyett szándékosan szétválasztottuk.
A modell egyetlen feladata a nyelvértés: elolvasni egy ügyfél legutóbbi jegyzeteit, és felismerni egy jövőre irányuló elköteleződést, valami olyasmit, mint “két hónap múlva újranézzük” vagy “az igazgatótanácsi ülésük után jelentkezünk.” Köznyelvi kifejezésekből megbecsüli a hallgatólagos halasztást. Ennyi. Minden tényleges dátumszámítás — a határidő, hogy a mai nap már túllépte-e — ezután történik, egyszerű, determinisztikus kódban. A modell soha nem számol, és soha nem hozza meg a végső döntést arról, hogy mi van lejárva. Ő olvas. A kód dönt.
Ez a szétválasztás fontosabb, mint amilyennek hangzik. A nyelvértés pontosan az a fajta homályos, kontextusfüggő feladat, amiben egy modell jó. A dátumszámítás pontosan az a fajta feladat, amiben nem szeretnéd, hogy egy modell improvizáljon, még egy kicsit sem.
A valódi teszt
Nem csak azt ellenőriztük, hogy a végpont visszaad-e valami ésszerűnek tűnőt. Írtunk egy valódi jegyzetet egy valódi ügyfél-bejegyzésre: “…megegyeztünk, hogy 2 hónap múlva jelentkezünk náluk, hogy újra átbeszéljük a költségvetést.” Meghívtuk a végpontot. Helyesen kinyerte az ígéretet, kiszámolt egy 60 napos hallgatólagos halasztást, és pontosan 60 nappal a jegyzet valódi időbélyege után eső határidőhöz jutott, helyesen megjelölve, mint még nem lejárt.
Kicsi, és pontosan ez a lényeg. A rendszernek nem kellett megmondani, hogy van egy megtalálandó ígéret. Elolvasott egy mondatot, amelyet valaki saját magának írt, nem egy űrlapnak, és ebből valódi határidőt húzott ki.
A rész, amit könnyű elnézni
A Craft11-ben a jegyzetek csak hozzáfűzhetők. Senki nem szerkeszti őket, senki nem törli őket, még Stark sem. Ugyanaz az elv tartja becsületesen minden bejegyzés nyers oldalát: amit ténylegesen leírtál, pontosan úgy marad, ahogyan leírtad. Amikor utólag el kellett távolítanunk a teszt jegyzetet, nem volt törlés gomb, amihez nyúlhattunk volna, mert nem is szabad, hogy legyen. Ehhez közvetlen adatbázis-műveletre volt szükség, előbb megerősítve, majd rögtön utána visszavonva.
Ez számunkra a tesztelés során egy apró kellemetlenség. Ugyanez az oka annak is, hogy az ígéretfelismerés funkció egyáltalán megbízható: valódi, változtatás nélküli, nem megtisztított emberi írást olvas, nem annak egy megszűrt változatát.
Miért éri meg ez egyáltalán
Ez semmiképp sem helyettesíti a feladatkezelőt. Azt a konkrét, csendes hibamódot helyettesíti, amikor egy ígéret egyetlen nyoma egy mondat, amit senki nem fog újra elolvasni. A rendszernek nem kell, hogy máshogy írj, strukturáld a jegyzeteidet, vagy emlékezz rá, hogy megjelölj bármit is. Csak arra van szüksége, hogy leírd, mi történt valójában, ahogyan saját magadnak írnád le, és ő gondoskodik az észrevételről.