From manual chaos
To real-time clarity

Operations & finance automation

Financial Reports Automated
0%
Copy-paste errors eliminated
$0
Third-Party software spend
Scroll
Jump to 01 Invoice Automation 02 Automated MIS Reporting 03 Menu Design Impact 04 Approval Automation

What we do

Process automations,
built for functional teams.

We eliminate the manual work sitting between your raw data and the decisions your team needs to make, using the tools you already own wherever possible.

🔧

NetSuite

End-to-end NetSuite services for businesses that need more from their ERP, whether you have just gone live or planning to expand and optimise what's already live.

  • Data migration
  • Assessment & optimisation
  • Customisation
  • Custom financial and tax reports and SuiteAnalytics
  • Support & training
See case study →
📊

Automated MIS & Financial Reporting

Replace manual ERP exports and copy-paste routines with automated, always-fresh dashboards, built on infrastructure your team already pays for.

  • ERP-to-Excel automation (NetSuite, Xero, QuickBooks)
  • Power Automate & Google Sheets pipelines
  • Looker Studio & Power BI dashboards
  • Zero new software licences where possible
  • Automated month-end analysis
See case study →
🔍

Financial Analysis & Business Intelligence

From margin deep-dives to live BI dashboards, we build the analytical layer that turns your financial and operational data into clear, confident decisions.

  • Financial performance analysis (P&L, margin, cost, profitability by segment)
  • BI dashboards with drill-through (Looker Studio, Power BI, NetSuite Analytics)
  • Budget vs actual variance analysis and root cause reporting
  • Operational statistical analysis (trend detection, anomaly flagging, impact measurement)
See case study →
01
Hospitality & Restoration Workflow Automation

Automating Construction Invoice Processing

A multi-site construction operations team was manually keying every supplier invoice into spreadsheets. We built an end-to-end pipeline, email attachment in, validated Excel register out, with no manual intervention required.

Invoice processing

A heritage hospitality and restoration company running multiple active sites was processing vendor invoices manually. Invoices arrived in every format: clean PDFs from established contractors or phone-camera photos of handwritten bills. Each one had to be opened, read, manually keyed into a tracking sheet, and routed for approval.

Different people extracted different fields in different formats. Approval happened informally over chat. There was no point where a malformed or incomplete invoice got caught before it entered the books, and for a finance function where a vendor billing at 93% project completionActual case stat: a vendor billed at 93% completion but had only been paid for 49% but paid for only 49% of it is real leakage, that intake gap was itself a risk.

Generic invoice-extraction tools assume one input shape: a clean, machine-readable document. That assumption breaks the moment a site engineer photographs a handwritten receipt. A text-based PDF has a structured data layer, the job is extraction. A photographed note has no text layer, the job is visual interpretation under uncertainty, requiring a vision-capable model, not a parser.

Treating both the same way over-engineers the easy case or under-serves the hard one. The architecture had to branch on input type at the first decision point.

A single automated pipeline built using n8n workflow takes over from the moment an invoice email lands.

1
Intake & routing

A Gmail trigger watches for incoming invoice emails. Each attachment is archived to Google Drive immediately, then a routing check determines: structured PDF, or image?

2
Two extraction paths, matched to input quality

PDFs → text extraction + AI agent constrained by a structured output parserForces the model to return data conforming to an exact schema, consistent field names, consistent types, every time, ensuring consistent field names and types. Images → vision-capable LLM chain with prompt engineering tuned to handwritten and photographed formats.

3
Validation gate before any record is written

Both paths run a check before anything is written. Failure means a human-readable alert email flagging exactly what went wrong, not a quiet data quality problem surfacing three weeks later during reconciliation.

4
Human approval before filing

Data that passes validation gets split into line items, converted to an Excel register, uploaded to Drive, and routed for approval via "Send and Wait for Response" email. Nothing reaches the books without a person confirming it.

Match the extraction method to the actual input quality, not to a uniform AI approach. Splitting the paths lets each use the right tool for its actual problem.

Build to fail loud. Early versions had no validation gate after extraction, bad data would have flowed straight into the register with no one aware. Adding explicit null and format checks tied to automatic alert emails means a failure produces a notification, not a data quality time-bomb.

Keep humans in the loop at the points that matter. For a process tied directly to vendor payments, a human confirmation step isn't a gap in automation, it's the control point that makes the automation trustworthy enough to actually use.

The system handles clean PDFs with maximum reliability and photographed invoices with enough validation to catch failures rather than let them through. As image volume grows, the next investment would be tightening schema enforcement on the image path specifically, the one currently carrying the least structural validation. That's a deliberate trade-off, not an oversight: the engineering effort went where the volume is.

Impact

Zero
Manual keying per invoice through the pipeline
96%
Extraction failures caught before touching the register
Day one
Drive archive of every incoming invoice from go-live

Stack

n8n (free-tier infrastructure)
Gmail trigger + Google Drive
Structured output parser (PDF path)
Vision-capable LLM (image path)
Excel register output
02
Hospitality, Multi-property Live Reporting

Automating MIS Reports for a Hotel Group

A finance analyst at a multi-property hotel group was spending three hours every morning on manual NetSuite exports. The official fix, NetSuite's SuiteAnalytics Connect add-on, wasn't in the budget. We built an automated dashboard on tools they already owned.

Financial reporting dashboard

A finance analyst at a multi-property hotel group was spending three hours every morning running the same routine: log into NetSuite, pull each report, copy the data into a master Excel file, and email it out to 12 department heads. By the time it landed in inboxes, the data was already four hours old, and the analyst's morning was gone.

The finance lead flagged it as a real cost: a skilled analyst burning 15 hours a week on work a scheduled job should do. The obvious fix was NetSuite's SuiteAnalytics Connect add-on, which would allow direct live queries into the Excel dashboard. The CFO wouldn't approve it, the add-on licence ran to several thousand dollars a year for a capability the team needed for one use case. The team was stuck between wasting analyst time and making decisions on stale data.

A zero-cost automation connecting NetSuite directly to their existing Excel MIS report, using only Microsoft 365 tools they already owned.

1
Automate the extraction

NetSuite configured to email four daily report snapshots to a dedicated mailbox on a fixed schedule. No new licences, no new integrations, just an existing email feature used deliberately.

2
Build the bridge

A Power Automate flow detects these emails, extracts the data, and overwrites the old file in SharePoint, without breaking a single existing Excel formula or pivot table.

3
Preserve the user experience

The Finance team continues to use the exact same Excel dashboard they've always used. The file replacement is invisible. They open SharePoint and see fresh numbers.

The constraint wasn't technical, it was political and budgetary. Any solution requiring new licences, new tools, or changes to how the Finance team worked was dead on arrival. The brief was: deliver live data, using only what's already paid for, without touching the dashboard the team knows.

That constraint turned out to be a feature. By routing through Microsoft's native ecosystem rather than adding a middleware layer, the solution has fewer dependencies, fewer points of failure, and no vendor risk if the $5k ODBC provider changes pricing.

The ROI math was simple: the first week reclaimed enough finance lead hours to justify the engagement. Over 12 months, the saved administrative time represents over $12,000 in reclaimed salary cost, not counting the value of decisions made on hours-old data rather than days-old.

Impact

3h
Saved daily, manual export routine fully eliminated
$0
Additional software spend, built on existing licences
<15 min
Data freshness, down from 24 hours
$12k+
Annualised salary cost reclaimed

Stack

NetSuite (scheduled email exports)
Microsoft Power Automate
SharePoint
Excel MIS Report

"You don't need expensive middleware to get live ERP data into Excel."

Engagement summary, Case 02

03
Restaurant, Independent BI / Statistical Analysis

Menu Design Impact Analysis

No A/B test. No rollout date. Just sales history and a question that needed a real answer, not a gut feel. We used statistical change-point detection to isolate the impact and quantify it in revenue terms.

Business intelligence analysis

A US-based independent restaurant had redesigned their menu but hadn't tracked when the change went live. They wanted to know whether it had affected sales, and if multiple versions existed, which one performed best. No A/B test, no logged rollout date, just sales history and a vague sense that something had shifted.

This is a common problem for operations-heavy businesses: the decision already happened, the data trail is incomplete, and the business owner is left asking what happened after the fact rather than designing for it in advance.

We treated this as a two-part problem: first find when something changed, using only the sales data, without assumptions, then attach meaning to that date by cross-referencing available evidence.

1
Change point detection

Rather than picking an arbitrary "before and after" window, we ran statistical change point detection (Pelt algorithmPruned Exact Linear Time, a standard method for finding where a time series' underlying behaviour structurally shifts, without needing a known date via Python's ruptures library) across the full sales history. A 7-day rolling average was applied first to remove day-of-week noise, restaurant sales naturally spike on weekends regardless of menu design.

2
Quantifying the shift

Once the breakpoint was identified, average daily and weekly sales before and after were computed, expressed as a percentage lift and a cumulative revenue figure. Where the data showed more than one structural shift, each window was treated as its own "design era" and ranked independently, rather than assuming only one change occurred.

3
Visual correlation

Sales data gives you a date, not a cause. To connect the detected change point to an actual design decision, we cross-referenced the breakpoint date against Wayback Machine snapshots, Yelp and Google Maps customer photos, and design-tool version history, confirming what the menu actually looked like during each detected window, rather than relying on memory or assumption.

4
Ruling out confounders

Before attributing any sales shift to the menu redesign, we checked the same window against pricing changes, seasonal effects, and marketing activity. A sales lift that coincides with a holiday season or a new delivery-platform promotion is not evidence of a successful redesign, separating those out is part of the deliverable, not an afterthought.

The underlying capability isn't about menus. It's about taking a messy, undocumented operational change and reconstructing both when it happened and what effect it had, using whatever data trail already exists, rather than requiring perfect record-keeping going forward.

The same method applies to pricing changes, staffing changes, vendor switches, or any operational decision made without instrumenting it at the time. The instinct is the same as in Fynsignal's automation work: the goal isn't just clean dashboards, it's making decisions and their consequences traceable, even retroactively.

Approach

Pelt
Algorithm for change point detection across full sales history
4 steps
Detect → quantify → correlate → rule out confounders
Retroactive
No prior instrumentation required, works from existing data

Methods & tools

Python, ruptures library
Pelt change point detection
7-day rolling average smoothing
Wayback Machine / review data
Confounder analysis (seasonal, pricing)
04
Multi-National Operations Approval Automation

From a week of chasing approvals to sign-off in under 24 hours

A global client with approvers across multiple countries had no system-enforced approval chain for vendor bills. A multi-level NetSuite workflow with amount-based routing and email triggers reduced the approval cycle from ~5 days to under 24 hours.

NetSuite SuiteFlow, Vendor Bill Approval Workflow (Global)
CREATE Condition Check Recurring? EU Form? → Skip or proceed Requestor & Country Head Email triggered instantly Dept / Function Head Conditional on amount Finance Tier 1 GL · Tax · PO match Final review APPROVED Ready for payment Rejection reason captured Trigger Filter L1 + L2 L3 – L5 L6 Finance Done

The client ran procurement across multiple countries, with approvers at every level, Supervisors, Function Heads, Department Heads, Finance, sitting in different geographies and time zones. Every vendor bill, whether raised directly or converted from a Purchase Order, needed the right sign-offs based on the amount, the creator's role, and the business unit.

None of this was enforced in any system. Approvals happened over email threads. A bill landed in someone's inbox in Singapore, sat over a long weekend, got forwarded to the wrong person in London, and arrived with the Finance team a week later with no trace of who had seen it or when. The finance lead described it plainly: chasing approvals was eating more time than the actual payments work.

We built a NetSuite SuiteFlow workflow, the Vendor Bill Approval Workflow (Global), that enforces a dynamic, multi-level approval chain on every vendor bill creation or update. The path a bill takes depends on its amount, whether a PO exists, and who created it.

1
Initiation

Triggered on create or update of any Vendor Bill.

2
Requestor & Country Head approval

The bill creator's designated approver reviews first, then routes to the Country Head based on subsidiary or location, ensuring the right country's authority is always in the loop, not a blanket global approver.

3
Supervisor, Function Head & Dept Head approval

Triggered conditionally by amount threshold. Bills crossing defined values traverse these levels. Lower-value bills skip levels entirely, senior approval time is spent where it genuinely matters.

4
Finance Tier 1 approval

Final Finance review, verifies GL coding, tax mapping, and PO matching before the bill is approved and available for payment.

5
Approved / Rejection reason capture

Any approver at any stage can reject. The workflow routes through a mandatory Rejection Reason step, storing the reason permanently on the bill record, no more context lost in email threads.

Email notifications at the moment of routing, not as a reminder. Each approver gets an automated email the instant the bill reaches their stage, with a direct link to the record. An approver in Dubai doesn't need to be chased, they see it as soon as it's their turn. This is the single biggest reason the approval cycle dropped from a week to under 24 hours.

Rejection captures the reason, not just the decision. Early approval workflows typically stop at a reject button. This one routes through a Rejection Reason step, the approver must log why before the bill is marked rejected. That reason sits on the Vendor Bill record permanently.

Exclusions built in at the condition level. Recurring bills and Europe Portfolio bills are excluded by condition, preventing double-workflow conflicts without requiring manual intervention.

Before
Email and chat-based approvals
~5 days average to get sign-off
No visibility into where a bill was stuck
Rejection reasons lost in threads
All bills treated the same regardless of amount
No audit trail in the ERP
Risk of bills posted without approval
After
System-enforced multi-level workflow
<24 hours across all time zones
Live approval status visible on every bill
Rejection reason captured on the record
Dynamic routing by amount threshold
Timestamped approval history on every bill
No bill can post without completing the chain

Impact

<24 hrs
Approval cycle, down from ~5 days across all time zones
7 levels
Conditionally triggered approval stages
Zero
Bills that can post without completing the approval chain

Stack

NetSuite SuiteFlow (no-code workflow)
Record type: Transaction, Vendor Bill
Trigger: On Create / On View or Update
Condition logic: amount, PO linkage, creator role, subsidiary
Automated email at each approval stage
No additional licences, native NetSuite

"A finance team spending a week chasing approvals across continents now runs the same process in under a day, with a full audit trail and zero manual follow-up."

Engagement summary, Case 04

See what this looks like
for your business.

Most engagements start with a 30-minute call to map the manual work your team is doing. That's usually enough to know if your team needs automation.