Cash Entry (The "Mini-Me" Project)
My Exceptions Written Into Code
Onboarding for this workflow went from about 1 week to under 30 minutes.
At the company where I work, every cash and journal entry used to pass through me. I built Cash Entry, a desktop app that records those entries in Odoo and builds the end-of-day reports, so anyone on the team can do it.
I call it my “Mini-Me”: my knowledge of the exceptions, turned into rules anyone can follow. The result is that onboarding for this workflow went from about a week to under 30 minutes, and the process no longer depends on one person.
The problem
For 1.5 years I sat in the middle of a circular workflow. My coworker had the cash, the manager gave approvals, and I entered everything in Odoo. Each entry waited on all three of us.
Worse, the rules for special suppliers and edge cases lived in my head. If I was away, or left, nobody else knew which supplier needed which treatment. That is a bus-factor risk, and it was my own observation: I noticed it, and I decided to fix it.
Constraints
- Live accounting data. Entries go straight into the company’s ERP. A wrong entry is not a typo in a spreadsheet; it is a wrong number in the books.
- Standard Odoo only. I did not want an add-on to install and maintain on the ERP side. Whatever I built had to work with Odoo as it is.
- Knowledge that was not written down. The exceptions existed only as my habits. Before I could automate them, I had to turn them into explicit rules.
- Users who do not know my exceptions. The person entering a cash payment should not need to know them.
What I built
Cash Entry is a desktop app with one simple screen for the person handling cash. They enter cash payments and refunds, post-dated cheques, expenses with VAT, and intercompany advances. The app decides how each one is recorded in Odoo.
Before anything is sent, it checks the entry. It stops the wrong party, an expense type it does not know, and an amount of zero or less. Those mistakes never reach the books.
When an entry needs a person, the app does not make the entry wait. It posts, or holds the entry as a draft for review, and it assigns a follow-up task in Odoo to the right person, for example the manager.
At the end of the day, the app builds a Cash on Hand report, a spreadsheet for each company, and an email to the team.
Key decisions
1. Separate the process from the accounting. This is what I call true automation. Paying out cash is a process. Choosing the right account is accounting. The old workflow mixed them, so every cash payment waited for the person who knew the accounts. I split them: the person handling cash does the process, and the rules choose the account. The alternative was a faster version of the same chain, and it would have kept the same three-way wait.
2. Keep the rules in settings files, not inside the app. A rule can change without a new version of the app. A rule can also send a follow-up to a named person or hold an entry as a draft. I chose this because the exceptions are business knowledge, and business knowledge changes more often than software does. The alternative was to build the rules into the app, which would have turned every small change into a release.
3. Work with standard Odoo. There is no add-on to install or maintain. The alternative was a custom module inside Odoo, which can do more but ties the system to one setup and adds something else to keep alive. I preferred the smaller footprint and wider compatibility.
4. Never lose an entry. If an entry fails to send, it stays on screen until it goes through, and the day cannot be closed while anything is unsent. An intercompany advance has two sides. If one side fails, the other is undone, so the books never show half a transfer. The alternative was to show an error and trust people to remember, and a lost entry is a hole in the books.
5. Check every new version before it reaches the team. A broken update on a finance desk costs more than a delayed update. So each version is checked before release, and a broken update never lands on someone’s desk.
Outcome
- Onboarding for this workflow went from about 1 week to under 30 minutes. I confirmed this by trying it at work.
- Continuity. The process survives staff changes, because the rules stay when the people do.
- Fewer mistakes at the door. The wrong party, an unknown expense type or a zero or negative amount is stopped before it reaches the books.
- No waiting on three people. The entry posts without waiting, and what needs the manager is assigned to him as a task in Odoo.
I do not have a measured figure for time saved per entry, so I am not going to invent one.
Takeaway
To stop being the bottleneck, turn what you know into something others can run.









