How a Mulholland workspace
gets stood up.

Five phases, one feedback loop. Most clients reach production in twelve weeks. The loop continues from there.

Audit. Embed. Draft.

We don't ship surveys. A senior engineer sits with your team — at the warehouse, on the call, in the Slack thread — and watches how decisions actually get made. Two weeks in, you have a draft ontology and a list of the surfaces we'll build first. Not a deck. Not a roadmap. The actual artifact we'll build against.

  • Shadow timeOne to two weeks embedded with your operators, learning the implicit rules nobody wrote down.
  • Decision auditEvery consequential decision your team made in the last thirty days, traced back to its inputs.
  • Draft ontologyObject types, relationships, action types. The grammar of your business, written down for the first time.
  • Surface backlogA prioritized list of operator UIs, dashboards, and agent workflows we'll build first.
  • Duration~2 weeks.

Your business, in Postgres.

We encode the draft ontology into a real database — entities, relationships, derived state, row-level security as the boundary. Fronted by PostgREST so every surface speaks the same schema. Live, queryable, and shaped to how your people actually work, not how a generic CRUD app thinks they should.

  • SchemaOne Postgres database per client, on your own GCP project. Encrypted at rest, RLS-enforced on every read.
  • Derived stateComputed columns and materialized views that turn raw events into operator-readable status.
  • PermissionsRow-level security policies tied to your existing identity provider — Okta, Google Workspace, custom SSO.
  • APIAuto-generated REST API via PostgREST. Same schema for operators, agents, dashboards, mobile.
  • Duration~3 weeks.

Every source, structured.

Arroyo wires every data source into your model — APIs, files, inboxes, contracts, Slack threads, regulatory feeds. PDFs become rows. Contracts become attributes. The warehouse stops being a graveyard.

  • ConnectorsPer-source .sql schema and .ts ingest pair. Reproducible, versioned, swappable.
  • Spec contractsEvery external API committed as an OpenAPI spec. Drift detected automatically; breakage caught before production.
  • Document parsingPDFs, DOCX, scanned images, contracts. Extracted into typed rows via Arroyo's parser pipeline.
  • Inbox captureEmail, Slack, iMessage. Threads landed as conversations, decisions extracted, attached to the right entity.
  • Duration~4–6 weeks. Depends on source count and document complexity.

Surfaces shaped to the people who use them.

Phantom serves the operator UIs, dashboards, doc templates, and mobile flows your team actually uses. Every view shaped to the person in front of it. JWT-auth'd in Postgres, RLS on every read, fronted by Cloudflare Access. Deployable on day one to a single tenant on your own GCP project.

  • Operator UIsCustom interfaces per role — dispatcher, buyer, controller, ops manager. Built around the decisions they actually make.
  • DashboardsLive KPI views from the same schema your agents reason over. Numbers you can audit, not numbers a chart library guessed at.
  • Document templatesQuotes, invoices, contracts, reports — generated from live data, branded to match your existing artifacts.
  • MobileField workflows for technicians, drivers, inspectors. Same auth, same data, same audit trail.
  • Duration~6–8 weeks. First operator UI live in week six.

Marzy proposes. Humans confirm.

Marzy runs in Slack, email, iMessage, voice, and the operator UI itself. Same agent across every channel, same memory across them all. Acts when explicitly trusted on a given workflow. Defers and explains when not. Every action it takes is replayable and auditable, because it goes through the same model the humans do.

  • Channel-agnosticSlack, email, iMessage, voice, the operator UI. Same agent, same memory, same audit log.
  • Autonomy ladderObserve → diagnose → recommend → draft → execute-with-approval → execute. The client controls the pace; the system earns each rung.
  • Continuous improvementTelemetry, drift detection, and skill A/B tests run in the background. Models swap when a better one is proven on your data.
  • AuditEvery action replayable. Every memory write traceable. Compliance queries the same model operators use.
  • DurationOngoing. The loop tightens with every cycle.

Twelve weeks to production.

Then a system that gets sharper every quarter, because the memory compounds and the skills swap themselves out.

Book a call