150 churches, one question, one screen
A deliberately small application replacing a spreadsheet — because the ministry did not need accounting software, it needed to know which churches had not paid this month.
- SECTOR
- Ministry administration
- SCALE
- 150+ rural churches
- REPLACED
- Spreadsheets
- STACK
- Laravel, MySQL
- STATUS
- Live
The right answer was smaller than the brief looked
A ministry coordinating more than 150 churches sounds like a substantial system. Church network, contributions, multiple payment modes, historical reporting — there is an obvious version of this quote with a lot of software in it, and we build church management software, so we could have sold that.
But the administrators were not struggling with accounting. They were struggling with a single recurring question that a spreadsheet answers badly: which churches have not sent their contribution for this period, and who needs chasing.
Everything else in the brief was a consequence of not being able to answer that one thing quickly.
So we built the smallest application that answers it properly, and stopped. No general ledger, no chart of accounts, no reconciliation module. Ministry workers who are volunteers rather than accountants had to be able to use it without training, and that ruled out most of what a bigger system would have added.
The unit is the period, not the payment
A spreadsheet records transactions — a row each time money arrives. That is the wrong shape for this problem, because the ministry's question is never about a transaction. It is always about an absence.
The system instead models the intersection: for each church, in each reporting period, there is an expected contribution and a state. Paid, partly paid, pending, late. A payment fills in a cell that already existed rather than creating a new row.
That inversion is why non-payers are visible at all. In a transaction list, a church that has not paid produces no row and therefore no signal — you find it by comparing a list of payments against a list of churches, by hand, every month. In a period-by-church grid the gap is the most obvious thing on the screen.
Designing for how the money actually arrives
Four payment modes, one record
Bank transfer, cash, GPay and other mobile payments all count the same to the ministry but leave very different traces. Mode and reference are recorded together so a payment can be verified later against whichever trail exists.
Cash needs the same rigour
Cash has no digital trail at all, which is precisely why the entry needs to be as structured as a bank transfer rather than a note in a margin.
Contribution is a percentage
Each church contributes a defined proportion of its own collection, so the expected amount varies by church and by period rather than being a fixed subscription.
Follow-up is relational
These are churches in a ministry network, not delinquent accounts. Reminders and follow-up status support a conversation rather than automating a dunning process.
Entry has to be fast
Church, period, amount collected, contribution, mode, save. Anything more elaborate and the spreadsheet quietly comes back.
From record-keeping to seeing a trend
The reporting side does one thing the spreadsheets never did: compare. Month against previous month, year against previous year, church against its own history.
That changes what the data is for. A church whose contribution has fallen steadily over six months is telling the ministry something — about its congregation, its circumstances, or its leadership — that a single month's figure cannot. Consistent lateness is a different signal from a sudden gap.
A spreadsheet holds all of that history and surfaces none of it, because nobody has time to build the comparison by hand across 150 rows every month.
What it does
Design decisions
Most of them were decisions about what to leave out.
Church × period grid
Expected contributions exist before payment arrives, which is what makes an absence visible instead of invisible.
No accounting layer
No ledger, no chart of accounts, no reconciliation. The ministry has an accountant; it did not need a second one made of software.
Trainable in minutes
Volunteers rotate. Anything that needs a training session gets abandoned the first time the trained person is unavailable.
Absence over activity
The default view is what is missing, not what has been collected — because the missing part is the only thing anyone needs to act on.
How the team built it
GegoSoft engineers use Claude Code as standard daily tooling. On a build this size the effect is simply that it was quick to deliver — which is the difference between a small tool being economical to commission and the client being told the minimum engagement is larger than their problem.
That matters more than it sounds. Plenty of useful small applications never get built because the cost of a bespoke build has traditionally started well above what a focused tool is worth.
What changed
The monthly cross-checking exercise disappeared. Administrators open the current period, see which churches are outstanding, and follow up from the same screen. Comparison reporting gave the ministry something it had never had — a view of whether contributions across the network were rising or falling, and which churches were moving in which direction.
Common questions
Is a project this small worth commissioning?
Often, yes. A focused tool that removes one recurring manual task usually pays back faster than a large system, because it gets used from the first week. We would rather build the small correct thing than the large impressive one.
Can GegoSoft replace our spreadsheet process?
Usually. The question we start with is which single question the spreadsheet answers badly — that tends to define the whole application, and it is often much smaller than the list of features people arrive with.
Why not use your church management product for this?
Because the ministry was not administering a congregation, it was monitoring contributions from 150 independent churches. ChurchCMS is built for the first job. Deploying it 150 times to answer one reporting question would have been the wrong tool at considerable expense.
Can it handle cash and mobile payments?
Yes. Bank transfer, cash, GPay and other mobile payments are recorded with mode and reference, so a payment can be traced later against whatever record exists for it.
Will volunteers be able to use it?
That was the binding constraint. Entry is one short form and the main report is one screen. Anything requiring training gets abandoned the first time the trained person is away.
One spreadsheet causing most of the trouble?
Tell us what it tracks and what you have to work out by hand every month. Small focused tools are some of the most satisfying work we do, and we will tell you if the spreadsheet is genuinely fine as it is.
Start a conversation See all case studies