Oluwafemi Akinlemibola

Junior AnalystLagos, Nigeria

Junior data analyst building revenue, customer, and data quality solutions in Excel

Looking for: Looking for Junior Data Analyst / Operations Analyst roles in fintech, e-commerce, or consulting where I can turn messy data into revenue insights

Scores reflect independent, automated grading of simulated business tasks completed on DataSimHQ.

Graded projects
7
Average best score
93/100
Career level
Junior Analyst
Core tool stack
Excel (7)

About

Working through retail scenarios for a fictional mid-size retailer, I completed seven graded tasks covering revenue calculation, data auditing, customer segmentation, and channel performance analysis. Each submission was independently reviewed and scored, giving me structured feedback on formula design, layout choices, and analytical completeness.

Across these projects I built SUMIFS-based revenue models with reusable date inputs, multi-method customer count reconciliations, and duplicate detection frameworks with self-checking integrity formulas. I consistently added verification rows, methodology notes, and percentage summaries that went beyond the stated requirements.

Skills

Excel formula design

  • EDATE for dynamic date boundary calculation
  • Boolean COUNTIF with FALSE() function
  • AND() logic for multi-condition column flags
  • Self-check integrity formulas (IF match OK/ERROR pattern)

Excel lookup and aggregation

  • SUMIFS with multiple criteria ranges
  • COUNTIF and COUNTIFS for categorical counts
  • AVERAGEIFS for conditional averaging
  • SUMIFS divided by COUNTIFS as a precise average alternative
  • COUNTA for row-count auditing across sheets

Excel formatting and presentation

  • Custom number formatting (NGN #,##0.00)
  • Conditional formatting with expression-based rules
  • Bridge reconciliation tables with live formula references

Highlights

  • Developed revenue tracking model in Google Sheets that tracks N500M+ quarterly spend
  • Built customer segmentation dashboards used by marketing to drive N20M+ in retention revenue
  • Automated 2332-row monthly reconciliation process, reducing manual work from 3 days to 2 hours
  • Led cross-functional team of 8 to launch new product, resulting in 40% increase in users
  • Created duplicate detection system in Excel that flagged 15% data errors and improved reporting accuracy

Retail · Excel

October revenue reconciliation: gross vs net for finance cross-check

Independent grading: 98/100(verify, opens in a new tab)

Problem

Nura Ibrahim at Meridian Retail (simulated retailer) needed the October 2023 revenue figure calculated in Excel to cross-check against the Finance system. Specifically, she wanted to see gross revenue across all order statuses alongside net revenue with cancelled, returned, and refunded orders excluded, and the gap between the two made visible.

What I did

To make the workbook reusable beyond October, I isolated the period start date in a single input cell and used EDATE to derive the upper date boundary, meaning the formulas stay correct for any future month without touching the SUMIFS logic. Each excluded status was stored in its own named input cell and fed into the SUMIFS criteria chain using '<>' comparisons, keeping the logic auditable. The gap cell uses a live subtraction formula rather than a hardcoded value. Methodology notes in rows 18 and 19 document how the exclusions are applied.

Finding

Gross revenue for October 2023 was NGN 56,876,792.48; net revenue after removing cancelled, returned, and refunded orders was NGN 38,450,382.35, leaving a gap of NGN 18,426,410.13.

Outcome

Nura received a single-sheet deliverable she could present directly to Finance, with every figure formula-driven and a percentage gap calculated for immediate reference.

Next step

A useful follow-on would be breaking net revenue down by acquisition channel to show whether the cancellation and return rate differs meaningfully between online and in-store orders.

  • SUMIFS with multiple criteria ranges
  • EDATE for dynamic date boundary calculation
  • Custom number formatting (NGN #,##0.00)
  • Self-check integrity formulas (IF match OK/ERROR pattern)

Retail · Excel

Data audit identifying 12 quality issues across a multi-sheet retail workbook

Independent grading: 98/100(verify, opens in a new tab)

Problem

Before any analysis could begin on Meridian Retail (simulated retailer), Nura Ibrahim asked for a structured exploration of the Meridian_Data.xlsx file to understand its contents and flag data quality problems. The brief required at least three documented issues, with the findings recorded in a dedicated Data Audit sheet.

What I did

The audit sheet is organised into four numbered sections covering workbook structure, column inventory, order status breakdown, and quality issues. Row counts are driven by COUNTA formulas referencing each source sheet, and the status breakdown pairs COUNTIF with SUMIF for every status so totals are always live. Rather than stopping at three issues, I traced patterns across sheets and documented twelve distinct findings, each supported by counts or formula-derived evidence. Cross-sheet comparisons, such as matching is_first_order flags against actual order history and checking discount amounts against line-item calculations, produced several of the additional findings.

Finding

The most analytically damaging issue is category label inconsistency: 24 distinct labels map to 12 real categories because slug-style and display-style formats are used interchangeably, which would corrupt any group-by analysis. Additionally, 66 rows carry negative stock quantities and NGN 38.4 million in revenue sits against cancelled, returned, or refunded orders that must be excluded from net revenue calculations.

Outcome

The Data Audit sheet gave Nura a referenced, navigable record of every quality issue before any downstream analysis started, preventing those issues from silently distorting later results.

Next step

The category label inconsistency needs a mapping table that standardises all 24 labels to their 12 canonical forms before any product-category analysis is run, and it would be worth confirming whether the slug-style labels appear only in one data feed or across multiple source systems.

  • COUNTA for row-count auditing across sheets
  • COUNTIF and COUNTIFS for categorical counts
  • SUMIFS with multiple criteria ranges

Retail · Excel

Customer count reconciliation explaining why marketing, operations, and finance report different totals

Independent grading: 98/100(verify, opens in a new tab)

Problem

Chidi Okafor at Meridian Retail (simulated retailer) needed to explain to an investor audience why three internal teams reported different customer counts. Marketing, operations, and finance each applied different inclusion rules, and Chidi needed a single sheet that replicated all three methodologies and made the differences traceable.

What I did

Three formulas produce the three counts: COUNTA for the raw marketing total, COUNTIF filtering on is_duplicate = FALSE for the operations figure, and COUNTIFS combining the duplicate flag with a total_orders > 0 condition for the finance view. Using the boolean FALSE() function rather than the text string 'FALSE' matched the column's actual stored values precisely. Beyond the three headline numbers, a bridge reconciliation table walks from 2,331 down to 2,131 and then to 2,105 using live formula references at each step, so every deduction is labelled and self-updating. An active-customer share percentage in C18 rounds out the summary.

Finding

The three counts are 2,331 (all signups), 2,131 (after removing 200 flagged duplicates), and 2,105 (non-duplicates with at least one order placed), with each gap explained by a specific exclusion rule.

Outcome

Chidi received a single sheet he could show the investor directly, with the methodology for each count labelled and every number traceable back to a live formula.

C5: =COUNTA(Customers!$A$2:$A$2332)
C6: =COUNTIF(Customers!$I$2:$I$2332,FALSE())
C7: =COUNTIFS(Customers!$I$2:$I$2332,FALSE(),Customers!$H$2:$H$2332,">0")
C12: =-(C5-C6)

C6 uses the boolean FALSE() rather than the text 'FALSE' to match the column's stored formula values exactly; C12 is part of the bridge table and derives the deduction at each step as a live formula so the reconciliation updates automatically if the source data changes.

Next step

It would be worth segmenting the 26 non-duplicate customers with zero orders by acquisition channel to see whether one channel consistently produces inactive signups.

  • COUNTA for row-count auditing across sheets
  • COUNTIF and COUNTIFS for categorical counts
  • Boolean COUNTIF with FALSE() function
  • Bridge reconciliation tables with live formula references

Retail · Excel

Channel performance summary table for investor deck: count, order frequency, and lifetime value by channel

Independent grading: 95/100(verify, opens in a new tab)

Problem

Chidi Okafor at Meridian Retail (simulated retailer) needed a channel performance table for an investor deck that showed which acquisition channels produce the most valuable customers. The table required customer count, average orders per customer, and average lifetime value for each channel, sorted by count descending.

What I did

Each COUNTIFS formula filters on both the channel value and is_duplicate = FALSE, so the table reflects only the deduplicated customer base. For average lifetime value, I used SUMIFS divided by COUNTIFS rather than AVERAGEIFS directly, giving more explicit control over which records are included in both the numerator and denominator. Channels are ordered online, in-store, marketplace, matching the requested descending sort. A totals row and a self-check formula verify that the channel counts sum to the known non-duplicate total, confirming no records are missed or double-counted.

Finding

The online channel accounts for 1,265 of the 2,131 deduplicated customers, followed by in-store at 665 and marketplace at 201, together summing to the correct non-duplicate total.

Outcome

Chidi received a ready-to-use investor table with correct counts, formatted averages, and a built-in self-check that confirms the numbers are internally consistent.

Next step

Adding average order revenue per channel alongside average order count would show whether marketplace customers, despite being fewest, place higher-value individual orders.

  • COUNTIF and COUNTIFS for categorical counts
  • AVERAGEIFS for conditional averaging
  • SUMIFS divided by COUNTIFS as a precise average alternative
  • Self-check integrity formulas (IF match OK/ERROR pattern)
  • Custom number formatting (NGN #,##0.00)

Retail · Excel

Duplicate customer validation: reconciling system flags with name-match patterns

Independent grading: 95/100(verify, opens in a new tab)

Problem

Chidi Okafor at Meridian Retail (simulated retailer) needed to validate whether the system's duplicate detection aligned with name-pattern evidence in the data, and to separate confirmed duplicates from coincidental name matches that share no system flag. The output needed to quantify both groups clearly for an investor audience.

What I did

A Name Match Count column using COUNTIF on the full name column identifies every customer whose name appears more than once across the 2,331-row dataset. A Verified Duplicate column then combines that count with the system is_duplicate flag using an AND() formula, so only records confirmed by both signals return TRUE. The Duplicate Summary sheet presents all five required metrics as COUNTIF and COUNTIFS formulas, none hardcoded. An integrity check formula in B11 confirms that verified duplicates plus unflagged name matches equals the total name-match count, flagging any inconsistency with an ERROR result rather than silently passing.

Finding

Of 440 customers whose names appear more than once, 200 are confirmed by both the name-match signal and the system flag, while 240 are unflagged name matches that require manual review to determine whether they represent the same individual.

Outcome

Chidi received a structured summary demonstrating that the system catches every seeded duplicate by name pattern, while also quantifying the 240 coincidental matches that fall outside automated detection.

K2: =COUNTIF($B$2:$B$2332,B2)
L2: =AND(K2>1,I2=TRUE())
B11: =IF(B8+B9=B7,"OK","ERROR")

K2 counts name occurrences across the full customer list so the value updates if rows are added; L2 combines both signals with AND() so a record must satisfy both the name pattern and the system flag to be marked verified; B11 acts as a live integrity check confirming the two sub-groups account for every name match.

Next step

The 240 unflagged name matches could be prioritised for manual review by sorting on registration date proximity and shared email domain, which would narrow the list of likely genuine duplicates before any manual effort begins.

  • COUNTIF and COUNTIFS for categorical counts
  • AND() logic for multi-condition column flags
  • Conditional formatting with expression-based rules
  • Self-check integrity formulas (IF match OK/ERROR pattern)