Anima e un sistem de management al vieții bazat pe AI care unește task-uri, stări, obiceiuri, obiective, jurnal și skill-uri într-un singur workspace. Atacă o problemă pe care o trăim aproape toți: productivitatea stă într-o aplicație, urmărirea stărilor în alta, obiceiurile în a treia, și niciuna nu vede imaginea completă. Un coach AI care îți poate citi doar lista de task-uri îți dă sfaturi de listă de task-uri. Unul care vede și că ai dormit prost o săptămână întreagă și că obiectivul tău „lansează release-ul" e în întârziere cu trei zile îți dă ceva mai aproape de un răspuns real.

Acel raționament cross-domain e tot scopul Animei, și e și partea grea. Articolul ăsta e despre cum am construit-o, deciziile de arhitectură care au contat și unde se află proiectul de fapt — adică pre-lansare, beta privat, nelansat.

Inteligență cross-domain, pe un program fix

Versiunea naivă a unui „AI care te cunoaște" e să arunci totul în context window la momentul cererii și să speri. E lent, scump, iar modelul se îneacă în rânduri brute.

Anima merge pe alt drum. Un pipeline Celery rulează la fiecare patru ore și construiește câte un UserContextSnapshot per utilizator — o vedere unificată și sumarizată a task-urilor, stărilor, obiceiurilor, obiectivelor și intrărilor de jurnal. Până ajungi să vorbești cu coach-ul, munca grea de tipul „ce se întâmplă acum în viața acestei persoane" e deja făcută și compactă. Calea de chat citește un snapshot, nu o mie de rânduri din bază.

Asta e diferența dintre urmărirea per-funcție și coaching-ul real. O aplicație de obiceiuri îți poate spune că ai ratat trei antrenamente. Anima poate lega faptul că antrenamentele ratate coincid cu o scădere de dispoziție și un obiectiv blocat, și o scoate la suprafață ca un singur insight, nu trei notificări deconectate.

RAG care preferă să spună „nu știu"

Cel mai rapid mod de a distruge încrederea într-un Aance personal e să lași un AI personal să inventeze cu aplomb ceva despre propria ta viață. Așa că abținerea (abstention) e o caracteristică, nu o soluție de rezervă.

Stratul de retrieval al Animei e RAG v2: BM25 pentru potrivire lexicală, căutare vectorială pentru similaritate semantică, fuzionate cu Reciprocal Rank Fusion, apoi un pas de rerank, apoi citare. Fiecare insight e ancorat în context regăsit, și fiecare insight generat trece printr-un EvalGate înainte să ajungă la tine. Dacă modelul nu poate ancora o afirmație suficient de bine, gate-ul o blochează. Sistemul preferă să nu arate nimic — sau un „încă nu sunt destule semnale" explicit — decât să inventeze un tipar care nu există.

Am scris despre tiparul general în RAG care refuză să halucineze, pentru că e aceeași coloană vertebrală pe care o refolosesc în mai multe produse. La Anima miza e personală, ceea ce face comportamentul de abținere și mai important, nu mai puțin.

Gateway-ul LLM conștient de costuri

Un coach AI mereu activ devine scump rapid dacă fiecare cerere lovește un model frontier. Anima rutează printr-un gateway multi-provider așezat în fața OpenAI, Anthropic și Google.

Regula de rutare e plictisitoare intenționat: modelele ieftine implicite preiau munca de volum mare și miză mică — sumarizări, răspunsuri rapide, pipeline-ul de snapshot. Modelele premium sunt rezervate pentru cererile care le justifică, cum ar fi analiza profundă unde calitatea raționamentului chiar schimbă răspunsul. Cei trei provideri în spatele unei singure interfețe înseamnă și că un downtime sau o schimbare de preț la un singur furnizor nu pune produsul jos și nu aruncă bugetul în aer. Gateway-ul e locul unde stă disciplina de cost, în loc să fie împrăștiată prin fiecare apel.

Peste asta stă coach-ul în sine: răspunsuri în streaming prin SSE, un strat Memory v2 împărțit în memorie episodică și semantică, și voce în timp real prin WebSockets. Curățarea de PII e activă implicit, iar totul e gated în spatele invitațiilor de beta și al feature flag-urilor.

Mandatul anti-„AI slop"

Anima are o regulă explicită de founder care a modelat surprinzător de mult din muncă: fără metrici false, fără stock art, fără CTA-uri cu emoji, ține un standard de calitate Linear/Stripe. Sună a preferință de design. În practică e o constrângere de inginerie.

„Fără metrici false" înseamnă că produsul nu îți poate arăta un scor de încredere pe care nu l-a calculat de fapt, sau un streak pe care îl trișează. „Fără tipare inventate" e același instinct pe care EvalGate îl impune în cod. Standardul se aplică output-ului AI-ului la fel ca interfeței — un AI care își umple răspunsurile cu umplutură care sună plauzibil e propriul lui fel de slop. A construi la acel standard e mai lent. Și exclude majoritatea scurtăturilor care fac produsele AI să pară ieftine.

E o decizie de produs legată de asta pe care am ținut-o: toate cele 17 module supraviețuiesc. Instinctul sub presiune e să tai din scop. Aici alegerea a fost inversă — mai mulți agenți în paralel la build, nu mai puțin produs. Dacă a fost înțelept o va judeca lansarea.

Auto-review adversarial

Partea de care mă bucur cel mai mult că am făcut-o: dezvoltarea Animei folosește o cultură de auto-review adversarial, unde trei agenți reviewer independenți caută lucrurile pe care le-aș rata. Și-au meritat locul. Pe parcursul build-ului au găsit și reparat o vulnerabilitate de injecție Cypher, un IDOR (insecure direct object reference) și curse de tip TOCTOU (time-of-check to time-of-use).

Niciuna nu e exotică. Sunt exact bug-urile pe care un solo founder care se mișcă repede le livrează fără să observe, pentru că happy path-ul merge și demo-ul arată grozav. Niște revieweri al căror singur job e să presupună că am greșit au prins probleme reale, exploatabile, înainte ca vreuna să ajungă la un utilizator. Mă bazez pe o variantă a asta în tot ce construiesc, despre care intru în detalii în workflow-ul meu de dev solo asistat de AI.

Stack-ul

Anima e o aplicație web-first.

  • Frontend: Next.js 15, React 19, TailwindCSS v4, Zustand, TanStack Query, TipTap pentru editor, Framer Motion.
  • Backend: Django 5.2 LTS cu DRF, Celery 5.4 pentru pipeline-ul de snapshot și munca async, Channels/Daphne pentru WebSockets.
  • Date & AI: PostgreSQL 16, Redis 7, ChromaDB cu LangChain pentru retrieval, plus gateway-ul LLM multi-provider.
  • Auth/DB: Supabase.
  • Infra: Ubuntu bare-metal în spatele Nginx și systemd, Cloudflare în față, Sentry pentru erori, gitleaks și Playwright în CI.

Forma e deliberată: Django și Celery fac munca durabilă, programată, server-side; Next.js deține experiența; stratul AI e un serviciu pe care restul aplicației îl apelează, nu lucrul în jurul căruia e construită aplicația.

Unde se află și ce urmează

Status onest: Anima e un MVP în beta privat. Landing page-ul o spune clar — „Private beta · Invite-only · 2026" și „No public signup yet". Versiunea aplicației e 0.1.0. Nu e lansată și nu o să pretind altceva.

Ce e gata: wave-urile 0 până la 6, cu 469 de teste Playwright care acoperă suprafața. Produsul e cam feature-complete — cele 17 module sunt înăuntru, pipeline-ul de snapshot rulează, coach-ul funcționează, review-ul de securitate a prins cele mai urâte bug-uri.

Ce nu e: documentul de founder handoff încă listează blocaje pre-deploy nerezolvate, și nu am confirmat un deploy de producție curat. Ținta pentru beta public e 2026-08-03. Între aici și acolo e munca nesexy — închiderea acelor blocaje, întărirea deploy-ului și punerea Animei în fața unor utilizatori reali ca să aflu dacă coaching-ul cross-domain se simte la fel de util pe cât pare în capul meu.

Anima e unul dintre cele 11 produse pe care le construiesc ca solo founder. Dacă vrei să afli când se deschide beta-ul public — și să citești postmortem-ul despre dacă toate astea au rezistat — abonează-te la newsletter.

AIRAGDjangoNext.jsLLMCelery
Distribuie articolul