top of page
20251223_1723_Neon Character Glow_remix_01kd63r3pbf3jtqaav961q0dxf.png

Bespoke Apps & Tools

Custom tools built around how your business actually operates.

When is this the right solution:?

For businesses where software needs to fit how they actually operate, not the other way round.

Off the Shelf Icon.jpg

Off-the-shelf software that doesn’t quite fit

Enquiries & Actions icon.jpg

Enquiries or actions with no clear next step

Lead Capture Icon.jpg

Lead capture that stops at names and emails

Clunky Workarounds icon.jpg

Clunky workarounds you've learned to live with

Too many steps icon.jpg

Too many steps to get one simple thing done

Tools and Friction Icon.jpg

Tools that add friction instead of removing it

Bespoke Apps Orb.png

What I do

I start by understanding what the tool actually needs to do in the real world, then design and develop only what’s required to make that happen.

That means:

  • understanding how something needs to work in real life

  • stripping out unnecessary steps

  • designing something people don’t need training to use

  • building only what’s needed without padding or bloat
     

Some bespoke tools are small, contained pieces of work designed to solve one specific problem.  Others become the core system the business relies on, with everything else built around them.

The aim is always the same: make something simpler and easier to run than what’s there now.

How this work fits

This is bespoke work, built around a specific problem the business needs to solve.

The project scope is driven by what the tool needs to do and how critical it is to the business.

What doesn’t change is the approach:
it’s designed around how the business actually operates, and built to make things simpler, not heavier.

A few examples of how this shows up in real projects:

Each tool exists because an off-the-shelf option would have compromised how the business operates.

Referral systems built to convert

A bespoke referral system that routes enquiries, tracks outcomes, and automates notifications, invoicing, and payments.


Referrals move through the system properly without manual chasing or missed fees.

A multi-stage screening tool for a specialist practitioner

A custom screening tool that qualifies need before booking.


Users complete a structured screening process, relevant data is collected automatically, and the practitioner receives everything needed ahead of an appointment.

Custom fundraising tools for a charity

A set of bespoke donation apps built around how the charity actually raises money.


Multiple donation routes, Gift Aid handling, compliance, and automated communication, designed for real-world fundraising, not generic payment flows.

What happens next

If this sounds familiar, the next step is a conversation.

bottom of page
(function() { if (typeof document === 'undefined' || typeof window === 'undefined') return; function init() { if (document.getElementById('wa_float_btn')) return; var PHONE = '447944275939'; var MESSAGE = 'Hello!%20I'd%20like%20to%20get%20some%20help.'; var COLOR = '#25D366'; var AGENT = 'Orbi'; var TITLE = 'Customer Support'; var AVAIL = 'Typically replies in minutes'; var GREET = 'Talk to us on WhatsApp '; var LABEL = 'Start Chat'; var INITS = 'O'; var PATH = 'M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413Z'; var style = document.createElement('style'); style.textContent = [ '#wa_float{position:fixed;bottom:24px;left:24px;z-index:2147483647;font-family:Arial,sans-serif}', '#wa_float_btn{width:60px;height:60px;border-radius:50%;background:'+COLOR+';border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 16px rgba(0,0,0,.3)}', '#wa_float_popup{display:none;position:absolute;bottom:72px;left:0;width:300px;border-radius:16px;overflow:hidden;box-shadow:0 8px 32px rgba(0,0,0,.2);background:#fff}', '#wa_popup_head{background:'+COLOR+';padding:16px;color:#fff;display:flex;align-items:center;gap:12px}', '#wa_popup_av{width:44px;height:44px;border-radius:50%;background:rgba(0,0,0,.2);display:flex;align-items:center;justify-content:center;font-weight:bold;font-size:14px;flex-shrink:0}', '#wa_popup_body{padding:16px;background:#f0f4f8}', '#wa_popup_bubble{background:#fff;border-radius:12px 12px 12px 4px;padding:12px 14px;font-size:14px;color:#333;line-height:1.5;box-shadow:0 1px 4px rgba(0,0,0,.1)}', '#wa_popup_cta{width:100%;margin-top:12px;padding:13px;background:'+COLOR+';color:#fff;border:none;border-radius:10px;font-size:14px;font-weight:bold;cursor:pointer}', '#wa_popup_close{background:rgba(255,255,255,.2);border:none;color:#fff;width:28px;height:28px;border-radius:50%;cursor:pointer;font-size:18px;margin-left:auto;flex-shrink:0}' ].join(''); document.head.appendChild(style); var wrap = document.createElement('div'); wrap.id = 'wa_float'; var popup = document.createElement('div'); popup.id = 'wa_float_popup'; var head = document.createElement('div'); head.id = 'wa_popup_head'; var av = document.createElement('div'); av.id = 'wa_popup_av'; av.textContent = INITS; var info = document.createElement('div'); info.style.flex = '1'; info.innerHTML = '
'+AGENT+'
'+TITLE+'
'+AVAIL+'
'; var closeBtn = document.createElement('button'); closeBtn.id = 'wa_popup_close'; closeBtn.textContent = '×'; head.appendChild(av); head.appendChild(info); head.appendChild(closeBtn); var body = document.createElement('div'); body.id = 'wa_popup_body'; var bubble = document.createElement('div'); bubble.id = 'wa_popup_bubble'; bubble.textContent = GREET; var cta = document.createElement('button'); cta.id = 'wa_popup_cta'; cta.textContent = LABEL; body.appendChild(bubble); body.appendChild(cta); popup.appendChild(head); popup.appendChild(body); var mainBtn = document.createElement('button'); mainBtn.id = 'wa_float_btn'; mainBtn.innerHTML = ''; wrap.appendChild(popup); wrap.appendChild(mainBtn); document.body.appendChild(wrap); mainBtn.addEventListener('click', function() { popup.style.display = popup.style.display === 'block' ? 'none' : 'block'; }); closeBtn.addEventListener('click', function() { popup.style.display = 'none'; }); cta.addEventListener('click', function() { window.open('https://wa.me/' + PHONE + '?text=' + MESSAGE, '_blank'); popup.style.display = 'none'; }); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', init); } else { init(); } })();