Five years in accounting and bookkeeping, and that is the advantage. I spent those years producing and reconciling the numbers businesses make decisions on. Now I build the SQL, Power BI and Python that answers those same questions faster, wider and with the evidence attached. Every project below is written as a decision document: a governing question, the decomposition behind the answer, and an owner for each recommendation.
Open to remote BI / Data Analyst roles. Based in Nairobi, Kenya (EAT, UTC+3). Freelance BI analyst, operating as Sting Analytics on Fiverr and Upwork.
GitHub · LinkedIn · patrickgichuki2@gmail.com
Three worked case studies, in the order I would show them. Each is a decision document: the question, the decomposition behind the answer, and an owner for every recommendation. All three run on simulated data, disclosed on the first line of each repo — the method is what transfers to a real ledger.
- Revenue Decline Diagnostic — Revenue fell 10.7%. I traced it to two of six stores carrying 71% of the decline, ranked the four causes by owning department, and graded my own diagnosis against a sealed answer key: 14/14.
- Monthly Management Pack — Sales within 1% of budget, gross profit 19% behind it. An exact price / cost / mix / volume bridge, decomposed across 120 product lines with a named owner on each; 17/17 checks.
- Receivables & Cash Conversion Diagnostic — Cash stuck though revenue is fine. Ageing, DSO, best-possible DSO, collection effectiveness, a cash conversion cycle and an illustrative expected-credit-loss analysis informed by IFRS 9 principles on KES 16.8M of receivables: 64% past due, three accounts carry 47% of it; 15/15 checks.
I work with retailers, wholesalers and SMEs on sales and financial performance — the sales, margin and cash questions their owners actually decide on.
- Find the cause, not the chart. Every analysis starts from a decision, then decomposes the movement by store, category and segment to find where it sits.
- Size every fix in gross profit. Each recommendation carries an owner and an expected recovery, converted at margin, so a numbers person can argue with it.
- Declare the limits. Facts, hypotheses and genuinely unexplained findings are labelled separately. Where the data cannot answer, I say so rather than guess.
| Tool | What I actually do with it | Evidence |
|---|---|---|
| Power BI | semantic models, DAX measures, row-level security, executive dashboards | KPI & Margin Dashboard · BMW Financial Health |
| SQL | star schemas, CTEs, joins, window functions, data-quality checks | Customer Retention & RFM · the diagnostic pipeline (9 scripts, 696 lines) |
| Python | pandas, scikit-learn, statsmodels, matplotlib, Streamlit apps | Churn Prediction · Retail Demand Forecasting · Loan Default Model |
| Excel | Power Query, modelling, executive reporting | pizza_sales · E-commerce Order Analysis |
| Project | Business question | Result | Basis |
|---|---|---|---|
| Receivables & Cash Conversion Diagnostic | Cash is stuck even though revenue is fine. Which accounts are holding it, and what is actually collectible? | Ageing, DSO, best-possible DSO, collection effectiveness, a CCC with inventory and payables legs and an illustrative expected-credit-loss analysis informed by IFRS 9 principles on KES 16.8M of receivables: 64% past due, three accounts carry 47% of it, 6.73M modelled recoverable, 15/15 independent checks | Simulated case study |
| Monthly Management Pack | Sales are within 1% of budget and gross profit is 19% behind it. Where did the profit go, and who owns it? | A flexed budget and an exact gross-profit bridge: revenue -0.74% against gross profit -19.38%, split into price -41,943.76, cost -26,053.41, mix -14,164.16 and volume +8,755.42 - then decomposed across all 120 product lines, each with a named owner; 17/17 checks | Simulated case study |
| Revenue Decline Diagnostic | Revenue fell 10.7%. Where did it come from, and who owns each cause? | Traced to two of six stores (71% of the decline) and four ranked problems, each with an owner and an expected recovery; the pipeline is graded 14/14 against a sealed answer key | Simulated case study |
| Executive KPI & Margin Dashboard | How is the business performing against its core KPIs? | $1.75M revenue tracked, 16.4% margin surfaced, and the margin compression hidden inside the November revenue spike isolated from the headline | Dataset result |
| Customer Retention & RFM Segmentation (SQL) | Which customers actually drive revenue, and who is at risk of churning? | Pure SQL (CTEs, window functions): 9.6% of customers drive 19.4% of revenue; 1,255 churn-risk flags | Dataset result |
| Sales Team & Product Performance | Why was one region $500K behind another? | Root-caused across ~9,000 deals; an 8% revenue-recovery plan — an illustrative target, not a measured result | Illustrative target |
| Customer Churn Prediction | Which customers are about to leave, and why? | 84.7% accuracy, €1.5M at-risk balance flagged, live Streamlit app | Dataset result |
| Retail Demand Forecasting | Which forecasting method actually performs best on this data, not just which one we assumed would? | 4-model bake-off (Naive, Holt-Winters, SARIMA, Prophet); Prophet won at 6.88% MAPE | Dataset result |
| pizza_sales — menu engineering | Revenue is flat all year — where does the next dollar come from without a single new customer? | Five levers quantified from 48,620 order lines to ≈ +$88K a year, with the arithmetic shown — a scenario, not realized revenue | Illustrative scenario |
Each repo's README is written as a standalone business report: the problem, the approach, the findings, and recommendations with an owner, not just code.
Basis says what kind of evidence each Result is. Simulated case study (Revenue Decline, Monthly Management Pack, Receivables) means synthetic data, disclosed on the repo's first line, with no client outcome implied. Dataset result means the figures are what the analysis computed on that project's own dataset — real work on real rows, not a measured business outcome. Illustrative target / scenario (the 8% recovery plan, the $88K opportunity) means a sized opportunity with its arithmetic shown — not a measured result, not realized revenue.
Fort Beauty — inventory, sales and profitability system for a multi-store beauty retailer (code private; walkthrough on request). The business ran an offline POS with no consolidated view, so I built the layer around it: a Python import pipeline covering four raw POS export formats with duplicate protection, a PostgreSQL/Supabase schema with a full stock ledger and approval workflow, and a Next.js dashboard for profitability, fast/slow/dead stock and stock reconciliation.
GitHub · patrickgichuki2@gmail.com · LinkedIn
Available for remote BI / Data Analyst roles. Nairobi, Kenya (EAT, UTC+3).

