Data Cleaning & Prep
Reconcile scattered, conflicting exports into one trustworthy dataset everyone agrees on, the foundation for everything else.
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.

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.
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.
Make scattered, messy data trustworthy, fast, and ready to analyze.
Reconcile scattered, conflicting exports into one trustworthy dataset everyone agrees on, the foundation for everything else.
Robust data models and reusable DAX measures that stay accurate and fast as your data and questions grow.
End-to-end ETL/ELT and medallion architectures so your data flows reliably from source to decision.
Turn clean data into answers your team can see and act on.
Segmentation, forecasting, and A/B testing that move past "what happened" to the answer you can actually act on.
Interactive Power BI dashboards your whole team actually checks: the right metrics, no clutter, refreshed automatically.
Margin, unit-economics, and cost-driver analysis that pinpoints which products, customers, or channels make money and where to cut or invest.
CPA-grade financial insight, from the month-end close to the forward plan. Something few data analysts can offer.
Budgets, rolling forecasts, and variance analysis that show leadership where the business is heading and why actuals drifted from plan.
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.
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.
From the first query to the final dashboard, here's where I spend my time and what I reach for.
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;
# 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")
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.
No black boxes. You'll always know where we are and what comes next.
We pin down the real question, and how you'll know when it's answered.
I pull and join your sources in SQL, however scattered they are.
Power Query & Python to reconcile, validate, and make it trustworthy.
Models, segments, and tests that turn the data into an actual answer.
A dashboard or report your team will keep using long after I'm gone.
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.