C
Front-End Developer × Accountant · Ndola, Zambia

CaristoMulenga

I spend my days reconciling ledgers and my evenings writing code, and the overlap is the point. I build interfaces shaped by someone who has actually worked the numbers side of a business.

HTML5 CSS3 JavaScript Firebase Git & GitHub
View My Work Accounting & Bookkeeping Résumé
Who I Am

Discipline over shortcuts.
Understanding before speed.

I'm an Assistant Accountant at Ultimate Farms Ltd in Ndola, Zambia, and a self-taught front-end developer. Most days I'm reconciling payroll and cost data by hand, which is exactly why I build software the way I do: methodically, with an eye for where numbers, and code, quietly go wrong.

I chose the harder, more deliberate path into tech: learning by building, not by credential. I write every line manually, read documentation before watching tutorials, and don't move to the next step until I understand the current one. Every project here is designed to teach me something real and solve an actual problem, not fill space in a portfolio.

Current Stack

HTML5 CSS3 JavaScript Git + GitHub Firebase (planned) Flutter (planned) React (planned)
Caristo Mulenga
0
Real-world projects
shipped or in progress
Learning software development outside a traditional CS degree, working through the fundamentals by building actual projects and solving problems along the way.
Where I Work

The day job that
sharpens the code.

Assistant Accountant
Ultimate Farms Ltd · Ndola, Zambia · Nov 2024 - Present

I handle payroll for roughly 30 employees, plus cost accounting, bookkeeping, and cashbook management and reconciliation for a 13,500-bird layer (egg-production) operation that also sells bananas, oranges, and vegetables. In practice the role runs wider than the title: I'm one of three people in the company's administrative management structure alongside the Managing Director and his wife, I supervise around 26 employees at the farm directly, and when the Managing Director is unavailable I take on operational decisions, recommendations, and reporting in his place.

  • Rebuilt roughly two years of backlogged company records after the position sat vacant, bringing 2023 and 2024 payroll, bookkeeping, petty cash, purchases, feed expenses, and statutory records (NAPSA, ZRA) up to date, then repeated the process for 2025.
  • Led a full calendar-year payroll reconciliation across three independent data sources (payroll register, cash book, and individual payslips), surfacing untagged entries and per-employee rollup errors.
  • Traced a cost-accounting sales discrepancy back to January 2023, correcting figures month by month across a 12-category audit of the workbook.
  • Currently pursuing the ZiCA Diploma in Accountancy as a self-study programme, running Jan 2026 to Dec 2028.
Vice Secretary
Sharing Cohorts Foundation · Community Charity · Jul 2025 - Present

I handle documentation and records for a community organisation of roughly 90 members. We meet every two weeks, and I'm responsible for the member register, meeting minutes, and financial reports that go with each meeting. Reporting matters most in the run-up to an outreach: with one coming up in the next two weeks, that's when I prepare and present the financial and activity reports the organisation relies on before it goes ahead.

  • Maintain a register of roughly 90 members, including names, birthdays, and the photo and video documentation gathered at outreach events.
  • Prepare and present financial reports and meeting minutes on a biweekly schedule.
  • Reporting intensifies ahead of each outreach, when the organisation needs an accurate picture of funds and member participation before committing to it.
Caristo handing over a donated phone to a beneficiary during a Sharing Cohorts Foundation outreach Caristo taking notes as Vice Secretary during a Sharing Cohorts Foundation outreach
From our outreach on Christmas Day, 2025, delivering a phone to a beneficiary, and documenting the visit as Vice Secretary.
Toolkit

What I build with
today, and next.

A working stack, not a wish list. Everything marked "current" is something I have shipped code with. Everything marked "learning" or "planned" is the next deliberate step on the roadmap, not a placeholder.

💻
Core Languages
HTML5 CSS3 JavaScript (ES6+)
🛠️
Tools & Workflow
Git + GitHub VS Code Responsive / Mobile-First Design Chrome DevTools
🗺️
Planned Next
React Firebase + Firestore Flutter REST API Integration Cloud Deployment
📊
Domain Knowledge
Payroll & Cost Accounting Financial Reconciliation Excel / Data Modeling
Where the Numbers Are Real

Financial work built on
accuracy, not guesswork.

Alongside development, I take on freelance and remote work in bookkeeping, accounting support, Excel, payroll, data entry, and administrative work. It's the same discipline shown in the case studies below, applied to your books. This work is separate from my full-time role; nothing here involves confidential employer data.

01
Completed
Cost Accounting Workbook Audit
Full-Year Financial Workbook Audit · Excel & Cost Accounting

The trigger was a mismatch between the number of sales recorded and the balances that should have resulted from them, discovered while reviewing the cost-accounting sheets we use ahead of bookkeeping. The gap traced back further than expected, so I had to go back to January 2023 and correct the figures systematically from there. Along the way, errors surfaced across twelve separate categories, the kind that compound quietly until closing balances stop making sense. I audited the entire workbook month by month, traced each error back to its source, and rebuilt it into a clean, reconciled file with verified closing balances.

🔗
Cross-Sheet References
Traced and repaired broken formula links between monthly sheets that had silently stopped updating.
📉
Cascading Errors
Identified a pricing mistake in one month that had been carrying forward and compounding across several others.
🧾
Missing Source Data
Located and reintegrated purchase records that had been left out of the original entries.
✅
Verified Closing Balances
Reconciled every month so the final balances could be trusted as the following period's opening figures.

The Hard Part

None of the twelve error categories existed in isolation. Several fed into each other across months, so fixing one in place without tracing its downstream effect would have just relocated the mistake. I was still new to accounting at the time, so the audit had to move chronologically, verifying each month was clean before trusting the next.

02
Completed
Payroll Reconciliation
Full Calendar-Year Payroll Audit · Payroll & Reconciliation

A full year of payroll needed to be checked across three independent sources (the payroll register, the cash book, and individual payslips) to confirm every employee had been paid correctly and every entry was properly tagged. Discrepancies between the three don't announce themselves; they have to be hunted down line by line.

📋
Three-Way Cross-Check
Matched payroll register, cash book, and payslips against each other for a full calendar year.
🏷️
Untagged Entries
Surfaced cash book entries that had never been properly categorized against payroll.
👤
Per-Employee Rollups
Corrected individual employee totals that had drifted from the source records over time.
📆
Full-Year Coverage
Verified every month, not a sample, so no quarter was assumed clean without being checked.

The Hard Part

Three sources rarely disagree in an obvious way. A mismatch usually shows up as a small rounding-looking gap that's actually a missed entry. Finding those meant reconciling employee by employee, month by month, rather than trusting that totals which looked close enough were actually correct.

The Real Find

While cross-checking cash book entries against current staff, I found a salary payment that didn't match anyone on the active roster. Tracing it back showed an employee who had already left the company was still being paid. Confirming it took about three days of tracing transactions and checking names against employee records, and it's the clearest case for why payroll has to be checked against independent sources rather than trusted on its own.

03
Completed
Rebuilding Two Years of Records
Backlog Recovery · Bookkeeping, Payroll & Statutory Compliance

The Assistant Accountant position had sat vacant for roughly two years before I started, so the company's records were significantly behind on everything: payroll, bookkeeping, petty cash vouchers, purchases, feed expenses, and statutory payments like NAPSA and ZRA. I had never worked as an accountant before, so I started by working closely with the Managing Director while I learned the processes, then took the backlog on directly.

🗂️
2023–2024 Records
Brought two full years of backlogged payroll, bookkeeping, and statutory records up to date from scratch.
⏱️
6–7 Months
Time it took to bring the 2024 records current, given the volume of historical information to review and correct.
📅
2025 Records
A further 4–5 months to bring 2025 up to date; now largely complete, pending the auditors' review.
🔄
Ongoing Maintenance
2026 records are currently accurate and maintained, with the usual year-end audit and finalisation process taking place before moving fully into next year's records.

The Hard Part

I was learning accounting itself while clearing a two-year backlog under it, with no prior professional experience to fall back on. The two had to happen together: I couldn't wait to be fully trained before starting, and I couldn't fix the records without first understanding what correct looked like. Leaning on the Managing Director's guidance early on, and working through the volume systematically rather than rushing it, was what made the backlog closeable instead of just endless.

Try It Yourself

Sample templates,
built from scratch.

Built with fictional data and no connection to real employer records, so you can see the structure and formulas behind the case studies above.

📊
Budget Tracker
Dashboard, spending by category, and a savings goal tracker, built the same way as Budget Tracker Pro above. Full template available on request.
🧾
Payroll Summary Sheet
Ten fictional employees with NAPSA and PAYE calculated by formula from basic salary and allowances.
Download .xlsx →
📈
Cost Accounting Workbook
Six months of category costs rolled up against sales, with a reconciliation check that flags the one month where cost exceeds revenue.
Download .xlsx →
📚
Bookkeeping & Reconciliation
Bookkeeping Financial Reconciliation Cost Accounting
📊
Excel & Payroll
Excel / Data Modeling Payroll Administration
🧮
Accounting Software
Sage Pastel 50 Dove Payroll QuickBooks (in progress)
🎓
Credentials
ZiCA Diploma (in progress)
Work in Progress

Projects built to
solve real problems.

One is live and still evolving through deliberate, tested phases. One is a working prototype that still needs a real backend. One exists today as a personal Excel tool with an app version planned for later, not built yet. All three are rooted in a real gap I've observed, in how people find housing, manage money, and untangle who-owes-who after a shared bill, not dummy apps built to fill a portfolio.

01
Live & Evolving
SplitZK
Shared Expense Splitter · Installable Web App (PWA)

SplitZK exists because "just Mobile Money me back" breaks down the moment three or more people share a bill. It tracks who paid for what (rent, groceries, a trip) and reduces everyone's tangled IOUs down to the fewest possible payments, in Zambian Kwacha, with no spreadsheet required.

SplitZK shipped early on purpose, then kept growing through deliberate, verified phases rather than one big rewrite: real accounts replaced a simple device PIN lock, the navigation was rebuilt around Groups, Friends, and Activities, and the data model was hardened for a future where splits sync across a person's own devices. It's installable as an offline-first app, and the core calculation engine, the part that actually has to be correct, has stayed untouched and independently regression-tested through every one of those changes.

SplitZK demo group showing three members, total expenses of K690, a settle-up balance owed to Mulenga, and a spending breakdown by category
SplitZK's demo group: running balances, settle-up status, and spending by category, live at the link below.
👥
Multi-Person Splitting
Add anyone in the group and split any expense across exactly who was there.
🧾
Expense Ledger
Every bill logged with who paid, what it was for, and how it was split.
⚖️
Running Balances
See at a glance who is owed money and who owes it, updated instantly.
🔁
Settle-Up Optimizer
A greedy debtor-creditor match collapses every debt into the minimum number of payments.
🔐
Real Accounts
Sign up/sign in per device, session timeout, and safe migration of old data into a new account.
📴
Offline-Installable
A proper PWA with a service worker, install it to a home screen and it keeps working without a connection.
🎟️
Free / Pro Groups
2 free active groups per account; a 30-day Free Pass unlocks unlimited groups plus Excel/PDF export. Self-serve for now, no payment gate built yet.
🇿🇲
ZMW-Native
Amounts formatted in Kwacha from the ground up, not an afterthought retrofit.

The Hard Part

Tracking who-paid-what is easy. Reducing a group's tangled debts to the fewest possible payments is not: it's a matching problem. SplitZK sorts everyone into debtors and creditors, then greedily pairs the largest debtor against the largest creditor until every balance clears, so three friends never end up making six payments when two would settle it.

Built to Survive a Future Sync Backend

Every record now carries real UUIDs instead of locally-unique strings, and deletes are soft, groups, expenses, and friends all get a status/tombstone field instead of actually disappearing, so the local data won't need restructuring the day a real multi-device sync layer gets built. None of that changes what the app does today; it's groundwork. The one rule through all of it: after every structural change, the same 10-test calculation harness has to still pass before the change counts as done.

02
Active Development
NyumbaNi
Property Listings, Marketplace & Price Comparison · Web Application

NyumbaNi is a free, direct-from-owner property platform built for the Zambian rental market. It cuts property agents out entirely: landlords post listings themselves, and tenants browse and contact owners directly, at no cost, with no fee to unlock anything.

In Zambia, the rental process often involves a non-refundable viewing fee charged by agents for property visits, followed by a commission of half the rent if the tenant proceeds with the property. NyumbaNi removes all of this, with no agents and no fees at all.

NyumbaNi listings page showing six sample property listings across Lusaka, Ndola, and Livingstone, with a K0 platform fees stat and free contact-owner buttons
NyumbaNi's listings page: free contact-owner buttons, city and type filters, and the K0 platform fees stat up top.
🏘️
Property Listings
Landlords post directly: photos, prices, locations, and descriptions, fully transparent.
🔍
Search & Filtering
Filter by city, type, and neighbourhood. Built mobile-first for Zambian users.
💸
Completely Free
Browse and contact owners directly. No unlock fee, no subscription, nothing to pay NyumbaNi.
📊
Price Compare
Compare rental prices by neighbourhood before committing to a search area.
🛒
NyumbaNi Market
A separate buy/sell marketplace (electronics and more) alongside the housing listings. Sellers must submit NRC and business details before listing.
🪪
Verified Onboarding
Phone OTP plus NRC document upload for identity, with Bronze/Silver/Gold landlord trust tiers as verification deepens.

What's Actually Left

Everything you can click through today runs on sample data hard-coded into the page, there's no backend, no database, no real accounts yet. The real work left is a backend and database for users, listings, and market items; real phone-OTP delivery and session handling; secure, private storage for uploaded NRC documents with an admin review flow; and real image upload to replace the placeholder icons. The front end was the easy part; making all of it real is what's next.

Why Free, Not Paywalled

I built the free-contact model without first knowing someone else had already built something close to it. A similar Zambian property app had launched a few months earlier and already picked up a real user base. Reading through its public reviews taught me more than any spec could have: people genuinely like dealing with the owner directly instead of an agent, and the loudest complaints were about listings that stay up long after a property's gone, and, by one account, a paid "AI agent" contact flow that kept repeating itself and handed over numbers that didn't connect. NyumbaNi's free-contact model answers the second problem directly: no paid step standing between a tenant and a real number. The first problem, expiring stale listings automatically, is now on my pre-launch checklist.

03
In Use (Excel) · App Not Started
Budget Tracker Pro
Personal Finance Excel Tool · App version planned (working name: CariSave)

I wanted a proper budget tracker for my own finances, so I built one in Excel. It's grown into a full workbook: a dashboard, a transaction log, subcategory-level budgets (not just top-line categories), monthly spending trends, an annual summary, a multi-account view, and a side-hustle income log, with individual tracking sheets for every month across two full years. This is the tool I actually use, day to day, not a demo built to look good.

The plan is to eventually turn this into a real app, tentatively called CariSave, but that work has not started yet. Right now this is entirely an Excel tool, not code. Turning the spreadsheet's logic into an actual app (picking a stack, structuring the data, handling state outside a spreadsheet) is a real jump I haven't made yet, and I'd rather say that plainly here than imply progress that isn't there.

Budget Tracker Pro Excel dashboard showing monthly income, expenses, spending breakdown by category, a savings goal tracker, and smart insights
Budget Tracker Pro in Excel: the dashboard I actually use, spending breakdown, savings goal tracker, and category insights.

Planned feature set. Items marked (Excel) already work in Budget Tracker Pro today; everything else is a future idea for the app version and hasn't been started.

📊
Financial Dashboard (Excel)
Live overview of income, expenses, savings progress, and monthly summaries in one place.
📝
Expense & Income Tracking (Excel)
Log transactions by category with full history. Understand exactly where money goes.
🎯
Savings Goals (Excel)
Set targets and track progress toward them over time.
📈
Reports & Analytics (Excel)
Monthly and rolling annual summaries. Understand financial patterns over time.
🛒
Supermarket Price Comparison
Compare product prices across stores, starting with ShopRite. New, app-only feature, not yet started.
🤖
AI Suggestions
Spending suggestions based on tracked patterns. On the roadmap, well past the app-build stage, not yet started.
🔔
Smart Notifications
Savings reminders and budget alerts. New, app-only feature, not yet started.
👥
User Contribution System
Users submit and correct product prices to keep comparison data accurate. New, app-only feature, not yet started.
🔐
Security & Privacy
Secure login and data privacy as a foundation once the app has real user accounts. New, app-only feature, not yet started.

The Real Challenge Ahead

The Excel version works because a spreadsheet's formulas do the heavy lifting invisibly: running balances, rollups, conditional tips. Turning that same logic into actual code, outside a spreadsheet, is the real challenge, and it's a step I haven't started yet. The price-comparison trust and conflict-resolution problem is a further design question on top of that, and it's even further out.

What I Bring

Strengths built through
real effort.

🧩
Problem-Solving Mindset
Accounting taught me the difference between recording a transaction and actually reconciling a balance. That thinking shaped how I approached SplitZK: not just showing who owes whom, but reducing everyone's balances down to the fewest real payments, the same way individual entries have to add up to a balance that makes sense as a whole.
📱
Context-Aware Design
I design for the Zambian context: mobile-first layouts built around how people actually search for housing here, price comparison by neighbourhood, direct owner contact with no middleman fee, and identity verification via NRC rather than assuming a Western-style ID system. My work is shaped by where it will actually be used.
🌱
Long-Term Vision
SplitZK shipped early on purpose, then kept growing through deliberate, verified phases, accounts, a nav rebuild, schema hardening, rather than one big rewrite. Every phase re-runs the same calculation test harness to confirm the core numbers never moved. NyumbaNi is the harder, longer build I'm working through the same way right now. The Budget Tracker's app version is next, once NyumbaNi is far enough along to make room for it.
Looking Forward

Growth that is
intentional.

My ambition is to grow into a full-stack developer who can take a problem from concept to deployed product. I'm working through the fundamentals deliberately, then backend and frontend frameworks, one layer at a time, while applying what I already know from running real financial operations.

→
Master the fundamentals: HTML, CSS, JavaScript, completely, not partially.
→
Launch NyumbaNi and CariSave: from prototype and Excel logic to live products with real users.
→
Grow into full-stack: Firebase, React, Flutter, one layer at a time.

Let's build something
worth building.

Open to freelance bookkeeping, Excel, and payroll support work, as well as collaborations and opportunities in front-end development.

Get in Touch WhatsApp