PE-backed Healthcare Provider replaces IT services vendor with Ideas2IT's AI-Native Software Delivery
A PE-backed pediatric private-duty nursing provider ran recruiting, intake and shift coverage on a Laravel platform it had built alongside its EHR. It had no in-house developers, and its incumbent vendor’s bill kept climbing while sprint throughput stayed flat. Ideas2IT took ownership of the live platform and upgraded it off Laravel 9. It then moved delivery onto a governed AI-native SDLC, run by a smaller team.

Client
Pediatric private-duty nursing provider

Industry
Healthcare
Private Equity

Service
App Modernization
App Development

Engagement
Vendor Takeover

Platform
Laravel / PHP on AWS
01 Challenge
The provider’s nurses work 8 to 12 hour shifts in the homes of medically complex children, so an unfilled shift is a gap in care. Recruiting, onboarding and coverage ran on a Laravel 9 platform that had grown up around the KanTime EHR. Over time it became the system the entire back office worked in. The codebase carried 3,000 to 6,000 line controllers and roughly 2,000 raw-SQL call sites. The incumbent vendor’s time-and-materials bill had risen more than 20% with no visible throughput gain. The provider had no engineers of its own to fall back on.
02 Solution
Ideas2IT took ownership through a 90-day live transition, and its engineers were committing code by the third week. Before changing anything, the team built a context model of the codebase. It then locked current behavior into characterization tests and climbed from Laravel 9 to 13 one version at a time. Feature delivery moved onto Anticlock. Every agent-written change passed a checker agent, blocking CI gates and a named human reviewer before it could merge.
03 Outcome
The provider took full ownership of its platform back from the incumbent without a delivery freeze, and the codebase now runs on a supported Laravel and PHP release. Feature work moved onto a governed AI-native SDLC. Every agent-written change passes the same gates as human-written code, and the downstream reporting feed stayed intact throughout.
Phase 01
From incumbent dependency to independent ownership in 90 days
Knowledge Transition and Mobilization: From Incumbent Dependency to Independent Ownership in 90 Days
The first decision was that the transition would not pause delivery. Back-office teams were filling nursing shifts every day, so Ideas2IT began with small, horizontal tickets as soon as access was in place. Scope widened at each 30-day checkpoint.
- Explayn.ai parsed the Laravel codebase into a call graph and generated functional and technical documentation from it. Every statement in that documentation cites the files that support it.
- Three gates had acceptance criteria defined up front:
- Day 30: mobilization and access.
- Day 60: shadow delivery of features, reviewed by both the incumbent and the provider.
- Day 90: full ownership with no incumbent dependency.
- The team baselined backlog ageing, throughput, incidents, release cadence, AWS spend and database health. This gave every later gain a measurable starting point.
This Phase Produced
- Living functional and technical documentation
- Codebase context graph exposed to agents over MCP
- Workflow-to-module dependency map
- Runbooks and RACI
- Delivery and platform baselines
Phase 02
Making a brittle codebase safe to change
Stabilization and Laravel Upgrade: Making a Brittle Codebase Safe to Change
The framework did not change until current behavior was captured in tests. Large controllers and scattered raw SQL meant an unprotected upgrade could break scheduling and coverage workflows without anyone noticing until a shift went unfilled.
- Qadence agents generated Pest and PHPUnit characterization tests for high-risk controllers. A Gherkin parity suite ran against both the old and upgraded systems, and any deviation blocked promotion.
- The upgrade climbed from Laravel 9 through 12 with PHP held at 8.2. The move to PHP 8.3 was isolated as its own step before the final hop to Laravel 13. Rector and Laravel Shift handled the mechanical changes, and agents handled the code-specific judgment.
- Blue/green deployment ran on EC2 through GitHub Actions. SonarQube was re-enabled. PHPStan/Larastan started at Level 1 and tightened over time as a blocking gate, and OWASP Dependency-Check and Dependabot ran on every PR.
This Phase Produced
- Characterization and parity test harness
- Supported Laravel and PHP runtime
- Blue/green release pipeline
- Blocking quality and security gates in CI
Phase 03
Turning AI-written code into measured delivery capacity
Modernization and AI-Native Delivery: Turning AI-Written Code Into Measured Delivery Capacity
With behavior protected, structural debt came out in reversible slices while feature delivery continued on Anticlock.
- Oversized controllers were decomposed into services that extended the codebase’s existing repository and DTO patterns. Raw-SQL call sites were classified and moved into Eloquent and repository classes. Queries feeding the downstream read-replica were preserved as contract-tested query objects, so reporting never broke.
- Anticlock turned product requirements into agent-ready work orders with scope, acceptance criteria and test plans. A maker-checker harness sent failing output back for up to three retries before escalating to an engineer. A model router matched each task to the least expensive model capable of doing it.
- Session, cache and queue workloads moved to ElastiCache, alongside RDS query and index tuning. Productivity was tracked through DORA metrics and a code attribution ledger rather than lines generated.
This Phase Produced
- Service-layer decomposition of large controllers
- Repository-based data access
- Contract-tested read-replica queries
- Anticlock delivery workflow
- ElastiCache layer
- DORA and code durability reporting
The Outcome
From Incumbent Dependency to a Governed AI-Native SDLC on a Supported Platform
| Category | Metric | Description |
|---|---|---|
| Ownership | Full platform ownership | Live 90-day transition with code committed from week three and no pause in feature delivery |
| Delivery model | AI-native SDLC in production | Feature work runs on Anticlock as agent-ready work orders, with maker-checker review and a named human approver on every merge |
| Framework | Supported Laravel and PHP release | Stepwise climb off Laravel 9, with each version protected by characterization and parity tests |
| Codebase health | Structural debt removed in reversible slices | Oversized controllers decomposed into services, and raw SQL moved into repository-based data access |
| Release safety | Blocking quality and security gates | Blue/green deploys, static analysis and dependency scanning on every pull request |
| Reporting continuity | Downstream reporting unaffected | Read-replica queries contract-tested, so the Azure warehouse and Power BI feed never broke |
| Platform knowledge | Documentation the provider owns | Explayn.ai documentation exportable as HTML or PDF, with no dependency on Ideas2IT tooling to keep using it |
| Measurement | Productivity tracked on evidence | DORA metrics, code durability and an AI code attribution ledger in place of lines-generated counts |
| Compliance | HIPAA | Enforced across CI gates, environments and AI tool usage |
The Laravel upgrade held because behavior was fixed in tests before the framework moved. Contract tests on read-replica queries kept the reporting estate outside the blast radius of every refactor. On the delivery side, agents worked from a parsed model of the codebase rather than searching through it blind. Nothing they wrote reached the main branch without passing the gates applied to human code. That is what let the provider change vendors, frameworks and delivery model at the same time without its back office noticing the seams.