Skip to content
Last updated: Sep 25, 2026

FIG — Finaisse Intelligence Graph (Design) ​

OwnerClassificationStatusVerified against code
Kris (product) · reviewers: Canny, RajInternalDesign — pre-build2026-09-15 (fig.* schema absent)

Status. No FIG code exists yet — the fig.* schema is absent. This is a build spec. The data leaf it depends on (invoice assess services) has shipped; what's missing is the graph rollup, not the underlying signals. Everything here is ◯ unless noted.

The Connect faculty. FIG is Finaisse's Connect faculty — the connective brain that ties each app's intelligence into one cross-entity picture. It is a sibling of the Predict/Detect faculty (classicml), not a container for it.


1. The reframe ​

FIG is not a data-collection problem — it is a projection + traversal + render problem over data that already exists. That makes it cheaper to demo than Anomaly (needs ML training) or Materiality (needs scoring), and it overturns the older strategy doc's "Tier C, skip, slides-only" verdict.

2. One graph, many lenses ​

A single per-tenant graph — fig.entity + fig.relationship — where FinHub and each app are lenses, not separate graphs.

  • v1 scope: Cash (AR) + Close + AP.
  • Wave 2: Recon + Collections + Journal.
  • Close is the keystone. Cash (AR) and AP share no node directly — they connect only through Period (the temporal hub) and Close tasks (the operational hub, via a GATES map). That's why Close anchors v1.

3. The five-layer architecture ​

LayerContentsSource
L0 — SpinePeriod, business entity, the tenant framefinbase
L1 — Masters~150 customers / ~100 vendors / ~115 tasksmodule masters
L2 — Transactionsbank items, AR items, invoices, JVsmodule txn tables
L3 — Intelligence edgesreal engine decisions projected as edgesintelligencelog
L4 — Activationscoring, colouring, provenance overlay, learned-edge styling, the Finni graph toolMateriality / Anomaly / Finni / Learning Fabric plug in here

L4 is where the other faculties attach. Node scores decorate the graph; they are not part of the graph structure.

4. Two tiers of "system-level" anomaly ​

A precision the older docs lacked (clarified 2026-09-13):

  • Rollup anomaly — aggregate leaf scores up the graph. Pure L4 projection; no new ML.
  • Emergent anomaly — velocity spikes, structuring, shared-bank-account rings, concentration. Needs classicml running on FIG nodes.

The genuine system-level "anomaly engine" is the FIG + classicml node layer, not a per-transaction service. Per-transaction detectors keep their Anomaly * names (anomaly is an axis feeding fraud-risk; it is not renamed to "Fraud Signal").

The leaf is already built (✅, 2026-09-13). On invoice, the BPD assess chain runs materialityclassification + 5 detectors (roundamount / newsupplierhighvalue / materialityjump / bankchange / duplicatesimilar) + fraudriskscorewriter, writing invoiceprocessingmetrics.fraudriskscore / .fraudriskreasons / .materialitytier plus an aggregate intelligencelog row. What's missing is the fig.* rollup, not the leaf.

5. The connectivity + provenance contract ​

  • Project edges from the structural source (FK / junction table, e.g. masterbankitems_companyledger); attach confidence/reasoning from intelligencelog.
  • The log enriches edges, it does not reliably contain them — a sampled payment-matching decision JSONB was empty {}. Build the edge from structure, decorate from the log.

6. Schema sketch ​

  • fig.entity + fig.relationship, both tenant-scoped (the strategy doc's schema omitted scoping — a real gap this design fixes), with a provenance pointer per edge.
  • Traversal via recursive CTE, not ltree (extension not installed).
  • 4 projectors in a runfigprojection workflow: P1 structural · P2 provenance · P3 learned · P4 GATES.

7. The four gaps → the coordinated seed ​

  1. Task-dependency DAG — corrected/populated (23 deps; rollover createdependencies ran).
  2. AP invoice → Period has no FK — derive from invoicedate.
  3. GATES map is net-new (~10–20 rows).
  4. No unified GL account — recon is canonical (see FIG Data Setup).
  5. (added 2026-08-03) period-metrics snapshots historically unseeded. Note: cash.collectionmonthlymetricsnow has a producer — the calculatecollectionmetrics workflow, a step in runcollectionprocess (cashwf/.../calculatecollectionmetrics/workflow.ts) — so the old "no populator" note is stale; the remaining gap is snapshot coverage across periods, not the absence of a populator.

8. Demo outcomes & phasing ​

8 outcomes (O1–O8); the demo spine is O1 → O2 → O3 (connected → cross-module risk → provable "why"), with O7 (resolve-and-watch-propagate) as the stretch showstopper. Build phasing ≈ 1.5–2 weeks. Today, the FinHub "mission-control" lens is realised without the graph substrate — apps call their own services via /finhub/v1/cfo-summary → FinConnectedMap.vue.

Revision history ​

DateChange
2026-09-15Ported from Z FINAISSE-FIG-DESIGN; kept design-stage tag; folded in the shipped invoice leaf and the two-tier anomaly clarification.

Finaisse Internal — Confidential. Access-restricted; not for external distribution.