Skip to content
Works

Selected work.

A few of the projects we've built and still support.

Retail & e-commerce
  • Custom storefront
  • Catalog migration
  • Custom checkout
  • Inventory sync

Online store — custom build and migration

The challenge

The marketplace owned the customer relationship, took a cut of every order, and left no room to control how the brand looked or how buying felt. Leaving meant rebuilding the storefront without losing the search traffic and the catalog they had spent years building.

What we built

  • A storefront built from scratch around their catalog, not a theme with a logo dropped on it
  • A checkout written for how they actually sell, including their own shipping and tax rules
  • Full catalog migration, with every old URL mapped to a new one so rankings carried over
  • Inventory, shipping and email connected so orders move without anyone retyping them
  • An admin the team runs themselves, plus a recorded training session for staff
Telecom
  • WhatsApp Business API
  • AI agent
  • CRM integration

Regional telecom — WhatsApp AI agent

The challenge

Most of the inbound volume was the same handful of questions: what a plan costs, whether there is an outage, when a payment is due. Staff retyped the same answers all day, and anything arriving after hours sat unanswered until the next morning.

What we built

  • An agent on the WhatsApp Business API that answers plan and pricing questions in the company's own voice
  • Outage reporting that identifies the customer and confirms the status of their service
  • Payment reminders, with the payment link sent inside the same conversation
  • Escalation rules that hand the chat to a person the moment it stops being routine
  • A CRM integration, so every conversation lands on the customer's record
Financial services
  • Laravel
  • MySQL
  • Bank rails
  • Merchant portal

Payment platform — merchant portal & payouts

The challenge

A licensed facilitator has to give every merchant a trustworthy view of their own money: what came in, what settled, what is still moving, and what went out to suppliers. That view has to reconcile with the bank rails underneath it, every day, for hundreds of businesses at once.

What we built

  • A merchant portal used daily by hundreds of businesses
  • A transaction ledger that reconciles against the underlying bank rails
  • A supplier-payout module, from request through to settlement
  • Access separated by role, so merchants, staff and administrators each see only their own view
  • Laravel and MySQL, in production and still supported by us
Hospitality
  • Booking engine
  • Payments
  • Multi-tenant

Small-hotel network — booking and payments

The challenge

Each member property was too small to license an enterprise booking system on its own, so most were still taking reservations by phone and message. The association wanted one system they could all share, without any hotel being able to see another's business.

What we built

  • A multi-tenant booking engine: one deployment serving every member property
  • Card payments taken at the moment of reservation
  • Rates, availability and branding controlled per property
  • A shared administration layer for the association, with each hotel scoped to its own data
Logistics
  • Mobile web app
  • Odoo integration
  • Photo capture

Vehicle rental — inspection & fleet system

The challenge

Inspections were done on paper at pickup and return. When a customer disputed damage, settling it depended on someone finding the right form, and on whatever the person on shift had thought to write down.

What we built

  • A mobile-first inspection flow used at both pickup and return
  • Photo capture attached to the specific vehicle and the specific inspection
  • An Odoo integration, so every inspection lands against the rental record
  • Runs in the browser on the phone staff already carry, with nothing to install
Professional services
  • Laravel
  • Marketplace
  • Migration

Job platform — Laravel rebuild

The challenge

The platform worked, but it was built on a stack nobody wanted to touch any more. Every change was slow and carried risk, so the product had effectively stopped moving while the market kept going.

What we built

  • A rebuild into a modern Laravel application, replacing the legacy stack
  • Separate portals for employers and for candidates
  • A full data migration off the old system
  • An architecture the team can keep extending without a specialist
Professional services
  • RAG
  • Internal assistant
  • Document search
  • Access control

Internal AI assistant over company knowledge

The challenge

New staff spent their first months asking colleagues questions that had already been answered in writing somewhere. The knowledge existed; it was just spread across a decade of documents that nobody could search meaningfully.

What we built

  • A retrieval layer over their document store, chunked so answers stay in context
  • An assistant that answers in plain language and cites the source document every time
  • Permissions that respect who is allowed to see which client's files
  • A feedback loop: staff flag a bad answer, and it becomes a test case
  • An evaluation set, so a change to the model or the prompts can be measured rather than guessed
Logistics
  • Document AI
  • Data extraction
  • Human in the loop
  • ERP integration

Document and invoice processing with AI

The challenge

Hundreds of documents arrived every week as PDFs, scans and phone photos, in two languages and no consistent layout. Someone had to read each one and retype it into the system, which was slow and produced exactly the kind of quiet errors that surface at month end.

What we built

  • An intake pipeline that accepts email attachments, uploads and photos
  • Extraction of the fields that matter: supplier, amounts, dates, line items, reference numbers
  • Validation against the existing purchase orders, so a mismatch is caught before it is booked
  • A confidence threshold: anything uncertain goes to a review queue instead of straight through
  • A review screen showing the extracted value next to the original document
Retail & e-commerce
  • Data warehouse
  • ETL pipelines
  • Executive dashboard
  • Alerting

Business intelligence — one dashboard, every source

The challenge

Every Monday someone exported four spreadsheets and spent half a day reconciling them into a report that was already stale by the time it was read. Worse, the four systems each defined a sale slightly differently, so nobody fully trusted the number.

What we built

  • Scheduled pipelines pulling from the store, the ERP, the ad platforms and accounting
  • A warehouse with one agreed definition of a sale, a customer and a margin
  • An executive dashboard: revenue, margin, stock cover, acquisition cost, side by side
  • Drill-down from any headline number to the rows behind it
  • Alerts when a metric moves past a threshold, so nobody has to remember to look
Financial services
  • Data mining
  • Segmentation
  • Churn signals
  • CRM sync

Data mining — segmentation and churn signals

The challenge

The company knew its customers only as a single undifferentiated list. Campaigns went to everyone, retention was reactive, and by the time an account was obviously leaving it had already stopped transacting weeks earlier.

What we built

  • A cleaned, deduplicated customer base out of years of messy transaction history
  • Behavioural segments built on what customers actually do, not on what a form said
  • A churn signal that flags accounts whose pattern has quietly changed
  • Segment exports that land directly in the CRM, so the commercial team can act the same day
  • A monthly refresh, with drift monitoring so the segments stay meaningful
Hospitality
  • Automated reporting
  • Consolidation
  • Scheduled delivery
  • Bilingual output

Automated operations and financial reporting

The challenge

Each property sent its numbers in a slightly different spreadsheet. Head office spent the first week of every month rebuilding the same consolidated report, which meant decisions were always made on a picture that was three weeks old.

What we built

  • A single reporting model every property feeds, whatever their local system
  • Scheduled consolidation, so the monthly pack builds itself
  • Branded PDF and spreadsheet output, generated in English and Spanish from the same data
  • Automatic distribution to owners, managers and the accountant on a set day
  • A variance view that highlights what changed rather than restating what did not
Real estate
  • Voice AI
  • Telephony
  • Calendar booking
  • CRM integration

AI voice agent for calls and viewings

The challenge

Agents are out showing properties precisely when buyers call. Missed calls went to a voicemail almost nobody left a message on, and a caller who does not get an answer simply dials the next listing.

What we built

  • A voice agent that answers in English or Spanish, whichever the caller opens in
  • Property questions answered from the live listing data, not a static script
  • Viewings booked straight into the agent's calendar, with confirmation by text
  • A warm handoff to a human for anything involving an offer or a price negotiation
  • Every call transcribed, summarised, and attached to the lead record
Education
  • Lead automation
  • Multi-channel intake
  • CRM
  • Attribution

Lead qualification and enrollment automation

The challenge

Leads came in through the website, WhatsApp, Instagram, phone, a paid form and walk-ins. They were worked in whatever order someone happened to see them, follow-up depended on memory, and the enrollment team had no idea which channel was worth the spend.

What we built

  • One pipeline collecting every channel into a single, deduplicated queue
  • Automatic qualification, so the team sees the most likely enrollments first
  • Follow-up sequences that keep going until someone replies or opts out
  • Routing by programme and by language, straight to the right advisor
  • Channel-level reporting: cost per enquiry, and cost per actual enrollment
Financial services
  • MCP server
  • OpenAPI 3.1
  • Contract testing
  • Developer experience

Payments API — MCP server and a verified integration corpus

The challenge

Integrations against this API appeared to work and then failed in production, because it accepts unknown fields with a 201 and silently ignores them. A developer — or an AI coding agent reading the official docs — would ship something that returned success and did nothing. Every merchant integration was burning days on the same traps.

What we built

  • An MCP server over Streamable HTTP that answers integration questions instead of making you read, and validates a payload before you send it
  • A verified corpus: every statement contract-tested against the live API, with a daily test publishing its own result as a public status endpoint
  • An OpenAPI 3.1 specification covering 14 operations and 18 schemas, written from observed behaviour rather than from the official docs
  • Single-file SDK clients generated from that spec, no dependencies, that reject unknown fields before the request leaves the process
  • The same contract published as plain markdown, so agents that read the web without installing an MCP get identical answers
Financial services
  • Developer portal
  • Webhooks
  • HMAC verification
  • Sandbox

Payments API — developer portal and integration sandbox

The challenge

Webhooks are the hardest part of any payments integration to develop against: you need a real HTTPS endpoint, correct signature verification, and some way to see what actually arrived. Without that, every merchant was debugging blind against production.

What we built

  • A hosted sandbox merchant that completes a real checkout round trip end to end
  • A webhook receiver with HMAC signature verification, so an integrator can see exactly what the API sends and whether their own check is right
  • A return page that satisfies the processor's HTTPS redirect requirement, which is the step most integrations get stuck on
  • Documentation covering the three integration modes: from a website, from your own system, and from an ERP
  • Working reference implementations of each mode
  • Received payloads readable over SSH rather than exposed on the web, so the sandbox is not itself a leak
Financial services
  • Dimensional model
  • Semantic layer
  • OLAP cubes
  • Forecasting

Payments data cloud — dimensional warehouse and semantic layer

The challenge

Finance, operations and engineering each computed the same figures their own way, from exports taken at different moments. Meetings turned into arguments about whose number was right instead of decisions about what to do.

What we built

  • A dimensional model over the transaction history: facts, conformed dimensions, and cubes shaped around the questions people actually ask
  • One definition per metric, published once and consumed identically from Excel, from BI tools and from code
  • Forecasting on collection volumes, kept honest by scoring each forecast against what actually happened
  • Mining over transaction patterns, surfacing what nobody thought to query
  • Scheduled refreshes, so at eight in the morning everyone is looking at the same numbers
Retail & e-commerce
  • Marketplace
  • Split payouts
  • Seller verification
  • Escrow flow

Multi-vendor marketplace with protected payments

The challenge

Buyers in the market did not trust paying online, and small stores had no way to reach beyond their own followers. A marketplace only works if both sides are protected: the buyer needs to know the money is safe, and the seller needs to know they will actually be paid out.

What we built

  • Seller onboarding with verification, so every store on the platform has been checked
  • One catalog and one cart across many independent sellers
  • Payments held and released on delivery, with split payouts per seller
  • Order and dispute handling that both sides can see, rather than a support inbox
Hospitality
  • Ordering
  • Dispatch
  • Cash on delivery
  • Multi-tenant

Food delivery platform for local restaurants

The challenge

Independent restaurants were losing a third of every order to international delivery apps, and had no relationship with the customer afterwards. They needed ordering, dispatch and payment that worked in a market where most people still pay cash on delivery.

What we built

  • Menu, ordering and checkout that works on a low-end phone and a weak connection
  • Cash on delivery alongside card, because half the market still pays cash
  • Dispatch and order status for the kitchen, the driver and the customer at once
  • Per-restaurant menus, hours and delivery zones under one platform
Financial services
  • Fiscal compliance
  • Invoicing
  • Inventory
  • Reporting

Fiscal invoicing and inventory for regulated commerce

The challenge

In this market every invoice has to carry an authorisation code issued by the tax authority, with strict numbering ranges and expiry dates. Get it wrong and the invoice is not valid — which small businesses were discovering at audit time, from handwritten books.

What we built

  • Invoicing that enforces the authorisation code, its numbering range and its expiry before a document can be issued
  • Inventory that moves with each sale, so stock and books stop disagreeing
  • Faster counter workflow: the common sale takes a few taps, not a form
  • Reports the owner and the accountant can both read, exportable at closing
Real estate
  • Listings platform
  • Property search
  • Lead capture
  • Multi-brand

Property portals — three agencies, one platform

The challenge

Agencies were publishing properties on social media and losing track of who had asked about what. Each one wanted its own brand and its own site, but none could justify paying for a bespoke platform on their own.

What we built

  • A listings platform with search by type, zone, price and operation
  • Deployed three times, each with its own brand, domain and inventory
  • Enquiries captured against the specific property and routed to the right agent
  • An admin the agency's own staff use to publish, without calling us
Retail & e-commerce
  • Tenant directory
  • Coupons
  • Events
  • Self-service admin

Shopping centre platform — directory, coupons and events

The challenge

The centre had no way to promote its tenants beyond signage at the door, and tenants had no way to publish an offer without asking management to update a static page. Foot traffic was being left to chance.

What we built

  • A store directory with categories, locations inside the centre and opening hours
  • Coupons each tenant publishes and manages themselves
  • An events calendar the marketing team runs without a developer
  • Built mobile-first, because it is read standing in the parking lot
Education
  • E-commerce
  • LMS
  • CRM
  • Institutional sales

Education supplier — store, online courses and sales CRM

The challenge

The business sold physical materials to schools and was moving into online courses, but the two lived in different systems and the sales team tracked institutional accounts in spreadsheets. Nobody could see a school's full relationship in one place.

What we built

  • A store selling physical products and course enrolments through the same checkout
  • Course delivery with progress tracking per student
  • A CRM for institutional accounts: contacts, quotes, renewals and follow-up
  • One customer record shared by the store, the courses and the sales team
Retail & e-commerce
  • Loyalty
  • Membership tiers
  • Point of sale
  • Reporting

Loyalty and membership programme

The challenge

The business already knew its best customers came back, but had no way to recognise them at the point of sale or to give them a reason to. Discounts were being handed out case by case, at the discretion of whoever was on shift.

What we built

  • Member accounts with points earned and redeemed against real transactions
  • Tiers with rules the business can change without a deployment
  • Recognition at the point of sale, so staff see the member and the benefit immediately
  • Reporting on what the programme actually costs and what it brings back
Retail & e-commerce
  • Configurator
  • Rules engine
  • Live pricing
  • Production handoff

Product configurator for made-to-order goods

The challenge

Every quote was assembled by hand from a price list, which was slow and produced combinations the workshop could not build. Customers waited days for a number, and some of those numbers were wrong.

What we built

  • A step-by-step builder for dimensions, materials and finishes
  • Rules that block combinations the workshop cannot produce, before they are quoted
  • Live pricing as the customer chooses, instead of a callback two days later
  • The finished specification handed to production in the form they actually work from
Telecom
  • Self-service portal
  • Billing
  • Operations panel
  • Payments

Telecom self-service portal and operations panel

The challenge

Every routine question — what do I owe, when is it due, why is my service down — went through a person. That queue was the same queue handling real problems, so the real problems waited behind balance enquiries.

What we built

  • A customer portal for balance, invoices, payment and service status
  • Card and local payment methods, so paying does not require a visit
  • An operations panel for staff: accounts, plans, incidents and coverage
  • Shared data with the messaging channel, so an answer is the same wherever it is asked
Financial services
  • Core ledger
  • Settlement
  • Reconciliation
  • Commissions

Core ERP built for a fintech, not adapted to one

The challenge

An off-the-shelf ERP models a sale and an invoice. A fintech's core is money moving between parties on schedules: authorised today, settled in two days, split across agents and partners, occasionally reversed weeks later. Forcing that into a generic accounting package produces numbers nobody trusts at month end, and a finance team reconciling by hand.

What we built

  • A ledger where authorisation, capture, settlement, refund and chargeback are first-class states, not adjustments
  • Commission and revenue-share rules across merchants, agents and partners, calculated by the system instead of exported to a spreadsheet
  • Daily reconciliation against bank and processor files, with breaks raised rather than silently absorbed
  • Merchant and agent lifecycle: onboarding, documents, limits and status changes
  • Accounting output finance can close the month on, and an audit trail for every movement

Let's build something that works.

Tell us what you're trying to accomplish. We'll reply within one business day with a clear next step.