| Version | Date | Author | Description |
|---|---|---|---|
| v1 | June 2026 | Sanjay Prakash Ravi | Initial draft — As-Is discovery |
| v2 | June 2026 | Sanjay Prakash Ravi | Gap analysis, To-Be, Requirements & Business Case added |
| v3 | June 2026 | Sanjay Prakash Ravi | Final — Risks, Next Steps, GAP-6 added. Approved for portfolio |
This document presents a full business analysis engagement conducted at a Dublin-based retail and e-commerce SME operating a proprietary POS and inventory management system. The business sells accessories, gadgets, phones, and laptops, and provides phone and laptop repair services — managing over 1,000 active SKUs including retail stock and repair parts.
A process review of the end-to-end stock management workflow identified six critical process gaps causing systematic inventory inaccuracies, unrecorded sales, phantom stock, and unreliable cost-of-goods data across the business.
| # | Gap Ref | Pain Point | Root Cause | Business Impact | Priority |
|---|---|---|---|---|---|
| 1 | GAP-1 | Manual barcode fallback causes billing errors | System allows staff to search by product name when barcode is not found — similar products are selected incorrectly | Inventory counts unreliable for multiple SKUs simultaneously. One product overstated, another understated. | CRITICAL |
| 2 | GAP-2 | Reorder process conducted entirely outside the system | No purchase order workflow exists — all orders placed via WhatsApp or phone call with no system record | No audit trail, no lead time tracking, no expected delivery visibility. Manager cannot confirm what was ordered or when. | CRITICAL |
| 3 | GAP-3 | No automated low stock notification | System only shows a negative count after stock is fully exhausted — no proactive threshold alert exists | Stock-outs occur before reorder is triggered. Manager must manually notice red negative figures to act. | CRITICAL |
| 4 | GAP-4 | EOD reconciliation corrupts inventory data | Unrecorded sales are resolved by manually adding stock to balance the cash register — not by recording the actual transaction | Inventory count artificially inflated. Actual stock position unknown. Financial reporting inaccurate. | CRITICAL |
| 5 | GAP-5 | Purchase Order raised after delivery, not before | PO created retrospectively in the system once goods physically arrive — no pre-delivery PO reference exists | Receiving team cannot verify delivery against an order. No basis for supplier dispute or short-delivery claim. | HIGH |
| 6 | GAP-6 | Refurbishment parts not deducted from inventory | Parts pulled from stock for trade-in/refurb jobs are never recorded — no job ticket links parts consumed to inventory | ~€3,360/year in parts consumed with no system trace. System shows phantom stock. Technicians plan jobs on false availability data. Cost-of-goods for resold devices is inaccurate. | CRITICAL |
The following swim lane diagram maps the current stock management process across all actors. Steps highlighted in red indicate identified process gaps. Dashed red arrows indicate broken or workaround flows.
The following diagram shows the improved process after all six gaps are resolved. Steps highlighted in green indicate fixes. All reorder and parts workflows are integrated into the system.
The following requirements are derived directly from the six identified gaps. Each requirement is written in "The system shall..." format and includes measurable acceptance criteria suitable for UAT verification.
| Req ID | Gap Ref | Type | Business Requirement | Acceptance Criteria |
|---|---|---|---|---|
| BR-01 | GAP-3 | Functional | The system shall generate an automated low stock alert when any product reaches or falls below a configurable reorder threshold | Alert delivered to manager dashboard and email within 60 seconds of threshold breach. Threshold configurable per SKU. No manual check required to trigger alert. |
| BR-02 | GAP-2 | Functional | The system shall allow managers to raise a Purchase Order directly within the system, selecting supplier, product, quantity, and expected delivery date | PO created, timestamped, and assigned a unique reference number. Supplier notified via system-generated email. PO visible in inventory module with status: Open / In Transit / Received. |
| BR-03 | GAP-1 | Functional | The system shall block sale completion when a product barcode is not found and shall not permit manual name-based product selection as a fallback | Unrecognised barcode triggers a product creation prompt. Sale cannot proceed until a valid barcode is assigned. Free-text product selection not available to staff during billing. |
| BR-04 | GAP-4 | Functional | The system shall prevent End of Day close if unrecorded transactions are detected, requiring all transactions to be completed or explicitly voided before EOD is finalised | EOD close button disabled if cash variance exceeds configurable tolerance (default: €0). System prompts staff to record outstanding transactions. Manual stock adjustment to balance cash register not permitted. |
| BR-05 | GAP-5 | Functional | The system shall require a Purchase Order to exist and be in Open status before a delivery can be received and inventory updated | Goods receipt module only accessible for products linked to an open PO. Inventory update triggers automatic PO status change to Received. Retrospective PO creation not permitted after goods receipt. |
| BR-06 | GAP-6 | Functional | The system shall require parts used in any repair or refurbishment job to be selected from inventory SKUs and automatically deducted from stock on job completion | Job ticket must include a parts list linked to inventory SKUs before job can be set to Complete. Stock count reduces automatically on job completion. Manual stock adjustment for repair parts not permitted outside job ticket workflow. |
| NFR-01 | All | Non-Functional | Stock level updates shall reflect in the system within 60 seconds of any sale, goods receipt, return, or job completion being processed | System availability 99.9% during trading hours (09:00–21:00). Update latency not to exceed 60 seconds under normal load. System must support minimum 1,000 active SKUs without performance degradation. |
GAP-4: Phantom Inventory from Faulty Returns
When a customer returns a faulty item, the refund adds +1 back to system inventory. The physical unit goes to the faulty box and is unsellable. The system believes the stock exists — it does not.
| Item | Assumption | Monthly | Annual |
|---|---|---|---|
| Faulty returns (accessories) | 10 units/month — 2-3/week conservative estimate | 10 units | 120 units |
| Average accessory value | €20 average selling price | — | — |
| Phantom stock value created | Units refunded but physically unsellable | €200 | €2,400 |
| Annual phantom inventory — faulty returns | €2,400 | ||
GAP-4: Manager Time Lost to EOD Reconciliation
| Item | Assumption | Weekly | Annual |
|---|---|---|---|
| Busy days with EOD discrepancy | 3 days/week on average | 3 days | 156 days |
| Extra resolution time per discrepancy | 20 min extra vs a clean close | 60 min | 52 hrs |
| Manager hourly cost | €14.15/hr | — | — |
| Annual manager time cost — EOD reconciliation | ~€735 | ||
GAP-6: Refurbishment Parts Not Deducted from Inventory
Parts pulled from stock for trade-in/refurb jobs are never deducted. System shows phantom stock. Cost-of-goods on resold devices is understated.
| Item | Assumption | Monthly | Annual |
|---|---|---|---|
| Refurbishment jobs | 3–4 jobs/week average | ~15 jobs | ~180 jobs |
| Average parts cost per job (at cost price) | €20 avg — single part €10–15, multi-part €25–50 | €300 | €3,600 |
| Parts actually deducted from inventory | None — no systematic deduction process exists | €0 | €0 |
| Annual parts inventory consumed but never recorded | ~€3,360 | ||
| Fix | Gap | Type | Cost |
|---|---|---|---|
| Configure low stock alert per SKU | GAP-3 | Config | €0 |
| Build in-system PO workflow | GAP-2 | Config | €0 |
| Enforce barcode-only billing | GAP-1 | Config | €0 |
| Faulty stock register (separate location) | GAP-4 | Process | €0 |
| EOD transaction lock | GAP-4 | Process | €0 |
| Bill of Materials for refurb job tickets | GAP-6 | Process | €0–€75/mo* |
| Staff training — barcode, returns, EOD | All | Training | ~€150 |
| Total estimated cost | ~€150 | ||
*If existing system does not support BOM/job tickets natively, RepairDesk at €75/mo includes this feature.
| Alternative Platform (if required) | Monthly |
|---|---|
| RepairDesk — repairs + POS + BOM + inventory | €75/mo |
| Lightspeed Retail — strong 1,000+ SKU support | €109/mo |
| Shopify POS — retail + inventory | €89/mo |
| Square for Retail — entry level | €60/mo |
| Benefit Item | Annual Value |
|---|---|
| Phantom inventory reduction — faulty returns tracked (GAP-4) | €2,400 |
| Parts inventory accuracy — refurb parts auto-deducted (GAP-6) | €3,360 |
| Manager time recovered from EOD reconciliation — 52 hrs x €14.15 | €735 |
| Improved reorder accuracy — conservative 5% reduction in over-ordering | ~€600 |
| Intangible: reliable inventory data for all buying and supplier decisions | Unquantified |
| Total quantifiable annual benefit | ~€7,095 |
| Total implementation cost | ~€150 |
| Estimated payback period | < 1 month |
| Risk | Likelihood | Impact | Mitigation |
|---|---|---|---|
| Existing system does not support automated low stock alerts | Medium | High | Evaluate system capabilities before rollout. If unsupported, escalate to platform review — RepairDesk recommended. |
| Staff resistance to barcode enforcement during busy periods | Medium | Medium | Training session explaining rationale. Streamlined product creation flow reduces friction. Manager spot-check first 2 weeks. |
| Technician resistance to logging parts per job ticket | Medium | High | RepairDesk job ticket takes under 30 seconds. Mandate as part of job completion — cannot mark job Complete without parts list. |
| Faulty return volume higher than 10/month in peak periods | Low | Medium | Figures are conservative. Business case remains valid at 2x assumed volume. |
| Supplier prefers WhatsApp over formal PO system | Medium | Low | Internal PO can be raised for audit purposes even if supplier communication stays informal. Audit trail is internal. |
| Cost assumptions based on estimates — actual figures may vary | Medium | Medium | All figures clearly labelled as estimates. Recommend 30-day tracking period after implementation to validate actuals. |
| # | Action | Owner | Timeline |
|---|---|---|---|
| 1 | Review existing system capabilities against BR-01 to BR-06 — identify which requirements can be met with configuration vs require a new platform | Manager / System Admin | Week 1 |
| 2 | Create separate inventory location for faulty stock — all returns physically separated and tracked as a distinct location in system | Manager | Week 1 |
| 3 | Configure low stock alert thresholds for top 100 high-velocity SKUs | Manager | Week 1–2 |
| 4 | Deliver staff training on: barcode discipline, correct returns process, EOD procedure, and why manual workarounds cause inventory drift | Manager | Week 2 |
| 5 | Enforce EOD transaction lock — register cannot close until cash variance is within tolerance and all transactions are recorded correctly | Manager | Week 2 |
| 6 | Implement job ticket with Bill of Materials for all refurb and repair jobs — parts must be logged and linked to inventory before job is marked Complete | Manager / Technician | Week 2–3 |
| 7 | 30-day review — measure EOD discrepancy frequency, phantom stock reduction, and parts inventory accuracy against pre-implementation baseline | Manager / Analyst | Week 6 |
| 8 | If existing system cannot support BR-01 (auto alerts) or BR-06 (BOM job tickets), initiate platform evaluation — RepairDesk as first option | Manager | Week 8 |