FIG — Finaisse Intelligence Graph (Design)
| Owner | Classification | Status | Verified against code |
|---|---|---|---|
| Kris (product) · reviewers: Canny, Raj | Internal | Design — pre-build | 2026-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
GATESmap). That's why Close anchors v1.
3. The five-layer architecture
| Layer | Contents | Source |
|---|---|---|
| L0 — Spine | Period, business entity, the tenant frame | finbase |
| L1 — Masters | ~150 customers / ~100 vendors / ~115 tasks | module masters |
| L2 — Transactions | bank items, AR items, invoices, JVs | module txn tables |
| L3 — Intelligence edges | real engine decisions projected as edges | intelligencelog |
| L4 — Activation | scoring, colouring, provenance overlay, learned-edge styling, the Finni graph tool | Materiality / 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
classicmlrunning 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, writinginvoiceprocessingmetrics.fraudriskscore / .fraudriskreasons / .materialitytierplus an aggregateintelligencelogrow. What's missing is thefig.*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 fromintelligencelog. - The log enriches edges, it does not reliably contain them — a sampled
payment-matchingdecision 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
runfigprojectionworkflow: P1 structural · P2 provenance · P3 learned · P4GATES.
7. The four gaps → the coordinated seed
- Task-dependency DAG — corrected/populated (23 deps; rollover
createdependenciesran). - AP invoice → Period has no FK — derive from
invoicedate. GATESmap is net-new (~10–20 rows).- No unified GL account — recon is canonical (see FIG Data Setup).
- (added 2026-08-03) period-metrics snapshots historically unseeded. Note:
cash.collectionmonthlymetricsnow has a producer — thecalculatecollectionmetricsworkflow, a step inruncollectionprocess(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
| Date | Change |
|---|---|
| 2026-09-15 | Ported from Z FINAISSE-FIG-DESIGN; kept design-stage tag; folded in the shipped invoice leaf and the two-tier anomaly clarification. |