"The simplest way for Nigerian businesses to manage inventory, track sales, and understand their market — using just their voice and camera."
Record Am Now (RAN) is a business management SaaS built specifically for Nigerian small and medium businesses — market traders, electronics dealers, retailers, FMCG distributors, and service providers. It solves the single biggest problem that kills every inventory tool in this market: recording business data is too hard for non-tech staff.
RAN brings together inventory management, sales tracking, expense recording, employee management, and automated Nigerian tax reporting — all designed so that a cashier, store keeper, or sales rep with zero tech background can operate it confidently, using voice and camera instead of typing.
There are two business modes — Solo for single-person businesses and Business for teams with multiple staff — each with its own tailored interface so neither type feels like they're using something built for the other.
Most inventory tools fail in the Nigerian SME market for the same reasons:
Nigerian business owners communicate on WhatsApp, document with voice notes, and verify with camera photos. RAN meets them exactly there — snap a product to add it, speak a sale to record it, and receive your business intelligence on WhatsApp without ever opening the app.
| Principle | What It Means in Practice |
|---|---|
| Voice and camera first | Every data entry task can be completed by speaking and snapping — typing is always optional, never required |
| Dead simple to use | If a staff member can use WhatsApp, they can use RAN. No training manual needed |
| Each role sees only what they need | A cashier's screen is a cart. A store keeper's screen is stock movement. Complexity lives only in the manager view |
| Intelligence grows with usage | The more data recorded, the smarter the AI recommendations and market insights become |
| WhatsApp-native for owners | Summaries, alerts, and business queries reach the owner on WhatsApp — where they already are |
| Tax is automatic, not manual | Nigerian tax obligations are calculated in the background from daily activity — no separate process needed |
| Build once, serve both modes | Solo and Business modes share one codebase — the interface adapts based on how the business is registered |
During registration, one question determines the entire experience:
That single answer sets the mode. It controls what screens are shown, what features are accessible, and how the dashboard is laid out. Nothing else changes — the underlying data, the AI, the tax engine, and the receipt system are all identical under the hood.
If a solo user grows and hires their first cashier, they don't start over. One tap in Settings — "Add a team member" — switches them to Business mode. All their existing products, sales history, and tax records carry over. No data is lost.
A single person who is simultaneously the owner, cashier, store keeper, and accountant of their business. They are almost always on mobile. They don't have time to navigate complex menus. Every action needs to be achievable in under 30 seconds.
One screen. Everything visible at a glance without scrolling. No sidebar full of modules they don't need — just the numbers that matter and the three actions they take every day.
Below the summary cards, three large quick-action buttons dominate the screen:
| Button | What It Does |
|---|---|
| ➕ Add Product | Opens the snap + voice product entry flow |
| 💰 Record Sale | Opens the quick sale screen — tap product, confirm, done |
| 📋 Log Expense | Opens expense entry — snap receipt or speak the amount |
| Feature | How a Solo User Accesses It |
|---|---|
| Add/manage products | Snap + voice flow, or quick manual entry. Full product list in one scroll |
| Record a sale | Tap product → enter quantity → approve → optional receipt. Done in 3 taps |
| Log an expense | Snap receipt → AI fills amount, date, vendor → tap category → save |
| Record a loss | Tap "Log Loss" → speak what happened → AI categorizes it |
| View stock levels | Full product list with current quantity, reorder alerts highlighted in red |
| Monthly tax report | One tap → PDF generated → auto-calculated from all recorded activity |
| Business Health Score | Displayed on dashboard — one number with a one-line AI explanation |
| Sales history | Scrollable list by date. Filter by product or date range. Export to PDF |
| Expense history | Categorized list. Filter by month. Totals by category shown automatically |
Solo mode hides everything that requires multiple people to be meaningful:
These screens become available automatically the moment the user switches to Business mode.
A business with a physical location, a manager (or owner who manages remotely), and at least one other member of staff handling either sales, receiving goods, or managing the store floor. Business mode separates concerns — every person does their job in RAN without seeing or touching what doesn't belong to them.
After the owner registers in Business mode, they set up their team. This happens once and takes under 10 minutes.
Role 1: Owner / Manager
Has full, unrestricted access to every part of the system. This is the only role that sees reports, tax data, supplier information, staff performance, and business intelligence. Typically this is the business owner or a trusted senior manager.
| Screen | What They See |
|---|---|
| Dashboard | Today's revenue, total stock value, profit month-to-date, estimated tax, staff activity summary, low stock alerts, Business Health Score |
| Inventory | Full product list with all stages — ordered, in warehouse, on display, sold. Edit prices, add new products, manage suppliers |
| Orders | All purchase orders from suppliers — pending, in transit, received, discrepancies flagged |
| Sales | All transactions across all staff. Filter by cashier, date, product. See who is performing and who isn't |
| Expenses | All logged expenses categorized and totalled. Review, approve, or flag unusual entries |
| Staff | Full team list, each person's role, their login status, their sales totals for the period |
| Tax Reports | Auto-generated tax reports with full breakdown of revenue, expenses, losses, and tax liability |
| WhatsApp Bot (Pro) | Configured here — set report frequency, which alerts to receive, what queries are enabled |
| Market Intelligence (Pro) | Weekly market reports with market share data and AI recommendations |
Role 2: Store Keeper
Responsible for the physical inventory — receiving goods from suppliers, counting stock, and moving products from the warehouse to the showroom floor. They do not handle sales or money.
| Screen | What They See |
|---|---|
| Receive Goods | Open purchase orders awaiting delivery. Tap to confirm receipt. Enter actual quantity received. Flag discrepancies if delivery is short |
| Stock Movement | Move stock from warehouse to showroom display. Enter quantity moved. System updates both counts automatically |
| Current Stock | Read-only view of warehouse stock and showroom stock levels by product |
| Alerts | Notifications when a product needs to be moved from warehouse to replenish the showroom display |
Role 3: Cashier
Handles sales transactions at the counter. Their entire world in RAN is the cart screen. They never see prices in the inventory, reports, staff data, or supplier information — just the products they can sell and the transactions they have completed during their shift.
| Screen | What They See |
|---|---|
| New Sale (Cart) | Searchable product list. Add items to cart by tapping. Adjust quantities. Cart shows running total |
| Payment Approval | Tap "Customer Has Paid" → sale recorded → receipt options appear |
| Receipt | Send to customer email, share via WhatsApp, print, or skip |
| My Sales Today | List of their own transactions for the current shift — nothing from other cashiers |
Role 4: Sales Rep
Moves around the showroom floor, helps customers, and can record a sale from their phone without needing to go to the cashier counter. They see available stock so they can answer customer questions about what's in stock, but they do not see pricing strategy, reports, or supplier data.
| Screen | What They See |
|---|---|
| Stock Availability | Which products are available and in what quantity — so they can answer customers accurately |
| Record a Sale | Same cart flow as cashier — used when they close a sale on the floor |
| My Sales | Personal sales history and monthly total — motivates performance |
These features work in both Solo and Business modes. The interface adapts slightly — Solo users see a simpler flow, Business users see additional context like which staff member performed the action.
The single biggest friction point in any inventory tool is product entry. RAN removes it entirely. No typing required — staff snap the product and speak the details. The AI does the rest.
| AI Component | Technology | What It Does |
|---|---|---|
| Image Recognition | Gemini Vision API | Identifies product type, brand, and model from photo. Pre-fills category. Works even with imperfect lighting or angle |
| Speech-to-Text | Web Speech API (free) / OpenAI Whisper (Pro) | Transcribes spoken product details. Whisper handles Nigerian accents, Yoruba/Igbo/Hausa-inflected English, and Pidgin accurately |
| Smart Number Parsing | Gemini text processing | Converts spoken numbers to digits: "fifty-five thousand" → 55000, "one carton twelve pieces" → 12, "two hundred and forty-six" → 246 |
| Category Suggestion | Gemini classification | Suggests the most appropriate product category from the image + name. User can override |
New staff can look up any product's price instantly by snapping it or searching by name. The manager can update prices at any time with a confirmation step and a full audit trail of every change.
A cashier or sales rep who doesn't know a product's price — or wants to confirm before quoting a customer — can look it up in under 5 seconds without asking anyone.
| What Staff Sees After Lookup | Detail |
|---|---|
| Product Name | Samsung 43" Smart TV |
| Category | Electronics — Television |
| Selling Price | ₦195,000 |
| Units Available (Display) | 4 units in showroom |
| Last Price Update | Updated 3 days ago by Ade (Manager) |
If a staff member snaps a product that is not yet in the inventory, the AI recognizes it and prompts the appropriate action:
The manager gets a dedicated Price Board — a full list of every product with its current selling price and last update date. Updating a price takes three taps and always requires confirmation before going live.
When a supplier increases costs and multiple products need updating at once, the manager can update all of them in a single confirm action.
Every price change is recorded automatically. The manager can tap any product and see its full price history — who changed it, from what, to what, and when. This protects against unauthorized changes and gives a clear record if questions arise.
| Date | Changed By | Old Price | New Price |
|---|---|---|---|
| May 27, 2026 | Ade (Owner) | ₦185,000 | ₦195,000 |
| Apr 10, 2026 | Ade (Owner) | ₦175,000 | ₦185,000 |
| Jan 3, 2026 | Ade (Owner) | ₦168,000 | ₦175,000 |
In Business mode, every product has a journey from the moment it is ordered from a supplier to the moment it is sold to a customer. RAN tracks every stage so the owner always knows exactly where every unit is.
| Product | Ordered | Received | Warehouse | Display | Sold (Month) |
|---|---|---|---|---|---|
| Samsung 43" TV | 14 | 14 | 8 | 4 | 2 |
| LG Fridge 200L | 6 | 6 | 2 | 4 | 0 |
| Haier AC 1.5HP | 10 | 8 | 5 | 3 | 0 |
| Automatic Alert | Trigger Condition | Who Sees It |
|---|---|---|
| Delivery discrepancy | Received quantity ≠ ordered quantity | Manager — confirm with supplier |
| Low display stock | Showroom display hits 1 unit | Store Keeper — move units from warehouse |
| Low warehouse stock | Total stock (warehouse + display) falls below reorder threshold | Manager — place new purchase order |
| Dead stock alert | Product on display for 21+ days with zero sales | Manager — consider repricing or repositioning |
| High velocity alert | Product selling significantly faster than average | Manager — consider restocking before stockout |
A full point-of-sale flow that any cashier can operate without training. In Solo mode, the owner uses the same flow themselves. In Business mode, each cashier has their own account and their sales are tracked individually.
Any business expense — logistics, utilities, supplies, rent — can be logged in under 30 seconds by snapping the receipt.
Damaged goods, theft, fire damage, and spoilage are all recordable losses that legally reduce taxable income under Nigerian tax law. RAN makes recording these events fast so they're not forgotten.
| Loss Type | Examples | Tax Impact |
|---|---|---|
| Damaged goods | Broken appliances, water damage, cracked screens | Deductible — reduces taxable profit |
| Theft / Pilferage | Staff theft, shoplifting, burglary | Deductible — reduces taxable profit |
| Spoilage | Expired food, perishable goods | Deductible — reduces taxable profit |
| Catastrophic loss | Fire, flood, natural disaster | Deductible — reduces taxable profit |
RAN calculates tax liability automatically from all recorded activity — sales, expenses, losses, and employee costs. No accountant needed for the calculation. The output is an audit-ready PDF report.
| Tax Type | Applies To | Brackets |
|---|---|---|
| PITA (Personal Income Tax) | Individual traders, sole proprietors | Progressive: 0% → 7% → 11% → 15% → 19% → 21% → 24% based on annual income |
| CITA (Company Income Tax) | Registered limited companies | <₦25M turnover: 0% | ₦25M–₦100M: 20% | >₦100M: 30% |
The tax report includes: total revenue, total allowable deductions (expenses + losses), taxable income, applicable tax bracket, tax amount due, and a breakdown of what contributed to or reduced the liability.
Tax Optimization AI: Before generating a report, the AI scans the data and surfaces actionable insights — uncategorized expenses that could be deductible, losses not yet recorded, and a warning if the business is approaching the next tax bracket.
A chat widget embedded in the dashboard. The owner can ask any question about their business in plain English — or Pidgin — and get an instant answer powered by their own live data.
| Question | What the AI Does |
|---|---|
| "Why is my tax higher this month?" | Compares this month's taxable income to last month, identifies the driving factor |
| "What expenses can I deduct to reduce my tax?" | Reviews uncategorized or unlogged items and surfaces deductible candidates |
| "Am I close to the next tax bracket?" | Calculates current trajectory and warns if the next bracket will be hit |
| "Which product is giving me the most profit?" | Calculates gross margin per product using cost price and selling price data |
| "Wetin my profit be for this month?" | Understands Pidgin — responds in plain English with the month's net profit |
The AI monitors all incoming data and flags anything that looks unusual — without the owner having to go looking for it.
| Anomaly Type | Example Alert |
|---|---|
| Expense spike | "Logistics expenses are 3× higher than last month — ₦450,000 vs. ₦148,000 average. Review before closing the month." |
| Sales gap | "No sales recorded on Tuesday and Wednesday this week. Was the shop closed? If not, check that sales were being recorded." |
| Unusually large single transaction | "A ₦2.1M sale was recorded by Cashier Emeka at 11:43pm. Verify this transaction is correct." |
| Stock mismatch | "System shows 4 Samsung TVs on display but 6 were sold this month with only 2 received. Stock count may be off." |
| Supplier discrepancy | "Mikano Electronics has now delivered short on 3 consecutive orders. Consider reviewing the supplier relationship." |
A single weekly number on the dashboard — 0 to 100 — that summarizes overall business performance so the owner doesn't need to read five different reports to know how things are going.
Nigerian business owners do not open business apps regularly — but they open WhatsApp dozens of times a day. RAN Pro delivers business intelligence directly to the owner's WhatsApp so they always know what's happening without ever needing to log into the app.
| Owner's Message | RAN's Response |
|---|---|
| "How many TVs did we sell this month?" | "You've sold 44 Samsung 43" TVs this month — ₦8.58M in revenue from that product alone." |
| "What's my profit for last week?" | "Last week's net profit was ₦2,360,000. Revenue was ₦3.2M and total expenses were ₦840,000." |
| "Who is my best cashier?" | "Chidi is your top cashier this month with ₦4.2M in total sales across 61 transactions." |
| "Show me everything below 5 units" | Sends a formatted list of all products with fewer than 5 units in stock |
| "Wetin happen with my expenses this month?" | RAN understands Pidgin — responds with a categorized expense breakdown |
| "Generate my tax report" | RAN generates the PDF and sends it directly in WhatsApp |
The most powerful differentiator in RAN's Pro plan. A weekly market intelligence report tells the owner not just how their business is performing, but how it is performing relative to the entire market — competitors, pricing, and demand trends included.
| Stage | Users in Same Market | Intelligence Source | Quality |
|---|---|---|---|
| Launch | 0–50 | Published trade data + industry benchmarks | General guidance — "Electronics dealers in Lagos typically sell X/month" |
| Growth | 50–200 | Anonymized RAN user base aggregate | Peer comparison — "Other RAN users in your category averaged 34 units this week" |
| Scale | 200+ in same market | Real-time RAN network data | Precise market share — "You hold 17.9% of Samsung TV sales in Computer Village" |
| Feature | Solo Free | Solo Pro ₦2,500/mo |
Business Free | Business Pro ₦6,000/mo |
|---|---|---|---|---|
| Core Features | ||||
| Snap + Voice product entry | ✓ | ✓ | ✓ | ✓ |
| Snap-to-Price lookup (staff) | ✓ | ✓ | ✓ | ✓ |
| Price Board + single price update with confirmation | ✓ | ✓ | ✓ | ✓ |
| Bulk price update | ✓ | ✓ | ✓ | ✓ |
| Price change history & audit trail | ✓ | ✓ | ✓ | ✓ |
| Inventory management | ✓ | ✓ | ✓ | ✓ |
| Cashier cart + payment approval | ✓ | ✓ | ✓ | ✓ |
| Auto receipt (email + WhatsApp) | ✓ | ✓ | ✓ | ✓ |
| Expense logging with OCR | ✓ | ✓ | ✓ | ✓ |
| Loss & catastrophe recording | ✓ | ✓ | ✓ | ✓ |
| Automated Nigerian tax calculation | ✓ | ✓ | ✓ | ✓ |
| PDF tax + financial reports | ✓ | ✓ | ✓ | ✓ |
| Business Health Score | ✓ | ✓ | ✓ | ✓ |
| Business Mode Only | ||||
| Multi-staff accounts + role-based access | — | — | ✓ | ✓ |
| Inventory journey tracking (Order→Warehouse→Display→Sold) | — | — | ✓ | ✓ |
| Per-cashier sales performance | — | — | ✓ | ✓ |
| Purchase order management | — | — | ✓ | ✓ |
| Pro Plan Only (AI + Intelligence) | ||||
| AI price alerts (stale price, margin squeeze, market movement) | — | ✓ | — | ✓ |
| AI price suggestion on new products | — | ✓ | — | ✓ |
| Tax optimization AI suggestions | — | ✓ | — | ✓ |
| Anomaly detection alerts | — | ✓ | — | ✓ |
| AI Tax & Business Assistant (chat) | — | ✓ | — | ✓ |
| WhatsApp daily/weekly reports | — | ✓ | — | ✓ |
| WhatsApp natural language query bot | — | ✓ | — | ✓ |
| Market share intelligence reports | — | ✓ | — | ✓ |
| AI competitor & pricing recommendations | — | ✓ | — | ✓ |
| Limits | ||||
| Products | Up to 50 | Unlimited | Up to 200 | Unlimited |
| Monthly transactions | Up to 100 | Unlimited | Up to 500 | Unlimited |
| Staff accounts | 1 | 1 | Up to 5 | Unlimited |
The core database entities that power RAN. Every record is scoped to a business_id so data is fully isolated between businesses. Every action-related record includes a user_id so it is traceable to the specific staff member who performed it.
The confirmed stack is Laravel + Livewire + MySQL. Every tooling decision below is chosen to work naturally within this ecosystem — no context switching, no separate API server, everything in one Laravel application.
| Layer | Technology | Why This Choice |
|---|---|---|
| Framework | Laravel 11 | Full-stack PHP framework. Handles routing, ORM, auth, queues, mail, storage, scheduling — everything RAN needs is built in or one package away |
| Reactive UI | Livewire 3 | Builds reactive components (cart, price lookup, dashboards, modals) without writing a separate JavaScript framework. Components are PHP classes — the whole team stays in one language |
| Blade Templates | Laravel Blade | The existing HTML/CSS/Bootstrap UI converts directly into Blade templates. Layouts, components, and partials keep the UI organized |
| Database | MySQL 8 | Reliable relational database. Laravel's Eloquent ORM maps directly to MySQL tables. Migrations version-control the schema cleanly |
| Frontend JS (minimal) | Alpine.js | Ships with Livewire. Handles the browser-specific features Livewire can't touch — camera access, Web Speech API, microphone recording. Keeps JS minimal and readable |
| Asset Bundling | Vite + Laravel Mix | Compiles Bootstrap CSS, custom styles, and any Alpine.js modules. Hot reload during development |
| Package | Purpose |
|---|---|
| Laravel Breeze | Authentication scaffolding — login, registration, password reset, email verification. Generates clean Blade + Livewire views out of the box. Owner and staff login both handled here |
| Spatie Laravel Permission | Role-based access control. Assigns roles (owner, manager, store_keeper, cashier, sales_rep) to users. Middleware gates every route and Livewire component to the correct role. Most mature RBAC package in the Laravel ecosystem |
| Staff PIN Login | Custom implementation — staff can log in with a 4-digit PIN on a shared device (e.g., cashier counter tablet). PIN stored as bcrypt hash in the users table. Laravel Auth handles the rest |
RAN uses Google Gemini 2.0 Flash for all vision and text AI tasks, and OpenAI Whisper for voice transcription only. This combination gives the best accuracy at the lowest cost. Both are called from Laravel Service classes — the rest of the application never knows which provider is behind each feature.
| Provider | Used For | Why |
|---|---|---|
| Google Gemini 2.0 Flash | Product image analysis, receipt OCR, business chat, tax optimization, anomaly detection, price suggestions, market reports | Cheapest capable multimodal model available. $0.075 per 1M tokens. Generous free tier for development. Handles image + text in one API call |
| OpenAI Whisper | Voice transcription — snap+voice product entry, cashier voice cart, WhatsApp voice queries | Best accuracy for Nigerian English, Pidgin, and mixed-language speech. $0.006 per minute of audio. No other model matches it for accent handling |
| Web Speech API | Voice transcription fallback on Free plan | 100% free, runs in the browser via Alpine.js, no server round-trip. Less accurate but zero cost for free tier users |
| Operation | Est. Volume/Month | Provider | Approx. Cost |
|---|---|---|---|
| Product image analysis | 50 new products | Gemini Flash | ~$0.04 |
| Receipt OCR | 100 expense receipts | Gemini Flash | ~$0.06 |
| Business chat queries | 300 queries | Gemini Flash | ~$0.18 |
| Tax report generation | 1 monthly | Gemini Flash | ~$0.01 |
| Anomaly detection scans | 30 nightly jobs | Gemini Flash | ~$0.09 |
| WhatsApp daily summaries | 30 messages | Gemini Flash | ~$0.09 |
| Voice transcription | 200 entries × 10 sec avg | Whisper | ~$0.02 |
| Total AI cost per business per month | ~$0.49 (≈ ₦750) | ||
At a ₦2,500–₦6,000/month subscription price, AI costs stay under 30% of revenue per user — a healthy margin even at early scale.
| Feature | Laravel Implementation |
|---|---|
| Product image analysis | GeminiService::analyzeProductImage($imageBase64) — posts image + prompt to Gemini Vision API via Http::post(), returns category + name as JSON to Livewire ProductEntry component |
| Receipt OCR | GeminiService::extractReceiptData($imageBase64) — same pattern, extracts amount/vendor/date, pre-fills Livewire ExpenseLogger form fields |
| AI Business Assistant (chat) | GeminiService::chat($message, $businessContext) — context is Eloquent-fetched business data (recent sales, stock, expenses) injected into the prompt. Response streams back to AiAssistant Livewire component |
| Tax optimization | TaxOptimizationService::analyze($businessId) — builds structured financial summary from Eloquent, sends to Gemini, returns JSON array of suggestions displayed in the tax report screen |
| Anomaly detection | Nightly AnomalyDetectionJob queued via Laravel Scheduler — queries last 7 days, calls GeminiService::detectAnomalies($data), stores results, fires AnomalyDetectedNotification |
| AI price suggestion | GeminiService::suggestPrice($productName, $category, $marketData) — called when adding a new product, returns a recommended price range displayed in the ProductEntry form |
| Voice transcription (Pro) | Alpine.js records audio via MediaRecorder API → posts blob to POST /api/transcribe → WhisperService::transcribe($audioFile) calls OpenAI Whisper → text returned → $wire.set('fieldName', $text) fills the form |
| Voice transcription (Free) | Alpine.js calls window.SpeechRecognition directly in the browser — no server round-trip, zero cost. Result dispatched to Livewire via $wire.set() |
| WhatsApp query bot | Inbound webhook → HandleWhatsAppQueryJob dispatched → GeminiService::chat($userMessage, $businessContext) → reply sent via Twilio SDK |
| Package | Used For |
|---|---|
| barryvdh/laravel-dompdf | PDF generation for tax reports, financial reports, and customer receipts. Renders a Blade view to PDF. Fast and no external dependencies |
| spatie/laravel-medialibrary | Manages all file uploads — product images, receipt photos, document attachments. Handles storage, resizing, and retrieval cleanly with Eloquent relationships |
| twilio/sdk or laravel-notification-channels/whatsapp | WhatsApp integration — outbound daily/weekly reports sent via Laravel Notifications. Inbound webhook handled by a dedicated Laravel route that passes messages to Gemini and sends replies |
| Laravel Queues (built-in) | All slow operations run in the background — AI API calls, PDF generation, WhatsApp message sending, email delivery. Prevents the UI from freezing while waiting for external APIs |
| Laravel Scheduler (built-in) | Cron jobs — daily WhatsApp morning update (7:30am), weekly market report (Monday), nightly anomaly detection scan, monthly tax reminder |
| Laravel Notifications (built-in) | Multi-channel notifications — email via SendGrid, WhatsApp via Twilio, and in-app notifications all driven from one Notification class |
| Laravel Sanctum (built-in) | API token authentication for any future mobile app or third-party integrations |
| Livewire Component | What It Does |
|---|---|
CashierCart | Real-time cart — add/remove products, running total updates live, payment approval, receipt delivery options. No page reload at any step |
PriceLookup | Search field with live results as user types. Displays price, category, stock count. Connected to Alpine.js for camera/snap trigger |
PriceBoard | Full product list with inline price editing. Confirmation modal before saving. Bulk update mode |
ProductEntry | The snap + voice add product flow. Alpine.js triggers camera and microphone. Results dispatched into Livewire fields |
InventoryDashboard | Live inventory table showing all stages (ordered/warehouse/display/sold). Polling for real-time updates |
ManagerDashboard | Real-time summary cards — revenue, transactions, health score, alerts. Auto-refreshes on a set interval |
AiAssistant | Chat interface — sends messages to Gemini API via queued job, streams response back to UI |
ExpenseLogger | Receipt upload triggers OCR via Alpine.js file picker → pre-fills form fields via Livewire |
TaxReport | Date range picker → triggers report generation job → PDF download link appears when ready |
| Layer | Technology | Detail |
|---|---|---|
| Laravel Mail + SendGrid | Customer receipts, staff invites, owner alerts, tax report delivery | |
| File Storage | Laravel Storage + S3 or local disk | Product images, receipt scans, generated PDFs. Start with local storage, switch to S3 when ready to scale |
| Queue Worker | Laravel Queue (database driver → Redis in production) | Processes all background jobs — AI calls, WhatsApp sends, PDF generation |
| Hosting | DigitalOcean, Hetzner, or cPanel (shared) | Laravel runs on any PHP 8.2+ host. Start shared hosting, move to VPS when traffic grows |
| Dev Environment | Laravel Herd or Laragon (Windows) | Laragon is the easiest local Laravel + MySQL setup on Windows — one installer, everything works |
Building in this order ensures every phase produces something usable before the next phase starts. Each phase maps to concrete Laravel artisan commands, migrations, Livewire components, and routes.
business_mode (solo/business) and plan (free/pro) columns to the businesses table.CashierCart Livewire component — add products to cart, real-time total, payment confirmation.barryvdh/laravel-dompdf rendering a Blade view.PriceBoard Livewire component for manager — live inline price editing, confirmation modal, bulk update, price history log.PriceLookup component for all staff — real-time search as user types, shows price + category + stock. Role-aware: cashiers see selling price only, manager sees cost price too.ProductEntry Livewire component.ProductController@analyzeImage → Laravel calls Gemini Vision API via Http::post() → category + name suggestion returned.ProductController@transcribeVoice → Laravel calls Whisper API → text returned → $wire.set() fills the Livewire field.
InventoryDashboard Livewire component showing all stages per product.GoodsReceiving Livewire component confirms delivery quantities, flags discrepancies, updates stock.qty_warehouse.qty_warehouse and qty_display.ExpenseLogger Livewire component — file upload triggers Alpine.js preview → image posted to ExpenseController@ocr → Gemini Vision extracts fields → form pre-filled.TaxCalculationService PHP class implements PITA and CITA brackets — pure calculation logic, fully unit-testable.TaxReport Livewire component — date picker → dispatches GenerateTaxReportJob to queue → job generates PDF via DomPDF → stores file → notifies user → download link appears.
HealthScoreService calculates the 5-factor score from Eloquent queries. Score stored daily via scheduled job.AiAssistant Livewire component sends user message + Eloquent-fetched business context to Gemini API via a queued job. Response streamed back.AnomalyDetectionJob — queries last 7 days of activity, calls Gemini with structured data, stores flagged anomalies, fires Laravel Notification to owner.
SendDailyWhatsAppUpdate job at 7:30am daily. Job queries business data, calls Gemini for summary, sends via Twilio SDK.POST /webhook/whatsapp route receives message from Twilio, dispatches HandleWhatsAppQueryJob → Gemini reads business data + question → sends reply via Twilio.MarketAggregationService queries anonymized, aggregated sales data across all businesses in the same industry_category + location.GenerateMarketReportJob — builds market data, calls Gemini for recommendations, stores report, delivers via WhatsApp and in-app notification.business.plan before every Pro feature. Free users see an upgrade prompt instead of the feature.