Each case study below describes what was actually built and the engineering decisions behind it. We keep clients anonymous, and we do not publish revenue or productivity figures we have not measured.
AI integration · MCP
Connecting an operations platform to Claude with a remote MCP server
A US leadership-development consultancy
A remote Model Context Protocol server that lets the consultancy's staff run their admin platform by asking Claude — invoicing, scheduling, follow-ups, time entries and contracts — with the same permissions they have in the app.
The problem
The team already ran the business on a custom admin platform we had built: invoices, calendars, contracts, HR, compliance and time tracking. Every task still meant clicking through screens. They wanted to delegate routine operations to an AI assistant without handing it a master key to the business.
What we built
Designed and built a remote MCP server inside the existing Next.js admin application, so it ships and deploys with the product rather than as a side service.
Exposed roughly 115 tools covering invoices, calendar events, email and follow-ups, time entries, contacts, contracts, projects, budgets, vendors, HR, compliance and files.
Kept each tool a thin, typed proxy over the platform's existing authenticated endpoints, so business rules live in one place and the AI cannot bypass validation.
Implemented standards-based OAuth sign-in with role-scoped permissions: a staff member's assistant can only do what that staff member is allowed to do.
Replaced an earlier local (stdio) prototype with the remote server so non-technical staff connect in one click.
Decisions worth stealing
Proxy, don't duplicate: tools call the same endpoints the UI uses, so there is no second copy of business logic to drift.
Permissions are inherited from the signed-in user, not granted to "the AI" — the safest default for an assistant that can send invoices.
Remote over local: a hosted MCP endpoint removes per-machine setup, which is what decides whether non-engineers actually use it.
Desktop app · Integrations
A signed, auto-updating desktop app that builds timesheets from real activity
A US leadership-development consultancy
A cross-platform Electron app for macOS, Windows and Linux that assembles consultant timesheets from desktop activity, calendars, Zoom meetings and call logs, then syncs them to the firm's admin platform.
The problem
Consultants billed by the hour but reconstructed their week from memory. The firm needed time captured automatically across apps, meetings and calls — reliably enough to bill from, and without consultants babysitting a timer.
What we built
Built the Electron app end to end in TypeScript: 13 main-process modules and around 40 IPC channels.
Integrated six third-party sources: Google Calendar (multiple accounts), Outlook via Microsoft Graph, Zoom, Twilio call logs, Google Drive activity and the firm's own admin platform.
Handled the unglamorous systems work: idle detection, sleep/wake and screen-lock handling, video-call awareness, and crash-safe buffering so no tracked time is lost.
Built a user-defined rules engine that auto-assigns activity to projects (app, window title and URL matching with priorities and time-of-day constraints).
Set up the release pipeline: macOS code signing and Apple notarization, Windows installers, and auto-updates for every platform.
Decisions worth stealing
Heartbeats aggregated into sessions rather than continuous recording — accurate enough to bill from, cheap on battery and privacy-respecting.
Notarization and auto-update were treated as launch requirements, not polish: an unsigned desktop app does not survive contact with corporate laptops.
SaaS · Payments · CRM integration
Membership platform for a mortgage-industry association: Stripe billing, CRM sync and a Bubble migration
A US mortgage-industry professional association
A subscription membership platform — member dashboard, gated content, events, vendor marketplace and a 28-page admin portal — with tiered Stripe billing, a conference ticket checkout and two-way GoHighLevel CRM sync, migrated off a legacy Bubble app onto Next.js and Supabase.
The problem
The association ran its membership on a no-code Bubble app that it had outgrown. Billing edge cases were handled by hand, member data and the GoHighLevel CRM drifted apart, paid content was protected only in the interface, and the annual conference needed its own ticketing alongside recurring memberships.
What we built
Built the member experience end to end: dashboard, vendor marketplace, lender directory, gated content library (video, PDF and podcast with a custom player), events with an iCal calendar feed, loan escalations, global search and notifications.
Built a 28-route admin portal with rich-text editing, drag-and-drop content ordering, audited "act as member" impersonation and a separate "view as" role and tier simulator for support.
Engineered tiered Stripe subscriptions (trial, Premium, Elite, VIP) with one idempotent webhook handling duplicate-subscription guards, self-healing scheduled downgrades, payment-failure grace periods and admin-created checkout links that provision accounts automatically.
Added conference commerce on the same Stripe account: a multi-step public checkout with early-bird pricing, guest tickets and admin invoice and claim flows, plus paid quota top-ups with annual resets.
Integrated GoHighLevel both ways: database triggers push changes to the CRM through edge functions, inbound webhooks bring form submissions, status and tags back, and four opportunity types map onto configurable pipeline stages.
Enforced plan-tier access in Postgres with 46 row-level-security policies, so paid content and partner data are protected in the database, not just hidden in the UI.
Built first-party analytics: client and server event tracking, conversion-funnel and engagement dashboards on materialised views, with data-retention rules.
Migrated production data off Bubble with a dedicated migration function and around 25 reconciliation and backfill scripts for Stripe prices, subscriptions and trial dates.
Decisions worth stealing
Stripe webhooks are the single source of truth for billing: the app never assumes a payment succeeded because the browser said so, and every event is safe to receive twice or out of order.
Entitlements live in the database (RLS), so a bug in a page component cannot leak premium content.
Every CRM record is written to Supabase first and then stamped with its GoHighLevel ID, so the two systems can always be reconciled.
Onboarding and subscription state run through one middleware state machine, so every route agrees on what a member can see.
AI application · Structured LLM output
AI-generated assessments and executive reports for a leadership consultancy
A US leadership consultancy
A team-assessment app where admins generate assessment templates from a topic with an LLM, participants answer through share links, and the system writes executive-summary reports.
The problem
The consultancy ran assessments manually and wrote every report by hand. They wanted AI to do the drafting without the output becoming unpredictable or the reports inventing conclusions from raw numbers.
What we built
Used Google Gemini with schema-constrained (typed JSON) output to generate complete assessment templates from a free-text topic.
Designed the report prompt to work from labelled findings rather than raw scores, with a fixed section contract (strengths, critical gaps, misalignment) so reports stay consistent.
Built quota and rate-limit handling that surfaces retry timing to users instead of failing silently.
Wrote fine-grained Firestore security rules so anonymous participants can append exactly one response and nothing else.
Built the admin back-office, aggregate cross-company reports and print-quality PDF export.
Decisions worth stealing
Structured output over free text wherever the result feeds software — it turns "the model usually returns valid JSON" into a guarantee.
Withholding raw scores from the summariser removed a whole class of over-confident, numerically wrong statements.
Mobile app · SaaS
Our own product: a privacy-first matchmaking app on React Native and Supabase
DablewDevs product
A women-led, privacy-first matchmaking app — anonymous proposals, time-limited chats and mutual-consent identity reveal — with an iOS/Android app, API, marketing site and moderation portal in one monorepo.
The problem
Privacy had to be structural, not a setting: browsing must never expose identity, and premium limits must hold even against a modified client.
What we built
Built an Expo / React Native app (52 routes) plus three Next.js apps — API, marketing site and admin moderation portal — in a Turborepo monorepo.
Separated identity data into its own table, served discovery from an anonymised SQL view, and applied default-deny row-level security on every table.
Wrote match scoring as a Postgres function with weighted criteria and distance, enforcing premium gating inside the query itself.
Made RevenueCat webhooks the server-side source of truth for in-app subscriptions, handling the full purchase/renewal/cancellation lifecycle idempotently.
Ran our own security audit, found two critical access-control holes, and closed them with column-level grants and hardened views.
Decisions worth stealing
Server-authoritative entitlements: the app asks the database what the user may do; it never decides for itself.
Self-hosted geocoding from an open dataset instead of a paid geo API — one less vendor and no location data leaving our infrastructure.
Shopify · Ecommerce
Shopify store built from scratch — and run since — for a cosmetics brand
A cosmetics and skincare brand
A Shopify store set up end to end with a custom theme, richer product pages and marketing integrations, which we continue to maintain and extend.
The problem
The brand needed a store that matched its playful identity, showed products well on mobile, and could keep up with new launches without a developer rebuilding pages each time.
What we built
Configured the store end to end: products, collections, payments, shipping and localisation.
Designed and developed a responsive, on-brand custom theme.
Built richer product pages: bundles, variant swatches, reviews and promotional banners.
Set up Klaviyo email marketing and the Meta Pixel for sales and remarketing.
Ongoing management: launches, app integrations, design updates and performance work.
Decisions worth stealing
Theme sections the team can rearrange themselves, so new launches do not need a developer.
Tracking and email flows set up at launch, not after — the store sells from day one with remarketing in place.
Shopify · Ecommerce · Gulf
Custom Shopify store for a UAE fashion and lifestyle brand
A fashion and lifestyle brand in the UAE
A Shopify store built from the ground up for the UAE market, with a custom theme, advanced product templates and cart customisations.
The problem
The brand needed a fast, pixel-perfect store localised for the UAE, with product options and bundles that the stock theme and checkout could not handle out of the box.
What we built
Full store setup for the UAE: domains, payment gateways, shipping rules and localisation.
Custom, fully responsive theme built to the brand identity.
Dynamic product templates with colour swatches, variant selectors and real-time inventory.
Cart enhancements: upsells, custom engraving options and conditional bundle logic.
Performance and SEO work: lazy loading, compressed assets and search best practice; Klaviyo, Judge.me and WhatsApp chat integrated.
Decisions worth stealing
Cart-level customisation (engraving, conditional bundles) instead of a heavy third-party app, keeping the store fast.
WhatsApp chat on the storefront — the channel UAE shoppers actually use.
WordPress · Lead generation
Content-rich WordPress site that generates leads for a property agent
A property agent in Singapore
A WordPress site that works as both an educational resource hub and a lead-generation system: district guides, market analysis, reviews and enquiry flows.
The problem
An experienced property agent needed a site that ranked for local property searches and turned readers into enquiries, not a brochure page.
What we built
Custom WordPress theme, responsive across devices.
Guides for all 28 property districts and housing-estate insights with price and rental data.
Blog for case studies and market analysis; Google Reviews widget; newsletter sign-up.
Contact forms and WhatsApp integration for enquiries.
SEO-structured content and performance tuning on fast managed hosting.
Decisions worth stealing
Content first: district-by-district guides give the site something worth ranking for in local search.
Every page ends in a low-friction enquiry path (form or WhatsApp) rather than a generic contact page.
Have something similar in mind?
Tell us what you are building or what needs fixing. You will hear back from an engineer — not a sales rep — within one business day, usually with questions or a rough approach.
Your enquiry goes straight to our engineering team — the people who will scope and build your project, not a sales desk.