Turning scattered exports into review-ready Banana entries

SoFlow built a browser-based assistant that normalizes bank exports, AppSheet/WebBuch rows, Banana account lists, and prior Banana transactions into a single reviewable set of Banana-compatible entries.
Banana Accounting Automation
Client
Banana Accounting Automation
Timeline
Case study draft
Services
Website
About

A private assistant that untangles yearly accounting prep

This is a strong internal-tool story, but it is sensitive. The page should emphasize workflow architecture, privacy boundaries, and anonymized examples rather than real company accounting data.
Challenge

The challenge behind the build

Bank exports, receipt rows, previous Banana transactions, and company-specific account lists arrive in different shapes every year. Reconciling them by hand, across multiple company profiles, is slow and easy to get wrong.

Goal

The implementation goal

Build a browser app, with an optional Cloudflare Worker deployment, that accepts bank CSV/TSV exports, AppSheet/WebBuch rows, Banana account lists, and previous Banana transaction exports, then supports review before exporting Banana-compatible rows.

Result

One reviewable pass instead of a manual reconciliation every year

The assistant learns each company's account-list and mapping conventions from prior Banana exports, ingests the year's bank and receipt data, and produces a single reviewable set of rows in Banana's own CSV/TSV format — turning a recurring manual task into a structured, repeatable pass.

Stack
JavaScript, browser file processing, Cloudflare Workers, Banana Accounting CSV/TSV, Workers AI optional
Systems
Banana Accounting, AppSheet/WebBuch exports, bank CSV/TSV exports, Cloudflare Workers
Category
Internal Tools
This is some text inside of a div block.

The brief was to reduce repeated yearly accounting preparation work across multiple Swiss company profiles while preserving accountant-reviewed Banana output formats.

This is some text inside of a div block.

Bank exports, receipt rows, previous Banana transactions, and company-specific account lists arrive in different shapes. Manually reconciling them every year is slow and error-prone.

This is some text inside of a div block.

Real accounting data must stay private at all times. Any public screenshots use anonymized samples only, and the deployed app has to be access-protected before it handles real workflow data.

This is some text inside of a div block.

SoFlow built a browser app, with an optional Cloudflare Worker deployment shape, for uploading bank CSV/TSV exports, AppSheet/WebBuch rows, Banana account lists, and previous Banana transaction exports, then reviewing and exporting Banana-compatible rows.

This is some text inside of a div block.

JavaScript handles file parsing and normalization directly in the browser, with an optional Cloudflare Workers deployment for hosting and optional Workers AI-assisted mapping suggestions. Company profiles persist each business's account-list and export conventions, keeping every company's data and mappings separate.

This is some text inside of a div block.
  • Company profiles that persist mapping conventions across yearly runs
  • Bank CSV/TSV normalization into a common working format
  • AppSheet/WebBuch receipt-row enrichment
  • Learning from Banana account lists and prior transaction exports
  • Manual review step before any export is finalized
  • Banana-compatible CSV/TSV output ready for the accountant
This is some text inside of a div block.

Recurring accounting preparation is now a structured review workflow instead of a repeated manual reconciliation — publishable with anonymized data and clear privacy framing, not real financial detail.

This is some text inside of a div block.
  • Supports multiple company export templates across different business types
  • Reuses previous Banana transaction exports as a learning reference layer
  • Private-data folder explicitly excluded from version control
This is some text inside of a div block.

Why does this need custom software instead of just spreadsheets?

Because the inputs never match: bank CSV/TSV exports, AppSheet/WebBuch receipt rows, existing Banana account lists, and prior Banana transaction exports all use different shapes, and each company profile has its own mapping conventions. A spreadsheet can't remember those mappings year over year or produce Banana-ready output — this assistant does both.

Why put this in Webflow if external code is involved?

Webflow is the public storytelling and CMS layer. External code should stay in the app, Worker, or integration layer where it can be versioned, secured, and tested.

What is needed before publishing?

Anonymized sample data, privacy-first screenshots with no real company or transaction information, and a deployed instance that's protected before it's referenced publicly.

This is some text inside of a div block.

This shows SoFlow can build serious private operational tooling around messy, real-world file formats and recurring business processes — without forcing every internal tool into a public SaaS product.

This is some text inside of a div block.

Why does this need custom software instead of just spreadsheets?

Because the inputs never match: bank CSV/TSV exports, AppSheet/WebBuch receipt rows, existing Banana account lists, and prior Banana transaction exports all use different shapes, and each company profile has its own mapping conventions. A spreadsheet can't remember those mappings year over year or produce Banana-ready output — this assistant does both.

Why put this in Webflow if external code is involved?

This is some text inside of a div block.

Heading 1

Heading 2

Heading 3

Heading 4

Heading 5
Heading 6

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.

Block quote

Ordered list

  1. Item 1
  2. Item 2
  3. Item 3

Unordered list

  • Item A
  • Item B
  • Item C

Text link

Bold text

Emphasis

Superscript

Subscript

This is some text inside of a div block.

Heading 1

Heading 2

Heading 3

Heading 4

Heading 5
Heading 6

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.

Block quote

Ordered list

  1. Item 1
  2. Item 2
  3. Item 3

Unordered list

  • Item A
  • Item B
  • Item C

Text link

Bold text

Emphasis

Superscript

Subscript

This is some text inside of a div block.
This is some text inside of a div block.
Before

Each yearly accounting pass meant manually joining bank rows, receipt references, and account mappings by hand, separately for every company profile, with no memory of last year's decisions.

After

Company-specific mappings persist across years, and the assistant produces a single reviewable, Banana-compatible set of rows in a fraction of the manual effort.

This is some text inside of a div block.

This isn't a marketing-page problem — it needs real file parsing, persistent mapping memory per company, review states, receipt evidence linking, and export formats that match Banana Accounting's expectations exactly.

Let's talk

Ready to elevate your business?