Memory

Extracted decision rules, logic, and agent learning from source documents — organized, searchable, and visualized as a knowledge graph.

Why Use Memory?

AI agents encode learned behavior in rules, thresholds, and decision paths. The Memory module makes this implicit knowledge explicit and auditable, letting you inspect exactly how your agents decide.

📖 Rule Library

Browse every extracted rule with filters by action, product, risk category, and threshold type. Full-text search and inline editing.

🛑 Hard Stop Detection

Automatically surface unmitigated decline rules — the "absolute no" decisions with no available workarounds.

Decision Quality

Categorize rules as aligned, divergent, or partial. Spot soft thresholds and conflicting logic across risk factors.

🕸 Knowledge Graph

Visualize how risk factors, rules, outcomes, mitigants, and sources connect in an interactive D3 force-directed graph.

Quick Start

Get your rule extractions into AXIS in three steps:

1

Navigate to Memory

Click Memory in the left sidebar. If no data is loaded, you will see the upload screen with expected column hints.

2

Upload Rule Extractions CSV

Drag a CSV into the upload zone. By default, required columns are: id, rule_name, action, batch_id, ingestion_status. Additional columns like risk_category, risk_factor, product_type, mitigants, and threshold_type enrich the dashboard but are optional. Column names are configurable via memory.yaml.

3

Explore the Dashboard

Once data loads, the summary KPI strip, charts, and five tabs populate automatically. Use filters to slice by action, product, or risk category.

💡 Tip
The Knowledge Graph tab works independently of CSV data. It connects to FalkorDB to display graph-structured rule relationships, even before you upload any CSV.

Page Anatomy

Here is how the Memory dashboard is organized, with every major section labeled:

localhost:3500/memory

Memory

Extracted decision rules, logic, and agent learning

Start Over
1
73
Rules
18
Risk Factors
34
Mitigants
12
Hard Stops
2

Rules by Action

Approve 28 Decline 18 Verify 14 Refer 8 Exclude 5

Rules by Product

73 rules Commercial 35% Personal 25% Auto 20%
3
Rules
Decision Quality
Hard Stops
Knowledge Graph
Batches
4
Rule NameActionRisk FactorProductStatus
Max Loan-to-Value Check decline LTV Ratio Commercial ingested
Credit Score Floor verify Credit Score Personal ingested
Response Time SLA approve SLA Compliance Enterprise ingested
5
The Memory dashboard showing the full page anatomy — header, KPI strip, summary charts, tab bar, and rules table.
1
Page Header — Brain icon, title, subtitle, and "Start Over" button to clear data and return to the upload screen.
2
Summary KPI Strip — Four compact cards showing total Rules, Risk Factors, Mitigants, and Hard Stops at a glance.
3
Summary Charts — "Rules by Action" horizontal bar chart and "Rules by Product" donut chart, side by side. A conflict banner appears below if contradictory actions are detected.
4
Tab Bar — Switch between Rules, Decision Quality, Hard Stops, Knowledge Graph, and Batches. Each tab has its own icon.
5
Active Tab Content — The main content area changes based on the selected tab. The Rules tab (default) shows a filterable, sortable, paginated table.

Summary Strip

The summary strip appears at the top of the dashboard whenever CSV data is loaded. It includes two sections:

KPI Cards

Four compact inline cards using the standard AXIS KPI pattern — icon on the left, bold value and label on the right:

  • Rules — total count of extracted rules
  • Risk Factors — unique risk factors across all rules
  • Mitigants — total mitigants available across the rule set
  • Hard Stops — unmitigated decline rules (red-tinted icon)

Charts

Two side-by-side charts provide a distribution overview:

  • Rules by Action — horizontal bar chart grouped by action type (approve, decline, verify, refer, exclude). Color-coded using the AXIS chart palette.
  • Rules by Product — donut chart breaking down rules by product type. The center annotation shows the total count.
ℹ️ Info
If the data contains risk factors with contradictory actions (e.g., the same risk factor triggers both "decline" and "approve with conditions"), an amber conflict banner appears below the charts showing the conflict count.

Rules Tab

The default tab. Displays every extracted rule in a sortable table with multi-facet filtering and inline CRUD operations.

Filters

The filter bar sits above the table with dropdown selects for each dimension:

FilterRoleDefault ColumnExample Values
Actionactionactionapprove, decline, verify, refer, exclude
Productproductproduct_typecommercial, personal, auto, all
Risk Categorycategoryrisk_categorycredit, operational, market, compliance
Thresholdthreshold_typethreshold_typehard, soft
Statusstatusingestion_statusingested, pending, failed

Filters are configurable via filter_roles in memory.yaml. The order in the YAML list determines the order in the UI. A Clear button appears when any filter is active. Changing a filter resets pagination to page 1.

Table Columns

Click any column header to sort ascending/descending:

  • Rule Name — the primary identifier. Click the row chevron to expand and see the full decision path diagram.
  • Action — color-coded badge (approve=green, decline=red, verify=yellow, etc.)
  • Risk Factor / Risk Category — what the rule evaluates
  • Product Type — which product line the rule applies to
  • Mitigants — comma-separated list of available mitigating actions
  • Status — ingestion status dot (green=ingested, gray=pending, red=failed)
  • Actions — edit (pencil) and delete (trash) icons for inline CRUD

Pagination

The table shows 15 rules per page. Pagination controls appear at the bottom with pill-style page buttons. At most 5 page buttons are visible, centered around the current page. A "Showing X-Y of Z rules" label sits on the left.

💡 Tip
Expand any rule row to see the Decision Path Diagram — a visual flow showing the rule's condition chain from risk factor through threshold to action and mitigants.

Hard Stops Tab

Hard stops are rules matching the configured hard_stops.action_value (default: decline) with zero mitigants — absolute refusals with no workaround. This tab isolates them for focused review. Both the action value and mitigant requirement are configurable in memory.yaml.

Hard Stops Tab

12 hard stop rules — unmitigated declines with no available mitigants

Sanctions List Match
sanctions_check / compliance / commercial
Application is automatically declined if the applicant appears on any government sanctions list.
Threshold: hard
Fraud Flag Active
fraud_indicator / operational / all
Any active fraud flag triggers an immediate hard decline. No manual override is permitted.
Threshold: hard Compound: multi-signal
Hard Stops tab showing severity cards with red left-accent border, description, and metadata tags in a two-column grid.

Card anatomy:

  • Red left accent borderborder-l-4 border-l-red-400 on a white background (no all-red styling)
  • Octagon X icon — red-tinted stop sign icon
  • Title — the rule name in semibold neutral text
  • Metadata linegroup_by / category / product role values
  • Description — the outcome_description field, line-clamped to 3 lines
  • Tags — threshold type (gray pill) and compound trigger (red-50 pill) when present

Cards are paginated at 10 per page in a two-column grid.

Decision Quality Tab

This tab categorizes rules by how well they align with expected decision logic, displayed in scrollable column cards.

Decision Quality Tab
Aligned 42
Debt-to-Income Ratio
DTI / personal
approve
Collateral Valuation
property_value / commercial
approve
...scrollable (max-h: 500px)
Divergent 8
Industry Exclusion Override
industry_type / commercial
refer
Conflicting LTV Guidance
LTV / personal
decline
Partial 23
Employment Verification
Partially matches expected logic
Asset Documentation
Partially matches expected logic
Decision Quality tab with Aligned (green), Divergent (amber), and Partial (gray) columns. Each column is scrollable with max-height.

Three categories:

  • Aligned — rules that match expected decision logic. Green check icon, count badge.
  • Divergent — rules that contradict expected patterns. Amber warning icon. These need review.
  • Partial — rules with incomplete alignment. Gray minus icon, displayed in a 2-column grid.

Each column has a max-h-[500px] scroll container. Below the main columns, a Soft Thresholds table lists rules with threshold_type: soft, showing rule name, risk factor, threshold value, and action.

Batches Tab

Tracks ingestion pipeline history. Each batch card shows progress and risk category coverage.

Batches Tab

Pipeline batch history and ingestion progress.

a3f8c2d1...
Feb 9, 2026 10:30 AM
73
rules
Ingestion Progress96%
70 ingested 1 pending 2 failed
credit operational compliance market
Batch card showing pipeline ID, timestamp, rule count, stacked progress bar (green/gray/red), status counts, and risk category tags.

Batch card anatomy:

  • Batch ID — truncated batch_id with a Layers icon
  • Created date — earliest created_at timestamp in the batch
  • Rule count — total rules in the batch (right-aligned)
  • Progress bar — stacked bar with green (ingested), gray (pending), red (failed) segments and percentage label
  • Status counts — color-coded count labels below the bar
  • Risk categories — blue pill tags showing all unique risk categories in the batch

Batches are listed in a scrollable container (max-h-[600px]).

Knowledge Graph Tab

The Knowledge Graph tab connects to FalkorDB to visualize how rules, risk factors, outcomes, mitigants, and sources relate to each other in an interactive force-directed graph.

Knowledge Graph Tab
18
Risk Factors
73
Rules
45
Outcomes
34
Mitigants
5
Sources
Search nodes...
All Types ▾
Source LTV Ratio Credit Score Max LTV Check Credit Floor Score Verify Decline Approve Co-signer Manual Review
Risk Factor Rule Outcome Mitigant Source
Knowledge Graph showing the D3 force-directed graph with color-coded node types, search bar, type filter, and stats strip.

Graph Controls

  • Search bar — fuzzy-search across node labels. Matching nodes highlight and the graph centers on them.
  • Type filter — dropdown to filter by node type: All Types, Risk Factors, Rules, Outcomes, Mitigants, Sources.
  • Zoom & pan — scroll to zoom, drag to pan the canvas.
  • Click a node — opens the detail panel on the right side showing node properties, connected edges, and neighbor traversal.

Node Types

TypeColorDescription
RiskFactor RedWhat the rule evaluates (e.g., LTV Ratio, Credit Score)
Rule BlueIndividual decision rules
Outcome GreenDecision outcomes (approve, decline, etc.)
Mitigant PurpleAvailable mitigating actions
Source AmberData sources (policy documents, databases)
ℹ️ Info
The Knowledge Graph requires FalkorDB running on port 6379. Configure the connection in Settings → Database with graph_db_host, graph_db_port, graph_db_name, and graph_db_password.

Node Detail Panel

When you click a node, a 288px-wide panel slides in from the right showing:

  • Node label and type — with the type-colored icon
  • Properties — all key-value pairs stored on the node
  • Connected edges — list of relationships (e.g., "EVALUATES", "MITIGATES", "PRODUCES")
  • Neighbor traversal — click a connected node to navigate to it

Data Format

The Memory module expects a CSV with rule extraction records. Column names are mapped to internal roles via the field_roles setting in memory.yaml. The defaults below match the standard column names.

Required Columns (default names)

These columns must exist in your CSV. Upload fails with a descriptive error if any are missing. The required set is configurable via required_roles.

id, rule_name, action, batch_id, ingestion_status

Recommended Columns

These columns are optional but enrich the dashboard significantly. If all are empty across your dataset, a warning banner appears on the Memory page.

risk_category, risk_factor, product_type, mitigants, threshold_type

Additional Optional Columns

outcome_description, threshold, compound_trigger, confidence,
decision_quality, created_at, agent_name, source, source_type,
historical_exceptions, data_fields, ingestion_error, ingested_at

Custom Column Names

If your CSV uses different column names, map them in memory.yaml:

# memory.yaml
memory:
  field_roles:
    category: compliance_area     # your column → "category" role
    group_by: risk_dimension      # your column → "group_by" role
    product: line_of_business     # your column → "product" role

Example Row

id,rule_name,action,risk_category,risk_factor,product_type,mitigants,threshold_type,outcome_description,decision_quality,batch_id,ingestion_status
R001,Max LTV Check,decline,credit,LTV Ratio,commercial,"",hard,"Decline if LTV exceeds 80%",aligned,a3f8c2d1,ingested
⚠️ Warning
The mitigants column (configurable via field_roles) should be a comma-separated list, or empty for hard stops. By default, rules with action: decline and an empty mitigants field are classified as hard stops. These thresholds are configurable via the hard_stops setting.

Key Field Values

The values below are the defaults. Each can be customized in memory.yaml under quality_values, hard_stops, and soft_threshold_value.

RoleDefault ColumnDefault ValuesUsed By
actionactionapprove, decline, verify, refer, exclude, approve_with_conditionsRules tab badges, summary charts, hard stop detection
threshold_typethreshold_typehard, softDecision Quality soft threshold table
qualitydecision_qualityaligned, divergent, partialDecision Quality tab categorization
statusingestion_statusingested, pending, failedRules tab status dot, Batches progress bar

Configuration

The Memory module is fully configurable via backend/config/memory.yaml. No config file is needed for the default column names — every setting has a sensible default.

What You Can Customize

SettingWhat It Controls
field_rolesMaps your CSV column names to internal role names (e.g., compliance_areacategory)
required_rolesWhich roles must be present in uploads (fails with clear error if missing)
labelsDisplay labels for filter dropdowns and table headers
filter_rolesWhich roles appear as filter dropdowns (and their order)
list_fieldsWhich roles contain comma-separated list data
hard_stopsAction value and mitigant requirement for hard stop detection
quality_valuesValues for aligned, divergent, and partial categorization
action_colorsColors for action badges in summary charts
contradictory_pairsAction pairs that trigger the conflict detection banner

Quick Example

If your CSV has columns compliance_area, risk_dimension, and line_of_business instead of the defaults:

# backend/config/memory.yaml
memory:
  field_roles:
    category: compliance_area
    group_by: risk_dimension
    product: line_of_business
  labels:
    category: Compliance Area
    group_by: Risk Dimension
    product: Line of Business
  filter_roles: [action, product, category, status]
💡 Tip
See the YAML Config Reference for the full schema and field descriptions. Copy memory.yaml.example to memory.yaml to get started.

Next Steps

AXIS Documentation · Built with MkDocs Material