Available for freelance & consulting · 2026

Transforming raw data into clear

I'm Rubansi, a freelance data analyst who helps small teams and founders find the story in their numbers. From raw SQL to a dashboard your whole team actually reads.

Rubansi Vincent, freelance data analyst, Nairobi RV
About me

I don't just build dashboards. I sit with your business until the numbers make sense, then hand you something your team can run with.

Over six years I've worked across e-commerce, fintech, and operations, wrangling data with SQL and Python, modeling in Power Pivot, and turning it all into dashboards in Power BI. I'm also a CPA-trained analyst. I read a balance sheet as fluently as a dashboard, so financial statements, ratios, and FP&A aren't a translation layer for me. My happy place is the messy middle: where exports don't match, definitions disagree, and nobody trusts the report.

I work best with founders and small teams who need answers, not a 40-page deck. Clear questions in, confident decisions out.

Clear Decisions Concise reports Fast turnarounds
Services

Ways I can help your team.

Pick the piece you need, or bring me a messy problem and I'll tell you where to start. Every engagement is scoped with a clear deliverable and a flat quote.

Data Engineering & Modeling

Make scattered, messy data trustworthy, fast, and ready to analyze.

01

Data Cleaning & Prep

Reconcile scattered, conflicting exports into one trustworthy dataset everyone agrees on, the foundation for everything else.

SQLPower Query
02

Data Modeling

Robust data models and reusable DAX measures that stay accurate and fast as your data and questions grow.

Power PivotExcel
03

Data Pipelines & ETL

End-to-end ETL/ELT and medallion architectures so your data flows reliably from source to decision.

ETL / ELTPower Query

Analytics & Dashboards

Turn clean data into answers your team can see and act on.

04

Insight & Analysis

Segmentation, forecasting, and A/B testing that move past "what happened" to the answer you can actually act on.

PythonSQL
05

Dashboards & Reporting

Interactive Power BI dashboards your whole team actually checks: the right metrics, no clutter, refreshed automatically.

Power BIPower Pivot
06

Profitability & Cost Analysis

Margin, unit-economics, and cost-driver analysis that pinpoints which products, customers, or channels make money and where to cut or invest.

SQLPython

Financial Analysis & Reporting CPA edge

CPA-grade financial insight, from the month-end close to the forward plan. Something few data analysts can offer.

07

Financial Planning

Budgets, rolling forecasts, and variance analysis that show leadership where the business is heading and why actuals drifted from plan.

ExcelPower BI
08

Financial Analysis

Balance-sheet, liquidity and solvency analysis with ratio and working-capital trends, reading the three statements to gauge the real financial health of the business.

Ratio AnalysisExcel
09

Financial Reporting

Financial reporting, P&L, cash-flow and balance-sheet reporting, plus project reports and audit-ready datasets that turn the month-end close into a decision tool.

Power BIDAX
Skills & tools

A full analytics stack, end to end.

From the first query to the final dashboard, here's where I spend my time and what I reach for.

Languages & querying
  • SQLPostgres · BigQuery
    Expert
  • Pythonpandas · numpy
    Advanced
BI & modeling
  • Power BIdashboards · data viz
    Expert
  • Excelmodeling · automation
    Expert
  • Power PivotDAX · data models
    Advanced
  • Power QueryETL · transforms
    Advanced
Engineering & cloud
  • Git & GitHubversioning · repos
    Advanced
  • AWSRedshift · Athena · S3
    Advanced
From the editor

One engagement, end to end: the SQL that builds monthly cohort retention, the Python that shapes it into a matrix, and the Power BI page it ships on. The editor is a mockup; the code is the real thing. Scroll, or click the tabs.

-- Revenue retention by signup cohort
WITH first_order AS (
  SELECT customer_id,
         DATE_TRUNC('month', MIN(order_date)) AS cohort_month
  FROM sales.orders
  GROUP BY 1
),
monthly AS (
  SELECT f.cohort_month,
         DATE_TRUNC('month', o.order_date) AS month,
         SUM(o.line_total) AS revenue
  FROM sales.orders o
  JOIN first_order f USING (customer_id)
  GROUP BY 1, 2
)
SELECT cohort_month, month, revenue,
       ROUND(100 * revenue / FIRST_VALUE(revenue) OVER w, 1) AS retained_pct
FROM monthly
WINDOW w AS (PARTITION BY cohort_month ORDER BY month)
ORDER BY cohort_month, month;
▶ Query returned 78 rows 0.14s · 2,418,663 rows scanned
cohort_monthmonthrevenueretained_pct
2025-012025-0184,210100.0
2025-012025-0257,68468.5
2025-012025-0351,53061.2
2025-012025-0448,42157.5
2025-012025-0546,14754.8
2025-022025-0291,875100.0
2025-022025-0360,72966.1
# Pivot the cohort query into a retention matrix
import os
from pathlib import Path
import pandas as pd
from sqlalchemy import create_engine

engine = create_engine(os.environ["WAREHOUSE_URL"])
sql = Path("cohort_retention.sql").read_text()
df = pd.read_sql(sql, engine, parse_dates=["cohort_month", "month"])

df["month_n"] = (df["month"].dt.year - df["cohort_month"].dt.year) * 12 \
    + df["month"].dt.month - df["cohort_month"].dt.month

matrix = df.pivot_table(index="cohort_month", columns="month_n",
                        values="retained_pct", aggfunc="first")

at_risk = matrix[matrix[3] < 55.0].index
matrix.round(1).to_csv("out/retention_matrix.csv")
print(f"{len(at_risk)} cohorts flagged for retention review")
▶ python retention_analysis.py exit 0 · 1.24s
cohort_monthm0m1m2m3
2025-01100.068.561.257.5
2025-02100.066.160.354.1
2025-03100.071.463.858.9
2025-04100.069.062.456.2
2 cohorts flagged for retention review
app.powerbi.com/reports/retention-cohorts ● Live
Retention · Monthly Cohorts
Year: 2025Region: AllCohorts: 12
58%
Avg 3-mo retention
▲ 4 pts vs LY
$92K
Largest cohort, month 0
▲ 9% vs Jan
2
Cohorts at risk
▼ below 55% by m3
Retention % by months since signup
2025-012025-032025-02 at risk2025-10 (young)other cohorts
Month-0 revenue by cohort (US$K)
84J
92F
63M
71A
78M
74J
81J
69A
68S
81O
72N
89D
2025 cohortsat risk
⚠ 2 cohorts (Feb, Jul) below 55% retention by month 3 → flagged for retention review
OverviewCohortsDetail
retention_summary.pptx Reading view
Retention Review · FY 2025
Growth is real; February hides a leak
Findings
  • Acquisition is growing: monthly intake rose from $84K (Jan) toward $89K (Dec); best month was Feb at $92K.
  • Retention is improving on average: 3-month revenue retention is 57.9%, up 4.2 pts vs last year.
  • Our biggest intake month is quietly our leakiest: Feb fell to 54.1% by month 3; Jul shows the same pattern (53.7%).
Action points
  • Find out why Feb's customers churn: audit campaign sources and discount-led signups from that month.
  • Replicate March's onboarding across new cohorts; it holds the best month-3 retention at 58.9%.
  • Add a 55% month-3 alert in Power BI so a leaking cohort surfaces within a week, not a quarter.
  Slide 6 of 6  
⎇ main Ln 17, Col 42   UTF-8   SQL   postgres · sales_warehouse
Sectors & industries

Domains of Expertise.

Data problems rhyme from one industry to the next, but the context matters. Here's where I've learned the vocabulary, the metrics, and the edge cases.

How I work

Five steps from question to confidence.

No black boxes. You'll always know where we are and what comes next.

01

Frame

We pin down the real question, and how you'll know when it's answered.

02

Collect

I pull and join your sources in SQL, however scattered they are.

03

Clean

Power Query & Python to reconcile, validate, and make it trustworthy.

04

Analyze

Models, segments, and tests that turn the data into an actual answer.

05

Deliver

A dashboard or report your team will keep using long after I'm gone.

Background

Credentials.

Contact

Have data that isn't talking? Let's fix that.

Tell me the question you're stuck on. I'll come back with how I'd approach it, a timeline, and a flat quote: no jargon, no surprises.