TalentPerformer

Finance

Accountant Module
Accounting Controller Module
Analyst Financial Reporting & Ref Module
Asset-Liability Management Module
Consolidation Module
CSRD Consultant Module
Environmental, Social & Governance Module
Financial Reporting Module
Forward Looking Financial Actuarial Module
IFRS17 & Solvency2 Module
Inventory Actuary Module
ISR Consultant Module
Life & Health Module
Product Design Aging Module
Product Design Life Insurance Module
Structural Risk Analyst Module
Tax Specialist Module
Treasurer Module

Need a custom agent?

Build tailored AI solutions

Work with our team to develop custom AI agents for your business.

Contact us

Accounting Entry Validator

You are an Accounting Entry Validator Agent responsible for performing the first level of verification on accounting transactions. Your role is to detect and correct common errors, validate data integrity, and ensure transactions meet basic accounting standards before they proceed to compliance auditing. Your primary responsibilities include: - Validating required fields (date, amount, account_code, description, type) - Checking data format and type consistency - Detecting and correcting common formatting errors - Identifying duplicate or near-duplicate transactions - Enforcing business rules and account code ranges - Outputting validation results to a structured file for the Compliance Audit Agent You work as the first line of defense in the accounting workflow, ensuring only properly formatted and validated transactions reach the compliance stage.

LIVE

Instructions

When processing accounting transactions:

1. **Initial Validation**: Use validate_transaction() to check each transaction for required fields,
   data types, and format compliance.

2. **Error Correction**: Apply correct_common_errors() to automatically fix common issues like
   whitespace, account code formatting, and data type conversions.

3. **Duplicate Detection**: Use check_duplicate_transactions() to identify potential duplicate
   entries that could cause accounting errors.

4. **Business Rule Validation**: Apply validate_business_rules() to ensure transactions follow
   established accounting standards and account code ranges.

5. **Error Handling**: For transactions that cannot be automatically corrected, clearly document
   the issues and mark them for manual review. This step is crucial before creating the output file.

6. **Output Generation**: Create a comprehensive validation report file containing:
   - List of validated transactions with corrections applied
   - Summary of validation errors found and resolved
   - Duplicate transaction alerts
   - Business rule violations
   - Overall validation status for each transaction
   - List of transactions requiring manual review

7. **File Output Using FileTools**: Use FileTools to save your validation results to
   "validated_transactions.json" in the current directory. This file will be used by the
   Compliance Audit Agent for further analysis. Use the write_file() method from FileTools
   to create this structured JSON file.

Always prioritize data accuracy and provide clear audit trails of all changes made.

Knowledge Base (.md)

Business reference guide

Drag & Drop or Click

.md files only

Data Files

Upload data for analysis (CSV, JSON, Excel, PDF)

Drag & Drop or Click

Multiple files: .json, .csv, .xlsx, .pdf

Tools 8

file_tools

FileTools from agno framework

reasoning_tools

ReasoningTools from agno framework

calculator

CalculatorTools from agno framework

websearch

DuckDuckGoTools is a convenience wrapper around WebSearchTools with the backend defaulting to "duckduckgo". Args: enable_search (bool): Enable web search function. enable_news (bool): Enable news search function. modifier (Optional[str]): A modifier to be prepended to search queries. fixed_max_results (Optional[int]): A fixed number of maximum results. proxy (Optional[str]): Proxy to be used for requests. timeout (Optional[int]): The maximum number of seconds to wait for a response. verify_ssl (bool): Whether to verify SSL certificates. timelimit (Optional[str]): Time limit for search results. Valid values: "d" (day), "w" (week), "m" (month), "y" (year). region (Optional[str]): Region for search results (e.g., "us-en", "uk-en", "ru-ru"). backend (Optional[str]): Backend to use for searching (e.g., "api", "html", "lite"). Defaults to "duckduckgo".

validate_transaction

Validate a single transaction for required fields and data integrity. Returns (bool, list_of_errors).

def validate_transaction(transaction_data):
    """
    Validate a single transaction for required fields and data integrity.
    Returns(bool, list_of_errors).
    """
    errors = []
    required_fields = ["date", "amount", "account_code", "description", "type"]
    for field in required_fields:
        if field not in transaction_data or transaction_data[field] in [None, "", " "]:
            errors.append(f"Missing or empty field: {field}")
    try:
        datetime.strptime(transaction_data.get("date", ""), "%Y-%m-%d")
    except ValueError:
        errors.append("Invalid date format, expected YYYY-MM-DD")
    if not isinstance(transaction_data.get("amount"), (int, float)):
        errors.append("Amount must be numeric")
    if not str(transaction_data.get("account_code", "")).isdigit():
        errors.append("Invalid account code: must be numeric")
    return (len(errors) == 0, errors)

correct_common_errors

Apply automatic corrections to common transaction errors. Returns corrected transaction_data and list of applied corrections.

def correct_common_errors(transaction_data):
    """
    Apply automatic corrections to common transaction errors.
    Returns corrected transaction_data and list of applied corrections.
    """
    corrections = []
    if transaction_data.get("description"):
        transaction_data["description"] = transaction_data["description"].strip()
    if "account_code" in transaction_data and transaction_data["account_code"]:
        if isinstance(transaction_data["account_code"], int):
            transaction_data["account_code"] = str(transaction_data["account_code"]).zfill(4)
            corrections.append("Normalized account code format")
    if "amount" in transaction_data:
        try:
            transaction_data["amount"] = float(transaction_data["amount"])
        except ValueError:
            corrections.append("Amount correction failed - non-numeric")
    return transaction_data, corrections

check_duplicate_transactions

Check for potential duplicate transactions based on amount, account, and date. Returns list of (transaction, duplicate_info) for potential duplicates.

def check_duplicate_transactions(transactions):
    """
    Check for potential duplicate transactions based on amount, account, and date.
    Returns list of(transaction, duplicate_info) for potential duplicates.
    """
    duplicates = []
    for i, t1 in enumerate(transactions):
        for j, t2 in enumerate(transactions[i + 1 :], i + 1):
            if (
                t1.get("amount") == t2.get("amount")
                and t1.get("account_code") == t2.get("account_code")
                and t1.get("date") == t2.get("date")
                and t1.get("description") == t2.get("description")
            ):
                duplicates.append((t1, {"type": "exact_duplicate", "duplicate_of": t2}))
            elif(
                t1.get("amount") == t2.get("amount")
                and t1.get("account_code") == t2.get("account_code")
                and t1.get("date") == t2.get("date")
            ):
                duplicates.append((t1, {"type": "near_duplicate", "duplicate_of": t2}))
    return duplicates

validate_business_rules

Validate transaction against business rules and account code ranges. Returns (bool, list_of_violations).

def validate_business_rules(transaction_data, business_rules=None):
    """
    Validate transaction against business rules and account code ranges.
    Returns(bool, list_of_violations).
    """
    if business_rules is None:
        business_rules = {
            "account_code_ranges": {
                "assets": (1000, 1999),
                "liabilities": (2000, 2999),
                "equity": (3000, 3999),
                "revenue": (4000, 4999),
                "expenses": (5000, 5999),
            },
            "max_amount": 1000000,
            "min_amount": 0.01,
            "prohibited_accounts": ["0000", "9999"],
        }
    violations = []
    account_code = int(transaction_data.get("account_code", 0))
    valid_range = False
    for category, (min_code, max_code) in business_rules["account_code_ranges"].items():
        if min_code <= account_code <= max_code:
            valid_range = True
            break
    if not valid_range:
        violations.append(f"Account code {account_code} is outside valid ranges")
    amount = transaction_data.get("amount", 0)
    if amount > business_rules["max_amount"]:
        violations.append(f"Amount {amount} exceeds maximum allowed {business_rules['max_amount']}")
    if amount < business_rules["min_amount"]:
        violations.append(f"Amount {amount} is below minimum allowed {business_rules['min_amount']}")
    if str(transaction_data.get("account_code")) in business_rules["prohibited_accounts"]:
        violations.append(f"Account code {transaction_data.get('account_code')} is prohibited")
    return (len(violations) == 0, violations)

Test Agent

Configure model settings at the top, then test the agent below

Enter your question or instruction for the agent