The practices we apply on every engagement, the positions we hold, and the technology actually running in production.
Contract work has a failure mode: the contractor leaves and the codebase becomes unmaintainable six months later. Everything below is standard on every project we run, not a premium tier.
Every consultancy says it writes clean code. These are the specific positions that follow from that, including the ones people disagree with. It is better to know now than three weeks into an engagement.
Domain knowledge is most of what separates a fast engagement from a slow one. Expand either for detail.
Four sectors have their own pages with the detail: fintech, healthcare, retail and B2B, logistics. All industries.
Domain knowledge is most of what separates a fast engagement from a slow one. These are sectors where we have shipped, and where we already know what the awkward requirement is going to be.
| Payments & fintech | Multi-gateway processing, sub-merchant settlement, double-entry ledgers, reconciliation, open banking, crypto rails, chargeback handling |
| iGaming & prize draws | Real-money entry flows, verifiable prize allocation, identity and age verification, free-entry routes, payout automation, margin reporting |
| Healthcare & regulated retail | Patient records and health data under HIPAA and UK GDPR, optical and veterinary prescription workflows, prescriber verification and clinical cross-checks, practice management system integration, recall and expiry handling, licence-scoped catalogues, eligibility gating, separate US and EU production regions |
| Logistics & warehousing | Multi-site inventory, pick/pack/ship fulfilment, stock movement ledgers, distributor catalogues, integration APIs |
| B2B commerce & wholesale | Quote-to-cash, customer-specific pricing, buying groups, bulk listing and pricing operations, branded buyer portals |
| Subscriptions & loyalty | Recurring billing, instalment plans, trials and proration, dunning, rewards campaigns, direct debit collection |
| Applications & onboarding | Multi-step journeys with conditional paths, document handling, third-party verification, operational review queues, audit trails |
| Drinks & import | Bonded warehouse and duty-suspended stock, importer and merchant catalogues, trade and consumer pricing, allocation and vintage handling, storefront rebuilds for UK wine importers |
| Consumer mobile | Native iOS and Android, on-device computer vision, speech recognition, push notification infrastructure, in-app purchase, fully localised builds |
Payments work drags in everything around it - queues, ledgers, webhooks, reconciliation, mobile clients, infrastructure. This is what is actually in production across current and past projects.
| Runtime & data | Ruby on Rails · Node · PostgreSQL · Redis · Sidekiq · Solid Queue · cron scheduling |
| Infrastructure | Kamal · Docker · Heroku · Cloudflare Workers & R2 · DigitalOcean · AWS · Azure · Neon · Supabase |
| Payments | Stripe · Worldpay · multi-gateway routing · sub-merchant settlement · double-entry ledgers · reconciliation |
| Front end | Hotwire · Turbo · Stimulus · React · Tailwind · server-rendered by default |
| Mobile | Swift · iOS · Android · APNs · Firebase Cloud Messaging · push notification infrastructure |
| APIs & access | REST · GraphQL · Devise · OmniAuth · Pundit · multi-tenancy · audit trails |
| Testing | Minitest · Capybara · Selenium · VCR · WebMock · parallelised system tests · fixture-driven |
| Quality & security | RuboCop · Brakeman · Bullet · Rack::Attack · automated migration safety checks |
| Revenue instrumentation | Meta Conversions API · TikTok Events API · browser pixels · attribution from click through to settled payment · programmatic campaign management via platform APIs · product analytics · lifecycle and transactional messaging |
| Observability | Sentry · Datadog · Skylight · Rollbar · AppSignal |
| Localisation | Fully bilingual applications including transactional email, SMS and page metadata, not only interface strings · translation workflows · key parity enforced in CI so a missing translation fails the build |
| Documents & comms | PDF generation · transactional email · Twilio · localisation and translation workflows |
The usual MVP bargain is that you get something quickly on the understanding it will be thrown away. We think that is a bad trade, and an unnecessary one. An MVP that has to be rewritten is not cheaper - it is the same cost, paid later, with the product frozen while you pay it.
What we build.
What we deliberately skip.
What does not get skipped is the test suite, the enforced conventions and the one-command setup. Those are what make the difference between an MVP you extend and an MVP you replace, and they cost days rather than weeks. Scope is where you save time. Discipline is not.