Field notes|6 min read

    Connecting LLMs to FP&A

    A finance lead asks Claude for Q1 ARR by entity and gets her real numbers back. A note on what it took to make that safe, useful, and consistent with the rest of the Novaplan data layer.

    Leo Tsytrinbaum
    Leo Tsytrinbaum

    A finance lead I work with opened Claude on her laptop last week and typed, what is our ARR and net new ARR for Q1, by entity? A few seconds later, the answer came back. Real numbers. Hers. Not a hallucination, not a guess from a public filing, not a polished demo answer that fell apart on the second question. The actual Q1 figures, broken out by entity, pulled live from her data.

    She did not log into Novaplan to ask. She did not export a CSV. She asked Claude, the same chat window she already had open for everything else in her day. Novaplan was on the other end of the connection, doing the part Claude cannot do on its own.

    That moment is the entire point of the work we just shipped, and it is worth a few words on what is actually under the hood, because the surface looks deceptively simple.

    Why connecting an LLM to finance is the hard part

    Everyone in this category is shipping an AI assistant. Most of them ship it as a chat box inside their own product. The bet there is that you will come to their tool to ask questions. The honest read of how finance teams actually work is that the chat window they already trust is the one their engineering team uses every day. Claude. Cursor. ChatGPT. The browser tab that is already open.

    So the right question is not how to build a better chat box. It is how to let the chat window you already trust see your real numbers, under your real permissions, without handing it a copy of the database.

    AI is only useful in finance when it can see your real numbers, under your real rules, and answer a question your CFO would actually ask.

    What "connect" actually means

    A connector that just exposes your tables to an LLM is not safe and it is not useful. Not safe, because the LLM can read salary data the asker should not see. Not useful, because raw tables do not answer finance questions. A real connector has to do three things at once.

    01

    Respect who is asking

    Every call carries the user's identity and role. Salary, vendor detail, and confidential GL lines are masked when the caller would not see them inside Novaplan. The LLM never gets access the human would not have.

    02

    Speak the business model

    The connector does not expose raw SQL. It exposes curated, read-only tools that already know your hierarchy, your fiscal calendar, your entities, and your account taxonomy. The model asks for ARR by entity. The tool returns ARR by entity.

    03

    Leave a paper trail

    Every call is logged. Who asked, which tool, which scope, what came back, how long it took. The audit log is the same one your security team already reviews. AI does not get a side channel.

    Those three pieces are not optional. Skip any one of them and you have a demo, not a production system. We spent more time on those than on the chat experience itself.

    How it actually works

    Under the hood, Novaplan now speaks the Model Context Protocol. MCP is the open standard that lets an LLM client (Claude, Cursor, ChatGPT) talk to an external system through a defined set of tools, with the user's permission. You connect Claude to Novaplan once. From then on, Claude can call our curated tools on your behalf, with your role attached to every request.

    The tools themselves are the same engine that powers the Novaplan product. Headcount variance, GL drill-down, scenario comparison, ARR roll-ups, departmental burn. When you ask Claude a finance question, it figures out which tool to call, calls it, gets a structured answer, and explains it back to you in plain English. The same field-level masking that protects salary data inside Novaplan applies on every call. The same role gates that govern who can see vendor detail apply on every call. The connector inherits everything.

    0

    Copies of your data we hand to the LLM.

    Every answer is computed live, on your data layer, under your permissions. Nothing is staged. Nothing is cached on the model side.

    What this changes

    The product behavior people notice first is small and big at the same time. The finance lead I mentioned at the top is not opening a separate tool to ask a question. She is already in Claude, already in flow. Now Claude is allowed to know the answer.

    The second-order effect is the one we are watching more carefully. Engineering teams that use Cursor every day can now ask Cursor about the company's burn rate while they are writing code, with the same permissions their finance lead has set for them. CFOs can ask ChatGPT about variance drivers from their phone. The artificial wall between "finance tools" and "everyday tools" stops being a wall.

    And because the connector is the same data layer that powers Novaplan, the answers are consistent. Ask in Claude, ask in the Novaplan UI, ask through a Slack bot we wire up later. Same number, same lineage, same audit trail. That is the part we think actually matters, and it is only possible because the data layer was built first and the AI sits on top of it.

    The bar we are holding ourselves to

    We are deliberately conservative on what an LLM can change. Today the tool catalog is read-only - no writes to plans, no edits to scenarios, no approval flows through an LLM. The guardrails that will gate writes when they ship are already in place: an org-level kill switch off by default, per-tool admin grants resolved per role and per user, and an opt-in write flag on every token at mint time. The model never gets a side door.

    What you get today is the ability to ask any question your role permits, get an answer grounded in your real numbers, and click through to the underlying rows to verify. That is enough to change the texture of the workday for the finance leads using it. When the first write tools ship - drafting a scenario, proposing a reforecast - they will land behind the same role-by-role admin grants the read tools already use.

    If your team already lives in Claude or Cursor and you have been waiting for the finance data to catch up, this is the bridge. Talk to us if you want to try it.

    Leo Tsytrinbaum
    Leo Tsytrinbaum | Founder, Novaplan

    Previously ran BI teams, shipped AI in production at Fortune-scale, and co-founded an agentic-AI platform from zero. Building the FP&A stack my old teams never had.