Develop extension using AI

...

Banana Accounting Extensions ChatGPT GPTs

A GPT (Generative Pre-trained Transformer) is like a helpful virtual assistant powered by ChatGPT’s AI.
With Custom GPTs, you can easily create your own assistant, designed to focus on the tasks or situations that matter to you.

In simple terms: instead of using the standard ChatGPT that tries to answer everything, your custom GPT follows your rules, style, and knowledge, so it gives answers that feel more personal and useful.

Banana Accounting GPTs are created using specific instructions and the documentation published on our website.

Table of contents

 

 

Banana Accounting Extensions Maker GPT

 

The GPT is only experimental: it might be subject to changes and improvements.

This GPT was created using ChatGPT, and is intended for creating extensions or asking questions about extension development. The GPT uses documentation updated as of 27.01.2025.

Requirements

To use this GPT, you must have a ChatGPT Plus subscription. Without it, you can try the service for free for up to ten requests. After that, you’ll need to either upgrade to ChatGPT Plus or wait some hours before making additional requests.

How it works

Banana Accounting Extensions Maker GPT

Example reports

Report with "hello world"

Enter the following text into the GPT chat:

  • Create an extension that prints a report wit the text "Hello world".

Print example:
gpt banana extension report hello world

Report with accounts list and balances

Enter the following text into the GPT chat:

  • I am working on a double-entry accounting system with VAT.
  • Create an extension that prints a report.
  • As title of the report print "Accounts report".
  • As subtitle of the report print the current date.
  • After the title and subtitle, I want to see a table with data taken from the Accounts table columns.
  • First row is the header of the table, use the column names as text.
  • First column print the Account; align the text on the left.
  • Second column print the Description; align the text in the middle.
  • Third column print the Balance; align right.
  • Print negative amounts in red.
  • Include only rows with an Account and a BClass 1 or 2 or 3 or 4.
  • At the end of the table add a row for the total of the balances.

Print example:
gpt banana extension report accounts balances

 

Report with accounts list and balances with styles

Enter the following text into the GPT chat:

  • I am working on a double-entry accounting system with VAT.
  • Create an extension that prints a report.
  • As title of the report print "Accounts report".
  • As subtitle of the report print the current date.
  • After the title and subtitle, I want to see a table with data taken from the Accounts table columns.
  • First row is the header of the table, use the column names as text; set background color light blue.
  • First column print the Account; align the text on the left.
  • Second column print the Description; align the text in the middle.
  • Third column print the Balance; align right.
  • Print negative amounts in red.
  • Include only rows with an Account and a BClass 1 or 2 or 3 or 4.
  • At the end of the table add a row for the total of the balances; set text in bold, background in light grey.
  • Add borders to table and cells.
  • Table must fill the full width of the page.
  • Use the Times New Roman font for all texts.
  • Use font size 20 for title.
  • Use font size 16 for subtitle.
  • Use font size 10 for table.

Print example:
gpt banana extension report accounts balances with styles

GPT Instructions

GPT instructions are the set of rules, context, and goals that guide the model to do a specific task.

In this project, they are used to focus the GPT on creating JavaScript extensions for Banana Accounting, defining what it has to do and which sources it can use.

1. Documentation Input:
- You can find the documentation for Banana Accounting’s JavaScript extensions here: https://www.banana.ch/doc/en/node/4065.
- You will find the Javascript APIs to use when creating extensions in Javascript, with examples, pieces of code, methods, and complete small sample extensions.

2. Create extensions in javascript:
- Following the documentation and relying on the javascript API.
- Looking at the various examples
- Use only classes and their methods that are present in the Banana API documentation. DO NOT invent classes or methods for the Banana classes.
- When generating JavaScript code, always include a comment at the beginning of the code that contains:
   1. The exact date of generation (in a standard format, e.g., YYYY-MM-DD). Do not generate random or estimated dates. Always use the real system time from ChatGPT.
   2. The full and unmodified original user request (what the user wrote in the chat). Do not summarize, shorten, or modify the user's request. The text must be copied exactly as the user wrote it, preserving line breaks and special characters if present.
   The format should be as follows:
   /*
   Generated on: YYYY-MM-DD
   Request: "EXACT user request as written in the chat"
   */
   Then, proceed with generating the JavaScript code using the documented API.

3. Tips for creating javascript code:
- When printing table headers, check that it doesn't print everything on a column by going to a carriage return. Each column must have its own header.
- Keep in mind that in Banana all values in tables and columns are strings. When you do checks use the data as strings.
- To check account type (asset, liability, cost, revenue) in double-entry and multi-currency accounting: check the BClass column (1=asset; 2=liability; 3=cost; 4=revenue);
- To check the type of account (asset, liability, cost, revenue) in income/expense accounting try looking at the Gr column (1=asset; 2=passive; 3=cost; 4=revenue) although this may not always be the case.
- To check if an account is a Cost Center, check if it begins with "." or "," or ";" ("." for cost center 1 (CC1); "," for cost center 2 (CC2); ";" for cost center 3 (CC3))
- To check if an account is a Segment and the level of the segment (1 to 10), check if it begins with ":" (":" for segment level 1; "::" for segments level 2; ":::" for segment level 3; ... "::::::::::" for segment level 10)
- Do not use the "addTitle" function to add a title to the report; this function doesn't exist.
- When adding styles with the stylesheet using the 'addStyle(selector, attributes)' function, remember to add the dot "." in front of the class name when it is not a reserved tag (table, td, tr, ...). For example: 'stylesheet.addStyle(".alignCenter", "text-align:center;");' 
- To write data in Banana Accounting file, you always have to use the DocumentChange API to create the javascript code.
- Always add the @timeout attribute

4. Amount variable initialization
- initialize a variable for an amount as a String (example:  var totalBalance = "0").
- do not try to convert it as Number or Float
- do not use the WRONG syntax 'Banana.SDecimal.new("0")'. The "new()" method for the class "Banana.SDecimal" doesn't exist!
- check to respect the existence of a method when using a class. Do not invent.

5. Columns with amounts
- columns that contains amounts must be used as Strings.
- do not try to convert them into numbers or float
- Example: never do things like "var balance = Banana.SDecimal(accountRow.value('Balance'))", it is a wrong usage of Banana.SDecimal. Just use the balance as String "var balance = accountRow.value('Balance')"
 
6. Output:
- Return JavaScript code that does what is requested in the Input chat.
- After the javascript code return "Done" when you have finished.
- Do not add any other comments or text.
- Do not describe what you are doing or what you have done.

7. Restrictions
- If the user input does not involve Banana Accounting JavaScript Extensions, translate the text “I cannot respond” into the user language used in the input, and respond in the chat with the translated text.

 

Journal Report Assistant

 

The GPT is only experimental: it might be subject to changes and improvements.

What does this GPT do?

This GPT can create extensions for Banana Accounting.
These extensions print reports that look exactly the way you want, using both current and budget transactions from your accounting Journal.

Requirements

To use this GPT assistant:

How it works

No data sharing needed: You don’t have to send any personal or accounting data to ChatGPT. Just describe the report you want in simple words.
Your data stays on your computer: The extension runs inside Banana Accounting, so all your accounting information remains safely in your local file.

To use the GPT:

  1. Open the assistant: Open the Banana AI assistant:
  2. Describe your report: Write what you want to see in the report (see examples below). Generally, more specific requests will yield better results. You don’t need to share any private details.
  3. Get the code: The assistant will generate the extension JavaScript code for you. Generated code should always be checked.
  4. Use it in Banana: See How to use the ChatGPT generated extension's code.
  5. Adjust if needed: If you want changes, tell the assistant and paste the updated code again as described in step 4.
Banana Accounting Journal Transactions GPT

 

Example reports

Report with Journal current and budget transactions

Enter the following text into the GPT chat:

  • I am working on a double-entry accounting system with VAT.
  • Create an extension that generates a report.
  • Enter the text "Current transactions".
  • Then show a table with the current transactions.
  • On a new page write the text "Budget Transactions".
  • Then show a table with budget transactions.

Print example:

 

Report with Journal current transactions with styles

Enter the following text into the GPT chat:

  • I am working on a double-entry accounting system with VAT.
  • Create an extension that prints a report.
  • As the title of the report, print "Journal Transactions".
  • After the title, display a table with transactions taken from the Journal.
  • The first row is the table header; use the column names as text and set the background color to light blue.
  • Column 1: Print the origin row number or the transaction, aligned to the left.
  • Column 2: Print the date, aligned to the left.
  • Column 3: Print the account, aligned to the left.
  • Column 4: Print the contra account, aligned to the left.
  • Column 5: Print the transaction description, aligned to the left.
  • Column 6: Print the account description, aligned to the left.
  • Column 7: Print the transaction amount, aligned to the right.
  • The table must fill the full width of the page.
  • Add black borders to the table and cells.
  • Use Helvetica as the font for all text.
  • Set the font size to 20 for the title.
  • Set the font size to 16 for the subtitle.
  • Set the font size to 10 for the table.

Print example:

 

ChatGPT - GPT CSV Bank Statement Import Assistant

 

The GPT is only experimental: it might be subject to changes and improvements.

This GPT was created using ChatGPT and is designed to generate extensions for importing transactions from CSV files into Banana Accounting Plus. 

  • It is based on the Parameterizable extension template and updates the parameter values in the JavaScript code according to the structure of the uploaded CSV file.
  • When creating the extension you  need to provide to ChatGPT a CSV with a set of transactions.
  • The generated extension run on you computer, when providing the content of the CSV no data is send to the server.

Requirements

To use this GPT, you must have a ChatGPT Plus subscription. Without it, you can try the service for free for up to ten requests. After that, you’ll need to either upgrade to ChatGPT Plus or wait some hours before making additional requests.

How it works

  • Open the Banana GPT from this link:
  • In the Message field at the bottom.
    • Enter the CSV file containing the transactions you want to import. 
    • You can drag and drop the CSV file here or click the + symbol to select the file.
    • In order to preserve the privacy 
      • You can give a CSV with just few lines. 
      • Remove from the CSV any private information.
      • To make changes to the CSV use a Notepad or another editor. 
        DO NOT open the file in Excel (when you save it it will change the format). 
  • GPT will:
    • Analyze the CSV file.
    • Extract the necessary parameters.
      • Column separator character.
      • Text delimiter character for strings.
      • Decimal separator character used for amounts.
      • Line number where the column headers start.
      • Line number where the data starts.
      • Column name for the transaction date.
      • Date format.
      • Column name for the transaction description.
      • Column name for the income amount.
      • Column name for the expense/outcome amount.
      • Column name for the external reference of the transaction.
    • Use the extracted parameters to update the JavaScript code of the extension.
  • GPT will then provide a link to download the file containing the extension's JavaScript code. The generated code should always be reviewed.
  • Download the file generated by the ChatGPT Assistant, open it in a text editor, and copy the entire code.
  • Once you have downloaded and copied the code, use it in Banana:

 

Banana Accounting CSV Importer GPT

Input CSV example

This is an example of a CSV file containing some bank transactions.

xxxx;;;;
;;;;
;;;;
Datum;Buchungstext;Betrag;Saldo;Valuta
03.01.2024;"aaa;a";127.2;42282.99;03.01.2024
04.01.2024;"bbb;b";-165.75;42117.24;04.01.2024
05.01.2024;"ccc;c";90.05;42207.29;05.01.2024

Output Javascript code

This is part of the generated full extension JavaScript code that contains all the required parameters retrieved from the CSV file analyzed by GPT.

...

//This function defines the parameters specific for the CSV Transactions file to be imported
function getConversionParamUser(convertionParam) {
    
    // The following variables need to be set according to the specific 
    // CSV file that will be imported
    
    // Column separator character.
    // Use '\t' for tab separated columns.
    convertionParam.column_separator = ';';

    // Text delimiter character for string
    convertionParam.text_delimiter = '"';

    // Decimal separator charachter used for amounts
    convertionParam.amounts_decimal_separator = '.';

    // Line number where the column header starts (with the columns name)
    // First line is 0
    convertionParam.header_line_start = 3;

    // Line number where data starts 
    // Usually header_line_start + 1
    convertionParam.data_line_start = 4;

    // Column name header for the date transaction 
    convertionParam.column_date_name = 'Datum';

    // Date format for column containing dates 
    // For example 'dd.mm.yyyy', 'mm/dd/yyyy', 'dd.mm.yy', 'yyyy-mm-dd'
    convertionParam.date_format = 'dd.mm.yyyy';

    // Column name for the column description 
    convertionParam.column_description_name = 'Buchungstext';

    // Column name for the income amount 
    convertionParam.column_income_name = 'Betrag';

    // Column name for the expenses/outcome amounts 
    convertionParam.column_expenses_name = '';

    // Column name for the external reference of the transaction
    convertionParam.column_external_reference_name = '';
}

...

 

 

GPT Context Instructions

Following are the text that is given to the AI assistant in order to create the Banana Import Extension.

Use import.csvstatement.parametrizable.template.js as your base.

You can use this instructions with any AI assistant. You will than need to provide a CSV file.

 

1. Objective

The task consists of analyzing the provided CSV file containing bank account transactions, understanding the structure and format of the file, and generating a Banana Accounting extension that imports the transactions. Subsequently, the "import.csvstatement.parametrizable.template.js" code must be modified to update the conversion parameters, without altering the rest of the existing code. Finally, the updated code must be returned, ready for use.

2. Reference documentation

"import.csvstatement.parametrizable.template.js" is a parameterized JavaScript script used to import bank transactions into Banana Accounting Plus.

3. Input data provided

The user provides a CSV file that contains transactions extracted from a bank statement. The CSV file is the main data source to be analyzed.

4. CSV structure

The CSV file of bank transactions contains a list of transactions in tabular format.
Generally, the transaction rows are preceded by a header row with the names of the different columns.
The header row must contain at least three columns: date, description, and amount.
The order of the columns and their names may vary, but they must be recognizable.
Transactions have a date, a description, and incoming and outgoing amounts, whose format and structure may vary depending on the bank.
Each transaction must have at least: date, description, and amount.
Normally, the CSV contains only the transactions, but in other cases there may be unstructured information before or after the table.
Before the transaction data, there may be specific information, for example the account number, the date when the CSV was generated, or other details.
After the transactions, there may also be information such as transaction totals or other details.
What GPT must find within the file are the header row and the transaction rows.

5. Identifying the table within the CSV file

Identify within the CSV where the header and the transaction table begin.
Header row: identify the row that contains the column names (expressed in zero-based format, first row = 0, start counting from 0).
Transaction start row: determine the row from which the bank transactions start (also in zero-based format, first row = 0, start counting from 0).

6. Identifying the columns

Column separator: identify the character used to separate the columns.
The column separator must be correctly identified.

7. Identifying the date column

Column name for the transaction date: identify the column that contains the transaction date.
Once the date column has been identified, analyze the values and determine the date format (e.g. yyyy-mm-dd).
The date format must be correctly identified.

8. Identifying the amount columns

Decimal separator for amounts: identify the character that separates the fractional part of numbers (for example, dot or comma).
Column names: identify the column names for description, incoming amounts, outgoing amounts, and external reference.
The decimal separator for amounts must be correctly identified.

9. Identifying the description column

Text delimiter: identify the character used to delimit text strings (for example, quotation marks).
The character used to delimit text strings must be correctly identified.

10. Structure of the "import.csvstatement.parametrizable.template.js" file

The "import.csvstatement.parametrizable.template.js" file has the following structure:
- Initial attributes: at the beginning of the file, there are comments containing various attributes such as @id, @api, @pubdate, etc.
- Conversion parameters: the function getConversionParamUser(convertionParam) is used to assign the values extracted from the CSV.
- Non-modifiable code: the part of the code that starts with DO NOT CHANGE THE FOLLOWING CODE must remain unchanged.

11. Modifying the "import.csvstatement.parametrizable.template.js" file

When modifying the "import.csvstatement.parametrizable.template.js" file, perform the following operations:

Assign values to the attributes:
@id: set the value to the name of the CSV file provided by the user (example: @id = csv_filename).
@pubdate: set the value to the current date in the format yyyy-mm-dd.
@description: set the value to the name of the CSV file.

Note: Do not modify, add, or remove other attributes.

Modify the getConversionParamUser(convertionParam) function: update the function parameters with the values extracted from the CSV, respecting the following mapping:
column_separator: set the column separator.
text_delimiter: set the text delimiter. If no delimiter exists, use the character " as the default value.
amounts_decimal_separator: set the decimal separator.
header_line_start: set the column header row number, correctly calculated (zero-based format, first row = 0).
data_line_start: set the row number where the bank transactions start, correctly calculated (zero-based format, first row = 0).
column_date_name: set the name of the column for the transaction date.
date_format: set the date format. Always use lowercase characters (example: yyyy-mm-dd). NEVER use uppercase characters.
column_description_name: set the name of the column for the transaction description.
column_income_name and column_expenses_name: set the names of the columns for incoming and outgoing amounts, respectively.
column_external_reference_name: set the name of the column for the external reference.

Note: Avoid duplicates. Each property must be defined only once. Do not modify, add, or remove properties.
Note: You may rewrite the content of the function by replacing it entirely, or modify only the values of the various parameters. Do not do both.

12. Returning the updated code

Once the modifications are complete, return the entire updated import_csv.js code. The code must be ready to be downloaded and used without the need for confirmations or previews. It is not necessary to provide a separate downloadable file; the updated code must be included in the result.

 

 

 

 

How to use the ChatGPT generated extension's code

We summarize here how you can execute the code as a Document Based Extension:

Document Based Extension

The generated code is saved within the accounting file.

Once you have generated the code with the ChatGPT Assistant:

  • Run the code by clicking on the Execute icon in the Attachments column. 

Add the code 

  • Create a new row in the Documents table.
  • In the Attachments column, click the Edit icon and choose JavaScript code.

You can later modify or replace the code by clicking the Edit icon again.

banana embedded extension javascript

Editor window

Enter the code in the editor window and save.

  • Copy the code generated by ChatGPT.
  • In the text editor:
    • Delete the existing sample code.
    • Paste the copied code.
    • Click OK.
    • Save the accounting file.

banana javascript embedded extension

Run the extension

Click the Execute icon to run the extension.

banana javascript embedded extension

Single File Based Extension

The generated code is saved in a single JavaScript (.js) file stored locally on your computer.

 

AI Context for Creating Import Extextion for CSV Double Entry Accounting Transactions

Work in progress..

Create your Banana dashboard with AI

A complete guide to building, installing and using a personal dashboard for Banana Accounting Plus with Claude or ChatGPT. No programming knowledge needed.

1. Overview

You describe what you want in a chat. The AI writes the extension. You install it in Banana and use it.

dashboard-overview

Example of a dashboard generated with the skill.

The Banana dashboard is an extension for Banana Accounting Plus. It opens a window that shows the most important data of your accounting file: profit or loss, costs, revenue, liquidity, budget comparison, breakdowns and lists.

An advanced report

The dashboard is a form of advanced reporting for your accounting. Like the other reports of Banana Accounting Plus, it runs inside Banana with an accounting file open and presents the data of that file.

What makes it different is the presentation: indicators, charts and lists on one screen, with the period and the details you choose. With the AI you simply put together the report that shows the data you want to follow, in the way that is clearest for you.

You do not write any code. You use a set of instruction files, called a skill, together with an AI assistant (Claude or ChatGPT). The skill tells the AI exactly how a Banana dashboard must be built and how every widget must look. You only choose which widgets you want.

Your accounting data stays with you. You never need to share your accounting file or any of its data with the AI. The AI only writes the code of the extension; the data are read by Banana on your computer when you run the dashboard. Just keep in mind that a screenshot you add to the chat shows the AI what is visible in it.

  1. Choose: in the chat, the AI shows you the list of widgets. You pick the ones you want.
  2. Install: the AI gives you a zip file. You unzip it, create the extension package in Banana and install it.
  3. Use: you run the dashboard, choose the period and the colors, and adjust each widget with its settings button.

Important: the dashboard is written by an AI assistant. The code is generated for you and is not provided, checked or guaranteed by Banana.ch SA. Test it first on a copy of your accounting file and check that the data are correct. The dashboard only reads your accounting data and never changes it.

2. Prerequisites

To use the generated dashboard extension you need:

What else you need

  • A double-entry accounting file. The opening and closing dates must be set in the file properties.
  • An AI account. Claude (claude.ai) or ChatGPT (chatgpt.com), with access to Projects. A paid plan is recommended: the work is long and uses the larger models.
  • The skill. The folder banana-dashboard with SKILL.md and the widgets folder (12 files in total), or the file banana-dashboard.zip.
  • Optional: a budget (Budget column of the Accounts table, or Budget table) for the budget widgets and the liquidity forecast, and the previous year file linked in the file properties for comparisons with the previous year.

Download the skill

The zip contains the folder banana-dashboard with SKILL.md (1 file) and the widgets folder (12 files). For a Claude or ChatGPT project, unzip it and upload the 13 files. To add it as a skill in Claude, upload the zip as it is.

3. The skill files

Plain text files with instructions for the AI. You do not need to read or change them.

banana-dashboard/
├── SKILL.md                      general instructions
└── widgets/                      one sheet per widget
    ├── result-indicator.md
    ├── costs-indicator.md
    ├── revenue-indicator.md
    ├── liquidity-evolution.md
    ├── revenue-costs-bars.md
    ├── cumulative-result.md
    ├── costs-breakdown.md
    ├── revenue-breakdown.md
    ├── budget-comparison.md
    ├── costs-list.md
    ├── revenue-list.md
    └── transactions-list.md

The files end in .md (Markdown): simple text with titles, lists and tables, easy for an AI to read. They contain no program code: they describe in words what the AI must build and the rules it must follow. The AI writes all the code for you.

SKILL.md – the general instructions

The main file. It tells the AI:

  • how to talk to you: in your language, in plain words, showing the notice of section 1 at the start;
  • the guided path: propose the widgets, wait for your choice and confirmation, build, check, deliver, fix;
  • the structure of the extension: which files to create and what each one does;
  • the rules learned from Banana, so that the extension starts without errors;
  • the parameters: period, color palettes, widget settings and how they are saved;
  • the Banana functions to use and the links to the official Banana and Qt documentation;
  • the appearance: fonts, spacing, chart style, legends, so that every dashboard looks finished;
  • a checklist the AI goes through before every delivery, and a table of common problems and solutions.

The widget files

One file per widget. Each describes the widget completely: what it calculates, how it is drawn, which settings it has and their default values, and which message it shows when data is missing. This way every widget is always built the same way, whoever asks for it and whichever AI builds it, and you never have to explain what a chart should contain.

Why so many rules? The AI cannot run Banana: it writes the code without being able to test it. The rules and the checklist prevent the most common mistakes, and a safety mechanism makes sure that if something still goes wrong, the dashboard shows you the exact error instead of not opening at all (see section 11).

4. Set up Claude

Do this once. Then you can create and change dashboards in as many chats as you want.

Option A – A Project (recommended)

A Project keeps the skill files and the instructions together, so every chat in the project already knows them.

  1. Download and unzip the skill.
  2. Go to claude.ai and sign in.
  3. In the left panel click Projects, then + New Project. Name it, for example, Banana Dashboard.
  4. In the project, on the right, click + next to the project knowledge and upload SKILL.md and all the files of the widgets folder (you can select them all at once). The name of your folder does not matter: the AI finds the widget files by their name.
  5. Click Set project instructions, paste the text below and click Save instructions.
  6. Open a new chat inside the project and continue with section 7.

Project instructions to paste:

Follow the instructions in SKILL.md to create, change or fix a dashboard extension for Banana Accounting Plus. The widget files are the other .md files of this project, listed in section 8 of SKILL.md. Always answer in my language.

Option B – As a skill

A skill is available in all your chats, not only in one project. Claude uses it automatically when you ask for a Banana dashboard.

  1. Make sure Code execution and file creation is enabled in the Claude settings (required for skills).
  2. Open Settings › Customize › Skills, click + and choose Upload a skill.
  3. Select banana-dashboard.zip. Do not rename the folder inside the zip: it must be called banana-dashboard.
  4. Start a new chat and ask for a Banana dashboard.

Tip: menu names can change slightly over time and with the language of the interface. If you do not find them, see the Claude Help Center.

5. Set up ChatGPT

ChatGPT uses a Project with the same files.

  1. Go to chatgpt.com and sign in.
  2. In the left panel create a New project and name it, for example, Banana Dashboard.
  3. Add the files to the project: SKILL.md and all the files of the widgets folder. If folders are not accepted, upload the files one by one or all together: the folder structure is not needed.
  4. Open the project Instructions, paste the text below and save.
  5. Start a new chat inside the project and continue with section 7.

Project instructions to paste:

Follow the instructions in SKILL.md to create, change or fix a dashboard extension for Banana Accounting Plus. The widget files are the other .md files of this project, listed in section 8 of SKILL.md. Always answer in my language.

Tip: the ChatGPT interface changes often. If a button has a different name, look for the project settings where you can add files and instructions, or see the OpenAI Help Center.

6. Which AI model to use

Larger models and more "thinking" make fewer mistakes on complex work, but are slower and use more of your plan limits.

  • Claude, in general: Opus 5.5, thinking Medium.
  • ChatGPT, in general: GPT-6, thinking High.

Claude in detail

ConfigurationWhen to use it
Haiku 4.5, low thinkingSmall changes, texts, colors
Sonnet 5.5, medium thinkingChanges to a single widget
Opus 5.5, medium thinkingCreating the dashboard, fixing QML and JavaScript (main choice)
Opus 5.5, high thinkingComplex debugging, structure, code review

ChatGPT in detail

ConfigurationWhen to use it
GPT-6 InstantSmall changes, texts, colors
GPT-6 MediumChanges to a single widget
GPT-6 HighCreating the dashboard, fixing QML and JavaScript (main choice)
GPT-6 Extra HighComplex debugging, structure, code review

Good to know:

  • These are recommendations, not strict rules. Available models depend on your plan.
  • You can switch model in the middle of a chat: create the dashboard with the main choice, then use a lighter model for small touches.
  • If a small change made with a light model causes an error, ask again with the main choice.

7. Working in the chat

Write and describe what you want in your language. The AI guides you.

Start

Open a new chat in the project and write what you want, for example:

I would like to create a dashboard for my accounting file in Banana. I want to keep an eye on profit, costs and liquidity.

What happens next

  1. Notice. The AI shows you the notice about generated code and testing on a copy.
  2. Your goal. It asks what you want to keep an eye on, and checks that you use double-entry accounting.
  3. The widgets. It shows the list of available widgets (see section 12), with the most suitable ones first.
  4. Title and name. It asks a title for the dashboard and a name for the extension (shown in the Banana Extensions menu).
  5. Confirmation. It repeats your choice and waits for your OK.
  6. Build and delivery. It writes all the files, goes through its checklist and gives you the result (section 8).

Example

You

I'd like a dashboard to follow profit and liquidity.

AI

Before we start: the dashboard is written by an AI… Here are the widgets that fit your goal: 1. Result (profit or loss), 2. Liquidity evolution, 3. Budget comparison… Which ones would you like?

You

1, 2 and 3, plus the costs breakdown. Title “My company”, extension name “My dashboard”.

AI

So: Result, Liquidity evolution, Budget comparison and Costs breakdown, title “My company”. Shall I build it?

You

Yes.

Tips:

  • One request at a time works best: first the dashboard, then the changes.
  • Stay in the same chat for changes to the same dashboard: the AI remembers what it built.
  • To start again from scratch, open a new chat.

8. What the chat gives you

A zip file with a folder that contains the whole extension.

If the AI cannot create files, it gives you every file in a separate code block with its exact name: copy each one into a text file with that name, all in the same folder.

The folder contains these files (names may differ slightly):

FileWhat it is
ch.<company>.dashboard.jsThe main file. It opens the dashboard and saves your settings.
ch.<company>.dashboard.qrcThe package file: the list of all the files of the extension. You drag it onto Banana to create the extension package (.sbaa), the file you install.
ch.<company>.dashboard.manifest.jsonThe manifest: name, description and version of the extension, shown in Manage Extensions.
Dashboard.qmlThe container: a small, always identical window that loads everything else and shows any error clearly.
Content.qmlThe dashboard itself: header, settings, the grid with the widgets.
data.jsAll the calculations: reads the data from your accounting file.
Style.qml, qmldirColors, fonts and sizes, and the color palettes. qmldir is a small technical file needed by Style.qml.
Widget.qmlThe frame shared by all widgets: card, title, settings button.
…Widget.qmlOne file per widget you chose, e.g. LiquidityWidget.qml.
SettingsPanel.qml, PeriodPicker.qml, AccountPicker.qmlThe settings panels and their controls (period choice, account choice).

The AI also gives you the installation steps and asks you to test and tell it what you see.

Keep the files together: all the files must stay in the same folder. Do not rename them and do not move single files elsewhere.

9. Install the extension

Once per dashboard. The extension is installed as a package (.sbaa file), which Banana creates from the files the AI gives you.

  1. Unzip the zip file into a folder of your choice that you will not delete, for example Documents > Banana extensions > My dashboard.
  2. Create the package: drag the .qrc file (for example ch.mycompany.dashboard.qrc) onto the Banana Accounting Plus window. Banana creates the package ch.mycompany.dashboard.sbaa.
  3. Open your accounting file (better a copy for the first test).
  4. Open the menu Extensions > Manage Extensions, click Add from file and choose the .sbaa file.
  5. Grant the permissions: in the same window select the extension. Its Permissions status is Revoked: click Grant. The dashboard needs this permission to open its window.
  6. Close the window. The dashboard is now in the Extensions menu, with the name you chose.

Updating: when the AI gives you a new version, replace all the files in the folder with the new ones, drag the .qrc file onto Banana again to create the new package, then open Extensions > Manage Extensions and click Update extensions. If the footer still shows the old version number, remove the extension and add the .sbaa again.

10. Run the dashboard

From the Extensions menu, with an accounting file open.

  1. Open the accounting file and choose your dashboard in the Extensions menu.
  2. First time: a panel asks you

    • the period to show (the whole accounting year is preselected);
    • the color palette: Banana, Graphite, Sage or Bordeaux.

    Click the button to start.

  3. The dashboard appears with your widgets. Check the version in the footer: it must be the one the AI just delivered.
  4. To change the period or the colors, click Settings at the top right of the dashboard. To change a widget, click Settings at the top right of that widget.
  5. Close the dashboard with the Close button.
  6. Save the accounting file to keep your settings for the next time.

Your data is safe: the dashboard never changes your accounting data. Only its own settings (period, palette, widget settings) are stored in the accounting file, in a separate place reserved for extensions.

11. How the dashboard works

The container and the widgets

The dashboard is a large container: a window with a header (title, company, period and the Settings button), a grid of widgets and a footer with the version number. Each widget is an independent card that calculates and shows its own data.

If a widget has a problem, only that widget shows a red error message; all the others keep working. The message says exactly which file and which line are wrong, for example “Error in RevenueWidget.qml, line 42”. Select it, copy it and paste it in the chat: the AI knows what to fix.

The period

All widgets use the period of the dashboard, chosen with Settings at the top right:

  • Year
    The whole accounting period, from the opening to the closing date (default).
  • Semester 1 or 2
    Six months, counted from the opening date.
  • Quarter 1-4
    Three months, counted from the opening date. If your year starts on 1 April, the first quarter is April–June.
  • Month
    One month of the accounting period.
  • From … to …
    Any two dates within the accounting period.

The choice is stored as “Quarter 2”, “Month 3” and so on, so it remains valid in the file of the next year. Some widgets can use their own period instead (setting Period in their Settings panel).

The colors

Four palettes are available: Banana (blue and yellow), Graphite (neutral, teal accents), Sage (greens) and Bordeaux (wine red). Changing the palette recolors the whole dashboard at once. Each kind of data always has the same color in all widgets (e.g. revenue, costs, budget).

Widget settings

Widgets with settings have a Settings button. The panel opens over the dashboard; Apply saves the change and redraws that widget, Cancel discards it. The settings of each widget are listed in section 12.

Where the data come from

  • Actual data: the balances of your accounts, read directly from the accounting file each time the dashboard opens or a setting changes.
  • Budget: the Budget column of the Accounts table or the Budget table. The liquidity forecast needs the Budget table.
  • Previous year: the file of the previous year, linked in the file properties.
  • Charts show the months up to the month of the last transaction recorded in the file; later months have no data yet and are not drawn as zero.

12. The widgets

Twelve ready-made widgets. Each is always built the same way, from its widget file.

The images show fictitious data in the Banana palette; your dashboard shows your data, in your language and in the palette you choose. The width is given in columns of the dashboard grid (4 columns in total).

Result

File result-indicator.md · width 1 column

widget-result

Shows: the profit or loss of the period (revenue minus costs) as a big number, green with the word “profit” or red with the word “loss”, and the comparison with the budget or the previous year.

Settings:

  • Period: dashboard period or its own.
  • Comparison: none, budget (default), previous year.

Costs

File costs-indicator.md · width 1 column

widget-costs

Shows: the total costs of the period. With a comparison, the budget or previous year and the variation in percent: green when costs are lower, red when higher.

Settings:

  • Period.
  • Comparison: none (default), budget, previous year.

Revenue

File revenue-indicator.md · width 1 column

widget-revenue

Shows: the total revenue of the period. With a comparison: green when revenue is higher, red when lower.

Settings:

  • Period.
  • Comparison: none (default), budget, previous year.

Liquidity evolution

File liquidity-evolution.md · width 4 columns

widget-liquidity

Shows: the balance of your cash and bank accounts through the period:

  • solid line: actual balance up to today, with a light area underneath;
  • dashed line: forecast from today on, from the Budget table;
  • dotted line: the budget for the whole period;
  • a vertical line marks today;
  • under the chart: balance today, lowest forecast balance and its date, balance at the end of the period (in red when negative).

Settings:

  • Accounts: choose your cash and bank accounts (or a group) from the list. Required: until you choose them, the widget asks you to.
  • Actual up to: today (default), the date of the last transaction, or a date.
  • Show the budget line: yes (default) or no.
  • Period.

Tip: for a meaningful forecast, enter the planned movements of these accounts in the Budget table. Without them the forecast stays flat and the widget tells you so.

Revenue and costs per month

File revenue-costs-bars.md · width 2 columns

widget-bars

Shows: two bars for each month, revenue and costs, side by side, to compare them month by month. Months still to come or without transactions are empty.

Settings:

  • Period.

Cumulative result

File cumulative-result.md · width 2 columns

cumulative-result

Shows: how the result (profit or loss) builds up month after month. The solid line adds up the result of each month up to the last transaction; the dotted line shows the budget (or the previous year) for the whole period, so you can see at a glance whether the year is on track. The line at zero marks the border between profit and loss. The subtitle shows the result to date, and under the chart you find the difference from the budget.

Settings:

  • Period.
  • Comparison: none, budget (default), previous year.

Costs breakdown

File costs-breakdown.md · width 2 columns

widget-costs-breakdown

Shows: a ring chart with the share of each cost account of the total costs, the total in the middle and a legend with amounts and percentages. The smaller accounts are grouped as “Other accounts”.

Settings:

  • Period.
  • Number of slices: 3 to 10 (default 6).

Revenue breakdown

File revenue-breakdown.md · width 2 columns

widget-revenue-breakdown

Shows: the share of each revenue account of the total revenue, with the total in the middle and the legend with amounts and percentages.

Settings:

  • Period.
  • Number of slices: 3 to 10 (default 6).

Budget comparison

File budget-comparison.md · width 2 columns

widget-budget

Shows: for revenue, costs and result, a bar with the actual amount, a marker at the budget, the percentage reached and the difference, green when better than the budget and red when worse.

Settings:

  • Period.

Tip: needs a budget in the Accounts table (Budget column) or in the Budget table.

Largest costs

File costs-list.md · width 2 columns

widget-costs-list

Shows: the cost accounts with the highest amounts of the period, from the largest, each with a thin bar proportional to the largest one.

Settings:

  • Period.
  • Number of accounts: 3 to 15 (default 6).

Largest revenue

File revenue-list.md · width 2 columns

widget-revenue-list

Shows: the revenue accounts with the highest amounts of the period, with proportional bars.

Settings:

  • Period.
  • Number of accounts: 3 to 15 (default 6).

Latest transactions

File transactions-list.md · width 4 columns

widget-transactions

Shows: the last transactions recorded in the period, in a table with date, document, description, debit / credit accounts and amount.

Settings:

  • Period.
  • Number of transactions: 5 to 20 (default 8).

13. Changes and fixes

Just tell the AI. It changes the files and gives you a new version.

Something does not work

  • Error message: select it, copy it and paste it in the chat.
  • Wrong data or strange display: describe what you see and what you expected.
  • Screenshot: take a picture of the dashboard and add it to the chat. The AI sees the image and fixes the problem. Just keep in mind that a screenshot you add to the chat shows the AI what is visible in it

You want something different

  • “Make the titles bigger.”
  • “Use darker colors for the charts.”
  • “Add the costs breakdown widget.”
  • “Remove the latest transactions.”

Changes to colors, sizes and spacing are made in Style.qml, so they apply to the whole dashboard, unless you ask for a single widget.

After each change

  1. Download the new zip, replace all the files in the extension folder and drag the .qrc file onto Banana again to create the new package; then update the extensions (section 9).
  2. Close and reopen the dashboard.
  3. Check that the footer shows the new version number.
  4. Tell the AI whether it works.

If it is not fixed at the first attempt: insist. Say what is still wrong, add the new error message or a new screenshot. Complex problems sometimes need two or three rounds. If the AI keeps going in circles, switch to a larger model or a higher thinking level (section 6).

14. Troubleshooting

The most common situations. In any case, you can describe the problem in the chat.

What you seeWhat to do
The dashboard does not open after installationIn Manage Extensions select the extension and check Permissions status: if it is Revoked, click Grant.
“The dashboard could not be loaded”Check that all files are in the same folder. Then copy the message into the chat.
A red message with a file name and a line, instead of the dashboard or of a widgetCopy the message and paste it in the chat.
The extension is not in the Extensions menuAdd it again with Manage Extensions > Add from file, choosing the .sbaa file.
No .sbaa file is created when you drag the .qrcCheck that all the files of the zip are in the same folder as the .qrc, then tell the AI.
The footer shows an old versionDrag the .qrc onto Banana again and update the extensions. If needed, remove the extension and add the .sbaa again.
The first-time panel appears every timeSave the accounting file after closing the dashboard.
Monthly charts are emptyCheck the opening and closing dates in the file properties.
Liquidity widget emptyChoose the cash and bank accounts with its Settings button.
Flat liquidity forecastEnter the planned movements of the liquidity accounts in the Budget table.
“No budget found”Enter the budget in the Accounts table (Budget column) or in the Budget table.
No previous year dataLink the file of the previous year in the file properties.
A data looks wrongCompare it with the Banana reports (e.g. balance sheet, profit and loss) for the same period, then describe the difference in the chat.

15. Good to know

  • A report on your file. The dashboard works inside Banana, with an accounting file open, and displays its data.
  • Double-entry only. Income/expense accounting and cash books are not supported yet.
  • Read only. The dashboard never changes your accounting data.
  • Settings in the file. Period, palette and widget settings are stored in the accounting file and travel with it. Another computer with the same extension and the same file shows the same settings.
  • The widgets are fixed. You choose them in the chat; in the dashboard you only change their settings. To add or remove a widget, ask the AI.
  • Check the data. The AI can make mistakes. Before relying on a dashboard, compare its data with the accounting file and Banana reports.
  • Support. The generated code is yours and is not supported by Banana.ch SA. For problems with the dashboard, use the chat.
  • Different AIs, different results. Claude and ChatGPT follow the same skill but may produce slightly different designs. The rules keep the results close; small differences can be adjusted in the chat.
  • Privacy. The AI never sees your accounting data: it only writes the code. The data are read by Banana on your computer. Screenshots you add to the chat, however, are seen by the AI.

16. Updates

What if a new version of the skill is released?

Replace the files in your Claude or ChatGPT project (or upload the new skill). Your existing dashboards keep working; to benefit from the new version, ask the AI to rebuild or update your dashboard in a new chat.