Custom development

The studio · Custom development

The feature no builder sells. Built for you, kept up for good.

Quoting, bookings, portals, integrations, AI. We build it as a module beside the o/i core: tested, yours, and still working after every update.

● your-business / modules / quotesstaging → production
modules/quotes/server.tsnew
// A quote: lines, totals, sent as a link the customer can accept.
export async function sendQuote({ actorId, siteId, quoteId }) {
await assertAccess(actorId, siteId, "manager");
return withSite(siteId, async (tx) => {
const quote = await readQuote(tx, quoteId);
await emailCustomer(quote, "Your quote is ready");
await recordActivity(tx, siteId, actorId, { action: "sent quote {n}" });
});
}
✓ 24 tests passed · ✓ every site still sees only itself
output/input
Home
Orders
Inbox
Quotes
Contacts
Settings
Quote Q-0142Marcus Lee
Private workshop · 6 peopleA$720
Take-home starter kits × 6A$90
TotalA$810
Send quote✓ Sent · Marcus can accept online
01Spec
02Build
03Test
04Ship

What we build

If it's slowing your business down, we can probably build it away.

  • 01 · Integrations

    Make your tools talk

    Two-way syncs so nobody types the same thing twice.

    Shopify · WordPress · Notion · Slack · Xero · Google · Meta

  • 02 · Workflows

    Paperwork that does itself

    Quotes, invoices, bookings, job sheets and approvals, built the way you already work.

    Quote → accept online → invoice → paid

  • 03 · Portals

    A private door for customers

    Client portals, member areas and partner logins on your own domain.

    Files · orders · bookings · messages

  • 04 · AI

    AI that does real work

    Assistants that answer from your own content, sort enquiries and draft replies. Not a chatbot bolted on.

    Answers · drafts · triage · summaries

  • 05 · Apps

    Web and mobile apps

    Tools your team or customers use every day, designed first, then built.

    Installable on a phone · works offline where it counts

  • 06 · Data

    Numbers you can act on

    Dashboards and reports pulled from the systems you already pay for.

    Sales · stock · enquiries · time

How we build

Engineering you'd expect from a much bigger team.

The same rules the whole platform is built by. For the tech people: here's what that means.

  • TypeScript
  • Next.js
  • React
  • Postgres
  • Row-level security
  • Drizzle
  • Zod
  • Vercel
  • Stripe
  • Cloudflare R2
  • Vitest
  • Playwright
  1. 01

    Every site is locked to itself

    Row-level security in the database, not just in the code. One site can never read another's data.

  2. 02

    Beside the core, never a fork

    Your module plugs into the platform, so you keep every platform improvement for free.

  3. 03

    Tests before code

    Unit, database and browser tests on every change. Nothing merges red.

  4. 04

    Staging before production

    You see it on a preview link first. Production is a separate database that test data never touches.

  5. 05

    Small, reversible releases

    Changes ship in small pieces. Database changes only ever add, so a rollback is always safe.

  6. 06

    Your data leaves when you do

    Everything a module stores is in Export everything, in plain files.

Working together

Small releases. Always something to see.

  1. 01

    Scope

    A call, then a short written plan and a fixed quote. You know the price before we start.

  2. 02

    Prototype

    Clickable screens first, so the hard decisions happen on paper.

  3. 03

    Build

    Weekly releases to a preview link. You always see where it's at.

  4. 04

    Look after

    Launch, then fixes and changes from the people who built it.

What would you build if it were easy?

A free 30-minute call, then a fixed quote. Development is billed on its own, separate from your o/i plan.