I build the technical layer under revenue systems, and the AI tooling that operates it.
Independent practice at opsethic.com — working with teams across Australia, New Zealand, APAC, EMEA, the UK and the US.
HubSpot engineering — workflow and lifecycle architecture, CRM data migration with reconciliation, custom coded workflow actions, custom objects and association schemas, private apps and OAuth scopes, and the webhook and integration debugging nobody else wants to take on.
AI and agent engineering — MCP servers over CRM APIs, agents that audit a system and attach evidence to every finding, and the governance layer around them: sandbox-first writes, dry-run and approved-plan execution, credential redaction before the model, versioned change logs.
Italian and EU public funding — Smart&Start Italia and Contratto di Sviluppo through Invitalia, GBER aid-intensity modelling, and the post-award reporting, for international companies establishing or scaling an Italian entity. Native Italian speaker; the files are written in Italian rather than translated.
- A HubSpot workflow filter that is accepted and never runs — association absence cannot be expressed with
NOT_IN_LIST. The Lists API rejects it outright; the Workflows API accepts the identical filter, stores it, and leaves it permanently inert. No error, no warning, nothing in the UI. Three workflows in one portal had never enrolled a record. - Lead routing that only looks regional — routing that branches four ways by territory and rotates into two pools. The distinction is never made, and it looks correct in every builder. A ten-minute audit that works in any CRM.
- What a foreign company has to set up in Italy to qualify for grants — registered seat versus operating site, innovative-startup status, and the three-year clocks attached to revocation clauses.
The operating rule behind all of it: configuration says what a system could do; only the action log says what it did. A finding derived from configuration alone is a hypothesis until behaviour confirms it — and a second model re-reading the same configuration confirms wrong conclusions rather than catching them.
- Site — opsethic.com
- Writing — The Opsethic Dispatch · Substack
- [email protected]


