Voost Control · extracție apeluri · #1443

„Va fi calitatea propunerilor ca după corecturile mele manuale?”

Întrebarea ta, pusă după ce ai reparat de mână două propuneri într-o singură zi. Răspunsul măsurat pe 152 de apeluri reale și 54 de rulări Hermes în staging.

Nu.

Și ăsta e rezultatul corect. Schimbarea nu face modelul mai deștept — face sistemul să nu mai pretindă că știe ce nu știe. Munca ta de legare nu dispare; devine vizibilă și corect atribuită, în loc să fie ascunsă sub o certitudine falsă.

Da.

Actualizare 28 iulie, iterația a doua (ADR-0105). După ce am reconstituit cum a lucrat sesiunea ta de corectură, am găsit golul real — contextul, nu modelul — și l-am închis. Pe apelul substanțial, extracția produce acum autonom forma corecturii tale. Detaliile în actul 07, mai jos.

01

Telefonul spune cine sună, nu a cui e afacerea

Când intră un apel prin ClickPhone, sistemul caută numărul în agendă. Găsește un client — și de aici încolo tratează acel client ca fiind subiectul de business al conversației. Pentru majoritatea apelurilor e corect. Pentru Ioana, nu.

Intake · apel real 23 iulieapasă un câmp
Apel cu Ioana Constandache

Ioana e puntea de comunicare pentru cafeneaua Ginei. Potrivirea pe telefon e corectă ca persoană de contact și greșită ca subiect de business. Apasă fiecare câmp.

În toată istoria: 152 de apeluri, din care 136 legate doar la un client, fără proiect. Asta e forma normală, nu excepția.

02

Ce a spus modelul vs. ce s-a salvat

Pe apelul de 24 de minute din 27 iulie, modelul a făcut exact ce trebuia: a refuzat să aleagă o țintă. Sistemul a salvat altceva.

Incident 2 · proposal 0cb78008

Ce a returnat modelul

proposalKind: blocked
blocker: primary_business_target_missing
rezumat: „apelul e clar despre Maine Coon Cafe; Ioana e doar intermediar”
modificări propuse: 0

Ce a persistat sistemul

primaryEntityType: client
primaryEntityId: Ioana
confidence: high
rationale: „The Call Artifact is already linked to this Client.”
Pachetul salvat își contrazice propriul blocker, în același rând. Nimeni nu a ales ținta aia — nici tu, nici modelul. A fost fabricată la salvare dintr-o potrivire de telefon.

Nu e un caz izolat. Din 183 de propuneri din toată producția, 113 poartă exact acea țintă fabricată cu încredere „high”.

propuneri în producție183
113 · țintă fabricată „high”
70

Drumul principal, nu o ratare rară. De asta merită reparat.

03

Prima variantă a avertismentului era 92% zgomot

Reparația evidentă: pune un avertisment când ținta nu a fost confirmată de nimeni. Am scris-o, apoi am măsurat-o pe corpusul real — și m-a contrazis.

Corpus · apeluri care ar primi avertismentul79 de apeluri
semnal real vs. zgomot6 / 79
73 · fals pozitiv
6
De ce contează

Un client Necesit e creat din cererea care purta acel număr de telefon. Acolo potrivirea pe telefon este identitatea clientului — apelul nu poate fi despre altcineva. Un avertisment acolo te învață să ignori linia, și atunci nu-l mai vezi nici pe cel real.

Cu excluderea, avertismentul selectează exact cele 6 apeluri unde un contact cunoscut vorbește despre afacerea altcuiva: puntea Maine Coon (4 apeluri, din 16 iunie, deci recurent, nu un incident) și cele 2 apeluri cu reprezentanții Necesit.

04

Testul: 27 de apeluri, două brațe, Hermes real

Snapshot de producție restaurat într-o bază izolată, docs copiate, CLI-urile de provider înfundate, automatizările oprite. Aceleași apeluri rulate de două ori: cod actual vs. cod cu schimbarea. 54 de rulări.

Rezultate pe grupe · apasă un rândtoate
Grupnblocate B→Ftip identicavertisment nou
încredere pe ținta de business — cod actual27 / 27
toate „high”, niciuna aleasă de model
încredere pe ținta de business — cu schimbarea27 / 27
toate „low”, cu motivul scris

Grupul de control — 16 apeluri obișnuite de lead Necesit — a ieșit identic ca tip de propunere, cu zero avertismente și zero blocări în plus. Asta era grija principală: că schimbarea face modelul fricos peste tot. Nu o face.

05

Răspunsul direct: cât de aproape ajunge de mâna ta

Cele două apeluri pe care le-ai reparat tu pe 27 iulie, în trei variante: ce scotea codul vechi singur, ce scoate codul nou singur, și ce ai făcut tu.

Incident 2 · 1c24f87d
Verdictul onest

Pe apelul substanțial, codul nou ajunge foarte aproape de corectura ta singur — leagă apelul de proiect și actualizează task-ul existent, exact ca tine. Depășește ținta cu un candidat de plată pe care tu l-ai lăsat deliberat doar ca avertisment.

Pe apelul scurt, nu ajunge. Tu ai știut din context că e vorba de Maine Coon; transcriptul nu numește nimic. Codul nou blochează și îți spune de ce. Codul vechi inventa un task plutitor.

Deci: nu, calitatea nu devine egală cu a corecturilor tale. Ce se schimbă e altceva — sistemul nu mai produce lucruri care arată corecte și sunt greșite. Trece de la „am hotărât, cu încredere mare” la „nu știu, uite ce am, decide tu”.

06

Ce am construit și am aruncat

Ai cerut să nu supraadaptez. Am construit și o a treia bucată — proiecția de candidați, care ar fi oferit modelului proiectul Maine Coon derivat din apelurile anterioare de la același număr. Măsurată, apoi ștearsă.

Proiecția de candidați · verdict

Cât de des se declanșa

1 apel din 152

nu pentru că puntea e rară, ci pentru că legăturile la proiect sunt rare: 13 din 152.

Ce schimba pe acel apel

nimic

ambele brațe au blocat, aceleași zero acțiuni, aceleași 5 fapte. Modelul a văzut candidatul și l-a refuzat corect — transcriptul nu numea afacerea.
Singurul efect măsurabil pe 27 de apeluri a fost negativ: instrucțiunea din prompt a împins modelul de la „facts_only” la „blocked” pe un apel a cărui legătură la proiect era deja corectă. ~140 de linii care se declanșează o dată la 152 de apeluri, fără câștig. Șterse, cu dovezile păstrate în issue #1444.
07

Actualizare: golul era contextul, și s-a închis

Corectura ta manuală era tot Hermes. Diferența: sesiunea ta de corectură a tras context la cerere — a căutat „Maine Coon”, a deschis packet-ul proiectului, a citit task-ul — pe când extracția primea un blob static legat de clientul potrivit pe telefon. Blockerul modelului chiar o spunea: „packet-ul nu mi-a dat ID-ul Maine Coon”. Avea numele, nu ID-ul.

Soluția — ADR-0105

Packet-ul primește acum un director de business: toate proiectele active și oportunitățile deschise, cu clientul și task-urile lor deschise (la scara instanței: 9 + 24 intrări, 12% din packet). Orice nume citit în transcript devine un ID acționabil. Plus: câmpurile de clasificare au devenit legale în output — contractul strict le interzicea, deși schema le accepta.

Apelul substanțial (24 min) · patru variante de cod, aceleași date, Hermes real
VariantăRezultatClasificareȚintă
Cod vechiblocat, 0 acțiuniother (fallback)client greșit, „high” fabricat
+ onestitate (ADR-0104)blocat, 0 acțiuniother (fallback)„low”, onest
+ directorlink Maine Coon + update task exactother (fallback)„low”, onest
+ clasificarelink + update task exactmaintenance_upsellproiect, „high” cu motivația modelului
Ultima linie este forma corecturii tale, produsă autonom — dry-run cu zero blockere. Pe apelul bridge din 23 iulie, la fel. Pe apelul scurt („te sun în 15 min”) rămâne sub corectura ta, pentru că informația nu există în transcript — iar directorul, corect, nu inventează.

Regresia: 16 apeluri obișnuite de lead — zero link-uri cross-client greșite, zero blocări noi, 15/16 identice. Singura diferență: un link same-client benefic cu reconciliere de task. Cross-link-urile au apărut doar pe cele două apeluri unde erau corecte.

Deci răspunsul final la întrebarea din titlu: da, acolo unde informația există în sistem — și exact asta era teza ta: tot contextul era în sistem, trebuia doar folosit la momentul potrivit.

Testul tău

Își merită locul?

Bara ta e cea mai curată soluție, complexitate minimă, niciodată construit înainte de primul consumator real. Aplicată aici:

Complexitate3 fișiere sursă atinse, zero concepte noi de domeniu, zero migrări. Reutilizează provenance-ul deja scris de ADR-0096.✓ minimă
Consumator real113 din 183 de propuneri poartă azi minciuna. Nu e construit înainte — e construit după ce te-a costat două corecturi într-o zi.✓ există
Fără supraadaptareRegula e „nu pretinde o decizie pe care n-ai luat-o”, nu „caută punți Maine Coon”. Se aplică la orice apel, nu la incident.✓ general
Tăiat ce nu meritaDin cele 12 cerințe ale ticketului, 5 refuzate cu motiv scris în ADR, plus o bucată întreagă construită și aruncată pe dovezi.✓ 6 din 12

Ce câștigi concret: pe cele 6 apeluri de tip punte primești o linie în Telegram care spune că nimeni nu a confirmat ținta — înainte să aprobi. Pe restul de 146, nu se schimbă nimic pentru tine. Iar propunerile nu mai afirmă niciodată o țintă pe care modelul a refuzat-o explicit.