> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tight.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Leveraging 1.3M+ SMBs

> AI-powered transaction categorization that learns from 1.3M+ SMBs' worth of data

[Tight's AI-first architecture](/ai/philosophy/ai-native-general-ledger#creating-an-ai-native-architecture) has the benefit of learning from the behaviors of the 1.3M+ SMBs and 3k+ bookkeepers that have used Tight to categorize their transactions.

Given the importance of seeing real bookkeeper categorization behavior, Tight has the distinct advantage of being able to combine the latest in AI/learning technology with (anonymized) data from the 1.3M+ SMBs in the Tight database, all already segmented by business type so that all learnings are properly contextualized.

## New Transaction Ingestion Flow

```mermaid theme={null}
flowchart TD
    Start([New Transaction Ingested]) --> ReconciliationEngine

    subgraph ReconciliationEngine[**Tight Reconciliation Engine**]
        MatchEntity{"Transaction reconciled as <br/>• Bank Transfer<br/>• Bill (A/P) Payment<br/>• Expense<br/>• Invoice (A/R) Payment<br/>• Payout<br/>• Refund<br/>• Revenue<br/>• Tax Payment<br/>"}
        MatchEntity -->|Yes|SetReconciled[Set reviewStatus = RECONCILED]
        MatchEntity ~~~ ToRules[ ]
    end

    ToRules ~~~ RuleEngine
    MatchEntity -->|No|BizRule

    subgraph RuleEngine[**Tight Rules Engine**]
        BizRule{Check against<br/>business-level rules}
        BizRule -->|Match found|ApplyRule[Apply rule and set reviewStatus based on confidence level]
        BizRule -->|No match|CPRule{Check against<br/>Partner-level rules based on business type}
        CPRule -->|Match found|ApplyRule
        CPRule -->|No match|TightLevelRule{Check against<br/>Tight-level rules based on 1.3M+ SMBs and 3k+ bookkeepers}
        TightLevelRule -->|Match found|ApplyRule
    end

    TightLevelRule -->|No match|Done
    ApplyRule --> Done

    SetReconciled --> Done
    Done([Done])

    style MatchEntity fill:#caecf3,color:#000000
    style ReconciliationEngine fill:#f8f9f9,color:#000000
    style RuleEngine fill:#f8f9f9,color:#000000
    style BizRule fill:#caecf3,color:#000000
    style CPRule fill:#caecf3,color:#000000
    style TightLevelRule fill:#caecf3,color:#000000
    style Start fill:#e1f5e1,color:#000000
    style Done fill:#bfe6dc,color:#000000
    style SetReconciled fill:#d7fce9,color:#000000
    style ApplyRule fill:#d7fce9,color:#000000
    style ToRules fill:none,stroke:none,color:#000000
```

## Rule Insertion Flow

As Tight adjusts its heuristics to leverage the latest in rapidly evolving AI technologies, it reruns the user/bookkeeper actions taken upon the transactions of 1.3M SMBs in order to retrain the Tight Rules Engine:

```mermaid theme={null}
flowchart TD
    Start([Transaction Edited]) --> BusinessLearning

    subgraph BusinessLearning[**Business-level Learning**]
        BizCheck{Check confidence against conflicting rules for similar transactions within the business}
        BizCheck -->|High confidence against conflicting rule| UpdateRule[Update rule to<br/>automate user's edit]
        BizCheck -->|No conflicting rule| InsertBizRule[Insert business-level rule<br/>to automate user's edit]
    end
    BizCheck --> |Low confidence with conflicting rule| QueueForPotentialLearning[Queue for potential<br/>future learning]


    InsertBizRule --> PartnerLearning
    UpdateRule --> PartnerLearning

    subgraph PartnerLearning[**Partner-level Learning**]
        PartnerCheck{Check confidence against rules for similar businesses within the given Partner}
        PartnerCheck -->|High confidence| InsertPartnerRule[Insert Partner-level rule<br/>to automate edit for all users]
        PartnerCheck -->|Low confidence| NoPartnerRule[No Partner-level rule needed]
    end

    InsertPartnerRule --> TightLearning
    NoPartnerRule --> Done

    subgraph TightLearning[**Tight-level Learning**]
        TightCheck{Check confidence against rules for all Partners within the Tight database}
        TightCheck -->|High confidence| InsertTightRule[Insert Tight-level rule<br/>to automate edit for all partners]
        TightCheck -->|Low confidence| NoTightRule[No Tight-level rule needed]
    end

    QueueForPotentialLearning --> Done

    InsertTightRule --> Done
    NoTightRule --> Done


    Done([Learning Complete])

    style Start fill:#e1f5e1,color:#000000
    style Done fill:#bfe6dc,color:#000000
    style BizCheck fill:#caecf3,color:#000000
    style PartnerCheck fill:#caecf3,color:#000000
    style TightCheck fill:#caecf3,color:#000000
    style BusinessLearning fill:#f8f9f9,color:#000000
    style PartnerLearning fill:#f8f9f9,color:#000000
    style TightLearning fill:#f8f9f9,color:#000000
    style UpdateRule fill:#d7fce9,color:#000000
    style InsertBizRule fill:#d7fce9,color:#000000
    style InsertPartnerRule fill:#d7fce9,color:#000000
    style InsertTightRule fill:#d7fce9,color:#000000
    style NoPartnerRule fill:#d7fce9,color:#000000
    style QueueForPotentialLearning fill:#d7fce9,color:#000000
    style NoTightRule fill:#d7fce9,color:#000000
```

The flows above give a high-level overview into how Tight is able to leverage its history to provide the best categorization outcomes. These outcomes get smarter every day.<br /><br />The specific types of rules that Tight creates are proprietary, evolve regularly, and have been purposefully excluded from the above diagrams.
<Tip>Any given transaction can be audited via the API and Embeddable UI so that your team or your user can understand why a given transaction was categorized a specific way.</Tip>
