← Back to case studies
Fitch Ratings
Modernizing a High-Scale Analyst Assignment Platform
As a Senior Software Engineer, I took a leading role in redesigning the rules architecture, improving batch performance, and strengthening the service's reliability and engineering quality.
Business problem
A financial-services platform at Fitch Ratings assigns approximately 1,600 analysts to more than 21,000 ratable entities using over 200 business rules. The existing rules engine was difficult to maintain, while a critical weekly batch process took roughly 4.5 hours and could experience silent failures—slowing operations and eroding trust in assignment outcomes.
Architecture
flowchart LR YAML[YAML business rules] --> Engine[Rules engine] Engine --> Batch[Weekly batch pipeline] Batch --> Assign[Analyst assignment outcomes] Batch --> DLQ[Dead-letter queue] Engine --> Trace[DataDog tracing] Batch --> Trace
Technologies
- YAML-based business rules
- Rules-engine rewrite
- Batch processing optimization
- Dead-letter queues
- Automated unit testing
- SonarQube
- DataDog tracing
Challenges
- Expressing 200+ complex assignment rules in a maintainable, human-readable form.
- Reducing a ~4.5-hour weekly batch without sacrificing correctness at 1,600 analysts and 21,000+ entities.
- Eliminating silent failures where work could be lost without recovery.
- Raising engineering quality from approximately 5% automated coverage while clearing outstanding SonarQube issues.
Decisions
- Designed a human-readable YAML format so complex assignment rules could be expressed consistently.
- Completely rewrote the rules engine responsible for interpreting and executing those rules.
- Optimized the weekly batch-processing workflow for material runtime reduction.
- Introduced a dead-letter queue so failed work could be identified and recovered.
- Increased automated test coverage and added production tracing with DataDog.
Results
- Reduced weekly batch runtime by approximately 67%, from 4.5 hours to 1.5 hours.
- Delivered a scalable engine supporting 200+ rules, 1,600 analysts, and 21,000+ entities.
- Increased unit-test coverage from approximately 5% to 95%.
- Resolved all outstanding SonarQube issues.
- Added DataDog tracing, improving visibility into performance and production failures.
- Established a more reliable and maintainable foundation for future rule changes.
Lessons learned
- Human-readable rules formats pay off when business logic must change faster than engineering capacity.
- Operational reliability requires explicit failure paths—silent batch loss is a product defect.
- Quality investments (tests, static analysis, tracing) make large modernization safer to ship and evolve.