The New Default. Your hub for building smart, fast, and sustainable AI software

Production-Grade AI Compliance for EY Virtual Compliance Officer
EY's Virtual Compliance Officer had proven its concept, though it needed to survive enterprise reality. To graduate the platform from a PoC AI chatbot into a hardened, GDPR-compliant production module, Monterail replaced the external orchestration platform with a self-hosted, single-agent service. Collapsing a multi-hop LLM pipeline into a single tool-calling agent that reduced query response times, enforced permission checks natively within every data-retrieval tool, and aligned the architecture with EY's commercial roadmap for usage-based token tracking and admin control.
)
the company and the product
Enterprise-Grade AI for EY: Hardening the VCO for Global Production
EY (Ernst & Young) is a global professional services firm operating across more than 150 countries in assurance, consulting, tax, and strategy. Its internal product team owns the Virtual Compliance Officer (VCO), a SaaS compliance platform used internally by EY and by its enterprise clients to manage sensitive internal policies, procedural documents, and whistleblowing reports.
The final product successfully transitioned EY's AI capability from an unoptimized Proof of Concept into a hardened, production-grade module tailored for a GDPR-compliant go-live and rigorous external penetration testing. The platform is fully aligned with EY's commercial roadmap and includes a superadmin dashboard to manage model parameters and system prompts. A revamped user experience now provides clear visibility into document status.
KEY CHALLENGES OF THE PROJECT
Moving from POC to production-grade reliability
The inherited AI layer suffered from hallucinations, false "no access" errors, and inconsistent answers. Hardening the chatbot across multiple modules and pushing end-to-end query latency below a conversational 3-second threshold were the baseline requirements for enterprise readiness.
Strict compliance, security, and context isolation
The architecture had to be GDPR-compliant and survive an external penetration test. That meant enforcing backend-level isolation between modules and strict per-report permissions to close off data leakage, ID guessing, and prompt injection vectors.
Abstracting backend complexity with intuitive UX
Document indexing time couldn't be meaningfully reduced, but the experience felt broken because users had no visibility into processing status. The fix was real-time progress indicators and alerts, making an opaque background process feel predictable.
Commercial and operational future-proofing
The AI infrastructure needed to support monetization and admin control: per-request token tracking to lay the groundwork for usage-based pricing, and superadmin access to tune system prompts and model parameters.
Refactoring live infrastructure under tight constraints
Replacing the legacy multi-hop orchestration with a direct Azure OpenAI integration, without breaking existing API contracts or disrupting live users, had to land within 3 months, governed by a strict MoSCoW prioritization framework.
OUR APPROACH
Rebuilding the AI Layer Without Breaking What Worked
Surface-level patches were not the solution. The team made an early call to refactor the AI layer from the ground up, working within strict budget limits, zero-leakage security mandates, and a 3-month window. Three principles defined how it was done:
Architectural Re-Engineering
The external orchestration platform was replaced with a self-hosted, tool-based agent service, giving the team full control over model behavior and debugging. Data access and permission logic stayed inside the Rails codebase, clean, auditable, and owned. Token-by-token response streaming and a real-time indexing progress interface addressed user anxiety about processing times without touching the underlying pipeline speed.
Proactive Security and "Proven" Compliance
To meet strict GDPR requirements, permission filtering was embedded directly into each data-retrieval tool, so user authorization is verified before any data source is accessed. Combined with dedicated isolation test suites, this lets the team demonstrate zero cross-module data leakage rather than just claim it, a meaningful distinction ahead of an external penetration test.
Radical Scope Discipline and Iterative Governance
Operating under a fixed budget and a tight 3-month timeline, execution relied on strict MoSCoW discipline governed by two EY Product Owners who locked scope to "MUST" stories only. Six structured phases moved at 2–3 user stories per sprint, with every release accompanied by targeted testing checklists and continuous alignment through daily Slack and on-demand video syncs.
APPLICATION FUNCTIONALITIES
| Layer | Tech stack |
|---|---|
| Frontend | React, existing VCO frontend, API contract preserved, Real-time streaming UI for chat, Indexing UX: progress bar, alerts, and live document status |
| Backend | Ruby on Rails, existing monolithic codebase, Self-hosted, tool-based AI agent service, Real-time streaming infrastructure, Per-request token logging (model, tokens in/out, cost), foundation for usage-based pricing |
| AI / LLM | Azure OpenAI, GPT-4 family, deployed in EY's Azure tenant, Function calling across specialized retrieval tools: semantic search, keyword search, full-document reads, report lookups, procedure-aware analysis, Embeddings via Azure OpenAI, Superadmin-editable system prompt with immutable control portion |
| Database & Cache | PostgreSQL as primary database pgvector for semantic / vector search (reused from the existing system, zero migration) PostgreSQL full-text search for exact keyword matching |
| Cloud / DevOps | Microsoft Azure, existing EY tenant, Go-live checklist: permission/role tests, smoke tests, rollback plan, DevOps-supervised configuration of all external service keys |
| Security | Permission filtering inside every retrieval tool, no cross-service context passing, Backend-enforced Documents / Misconduct isolation, Verified API key and secrets configuration, External penetration test on a minimized module surface |
THE RESULTS
Outcome-Led, Faster, Safer, and Built to Scale
The three-month engagement delivered measurable improvements across every dimension it set out to address.
Significant Query Latency Reduction: Shifted end-to-end query times from multi-second delays to a consistently faster, conversational response experience.
Eliminated Multi-Hop LLM Pipeline: Replaced a multi-step external orchestration platform (chaining validator → search → chat blocks) with a single self-hosted agent, removing the external platform dependency and its associated latency.
100% Permission-Enforced Context Separation: Achieved complete backend isolation between the Documents and Misconduct modules through permission checks enforced natively inside every retrieval tool.
100% Scope & Budget Adherence: Delivered all MUST user stories within the planned 3-month timeline and the specified budget envelope.
Enhanced Indexing Visibility: Replaced an opaque document upload state with a reliable progress bar and alerts, clarifying processing statuses for the end user.
Monetization & Control Readiness: Implemented per-request token logging for a future usage-based pricing model and provided superadmins the ability to tune system prompts natively.
CLIENT’S TESTIMONIAL
THE KEY TAKEAWAYS
The POC-to-Production Gap is Real
An orchestration framework optimized to validate an initial business hypothesis is rarely built to sustain enterprise scale. Orchestration latency, opaque debugging layers, and cross-system permission handling compound rapidly once an application graduates into a regulated environment. Productization should be planned as an intentional refactoring pass.
Embed Permissions Inside the Tools, Not Around Them
Moving data access and authorization checks directly into individual tool implementations makes context separation a code-level property rather than an emergent property of an external router. It shifts security from an abstract risk conversation into a concrete engineering checklist.
Isolate Model Behavior from System Architecture Early
When an application experiences hallucinations or erratic responses, the LLM itself is frequently blamed. Once the orchestration layer was self-contained and tools became strongly typed and observable, remaining bugs were identified as standard prompt-tuning tasks, which are much cheaper and faster to fix.
Tool-Based Agents Future-Proof the Roadmap
Building with a native tool-based agent design ensures that introducing subsequent capabilities (e.g., advanced reindexing, document summarization, or alternate data sources) becomes a self-contained task of adding an isolated tool rather than redesigning the foundational AI core.
About the Development Team
Monterail assembled a lean, senior-heavy team purpose-built for the engagement's complexity. The project manager kept delivery on track, owned client communication, and managed budget and risk throughout. Two Principal Leads, one technical, one AI-focused, set the architectural direction and ensured every decision was made with production scale in mind. A full-stack developer brought the Rails backend service logic and streaming layer to life, while a DevOps engineer handled the cloud infrastructure and shepherded the system safely into production. A complete team, from the first architectural decision to the final go-live.
case studies
Read more case studies like this
)
AI Cost Intelligence Platform for Construction Finance
A UK-based construction industry founder needed to replace decades of fragmented, spreadsheet-based cost management with a single, enterprise-grade AI platform designed to earn the trust of CFOs and board-level stakeholders. The development team delivered an interactive AI-powered prototype in two weeks and a fully functional MVP in three months, across 500 hours of focused development, with zero rework and no scope collapse.

Packet Analyzer Platform
We built a data visualization app for complex network engineering logic for the Packet Analyzer Platform, using React, Rails, and Angular. The key accomplishment of this project was the creation of a user-friendly interface that simplifies complex network data, helping engineers more easily monitor and troubleshoot systems

Turn your AI PoC into an application your company can rely on. Monterail transitions experiments into enterprise-grade modules.
Grzegorz Hajdukiewicz | Chief Delivery Officer


