Internal portals · Financial markets
Offshore investment portals
Internal portals for BTG Pactual's offshore investment areas, used 24/7 by hundreds of internal users, with zero freezes in the accounting applications that received 9,000+ records per request
- Client
- BTG Pactual · via Exadel Financial Services
- Role
- Software Engineer (Front-end Specialist)
- Technologies
- Angular 20
- Signals
- TypeScript
- RxJS
- NgRx
- Tailwind CSS
- Jest
- Jasmine
- REST APIs
- GenAI
- MCP
Context
Internal portals for BTG Pactual's offshore investment areas, in projects delivered through Exadel Financial Services. Every feature is used daily, 24/7, by hundreds of internal users and processes tens of thousands of records, with data coming from Java services and the Calypso platform.
Challenge
Run 5 concurrent projects per quarter, each from specification to production observability, while legacy accounting applications froze in production when receiving 9,000+ records in a single request and Angular 14 and 16 applications had to move to Angular 20.
Results
- production freezes after chunking the requests with 9,000+ records
- 0
- faster accounting applications after chunking
- ~70%
- less time to build front-end applications with AI and internal MCPs
- 75–80%
- faster builds after the migration to Angular 20
- 30–40%
Key deliverables
- 01Led 5 concurrent front-end projects per quarter and delivered 12–15 new ones to date, plus Angular version migrations and performance fixes, owning each end to end: specification, prototyping, integration, deployment and production observability.
- 02Built Angular features (standalone components, TypeScript, RxJS and NgRx) used 24/7 by hundreds of internal users, and helped implement the bank's internal standardized styling tool, built on Tailwind CSS.
- 03Eliminated production freezes and made the accounting applications that received 9,000+ records in a single request about 70% faster, by implementing chunked (batch) processing of the calls.
- 04Migrated legacy applications from Angular 14 and 16 to Angular 20, with 30–40% faster builds, 20–30% smaller bundles and 20–30% better load times, adopting Signals, built-in control flow, @defer and the esbuild builder.
- 05Integrated the Angular front-end with Java services and the Calypso platform.
- 06Cut front-end application build-out time by 75–80% with generative AI, MCP (Model Context Protocol) servers for internal libraries and automated feature tests (Jest and Jasmine), while keeping the project's architectural standards.
Features and the pains they solve
Every feature was born from a real operational problem.
01
Chunked processing
- Pain
- Accounting applications received 9,000+ records in a single request and froze in production.
- Solution
- The calls are now processed in batches (chunks): instead of receiving and processing the whole volume at once, the application works batch by batch without blocking the UI.
Impact: 0 production freezes and ~70% faster
02
Migration to Angular 20
- Pain
- Legacy Angular 14 and 16 applications were several major versions behind Angular 20.
- Solution
- The applications were migrated to Angular 20 with Signals (signal, computed, effect, linkedSignal, toSignal), built-in control flow (@if, @for), on-demand loading with @defer and the esbuild builder.
Impact: 30–40% faster builds, 20–30% smaller bundles and 20–30% better load times
03
Java and Calypso integration
- Pain
- The data on screen comes from Java services and the Calypso platform, and the front-end has to integrate them.
- Solution
- The Angular front-end was integrated with the Java services and Calypso on the screens used by the offshore areas.
04
Application creation with AI and MCPs
- Pain
- With 5 concurrent projects per quarter, each new front-end application had to follow the architectural standards in little time.
- Solution
- Generative AI connected to MCP (Model Context Protocol) servers for the internal libraries now generates front-end applications that already follow the project's architectural standards.
Impact: 75–80% less build-out time
05
Automated feature tests
- Pain
- Features used 24/7 by hundreds of internal users must reach production tested.
- Solution
- Feature tests were automated with Jest and Jasmine as part of the AI-assisted creation flow.
06
Specification to production with observability
- Pain
- 5 concurrent projects per quarter need a technical owner from start to finish, not just during coding.
- Solution
- Each project was owned end to end: specification, prototyping, integration, deployment and production observability, to track real behavior after delivery.
Impact: 12–15 new projects delivered to date
07
24/7 high-volume operation
- Pain
- Hundreds of internal users rely on the portals every day, 24/7, and each feature must process tens of thousands of records without freezing.
- Solution
- The features were built in Angular (standalone components, TypeScript, RxJS and NgRx) for daily 24/7 use by hundreds of internal users, with tens of thousands of records processed.
Impact: Used 24/7 by hundreds of internal users