Vault / Specs

cfohub.ai — Analyst Agent MVP (code-interpreting)

Spec v0.1 — 12 sept 2026. Scop: replică pattern-ul Apodex („Environment Scaling") pe cfohub.ai, ca arhitectură, nu ca model.

Problema

Un CFO nu vrea un chatbot care „rezumă" documente. Vrea analiză pe cifre: variance, growth, top drivers, rate. cfohub.ai azi face RAG pe documente (LLM local + Docling + Dify). Îi lipsește exact partea care dă valoare unui CFO: un agent care scrie și rulează cod pe date și întoarce concluzii cu dovezi.

Ce construim (o frază)

Un agent care ia un CSV/Excel de la utilizator, rulează analize Python într-un sandbox izolat, și întoarce un raport în care fiecare concluzie e susținută de o cifră și o sursă (tabel/rând).

Arhitectura — 3 componente

CSV/Excel ──► Sandbox (Python + pandas + duckdb, read-only)
                  ▲                │
                  │ execuție       │ output
                  │                ▼
              Agent loop ◄── LLM (DeepSeek via LiteLLM)
                  │
                  ▼
              Checkpoint (stare intermediară → parquet)
  1. Sandbox de execuție — container Docker izolat, fără egress de rețea, mount read-only pe fișierul de date, output scris doar în volumul lui. Timeout pe execuție (ex: 120s), cap pe dimensiune fișier (ex: 100MB). Asta e „four walls" — datele CFO nu pleacă nicăieri.

  2. Agent loop — LLM propune plan → scrie Python → rulează în sandbox → citește output/eroare → decide pasul următor. Plafon de iterații (ex: 10) ca să nu bucleze. LLM-ul e worker, sandbox-ul + verificarea rezultatului sunt verifier (regula ta: nu împart context).

  3. Checkpointing — după fiecare pas de succes, dataframe-ul curățat/transformarea se salvează ca parquet. Dacă intervii sau un pas eșuează, se replanifică doar partea afectată, nu se repornește tot. Ăsta e singurul lucru „nou" furat de la Apodex.

Analize standard MVP (astea le vrea un CFO, nu inventa altele)

  1. Variance analysis — actual vs buget/anterior, în valoare și %
  2. Growth — MoM și YoY pe metricile cheie
  3. Top drivers — contribuția fiecărui element la variația totală (waterfall)
  4. Rate de bază — gross margin, operating margin, net margin

Raportul de ieșire

Markdown, fiecare concluzie = o cifră + sursa. Exemplu:

Gross margin a scăzut 3.2pp (Q2 41.8% → Q3 38.6%). Driver principal: costuri materii prime +11% (vezi tabel COGS, rând 17), nu prețurile de vânzare.

Zero concluzie fără cifră. Zero cifră fără sursă.

Tech stack recomandat

Componentă Alegere De ce
Sandbox container Python slim + pandas + duckdb duckdb > pandas pe fișiere mari, ai deja totul
Execuție FastAPI endpoint (sau MCP) expus de sandbox simplu, self-hosted
LLM DeepSeek via LiteLLM (ai deja proxy-ul) fără costuri noi de infra
Checkpoint parquet pe disk local zero dependențe noi
Intrarea documentelor Docling (deja în stack) scoate tabelele din PDF/Excel înainte de analiză

Ce ai deja (nu reconstrui)

Ce lipsește (ăsta e proiectul)

  1. Sandbox-ul izolat + endpoint de execuție
  2. Loop-ul agent (LLM ↔ sandbox)
  3. Checkpointing-ul
  4. Prompt-ul de planificare + cele 4 analize

MVP scope — 2-3 săptămâni

Ce NU faci (scope cut — scrie negru pe alb)

Verdict de poziționare

„Reasoning out of the report, into executing real tasks" e fix pitch-ul corect pentru cfohub.ai. Asta diferențiază un SaaS de CFO de un wrapper peste ChatGPT. Merită construit — dar e un proiect nou, nu o extensie de weekend. 2-3 săptămâni, single-tenant, pe datele unui singur CFO care acceptă să fie tester.