CoolFace
Modelpublic

RYVR/qwen3-32b-cfo-brain-lora

sourceHugging Faceapache-2.0updated 2mo agoView on Hugging Face
0likes10downloads
Model Card

Qwen3-32B CFO Brain (LoRA) — v1

A LoRA adapter for Qwen/Qwen3-32B, fine-tuned as a CFO-office advisory brain for Indian mid-market companies: interpreting financial numbers for business owners, working-capital and cash-flow diagnosis, capex and financing decisions, budget variance, export/FX readiness, pricing and margin analysis, and monthly MD-pack narratives.

Sibling of RYVR/qwen3-32b-b2b-marketing-lora (same base, same pipeline). Developed by RYVR for the Neural Infrastructure agent platform.

Design: a brain for an agent, not an analyst

This model is built for a consult architecture: an agent (or you) brings the live numbers — from Zoho Books, Tally, a spreadsheet — and the model brings the interpretation. Three trained behaviours follow from that:

  • Grounded arithmetic: every derived figure traces to the numbers in the prompt, with the formula shown inline ("DSO ≈ ₹4.2Cr ÷ ₹2.1Cr × 30 = 60 days").
  • Calibrated refusal: it will not state a current market rate (repo, MCLR, GST, FX) as today's fact — it gives the decision framework and tells you exactly what to confirm and where.
  • Pull-lists over placeholders: when a question needs data it wasn't given, it names the specific report to pull instead of assuming values.

Training data

1,926 instruction pairs — 26 hand-reviewed exemplars plus 1,900 synthetic advisory briefings from a deterministic scenario matrix (company profile × financial event × owner ask), generated with internally consistent financial snapshots and zero client-derived content. Every pair survived a five-gate gauntlet:

  1. 1.programmatic truncation gate,
  2. 2.LLM style/quality judge,
  3. 3.a dedicated math verifier that recomputes every derived figure,
  4. 4.a second independent verifier for comparison logic, completeness-vs-ask, calibration strictness, and hedging (AND-vote with #3),
  5. 5.a blinded 100-sample CFO audit panel (ship gate ≥ 90/100; final round scored 91).

Evaluation

38 hand-written, never-in-training prompts; blind pairwise judging (4 independent judges, randomized A/B, identities hidden); both models generated on identical hardware.

TestQwen3-32B base**This adapter**
Scenario advisory quality (mean, 0–10)3.795.50
Head-to-head win rate vs base (24 scenarios)75% (18W/6L)
Fabrication traps passed (metric not computable from given data)2/43/4
Calibration probes passed (current-rate questions)5/108/10
Brand/data leaks00

How to use

Recommended: run with thinking disabled (the adapter was trained in non-thinking mode) and this system prompt:

You are a seasoned fractional CFO advising Indian mid-market companies. Ground every derived figure in the client's actual numbers, hedge time-sensitive rates with 'confirm current', and give frameworks plus pull-lists when live data is required.

🤗 PEFT + Transformers

python
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import PeftModel

base_id = "Qwen/Qwen3-32B"
adapter_id = "RYVR/qwen3-32b-cfo-brain-lora"

tokenizer = AutoTokenizer.from_pretrained(adapter_id)
model = AutoModelForCausalLM.from_pretrained(base_id, torch_dtype="auto", device_map="auto")
model = PeftModel.from_pretrained(model, adapter_id)

SYSTEM = ("You are a seasoned fractional CFO advising Indian mid-market companies. "
          "Ground every derived figure in the client's actual numbers, hedge time-sensitive "
          "rates with 'confirm current', and give frameworks plus pull-lists when live data is required.")

question = """My Zoho cash flow confuses me: net profit ₹34L but cash went DOWN ₹28L
the same month. Receivables up ₹41L, inventory up ₹19L, payables up ₹12L,
loan EMI principal ₹14L. Explain what happened in plain language."""

messages = [{"role": "system", "content": SYSTEM},
            {"role": "user", "content": question}]
inputs = tokenizer.apply_chat_template(messages, add_generation_prompt=True,
                                       enable_thinking=False, return_tensors="pt").to(model.device)
outputs = model.generate(inputs, max_new_tokens=1500, temperature=0.4, top_p=0.9)
print(tokenizer.decode(outputs[0][inputs.shape[1]:], skip_special_tokens=True))

vLLM (LoRA runtime)

bash
vllm serve Qwen/Qwen3-32B --enable-lora \
  --lora-modules cfo-brain=RYVR/qwen3-32b-cfo-brain-lora

Limitations

  • India-centric: framing assumes GST, RBI policy context, Companies Act norms, and ₹ (Cr/L) conventions. Non-India scenarios were deliberately deferred.
  • Not financial, tax, or investment advice — an analytical reading of the numbers you provide, for decision support. Verify derived figures and consult a qualified professional before acting.
  • No live data: any rate, threshold, or rule it names is training-era knowledge and is deliberately hedged with "confirm current" — that hedge is a feature; treat unhedged rates as a bug.
  • English only. Best with real numbers in the prompt; vague prompts get frameworks, not magic.

Training details

  • LoRA r=16, α=32, dropout 0.05, 2 epochs (~3.8M tokens/epoch), supervised fine-tuning on Fireworks AI
  • Final training loss (EMA): 1.08
  • Trained in non-thinking chat format