Sales Dashboard &
Revenue Analytics
A mid-size Indian electronics accessories company was selling 6 products on Amazon, Flipkart, and their own website — but their most-marketed product wasn't selling, and their revenue crashed every January to March. No one knew why. This is the full BA journey from problem discovery to a live dashboard that gave the team clear, data-driven answers.
Business Problem
Two problems hiding in plain sight — one product nobody was buying, and one season that killed revenue every year.
An Indian product-based company selling electronics accessories — phone cases (budget ₹299, mid-range ₹699, premium ₹1,499), earbuds (₹899), chargers (₹599), and screen protectors (₹199) — across Amazon, Flipkart, and their own website was generating around ₹9.2 Cr annual revenue. On paper, the business was doing okay. But underneath, two specific problems were quietly eating into growth.
Problem 1 — Wrong product getting all the money
The premium phone case (₹1,499) was receiving 3× more marketing budget than any other product — the Marketing Manager kept increasing ads assuming more visibility would fix the low sales. It didn't. The premium case consistently ranked last in units sold across all channels. Meanwhile, the budget case (₹299) was the top seller with almost no ad spend. Nobody had looked at this comparison side-by-side.
Problem 2 — Revenue dying every January to March
Every year, sales would fall by 65% between January and March compared to the festive season (October–November — Diwali, Christmas, New Year). The team would panic, run heavy discounts, overspend on ads, and still struggle. No historical data analysis had ever been done to understand the pattern, predict it, or plan inventory accordingly.
| What Was Wrong | The Real Impact |
|---|---|
| Premium phone case (₹1,499) getting 3× marketing budget but selling the least | ₹38 Lakhs worth of premium inventory piling up unsold; marketing money being wasted month after month |
| Revenue drops 65% every January–March but nobody knew why or how to plan for it | Team runs panic discounts in January cutting margins; orders wrong inventory for the slow season every year |
| Sales data from Amazon, Flipkart, and the website was never combined in real-time | All decisions were made on 30-day-old data; problems were discovered too late to fix them |
| No product-level view of returns — some products had very high return rates | One product was discovered to have a 34% return rate — meaning 1 in 3 units came back. Nobody knew. |
| Marketing Manager had no way to see which ad campaign led to actual sales | Ad budgets allocated based on gut feel, not actual revenue data from each channel |
Stakeholder Identification
Identifying every person who was affected by the problem and whose buy-in was needed for the solution to work.
Before gathering requirements, I mapped out everyone who had a stake in this project — either because they owned data, made decisions based on sales numbers, or would be a daily user of the new dashboard. Understanding what each person cared about helped me ask the right questions and design a solution that everyone would actually use.
| Designation | What They Wanted to Know | Why They Matter | Power | Interest |
|---|---|---|---|---|
| Sales Manager | How much revenue are we making? Which product and channel is performing? | Final approver; would use dashboard daily to track performance | High | High |
| Marketing Manager | Which ads are actually driving sales? Where should I put the budget? | Controlled the marketing spend causing the premium product waste | Med | High |
| Product Manager | Why is the premium product not selling? Should we change the price? | Owned the product catalogue and pricing decisions | Med | High |
| Finance Manager | What is our actual monthly revenue? What are we forecasting for next quarter? | Needed accurate revenue data; approved the project budget | High | Med |
| Operations Manager | How much inventory should we order? Which products need restocking? | Responsible for stock planning — currently ordering wrong quantities each season | Med | Med |
Power / Interest Grid
This grid helped me decide how much time to spend with each person and how to communicate with them. High power + High interest = involve them in every decision. High power + Low interest = keep them updated regularly but don't overwhelm them.
Manage Closely — involve in all decisions
· Sales Manager — final sign-off authority
· Finance Manager — budget and revenue owner
Keep Informed — update regularly
· Marketing Manager — data owner for ad spend
· Product Manager — pricing decisions
Keep Satisfied — check in on milestones
· Operations Manager — inventory planning user
Monitor — minimal engagement needed
· Senior Leadership — final dashboard recipient
Requirement Gathering
Finding out exactly what the business needs — using different techniques because different people hold different types of information.
Requirement gathering is about understanding the problem deeply before jumping to a solution. I used multiple techniques because interviews alone don't give the full picture — sometimes you need to sit and watch how people actually work, or look at the raw data yourself.
| Technique Used | How I Did It | What I Found |
|---|---|---|
| 1:1 Interviews | Sat with each of the 5 stakeholders separately for 30–45 minutes and asked structured questions about what they needed, what was frustrating them, and what success would look like | Each person had a different definition of 'sales performance'. Marketing was looking at orders; Finance was looking at revenue after returns; Sales was looking at units sold. All different. |
| Process Observation | Sat with the Sales Manager for one full day and watched them build the monthly report from scratch — from downloading files to sending the final Excel | The report took 8 hours and 40 minutes. First 5 hours downloading and copy-pasting data. Next 3 hours formatting. The report covered last month — not even the current week. |
| Document Analysis | Reviewed the last 6 months of Amazon reports, Flipkart reports, website analytics exports, and the master Excel file the team used | Found that the premium phone case had a 6.2% conversion rate (only 6 out of every 100 people who saw it, bought it). The budget case had 27%. This was the first time this comparison had been made. |
| Workshop (Group Session) | Ran a 2-hour session with Sales Manager, Marketing Manager, and Product Manager together to align on what success looks like and what the dashboard must show | Discovered they had never agreed on what counts as a 'sale' — some counted orders placed, some counted orders delivered. This needed to be fixed before any dashboard was built. |
| Survey | Sent a short 8-question survey to the broader sales team (7 people) to understand what they needed on a day-to-day basis | 72% said they needed to see channel-wise sales in real time. 65% said they wasted time downloading individual reports instead of doing actual sales work. |
Sample Interview Questions — Sales Manager
Walk me through how you figure out what the total sales number is for this month right now.
When a product is underperforming, how do you currently find out? And how long does it take?
Which question do you get asked most often that you cannot answer quickly with the current data?
What does a good month look like vs. a bad month — in numbers, not just feeling?
If you had one screen you could check every morning, what are the 3 numbers you would want on it?
As-Is Process Analysis
Documenting exactly how things work right now — before suggesting any changes. You cannot fix what you haven't fully understood.
The “As-Is” process is the current-state process — step by step, how does the team currently get from raw sales data to a business decision? I mapped this by watching the team work and asking them to describe every step. What I found was a process held together entirely by manual effort, with problems at almost every step.
| Step | What Happens | Who Does It | The Problem |
|---|---|---|---|
| Step 1 | At the start of each month, Amazon Seller Central report is downloaded as an Excel file | Sales Manager / Team Member | Done once a month — so data is always 30 days old. No one checks mid-month. |
| Step 2 | Flipkart Seller Hub report is downloaded separately as another Excel file | Sales Manager | Different column names than Amazon. Needs manual renaming every time before combining. |
| Step 3 | Website sales data exported from the e-commerce backend (Shopify) | Operations Team | Nobody has clear ownership. Sometimes exported on Day 2 of the month, sometimes Day 5. |
| Step 4 | All three files are manually copied and pasted into one master Excel sheet | Sales Manager | Takes 2–3 hours. Human errors like missed rows, wrong columns, or duplicate entries happen regularly. |
| Step 5 | Excel pivot tables are manually created to summarise product-wise and channel-wise numbers | Sales Manager | Takes another 2–3 hours. If a mistake was made in Step 4, the summaries are wrong. |
| Step 6 | A PowerPoint report is built from the pivot tables and emailed to leadership | Sales Manager | The report arrives on Day 7–10 of the new month. It covers last month. Decisions are made on data that is already old. |
| Step 7 | Marketing Manager adjusts ad spend based on the report | Marketing Manager | By the time the report arrives, 1/3 of the new month is already over. Ad changes are too late. |
Root Cause Analysis
Asking 'why' five times to find the real cause — not just the surface symptom. The fix must address the root, not the result.
Root Cause Analysis (RCA) is a technique where instead of fixing the first problem you see, you keep asking “but why?” until you find the actual underlying cause. I applied the “5 Whys” method to both main problems separately.
5 Whys — Problem 1: Why is the premium phone case (₹1,499) not selling?
Why 1
Why is the premium phone case not selling despite heavy marketing?
Customers are landing on the product page but not buying it — the conversion rate is only 6.2%, compared to 27% for the budget case.
Why 2
Why is the conversion rate so low for the premium case?
Customer reviews show they feel ₹1,499 is too expensive for an Indian brand. They compare it to global brands like Spigen (which is well-known for premium cases) and choose the global brand instead.
Why 3
Why is the product priced at ₹1,499 if it sits in the same range as trusted global brands?
The Product Manager priced it based on the production cost plus desired margin — not based on what customers are actually willing to pay for a domestic brand at that quality level.
Why 4
Why was customer willingness to pay not researched before launching at ₹1,499?
No customer survey or pricing research was done. The pricing decision was made internally, based on assumed margins.
Why 5
Why was no pricing research done before launch?
The team had no data analysis process in place. Product decisions — including pricing — were based on gut feel and competitor observation, not actual data about customer behaviour.
Root Cause Found
The real problem was not the product, and not the marketing. It was that the company was making product and pricing decisions without any customer data. The premium case at ₹1,499 was launched into a price segment where customers trusted global brands more. The fix was not more ads — it was repricing the product to ₹999 (a sweet spot where data showed strong buying intent) and stopping the marketing waste.
5 Whys — Problem 2: Why does revenue crash every January to March?
Why 1
Why does revenue fall 65% between January and March?
October–November is the festive season in India (Diwali, New Year gifting). People buy electronics and accessories as gifts. January–March is post-festive — no major buying occasion.
Why 2
Why has this not been planned for every year?
The team knows the festive season is big, but they have never looked at the historical monthly data to calculate exactly how big the drop is and for how long.
Why 3
Why hasn't historical data been analysed to plan for the slow season?
All historical data was sitting in separate Excel files across 3 channels. No one had ever combined it to see a 12-month or 24-month trend.
Why 4
Why has no one combined the data to spot the seasonal pattern?
Combining the data takes 8+ hours every month. Nobody had the time to do it just for historical analysis on top of the regular reporting work.
Why 5
Why is the reporting process so manual and time-consuming?
There is no connected data system. Every data source requires a separate manual download and copy-paste. No automation exists.
| Category | Root Causes Found |
|---|---|
| People | Decisions made by gut feel — no habit of looking at data before deciding on price, inventory, or marketing spend |
| Process | No monthly or weekly review of sales data across channels; no seasonal planning process; reporting done too infrequently |
| Technology | No connected data system; three platforms with no integration; all analysis done manually in Excel |
| Data | No historical trend analysis ever done; no product-level return rate tracking; no channel-level profitability view |
Gap Analysis
A gap analysis compares 'what we have now' with 'what we need' — making it clear what needs to be built.
After the As-Is analysis and Root Cause Analysis, I documented every capability the business currently lacks compared to what it needs to make data-driven decisions. Each gap was rated by how critical it is to fix.
| What the Business Needs | What Exists Today | The Gap | Priority |
|---|---|---|---|
| A single place to see all sales from Amazon, Flipkart, and website together | Three separate reports downloaded manually from three different platforms | No connected system; data combined only once a month, manually | Critical |
| Product performance comparison — which product earns the most vs. costs the most to market | No comparison exists; marketing and sales tracked in separate sheets | Marketing spend and sales revenue never looked at side-by-side | Critical |
| Monthly and seasonal sales trend (which months are slow, which are fast) | Possible from historical data but nobody has had time to do the analysis | 24-month trend never visualised; seasonal planning done by feel | Critical |
| Product return rate by channel | Returns tracked at platform level but never broken down by product | High return rate products (like the 34%-return product) go unnoticed | Critical |
| Which marketing channel (Amazon Ads, Flipkart Ads, Google) drives actual revenue | Ad spend known; revenue by channel known separately; never connected | Marketing Manager cannot see which ₹1 of ad spend generates the most sales | High |
| Automated daily/weekly reports instead of 8-hour monthly manual build | Fully manual; one person spends 8–10 hours every month | No automation; high effort, outdated output | High |
| Inventory planning based on seasonal data — order the right stock for Jan–Mar | Ordering based on last month's numbers, not seasonal history | Over-ordering for the slow season, under-ordering for festive season | Medium |
Business Requirements Document (BRD)
The BRD is the official document that captures everything the new system must do — in business language, not technical language. It is the agreement between the BA and the stakeholders before any development begins.
| ID | Must / Should / Could | What the System Must Do | Which Problem It Solves | How We'll Know It's Done |
|---|---|---|---|---|
| BR-001 | Must | Show combined sales from Amazon, Flipkart, and the website in one single dashboard view | Gap: No single view | Dashboard shows one total revenue number that matches the sum of all 3 platforms |
| BR-002 | Must | Show each product's total sales, total units sold, and total marketing spend side-by-side for easy comparison | Problem 1: Premium product waste | All 6 products visible in one table with sales and spend columns |
| BR-003 | Must | Show monthly sales for the last 24 months as a chart so seasonal patterns are clearly visible | Problem 2: Jan–Mar crash | A month-by-month chart covering 2 full years is visible and accurate |
| BR-004 | Must | Show return rate for each product — what percentage of orders are being returned | Gap: High return rate hidden | Return % visible per product; sorted from highest to lowest return rate |
| BR-005 | Must | Data should update automatically every day — no manual downloading or copy-pasting required | AS-IS: 8-hour manual process | Sales Manager confirms they have not manually downloaded any file for 2 weeks |
| BR-006 | Should | Show which sales channel (Amazon / Flipkart / Website) generates the most revenue after returns and refunds | Gap: Channel profitability | Revenue shown separately for each channel with returns deducted |
| BR-007 | Should | Automatically send a weekly summary report by email every Monday morning to Sales Manager and Finance Manager | AS-IS: Manual PowerPoint | Email arrives automatically on Monday; no manual action needed |
| BR-008 | Could | Show an inventory forecast for the next 3 months based on seasonal sales history | Gap: Wrong inventory ordering | Forecast numbers are within 15% of actual sales in the following month |
To-Be Process Design
The To-Be process is the future-state design — how the same work will happen after the new system is in place. Every manual step should either be automated or eliminated.
The goal of the To-Be design was simple: the Sales Manager should be able to open one dashboard each morning and see everything they need to make decisions — without downloading a single file, copy-pasting anything, or spending hours in Excel.
New Process — How It Works
| Old Way (AS-IS) | New Way (TO-BE) | Improvement |
|---|---|---|
| Download Amazon report manually on Day 1 of every month | Amazon data syncs automatically every night | Zero manual effort; data is always current |
| Copy-paste from 3 different Excel files into one master sheet (3 hrs) | All 3 sources are already combined in the central database | 3 hours of work eliminated completely |
| Build pivot tables in Excel to see product-wise numbers (2 hrs) | Product comparison table is always ready in the dashboard | Visible instantly; no Excel needed |
| Build a PowerPoint report and email it — arrives on Day 7–10 (8–10 hrs total) | Automated email sent every Monday morning; no manual action needed | 8–10 hours of work reduced to zero |
| Marketing Manager adjusts ad spend based on last month's data | Marketing Manager can check yesterday's performance and adjust today | Decisions based on recent data, not 30-day-old data |
Functional & Non-Functional Requirements
Functional requirements describe what the system must do. Non-functional requirements describe how well it must do it — speed, security, reliability.
| ID | What the System Must Do (Functional) | BR It Comes From | Priority |
|---|---|---|---|
| FR-001 | Connect to Amazon Seller Central API and automatically download new orders and returns every night | BR-001 | Must |
| FR-002 | Connect to Flipkart Seller Hub API and automatically download new orders and returns every night | BR-001 | Must |
| FR-003 | Connect to the website (Shopify) and automatically pull new orders and returns every night | BR-001 | Must |
| FR-004 | Show a product performance table: product name, units sold, total revenue, total ad spend, and revenue earned per ₹1 of ad spent | BR-002 | Must |
| FR-005 | Show a 24-month sales trend chart — bar chart showing total monthly revenue for the last 2 years | BR-003 | Must |
| FR-006 | Calculate and display the return rate (%) for each product — i.e., what % of orders were returned | BR-004 | Must |
| FR-007 | Show revenue broken down by channel: Amazon total, Flipkart total, Website total — with returns already deducted | BR-006 | Should |
| FR-008 | Automatically send a weekly email summary every Monday at 8am to the Sales Manager and Finance Manager | BR-007 | Should |
| FR-009 | Show a 3-month sales forecast based on the same months from the previous 2 years | BR-008 | Could |
| FR-010 | Allow each user role (Sales, Marketing, Finance, Operations) to see only their relevant dashboard view | BR-001 | Must |
| ID | How the System Must Behave (Non-Functional) | How We Measure It | Priority |
|---|---|---|---|
| NFR-001 | Dashboard must load within 3 seconds on a normal internet connection | Tested by opening the dashboard 10 times and measuring load time | Must |
| NFR-002 | Daily data refresh must complete by 6am so morning data is ready when the team starts work | Check that data is updated before 6am for 5 consecutive working days | Must |
| NFR-003 | Only logged-in employees can access the dashboard — no public access | Attempt to open dashboard without login; should show login screen | Must |
| NFR-004 | Revenue numbers must match the source platform numbers within ±1% (accounting for timing) | Compare dashboard totals with platform exports for the same date | Must |
| NFR-005 | Dashboard must work properly on mobile phones (for the Sales Manager who travels frequently) | Open dashboard on an Android phone and iPhone; all views must load | Should |
User Stories & Acceptance Criteria
A user story describes a feature from the user's point of view — what they want, and why. Acceptance criteria define exactly when we can say the story is 'done'.
User stories follow this format: “As a [role], I want [feature] so that [reason].” They help the development team understand who they are building for and why — not just what to build.
Epic 1 — Product Performance
As a Sales Manager, I want to see all 6 products side-by-side with their sales, units sold, and marketing spend so that I can immediately see which products are worth investing in and which are not.
As a Product Manager, I want to see the conversion rate for each product (how many people who saw it actually bought it) so that I can identify if a product has a pricing or messaging problem.
Epic 2 — Seasonal & Revenue Trends
As a Operations Manager, I want to see a chart of monthly sales for the past 2 years so that I can plan how much inventory to order before the slow season (January–March) and avoid overstocking.
As a Finance Manager, I want to see a 3-month sales forecast based on historical data so that I can plan the budget for the upcoming quarter without relying on guesswork.
Epic 3 — Marketing & Channel Performance
As a Marketing Manager, I want to see how much revenue each sales channel (Amazon, Flipkart, Website) generates vs. how much ad spend goes into each, so that I can move budget to the most profitable channel.
As a Finance Manager, I want to automatically receive a summary report every Monday morning by email so that I do not have to ask the Sales Manager to send me numbers manually.
Acceptance Criteria — US-001 (Product Performance View)
Acceptance criteria are written in Given / When / Then format. They define the exact conditions that must be true for us to say a user story has been completed successfully.
Given The dashboard has loaded with this month's data
When The Sales Manager opens the Product Performance view
Then A table is visible showing all 6 products with columns for: units sold, total revenue (₹), total ad spend (₹), and revenue earned per ₹1 of ad spend — sorted from highest to lowest ROI
Given All 6 products have sales data for the current month
When The Sales Manager clicks on the premium phone case row
Then A detailed breakdown opens showing: channel-wise sales (Amazon / Flipkart / Website), return rate, month-over-month change, and a comparison to the previous month
Given The premium phone case has sold 0 units on the website this month
When The Sales Manager views the product table
Then The premium phone case row is highlighted in amber (as a low-performer alert) and shows 0 units next to the Website channel column
Process Flows & BPMN
BPMN (Business Process Model and Notation) is a standard way to draw process flow diagrams — like a flowchart but with specific shapes and rules that every BA and developer understands the same way.
I created two BPMN diagrams: one showing the current (AS-IS) process and one showing the future (TO-BE) process. These diagrams were used to clearly show the team what was changing and why — making it easier to get buy-in from people who were used to the old process.
| BPMN Shape | What It Means | Where I Used It |
|---|---|---|
| Circle (Start Event) | Where the process begins | AS-IS: 'First of the month arrives'; TO-BE: 'Midnight data refresh triggers automatically' |
| Rounded Rectangle (Task) | A step someone does — either a person (User Task) or a system (Service Task) | AS-IS: 'Download Amazon report' (User Task); TO-BE: 'API pulls Amazon data' (Service Task) |
| Diamond (Gateway) | A decision point — the process goes one way or another based on a condition | TO-BE: 'Is a product's return rate > 20%?' → Yes: flag in red / No: show in green |
| Envelope (Message Event) | Something is sent — an email, a notification, a trigger | TO-BE: 'Weekly summary email sent to Sales Manager and Finance Manager automatically' |
| Circle with thick border (End) | Where the process ends | AS-IS: 'Report emailed to leadership'; TO-BE: 'Dashboard updated, email sent, done' |
| Swimming Lanes | Separate rows showing who is responsible for each step | Lanes: Data Sources | Automated Pipeline | Dashboard | Sales Team | Finance Team |
Key Design Decisions Documented in BPMN
Daily refresh, not real-time
Originally considered real-time data. After discussion with Operations team, we agreed daily refresh at midnight was enough — all decisions are made in the morning anyway. Real-time was unnecessary complexity and cost.
Returns deducted before showing revenue
The dashboard shows net revenue (after returns) not gross revenue (before returns). This was specifically requested by the Finance Manager after discovering one product had a 34% return rate inflating gross numbers.
Low-performer product alert at 10% conversion
Any product with a conversion rate below 10% gets an amber flag automatically. The 10% threshold was agreed with the Product Manager based on industry benchmarks for this price range.
Separate views for each team
Rather than one complex dashboard everyone shares, four separate views were designed — Sales, Marketing, Finance, Operations. Each person sees only what is relevant to their role.
Data Analysis & Data Mapping
Before building anything, I analysed the raw data from all 3 platforms and mapped out exactly where each number comes from — so the dashboard always shows the right figures.
Data mapping means documenting every data source, what data it contains, and how the fields from different systems connect to each other. This is critical because Amazon calls an order “Shipped”, Flipkart calls it “Dispatched”, and the website calls it “Fulfilled” — but they all mean the same thing. Without mapping, the system would count them differently.
| Data Source | What Data It Has | Important Fields | How It Connects |
|---|---|---|---|
| Amazon Seller Central | All Amazon orders, returns, ad spend, product listing performance | Order ID, Product ASIN, Sale Amount, Order Date, Return Status, Ad Spend | Connects to central DB via Amazon SP-API; Product ASIN maps to internal Product ID |
| Flipkart Seller Hub | All Flipkart orders, returns, ad spend, product listing performance | Order ID, Product SKU, Sale Amount, Order Date, Return Flag, Campaign Spend | Connects via Flipkart Seller API; SKU maps to internal Product ID |
| Shopify (Own Website) | Website orders, returns, customer location, ad source (UTM) | Order ID, Product ID, Revenue, Created Date, Refund Amount, UTM Source | Connects via Shopify API; Product ID already matches internal Product ID |
| Google Ads / Meta Ads | Ad campaign spend by product and day | Campaign Name, Product Name, Date, Spend (₹), Clicks, Impressions | Exported daily; Campaign Name matched to Product Name using a mapping table |
| Internal Product Master | Master list of all products with their ID, name, price, and category | Product ID, Name, Category, Launch Price, Current Price, Target Margin | The common link across all sources — every order maps back to a Product ID |
Data Dictionary — Key Fields
| Field Name | What It Means | Where It Comes From | How It Is Calculated |
|---|---|---|---|
| net_revenue | Money actually earned — after returns and refunds deducted | All 3 platforms | SUM(sale_amount) minus SUM(refund_amount) for the same period |
| return_rate_pct | What % of orders for a product were returned by the customer | All 3 platforms | (Total returns ÷ Total orders) × 100 — calculated per product, per month |
| roas | Return on Ad Spend — for every ₹1 spent on ads, how many ₹ in sales | Orders + Ad data | net_revenue ÷ total_ad_spend — if > 1, the ad is profitable |
| sales_channel | Which platform the sale happened on | Derived from source | 'Amazon' / 'Flipkart' / 'Website' — set based on which API the order came from |
| is_slow_month | Whether this month is historically a slow sales month | Derived from history | TRUE if the same month in both previous years had revenue below 50% of the annual average |
-- Which product earns the most for every rupee spent on ads?
-- (ROAS = Return on Ad Spend -- higher is better)
SELECT
p.product_name,
p.selling_price,
COUNT(o.order_id) AS total_orders,
SUM(o.sale_amount - o.refund_amount) AS net_revenue,
SUM(m.ad_spend) AS total_ad_spend,
ROUND(
SUM(o.sale_amount - o.refund_amount)
/ NULLIF(SUM(m.ad_spend), 0), 2
) AS revenue_per_rupee_of_ad_spend
FROM products p
LEFT JOIN orders o ON p.product_id = o.product_id
LEFT JOIN ad_spend m ON p.product_id = m.product_id
AND MONTH(m.spend_date) = MONTH(o.order_date)
WHERE o.order_date >= DATEADD(year, -1, GETDATE())
GROUP BY p.product_id, p.product_name, p.selling_price
ORDER BY revenue_per_rupee_of_ad_spend DESC;-- Monthly sales trend for the last 24 months -- Used to identify seasonal patterns (festive peak vs. Jan-Mar slump) SELECT YEAR(order_date) AS sale_year, MONTH(order_date) AS sale_month, DATENAME(month, order_date) AS month_name, SUM(sale_amount - refund_amount) AS net_revenue, COUNT(order_id) AS total_orders, AVG(sale_amount) AS avg_order_value FROM orders WHERE order_date >= DATEADD(year, -2, GETDATE()) GROUP BY YEAR(order_date), MONTH(order_date), DATENAME(month, order_date) ORDER BY sale_year, sale_month;
Wireframes & Prototypes
A wireframe is a simple sketch (or digital mockup) of what the dashboard will look like — before the developer builds anything. It is reviewed with stakeholders to confirm we are building the right thing.
I designed 4 dashboard views in Figma — one for each type of user. Instead of one complex screen with everything on it, each team sees only what they need. The wireframes were reviewed with stakeholders twice before development began.
View 1
Sales Overview
Main Question It Answers
Total revenue this month across all channels
For: Sales Manager
·Total net revenue (this month vs. last month vs. same month last year)
·Channel split: Amazon vs. Flipkart vs. Website (with % share)
·Top 3 products by units sold and revenue
·Number of orders, average order value, return rate
View 2
Product Performance
Main Question It Answers
Which product earns the most for every ₹1 spent?
For: Product Manager & Sales Manager
·All 6 products in a table: sales, revenue, ad spend, ROAS
·Conversion rate per product — flagged amber if below 10%
·Return rate per product — flagged red if above 20%
·Month-over-month trend: is this product growing or declining?
View 3
Seasonal Trends
Main Question It Answers
Which months are slow? How slow? For how long?
For: Operations Manager & Finance Manager
·24-month bar chart showing net revenue per month
·Festive season (Oct–Nov) vs. slow season (Jan–Mar) highlighted
·3-month rolling forecast based on last 2 years of same-month data
·Recommended inventory order quantity for next 3 months
View 4
Marketing & Channel ROI
Main Question It Answers
Which channel brings the most sales per rupee spent on ads?
For: Marketing Manager
·Ad spend vs. revenue by channel (Amazon Ads / Flipkart Ads / Google / Meta)
·ROAS for each campaign and each product
·Which product + channel combination has the highest return
·Month-wise ad spend efficiency trend
Requirement Validation
Before the developer builds anything, every requirement must be formally reviewed and signed off. This prevents building the wrong thing and having to redo it later.
| Validation Step | When | Who Was Involved | What Was Reviewed | Result |
|---|---|---|---|---|
| BRD Review Meeting | End of Week 4 | Sales Manager + Finance Manager | All 8 business requirements reviewed one by one; acceptance criteria confirmed | Approved — BR-005 changed from real-time to daily refresh |
| Stakeholder Walkthrough | Week 5 | All 5 stakeholders | Full requirements summary presented; each person confirmed their needs were covered | All signed off; Operations Manager added one new request (seasonal forecast) |
| FRS Technical Review | Week 6 | BI Developer + Sales Manager | All 10 functional requirements reviewed for technical feasibility | FR-009 (inventory forecast) flagged as complex; simplified to 3-month trend only |
| Wireframe Review — Round 1 | Week 7 | Sales Manager, Marketing Manager, Product Mgr | Figma mockups walked through screen by screen; feedback captured | 6 change requests — ROAS placement, colour scheme, mobile layout |
| Wireframe Review — Round 2 | Week 8 | Sales Manager + Marketing Manager | Updated Figma reviewed after Round 1 changes implemented | Approved — no further changes requested. Green light to begin development. |
Backlog Creation & Prioritization
The backlog is the full list of everything that needs to be built, sorted by priority. MoSCoW is the prioritization method: Must Have, Should Have, Could Have, Won't Have (for now).
| Priority | Stories | What Gets Built | When |
|---|---|---|---|
| Must Have | 12 stories — 55 points | All 3 platform connections, product performance view, seasonal trend view, return rates, basic sales overview | Sprint 1 & 2 |
| Should Have | 8 stories — 34 points | Marketing/channel ROI view, automated Monday email, ROAS calculation per product and channel | Sprint 3 |
| Could Have | 5 stories — 22 points | 3-month seasonal forecast, low-performer product alerts, mobile-optimised layout | Sprint 4 if time permits |
| Won't Have | 3 stories — — | Customer segmentation, WhatsApp alerts, integration with accounting software (planned for Phase 2) | Phase 2 backlog |
Sprint Plan — 4 Sprints of 2 Weeks Each
Build the data pipeline: connect Amazon, Flipkart, and Shopify APIs to the central database. Set up daily refresh. Validate that the numbers match the source platforms.
Build View 1 (Sales Overview) and View 2 (Product Performance). Include return rate, ROAS, and conversion rate. Add low-performer flagging.
Build View 3 (Seasonal Trends) with 24-month chart and forecast. Build View 4 (Marketing ROI). Set up automated Monday email.
Mobile optimisation, UAT defect fixes, performance testing, user training preparation, and go-live readiness check.
Agile Sprint Execution
Agile sprints are short 2-week work cycles where the team builds and delivers a working piece of the system — instead of trying to build everything at once.
| Agile Ceremony | How Often | What I Did as BA |
|---|---|---|
| Sprint Planning | Start of each sprint | Explained the top-priority user stories to the developer; clarified acceptance criteria; confirmed what 'done' looks like for each story |
| Daily Stand-Up | Every day (15 min) | Flagged any requirements questions that came up during development; resolved ambiguities before they caused rework or delays |
| Sprint Review | End of each sprint | Showed the completed features to the Sales Manager and Marketing Manager; collected their feedback and added it to the next sprint if needed |
| Sprint Retrospective | End of each sprint | Discussed what went well and what to improve in the next sprint — helped the team improve their process as they went |
| Backlog Refinement | Middle of each sprint | Reviewed upcoming stories, added missing detail, removed blockers, and adjusted estimates based on what we learned in the current sprint |
Development Support
The BA's job doesn't end when development starts. During the build phase, the developer needs help clarifying requirements, handling unexpected findings, and managing changes from stakeholders.
| Situation | What Happened | What I Did as BA | Result |
|---|---|---|---|
| Developer needed calculation clarity | Developer was unsure how to calculate ROAS — was it per order or per month? | Wrote a clear calculation specification: ROAS = Net Revenue ÷ Ad Spend, calculated monthly per product per channel | Developer built the correct metric first time; no rework needed |
| Stakeholder change request | Marketing Manager asked mid-Sprint 2 to add campaign-level breakdown (not just channel-level) | Assessed the impact: needed 1 new data field, 2 extra hours of development. Logged as a Should Have for Sprint 3 | Sprint 2 was not disrupted; the new feature was added in Sprint 3 on schedule |
| Data quality issue found | 12% of orders from the website had no product ID — they couldn't be linked to the product master | Traced it to a Shopify order form issue. Temporary fix: unmatched orders categorised as 'Other' with a note | Dashboard launched without this being a blocker; the Shopify form was fixed separately |
| Stakeholder anxiety during build | Sales Manager wanted to see progress and was worried nothing was happening visibly | Ran a mid-Sprint 2 live demo showing the product performance view with real data (even though it wasn't finished) | Stakeholder confidence restored; no scope creep from the demo |
Testing Support
Before UAT (user testing), the BA helps design the test cases and ensures the system is tested against what was actually required — not just whether it works technically.
| What I Did | Details |
|---|---|
| Wrote the UAT Test Plan | Created a document listing all 34 test cases, the expected result for each, who would run each test, and what counts as pass or fail — before testing began |
| Reviewed test cases for coverage | Checked that every BR and FR had at least 2 test cases covering it. Found 3 functional requirements had no test cases — added them before testing started |
| Designed edge case tests | Added tests for unusual situations: What happens if a product has zero sales this month? What if ad spend is zero? What if returns > sales? These were cases the developer might not have considered. |
| Attended defect triage sessions | When defects were found during testing, I attended the daily triage meeting to classify each defect — is it a requirements issue, a build issue, or a data issue? Each type needs a different fix. |
| Verified fixes before re-testing | After the developer fixed a defect, I reviewed the fix against the original requirement to confirm it was correct before the tester re-ran the test. Prevented fixes that solved the symptom but not the cause. |
User Acceptance Testing (UAT)
UAT is when the actual users test the system — not the developer, not the BA. They use it the way they would in real life and confirm it does what the BRD said it must do.
| What Was Tested | Test Cases | Tested By | Passed | Failed | Status |
|---|---|---|---|---|---|
| Data accuracy — do dashboard numbers match platform numbers? | 8 | Finance Manager + Sales Manager | 8 | 0 | All Pass |
| Product performance view — all products, ROAS, return rates | 10 | Sales Manager + Product Manager | 9 | 1 | 1 Fixed |
| Seasonal trends view — 24-month chart accuracy | 6 | Operations Manager | 6 | 0 | All Pass |
| Marketing ROI view — channel split and ROAS | 6 | Marketing Manager | 5 | 1 | 1 Fixed |
| Automated Monday email — correct numbers, arrives on time | 4 | Finance Manager | 4 | 0 | All Pass |
Defects Found & Fixed
Premium phone case return rate was showing 3.2% instead of 34%. Root cause: the return rate was being calculated as returns ÷ total products in inventory, not returns ÷ total orders. Fixed the calculation and re-tested — correct result confirmed.
ROAS on the Marketing view was not updating when a different month was selected from the date filter. Root cause: the ad spend table was not connected to the date filter. Fixed by the developer in 4 hours.
Deployment / Go-Live
Go-live is when the new system becomes the official tool the team uses — and the old process is retired. A phased approach was used to reduce risk.
| Day | What Happened | Who Was Responsible |
|---|---|---|
| Day 1 | Final data check: compared dashboard revenue numbers with manual platform exports for last 3 months. All within ±0.8% — within the agreed ±1% accuracy threshold. | BA + BI Developer |
| Day 1 | Dashboard access given to Sales Manager and Finance Manager only — to test with real users before the full team gets access (Phase 1 rollout) | BI Developer |
| Day 2 | 30-minute walkthrough with Sales Manager and Finance Manager — live data, real questions answered | BA |
| Day 3 | Access given to Marketing Manager and Product Manager (Phase 2 rollout) | BI Developer |
| Day 4 | Access given to Operations Manager and the full sales team (Phase 3 rollout) | BI Developer |
| Day 5 | First automated Monday email tested — scheduled and confirmed to send the following Monday | BI Developer |
| Week 2 | Hypercare period: BA available daily to answer any questions and fix any small issues reported by users | BA |
| Week 2 Mon | First automated Monday email received by Sales Manager and Finance Manager — containing last week's revenue summary with no manual action | System (auto) |
Training & Change Management
A great dashboard that nobody uses is a failed project. Change management ensures the team actually adopts the new system and stops using the old manual process.
| Who Was Trained | Format | Duration | What Was Covered |
|---|---|---|---|
| Sales Manager | 1-on-1 session | 45 min | Sales Overview and Product Performance views; how to filter by channel, product, and time period; how to interpret return rate and ROAS numbers |
| Finance Manager | 1-on-1 session | 30 min | The automated Monday email format; how to verify dashboard numbers against QuickBooks; the seasonal forecast view |
| Marketing Manager | 1-on-1 session | 30 min | Marketing ROI view; how to read ROAS; how to compare ad spend vs. revenue by channel and campaign |
| Product Manager | 1-on-1 session | 30 min | Product Performance view; conversion rate; what the low-performer amber flag means and when to act on it |
| Operations Manager | 1-on-1 session | 20 min | Seasonal Trends view; how to read the 3-month forecast; how to use it for inventory planning decisions |
| Full Sales Team (7) | Group session | 30 min | Overview of all 4 views; how to log in; who to contact if something looks wrong |
Change Management — Key Actions
Old Excel files archived on Day 1
The Sales Manager archived all old master Excel files with a team announcement: 'From today, the dashboard is our source of truth.' Removing the old tool removed the temptation to fall back to it.
Sales Manager championed it to the team
Because the Sales Manager had 2 days of experience with the live dashboard before the team got access, they were able to say 'this is working, I trust it' — which was more persuasive than any training session.
1-page quick reference guide distributed
A simple 1-page PDF: how to log in, which view to use for which question, and who to contact if something looks wrong. Sent via the team WhatsApp group on Day 4.
Week 2 open Q&A session
A 20-minute optional session where anyone could ask questions or raise concerns. 4 of 7 sales team members attended. No major issues were raised — small usability questions resolved in real time.
Post-Implementation Review
The Post-Implementation Review (PIR) happens 4 weeks after go-live. It checks whether the system delivered what it promised, what went well, and what to do differently next time.
| Finding | Type | Detail |
|---|---|---|
| All 8 business requirements were delivered as agreed | Positive | Every requirement from the BRD was built, tested, and confirmed working at go-live |
| Premium product issue identified and actioned quickly | Positive | Within 1 week of go-live, the Product Manager used the dashboard to confirm the pricing hypothesis. The premium case was repriced from ₹1,499 to ₹999. Sales went up 180% in the first month after repricing. |
| Seasonal planning happened for the first time this year | Positive | The Operations Manager used the 24-month trend view to plan January–March inventory 6 weeks in advance — instead of ordering based on last month as before. Over-ordering reduced by 40%. |
| 12% of website orders still showing as 'Other' product | Improvement | The Shopify form issue (no product ID on some orders) was fixed but historical data cannot be corrected. Agreed to run a data cleaning exercise in Q2. |
| Mobile dashboard works but has a slow load time on older phones | Learning | iPhone 15 and recent Android phones load fast. Some older phones take 6–8 seconds. Flagged for optimisation in the next development cycle. |
3 Key Lessons from This Project
Align on definitions before touching data
The definition alignment session (Workshop 1) was the most valuable thing we did in the entire project. If we had built the dashboard first and discovered later that Sales, Finance, and Marketing were measuring 'revenue' differently, we would have had to rebuild significant parts of it.
Sign-off before build = no surprises during build
Because every requirement was formally signed off before development started, there were zero unexpected changes during the 4 sprints. This is a direct result of the requirement validation gate. It feels slow upfront but saves much more time later.
Remove the old process at go-live, don't run both
Archiving the Excel files on Day 1 was the single most important change management action. When people have a fallback, they use it. When they don't, they adapt. The team adopted the dashboard fully within the first week.
Business Impact Measurement
Measured at 8 weeks post go-live — comparing actual outcomes against what was promised in the BRD.
| What We Promised in BRD | Target | Actual Result (8 Weeks) | Status |
|---|---|---|---|
| Single combined view of Amazon + Flipkart + Website sales | Working dashboard with all 3 sources | Live and accurate within ±0.8% | Done |
| Product comparison: sales vs. marketing spend side-by-side | All 6 products visible in one table | Table live; premium case identified as lowest ROAS (0.4) | Done |
| 24-month seasonal sales chart to plan for slow months | Chart covering 24 months of history | Chart live; Jan–Mar pattern clearly visible | Done |
| Return rate visible per product | Return % per product shown | Return rates visible; one product found at 34% return rate | Done |
| Daily automated data refresh — no manual downloading | Zero manual downloads needed | Sales Manager confirms no manual file downloaded in 8 weeks | Done |
| Channel-wise revenue: Amazon, Flipkart, Website separately | Each channel shown with net revenue | All 3 channels visible; Website found to have highest ROAS | Done |
| Automated Monday email to Sales Manager and Finance Manager | Email arrives without manual action | Email arriving every Monday 8am for 8 consecutive weeks | Done |
| 3-month seasonal forecast for inventory planning | Forecast within 15% of actual | Forecast accuracy: 11% variance in Month 1 after go-live | Done |
“Before the dashboard, we used to guess which months would be slow and panic when they arrived. Now I can open the seasonal view and plan 3 months in advance. We ordered 40% less inventory for January this year compared to last year — and we had fewer stockouts because we put that budget into the products that actually sell in January.”
— Operations Manager · 6 weeks post go-live