jp ferreira
← All projects
Continuous during my tenure

Domain.com.au - AI Governance & NPS

Designed and led the rollout of AI-assisted PR review workflows and engineering guardrails. Principle: AI assists, humans decide. Lifted PR review consistency across the team while keeping human accountability central. Separately, led UX and backend platform improvements that lifted NPS from 7% to 60% over approximately 12 months.

Role
Software Engineer
Period
2024 – 2026

// 01

Problem

At Domain, I worked across two major product areas: Engage and Pricefinder CMA, both of which presented different but equally meaningful engineering challenges.

On the Engage platform, I effectively became the end-to-end owner of a production proposal platform used by real estate agents to create highly customised client proposals. The platform had grown organically over time and relied on multiple backend services, legacy data pipelines, and evolving client requirements. Product quality issues, inconsistent UX, data mapping complexity, and customer pain points had resulted in a poor Net Promoter Score (NPS) of approximately 7%, creating both engineering and commercial pressure to improve the platform.

The problem was not simply technical debt. It required balancing product improvements, bug remediation, customer research, backend data normalisation, feature development, and infrastructure reliability within a live production environment.

Later, within Pricefinder CMA, a different challenge emerged: modernising critical backend infrastructure while continuing to ship features. A core appraisal system was still running on an outdated Java/Tapestry stack that limited engineering velocity and maintainability. At the same time, the wider engineering team began adopting AI tooling inconsistently, creating governance, code quality, and workflow concerns that needed a practical engineering solution rather than blanket policy restrictions.

// 02

Technical Approach

The Engage platform was built using Ruby on Rails, React, Redux, PostgreSQL, AWS, and TypeScript, supported by multiple backend services. As platform owner, I worked across frontend product development, backend services, customer issue remediation, and architectural improvements.

One notable delivery was a new Node.js microservice that allowed clients to upload CSV data which could then be transformed into charts for inclusion in their proposals. This introduced a flexible way for customers to bring their own data into the platform while keeping transformation logic isolated in a dedicated service.

Another critical component was a Rails-based data mapping service responsible for ingesting property data, suburb insights, comparable sales, and provider feeds from multiple external sources, normalising that data into structures suitable for both persistence and frontend display. Much of the platform's reliability depended on this translation layer.

In Pricefinder CMA, I helped modernise the backend by rebuilding the appraisal platform from an ageing Java/Tapestry codebase into a Node.js, TypeScript, PostgreSQL, and Prisma architecture, while continuing active feature development.

Separately, I led practical AI governance initiatives. This included introducing standardised Claude engineering context files, high-level cross-repository architecture awareness, local AI-assisted PR review workflows that posted suggested review comments to GitHub, and anti-AI-slop guardrails. The principle was intentionally simple: AI should improve engineering consistency and speed, but accountability remains entirely with humans.

// 03

Interesting Hard Bits

The most rewarding aspect of this work was operating at the intersection of engineering, product ownership, architecture, and developer enablement.

On Engage, improving NPS from 7% to 60% over approximately 12 months required far more than fixing bugs. A part-time PM and designer handled direct client engagement, gathering feedback through surveys; I structured that input into user stories, planned and prioritised improvements, and iterated on both user experience and backend behaviour. I also worked directly with the customer experience team to help them support clients, and coordinated with data providers to resolve API issues as they arose. That kind of outcome required engineering empathy, not just code delivery.

Owning a platform alone also meant operating across very different technical concerns: frontend React feature work, backend Rails services, AWS infrastructure, API integration behaviour, data normalisation, and production debugging. The breadth of responsibility accelerated both technical decision-making and operational maturity.

The AI governance work was particularly interesting because the challenge was cultural as much as technical. Engineers were naturally experimenting with different AI tools, but without consistency, context, or guardrails. Rather than resisting adoption, I designed workflows that improved code review quality while preserving human ownership. AI generated suggestions, reviewers remained accountable, and local workflows reduced fragmented tooling behaviour.

What I'm most proud of is that this work delivered measurable outcomes across multiple dimensions: customer satisfaction, architectural modernisation, developer productivity, engineering consistency, and production platform reliability. It reflects the kind of pragmatic senior engineering leadership that balances delivery, systems thinking, and team enablement.

Tech Stack

Frontend

ReactReduxTypeScript

Backend

Ruby on RailsNode.jsTypeScriptPrisma

Legacy stack (replaced)

JavaTapestry

Database

PostgreSQL

Infrastructure

AWS

AI & Developer Tooling

Anthropic Claude

Highlights

AI governance approach

  • AI-assisted PR review (local-first, reviewer accepts/discards before posting)
  • Shared engineering context files per repository
  • Anti-AI-slop guardrails filtering vague suggestions before review
  • Cross-repository architecture awareness for multi-service teams

Delivery outcomes

  • NPS 7% → 60% over approximately 12 months (Engage platform)
  • Appraisal backend modernised from Java/Tapestry to Node.js + Prisma
  • Node.js CSV-to-chart microservice shipped as isolated service
  • Rails data-mapping service normalising feeds from multiple external providers