Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more

A 276-row vehicle sales export can become a five-page Power BI report, but the useful lesson in Antonina Wambui’s 2026 DEV Community project write-up is not the dashboard itself. It is how the data was checked, cleaned, and modeled before any margin was calculated. In the author’s calculation, the business reports about KSh 1.48 billion in revenue, yet several vehicle types still show negative gross margins. Those results come from one project dataset. They are not audited figures or current company results for JCars Logistics.

What the dataset contains

The source file has 276 transaction records and 32 columns. Each row represents one vehicle sold in one transaction. The fields fall into a few groups:

  • Orders and dates: order identifiers and transaction dates.
  • Customers: customer name, customer type, and age.
  • Vehicles: make, model, vehicle type, and fuel type.
  • Locations: location and branch.
  • Sales: sales representative and lead source.
  • Money: selling price, unit cost, discount, and recorded revenue.
  • Fulfilment: delivery status, logistics cost, and payment status.
  • Feedback: ratings and reviews.

The author frames the goal as an interactive Power BI solution covering sales, finance, operations, and customer and market analysis. The business questions are plain: what the company sells, whether those sales are profitable, where performance is strong, and where operational problems are appearing.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Cleaning before modeling

The author assessed each field’s values first, then cleaned according to what each field meant. The main decisions were to standardize order identifiers, parse valid dates while nulling dates that could not be recovered, null implausible ages and unreliable discounts or ratings, normalize category labels, and convert all monetary values to Kenyan shillings (KES). Three of those decisions matter most for anyone reproducing the work.

Currency normalization

The file mixed KES, USD, EUR, and ZAR amounts. The author converted them using fixed project rates:

Currency Rate used to convert to KES What the source establishes
USD 129.54 Project assumption reported by the author; the date and market source of the rate are not stated.
EUR 147.84 Project assumption reported by the author; the date and market source of the rate are not stated.
ZAR 7.93 Project assumption reported by the author; the date and market source of the rate are not stated.

These are working assumptions, not current exchange rates, and they may not apply to each transaction’s actual date. If you rebuild the model, record the rate and its source in the model itself so every converted figure can be traced.

Payment and delivery conflicts

The author checked payment status against delivery status and found 14 inconsistent records:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  • 10 records marked Paid with delivery marked Cancelled.
  • 4 records marked Payment Cancelled with delivery marked Delivered.

The author flagged these rows rather than changing either field. The available information did not show which status was wrong, and a silent correction would have hidden the problem from the people who could check the source system. That is the right default for any conflict the data cannot resolve: surface it on an exceptions page and let an operations owner decide.

Customers without a unique identifier

The dataset has no unique customer ID. The author built customer groupings from name, customer type, and age. Any customer-level result, including the concentration figure below, depends on that approximation. Two different buyers with the same name and type in the same age band would be merged, and one buyer whose details were recorded differently could be split. Treat customer rankings as indicative, not exact.

As the author puts it: “Data cleaning is part of data analysis, not a separate task.”

Data model and measures

The model keeps transaction grain. A central FactSales table holds one row per vehicle sold, and it connects to dimension tables for date, customer, vehicle, location, sales representative, payment, lead source, and delivery status. Keeping the grain at the transaction level means every measure can be sliced by any dimension without losing detail.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The main measures are defined as follows.

Measure Definition in the project What it does not include
Recorded revenue Revenue as recorded in the source, converted to KES. Not an audited revenue figure.
Gross profit Recorded revenue minus units multiplied by unit cost. Logistics cost is not subtracted, so this is not fully loaded profit.
Gross profit margin Gross profit expressed as a percentage, as reported in the project. Inherits any cost or currency issues in gross profit.
Return rate Share of transactions returned or cancelled, as reported in the project. The exact counting rule is not stated in the source.
Logistics cost % of revenue Logistics cost divided by revenue. Shown separately from gross profit.

The separation matters. A reader who sees a healthy-looking margin on one page and a logistics ratio on another should know that the two are not combined into a single profit figure.

The five report pages

The report is organized into five pages, each answering a different management question.

Page What it covers
Business Overview Headline revenue and margin.
Product & Sales Performance Vehicle performance by type, make, and model.
Regional & Branch Analysis Branch and regional comparisons.
Customers & Sales Channels Customer groupings and sales channels, read with the caution described above.
Operations & Exceptions Delivery duration, logistics cost, returns and cancellations, and payment or delivery conflicts.

The last page is the one most often skipped in sales dashboards, and it is where the 14 conflicting records belong.

Headline figures from the project

All figures below are the author’s calculations from the project dataset, published in 2026. None is an audited or independently verified JCars KPI.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Figure Value reported Qualification
Transaction records and columns 276 records, 32 columns Source file as described by the author.
Total revenue Approximately KSh 1.48 billion Recorded revenue after the author’s KES conversion.
Top 10 customers’ revenue Approximately KSh 299.3 million, about 20% of reported revenue Customer groupings were built without a unique ID.
Average delivery time, Nairobi 26.29 days Project calculation from the delivery fields.
Average delivery time, overall 15.18 days Project calculation from the delivery fields.
Payment and delivery mismatches 14 records (10 Paid with Delivery Cancelled; 4 Payment Cancelled with Delivered) Flagged for review, not corrected.

Where revenue does not become margin

The most important reading in the project is that high revenue did not guarantee positive margins across vehicle types. The author reports the following gross margins by vehicle type:

Vehicle type Gross margin reported
SUV 8%
Sedan -9%
Crossover -6%
Van -28%
Truck -66%

Only the SUV category shows a positive margin in these results. A category can carry a large share of revenue while losing money on each unit once unit cost is subtracted. The author notes that these results should be checked against unit cost, selling price, currency conversion, discounts, and missing financial values before any business decision is based on them. Because the gross profit formula excludes logistics, the true position of the loss-making categories may be worse, not better, once delivery costs are included.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Delivery and logistics

The project reports average delivery times of 26.29 days in Nairobi and 15.18 days overall. Those figures are a single snapshot from one dataset and do not show whether delivery performance is improving or worsening. The Operations & Exceptions page pairs delivery duration with logistics cost and the status conflicts, which makes it possible to see whether slow deliveries coincide with cancellations or cost overruns.

Why public totals differ

Other write-ups of similarly described JCars data report different totals. A separate DEV Community project article reports about KSh 1.24 billion in revenue, 415 units, 255 orders, and negative gross profit. An iTechGuides summary reports another set of totals and states plainly that its figures are not verified company financial statements. The available material does not show every difference in scope or transformation, so the gaps cannot be fully reconciled.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The practical rule is to quote each set of figures with its author and date, and never to average or combine them. A number is meaningful only alongside the cleaning and conversion choices that produced it.

Questions to ask a dataset like this

The project’s framing suggests a short checklist for any vehicle sales analysis:

  • What is being sold, by vehicle type, make, and model, and what does each category earn after unit cost?
  • Does revenue concentration hold up when customers are identified more reliably than name, type, and age allow?
  • Which branches or regions perform well, and do they do so on margin or only on volume?
  • Do delivery delays or logistics costs line up with cancellations and payment conflicts?
  • Which conflicting records need an owner to check them in the source system?

Limits of the analysis

  • The principal source is the author’s own project write-up, not a company filing or an independent replication.
  • The dataset mixes currencies and includes missing or questionable values, which affect every financial comparison.
  • Gross profit excludes logistics cost, and no fully loaded profit figure is reported.
  • Customer-level results rest on an approximate grouping because no unique customer ID exists.
  • Public write-ups of the same kind of data report different totals, so the figures should be read as one author’s results from one dataset.

Used with those limits in view, the project is a clear template for turning a messy sales export into a model that asks profitability questions directly, and for keeping unresolved records visible rather than quietly corrected.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.