A proposal for unifying inventory, finance, and project planning across the Skyhawk catering operation, built around how the business actually runs, not how accounting software thinks it should.
Skyhawk processes 5–10 purchase invoices per day, books them in weekly or bi-weekly batches, and reconstructs project costing in spreadsheets after the fact.
POs are sent as plain-text emails. Suppliers upload invoices manually. Inventory is tracked mentally between start- and end-of-month counts.
The system proposed here replaces that with an integrated platform where every transaction simultaneously updates a financial ledger and an inventory ledger, all rolled up to the project.
The team knows opening and closing stock but nothing in between. Over- and under-ordering follow.
Ingredients, labor, and petty cash float free of the project that consumed them. True margin is invisible.
Especially for cooked dishes with many ingredients, variance disappears into mental tracking.
Ruby's planning sheets run on assumptions, disconnected from actual inventory items and live project data.
Every supplier order generates three documents: the purchase order (intention to buy), the purchase invoice (actual purchase), and the delivery note (proof of receipt). The system reconciles all three, flags mismatches, and updates the inventory ledger and financial ledger in lockstep.
Business sends a purchase order for required items. PO is logged against the project driving demand.
Supplier invoice captured automatically. Line items, totals, and tax extracted by the AI layer.
Delivery note matched against PO. Mismatches (ordered 4, received 3) flagged for accept, partial-receive, or reject.
Inventory ledger updates quantities. Financial ledger posts cost. Both sides stay in sync; no cost without a corresponding item movement.
The financial ledger captures debits, credits, and chart-of-accounts mapping for every transaction, and stays continuously synchronized with the inventory ledger. A cost never appears without a corresponding item movement, and vice versa.
Purchase invoices, petty cash, and labor allocations post directly to the ledger. Each entry inherits its project tag and category.
Customer invoices issue directly from the project. No COGS or ingredient exposure to the client, line items only.
Bi-weekly and other recurring billing cycles auto-generate on schedule. Yearly contracts run without manual intervention.
Uploaded bank statements match transfers against outstanding invoices and petty cash. Project closes when payment lands.
Every job runs as a Project. All costs, revenue, labor, and inventory attach to it. The system tracks each project through a customizable status pipeline, at every transition, financial and operational state move together.
Inventory allocated, costs estimated, team tagged.
Kitchen executes; transfers in/out logged against allocation.
Under final review before dispatch and invoicing.
Invoice issued, project delivered, awaiting payment.
Paid, reconciled, variance logged, project locked.
A dedicated mailbox (e.g. finance@skyhawk.com) auto-absorbs invoices, POs, and delivery notes, whether forwarded by suppliers, uploaded directly, or photographed and sent via WhatsApp. The AI layer scans each document, extracts structured data, and stages it for review.
Documents arrive by email, upload, or WhatsApp. Each lands in a central Documents queue tagged by source.
AI reads the document, pulls line items, totals, supplier, VAT, and dates. Confidence scores flag anything unclear.
Extracted entries appear in a review pane. Operator confirms or corrects; system learns from each correction over time.
On confirmation, ledger transaction and inventory entry are created in one step. No double entry, no copy-paste.
Labor cost is allocated to projects by tracking employee hours. Infaaz spends 3 hours on Project A and 5 hours on Project B at his hourly rate. Some projects allocate hours ahead; others are reconciled after the fact.
Petty cash purchases (a last-minute pre-made dessert, supermarket whipped cream, a Metro run) currently bypass the inventory and ledger system entirely. WhatsApp receipt capture closes that gap and routes each spend to the project that drove it.
Team member photographs the receipt and sends it to the Skyhawk WhatsApp number. Photo and metadata land in the Documents queue.
AI identifies supplier, category (food, transport, non-food, rental), and amount. Operator confirms project allocation.
Ledger entry created against petty cash. If the receipt represents an inventory item, inventory ledger updates too.
Cost flows into the project's P&L, even informal cash purchases show up in true project margin.
Ruby builds proposal budgets in Excel before the project exists in any real form, 12 people at AED 100, AED 900 food cost estimate. The platform preserves this assumption-based planning, then keeps it side-by-side with actuals once the project runs.
Wastage operates at two distinct levels: independent of any project, and within a specific project's lifecycle. The system tracks both, and an activity log captures every state change so variance never disappears into mental tracking.
Wastage that happens to inventory regardless of any project, e.g. milk expires in the central kitchen and is written off directly against the inventory ledger.
5 units allocated, 3 used, the rest returned, expired, or written off at close. Variance is logged against the project that consumed it.
Every change captured: items moved, reassigned as waste, locked at close. A Kanban-style view surfaces drift between allocation and actual.
Customer payments rarely arrive as a single transfer, the standard pattern is 50% upfront and 50% on or after delivery, sometimes split into more installments. The system tracks each payment schedule explicitly and only closes a project when the full balance lands.
Each invoice carries its payment schedule: 1 of 2, 2 of 2, or whatever installment cadence the client uses. Fully customizable.
Uploaded bank statements are matched against outstanding invoices. The system pairs transfers to projects; operator confirms on ambiguity.
Project status reflects payment progress: Approved = awaiting payment, Closed = fully reconciled. Partial payments hold projects in Approved.
Once the final installment lands, project locks. Ledger, inventory, labor, and variance are sealed, the project becomes an immutable record.
Approval rules, permission levels, and notification triggers are configurable per category, so the system bends around how Skyhawk already works, rather than forcing the team into a generic finance-software workflow.
Some expense types auto-approve; others route to a designated reviewer who attaches the invoice and verifies pricing. Posting blocked until sign-off.
Admin · full access. User · scoped edits. Guest · read-only. Salary visibility is gated separately from time-logging access.
Payment due reminders, project status transitions, approval requests. Each user toggles which channels they receive.
UAE e-invoicing rolls out in phases. Skyhawk is well below the mandatory threshold for the near term, but the platform is being built e-invoicing-ready so adoption is a switch, not a project. Equivalent regimes already live in the UK, Saudi Arabia, and Pakistan, the architecture follows a known pattern.
Pilot phase opens. Businesses can opt in to test integration with the tax authority.
Businesses above AED 50M revenue must adopt. Skyhawk remains below this threshold.
All businesses must adopt. Skyhawk's e-invoicing infrastructure is already in place.
Crossval will document three workflow specifications (Inventory, Finance, Planning), each structured around the 80% standard flow with a dedicated section for the 20% edge cases. The differentiator from off-the-shelf platforms is direct access to decision-makers: client feedback translates into system changes in days, not release cycles.
Three specs: Inventory, Finance, Planning. Standard flow first, edge cases sectioned separately.
Direct line to Crossval decision-makers. Changes ship in days, not quarters. Your fingerprints in the blueprint.
Go-live targeted before catering season opens, no learning curve during peak operations.
Dedicated support channel with a 4-hour response SLA. Direct access, not a ticketing queue.
These run in parallel. None blocks the others. The goal: enter the catering season with the system already absorbed into daily routine, not learning it in production.