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

See now
EY VCO logotype

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.

EY VCO app image cover

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

From Raw PoC to Hardened, Enterprise-Grade AI

Transforming an AI-powered compliance platform from prototype to enterprise-grade required addressing five main concerns within a constrained timeline.

  • 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

  • EY VCO app functionalities 1
  • EY VCO app functionalities 2
  • EY VCO app functionalities 3
LayerTech stack
FrontendReact, existing VCO frontend, API contract preserved, Real-time streaming UI for chat, Indexing UX: progress bar, alerts, and live document status
BackendRuby 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 / LLMAzure 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 & CachePostgreSQL as primary database pgvector for semantic / vector search (reused from the existing system, zero migration) PostgreSQL full-text search for exact keyword matching
Cloud / DevOpsMicrosoft Azure, existing EY tenant, Go-live checklist: permission/role tests, smoke tests, rollback plan, DevOps-supervised configuration of all external service keys
SecurityPermission 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

Architectural Principles that Separate AI Prototypes from Systems that Scale

  • 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.

monterail logo
Grzegorz Hajdukiewicz

Turn your AI PoC into an application your company can rely on. Monterail transitions experiments into enterprise-grade modules.

Grzegorz Hajdukiewicz | Chief Delivery Officer

Get in touch to scope your project