Opinion
CIVIL ACTION No. 16-2030
08-13-2018
MEMORANDUM Schiller, J.
Apacheta Corp. and Lincare, Inc. entered a contract under which Apacheta agreed to develop software for Lincare. After the parties spent a year in the software development process, hampered by various delays, Lincare terminated the Agreement. Apacheta sued Lincare for breach of contract. The Court conducted a bench trial from January 8 through 11, 2018. The Court now enters its findings of fact and conclusions of law pursuant to Federal Rule of Civil Procedure 52(a). For the reasons discussed below, the Court finds that Lincare breached the contract, but that Apacheta is entitled only to nominal damages because it has not proved damages to a reasonable certainty.
I. FINDINGS OF FACT
A. The Parties
Apacheta is a software company that develops mobile applications for transportation and logistics companies for use in the transportation and delivery of goods. (Pl.'s Proposed Findings of Fact and Conclusions of Law [ECF No. 72] at 1, ¶ 1.) Lincare is a medical supply company that delivers respiratory medical equipment to patients' homes. (Def.'s Proposed Findings of Fact and Conclusions of Law [ECF No. 73] at 1, ¶ 1.)
B. Contract Formation
Lincare became interested in Apacheta's software in 2014 when it was looking to move from a paper-based delivery system to an electronic one. (Trial Tr. Jan. 9, 2018 at 82-83.) On April 8, 2014, Gary Wolsiefer, Lincare's Director of IT, received a "white paper" from James Wee, Apacheta's vice president of business development. (Trial Tr. Jan. 9 at 29, 34; Trial Tr. Jan. 8 at 48; Exs. 32, 93.) The white paper provided a description of Apacheta's mobile delivery software. (Ex. 93.) Apacheta representatives then visited Lincare's offices twice; at these meetings, they demonstrated the software's "basic functionality." (Trial Tr. Jan. 9 at 35-37.)
Following these meetings and negotiations, the parties signed a contract on December 16, 2014. (Trial Tr. Jan. 9 at 37-39; Ex. 2 [Agreement] at 16.)
C. Relevant Terms of the Agreement
The goal of the Agreement was for Apacheta to develop custom mobile delivery software for Lincare based on its existing basic software. To that end, the Agreement contained a Statement of Work (SOW), which laid out terms related to the software and the development process. (Agreement at 1, ¶ 1.7; see id. at 13.) The SOW briefly described the features included in Apacheta's basic software. Software customizations were to be provided through various "deliverables" during the software development process. (See id. at 14, ¶ 2.) Deliverables could only be modified through a "Project Change Request" process. (See id.)
The Agreement does not clearly define the term "deliverables," but it uses the term to describe multiple items or services that Apacheta was expected to provide. (See Agreement 13-15.)
As discussed below, the Agreement was—perhaps intentionally—vague as to deadlines and required software features. Some details, including deliverable delivery dates, were to be determined in the "Final Statement of Work," which the parties would develop during the first phase of software development. (Id.) The Final SOW would include finalized software specifications, which Apacheta would use as a blueprint for its customizations and configurations. (See Trial Tr. Jan. 9 at 57, 69-70.)
1. Apacheta's main obligations
Apacheta agreed to provide software programs including "Transport ACE" and "Transport Manager." (Id. at 8, ¶ 1.) Transport ACE is described in the Agreement as "a mobile pick-up and delivery/proof-of-delivery application." (Id. at 13, ¶ 1(A).) Transport Manager is a "web-based dispatch, monitoring and reporting application." (Id. at 13, ¶ 1(B).) The software features included in these programs are discussed further below. Apacheta also agreed to provide software customizations. (See id. at 14, ¶ 2.1(c).)
Cora Forgeng, Apacheta's project manager, testified about the basic functions of Apacheta's software. At the "most basic level," Apacheta's software provides tracking of "pick-up and delivery of inventory of product that the company owns." (Trial Tr. Jan. 9 at 117.) Transport Manager and Transport ACE are the two main components of the software. Transport Manager is a "back-end piece" used in the office to dispatch delivery drivers and send data to them; Transport ACE is a mobile piece used by delivery drivers on a tablet in the field to "captur[e] which product they're delivering or picking up and how much." (Id. at 117-18.)
In addition to the software itself, Apacheta agreed to provide ongoing software support and maintenance services. (See Agreement at 11, ¶ 1.1.) This would include telephone, email, and on-site software support as needed, problem resolution, and access to Apacheta's website. (See id.)
2. Lincare's main obligations
To facilitate a collaborative software development process, the Agreement also set out several express obligations for Lincare. For instance, Lincare was required to "work with Apacheta to develop . . . Acceptance Criteria documents," including "test plans, use cases, test data, test scripts, test environment and other items as needed to provide clear benchmarks for accepting each Deliverable." (Id. at 15, ¶ 3.2.) The parties were supposed to "mutually agree" on such documents. (Id. at 14, ¶ 2.3.)
Lincare was also required to "notify Apacheta in writing of its rejection of any Deliverable" within 15 days of delivery and "set forth in writing and in reasonable detail, the reason for rejection." (Id. at 14-15, ¶ 2.3.) If it did not provide notice, it would be deemed to have accepted the deliverable. (Id.) If Lincare rejected a deliverable, Apacheta was required to make an effort to correct the deliverable in a timely manner. (Id.)
3. Timeline and software development process
The Agreement's effective date was December 15, 2014. (Id. at 1.) The Agreement had a three-year term and would then renew automatically for one-year terms unless Lincare provided written notice of termination. (Id. at 3, ¶ 5.1.) The initial term would end on December 15, 2017. (Trial Tr. Jan. 8 at 105-06.)
The SOW laid out the general process for software development and implementation. (See id. at 14-15.) The "Project Inception Phase" included six subparts: a "Kick-Off Meeting," "Review of application functionality and integration," finalization of "any custom development requirements," "Acceptance Criteria," "Project Plan," and "Final SOW Acceptance." (Id.) The Project Inception Phase, which was never completed, was to be followed by a "Configuration and Development Phase" and an "Acceptance Test Phase," in which the software would be tested to determine whether it met the Acceptance Criteria. (See id.) Once these phases were completed, the software could be rolled out. (See id.)
However, the SOW did not impose any deadlines, despite language in the Agreement suggesting that it would. (See Agreement at 3, ¶ 4.1 ("Apacheta shall use commercially reasonable efforts to complete all work in accordance with the agreed milestones and dates set forth in each applicable SOW.").) Instead, it stated that "[d]eliverable delivery dates will be reviewed prior to signing this SOW and finalized at the conclusion of the Project Inception Phase." (Id. at 14.)
4. Payment terms
The Agreement imposed two distinct sets of payment obligations. First, Lincare was required to pay Apacheta $1,500 per day of work for professional services, including "custom development, configuration, system integration, training, and rollout support for Transport ACE and Transport Manager." (Agreement at 9.) The Agreement estimated 60 days of professional services and thus $90,000 total in service fees. (Id.; see Trial Tr. Jan. 8 at 109-110.) The first $30,000 of this service fee was due on the Agreement's Effective Date. (Agreement at 9.) Lincare paid this initial fee in December 2014. (Trial Tr. Jan. 10 at 113-14.) At trial, Wee, Apacheta's salesman, agreed that the initial fee was "like a retainer": it constituted an advance payment for services performed by Apacheta during the development process, and after Apacheta exceeded $30,000 in services, Lincare would owe more money. (Trial Tr. Jan. 8 at 109.)
Once Lincare accepted the completed software, it would be required to pay an annual license and support fee of $750,000. (Agreement at 8.) This fee covered both the software license and annual maintenance. (Id. at 12, ¶ 4.1.) The license fee was based on 2,700 software users. (Id. at 8.)
The Agreement also established a separate, prorated fee schedule during the first year after Lincare accepted the completed software. (Id. at 9.) This schedule included a $250,000 payment on the "Acceptance Date." (Id.) The Agreement defined "Acceptance Date" as the "implicit or explicit date of acceptance of the Deliverables by [Lincare]." (Id. at 14-15.) The Court finds that this provision was intended to mean that the first payment would be due on the date that Lincare accepted the completed software. (See Trial Tr. Jan. 8 at 85.)
The first-year payment schedule included two other payments. First, upon "the sooner of the date of installation of first beta site," a payment of "$TBD" would be due. (Agreement at 9.) A second "$TBD" payment would be due "90 days after First Beta Milestone." (Id.) "TBD" stood for "to be determined." (Trial Tr. Jan. 8 at 122.) The description for each of these payments was "Prorated from Acceptance Date." (Agreement at 9.)
After the first year of Lincare's acceptance, the annual software license fee of $750,000 would be due yearly on each anniversary of the Acceptance Date. (Id.)
5. Right-to-cure provision
The Agreement also contained a "right-to-cure" provision. The provision required, in relevant part, that if one party breached the Agreement, the other party could terminate the Agreement only after giving the breaching party an opportunity to remedy the breach:
If either Party breaches any term of this Agreement, the other Party may terminate this Agreement following thirty (30) days' written notice to the breaching Party specifying any such breach unless, within the period of such notice, all breaches specified therein are remedied.(Agreement at 3, ¶ 5.2.)
D. The Course of Performance
1. The parties begin work with software development meetings.
On January 14 and 15, 2015, the parties held an introductory "kick-off" meeting to assign project managers and discuss details of the software project. (Trial Tr. Jan. 9 at 54, 190.) The kick-off meeting was required by the Agreement as the first step of the Project Inception Phase. (Id. at 55; Agreement at 14, ¶ 2.1(a).)
At the kick-off meeting, Apacheta's representatives demonstrated the Transport Manager and Transport ACE software. (Trial Tr. Jan. 9 at 191.) Lincare representatives posed several questions regarding the software's capabilities. For instance, Lincare representatives "asked about how Apacheta software authenticates its users." (Id. at 192.) After the kick-off meeting, Forgeng, Apacheta's project manager, prepared a list entitled "Project Kickoff Action Items." (Ex. 163.) The list was based on notes Forgeng took during the kick-off meeting regarding Lincare's "outstanding questions" that she needed to follow up on. (Trial Tr. Jan. 9 at 191-92.)
After the kick-off meeting, Apacheta and Lincare representatives held weekly meetings regarding the software project. (Trial Tr. Jan. 9 at 207.) Then, on July 14 and 15, 2015, Lincare and Apacheta participated in a two-day "Mobile Fulfillment Project Peer Review" meeting in Tampa, Florida, where Lincare has its offices. (See Ex. 34.) The stated goal of the meeting was to "conduct[] a peer review of the proposed mobile software" and "identify any changes in processes and potential points of conflict that could impede implementation." (Id.) The meeting agenda included "demo[s] & discussion[s]" of Transport Manager and Transport ACE and certain features or proposed features of these software programs. (Id.)
One topic of discussion at the meeting was Lincare's need for the capability to cut off software access to employees who quit or were fired. (See Trial Tr. Jan. 10 at 116-18.) On this point, Apacheta CEO Gregg Timmons came away from the meeting with the impression that Apacheta needed to "satisfy [Lincare's] needs" with regard to a more automated user authentication system. (See id.)
2. The project falls behind schedule.
Although the Agreement did not set any deadlines, by mid-July 2015, the software project was behind the schedule the parties had anticipated. Wolsiefer, Lincare's IT Director, estimated that the project was delayed by two to three months. (Trial Tr. Jan. 9 at 98-99.) Both Wolsiefer and Kent Hermes, Lincare's project manager, testified that the delay was Lincare's fault. (See Trial Tr. Jan. 9 at 62-63; id. at 104.) Because of the delay, on July 30, 2015, Wolsiefer proposed internally that Lincare pay Apacheta an additional fee. (Trial Tr. Jan. 9 at 62; Ex. 13.) Wolsiefer wrote in an email to Hermes:
Based on the contracts [sic] intent we are behind in timeline. We should pay [Apacheta] some additional dollars since we are the cause of the delay . . . Their implementation services were 90K, 30k paid on execution of the contract and 60K once we agreed on the statement of work that we are creating. This was to be a 90 day process. We should pay them an additional 30K and then pay the remaining 30K when the SOW is executed by both parties. That would be fair. They have a new CEO and they will be looking for a firm timeline from us and some payment. They have been a good partner and never once asked for any further payment yet continued to keep their resources moving forward.(Ex. 13 (emphasis added).) Wolsiefer retired from Lincare the next day. (Trial Tr. Jan. 9 at 28.) Lincare never made the extra payment that he had suggested.
Timmons later discussed the delays with Hermes, and on August 31 he sent Hermes a proposed amendment to the Agreement to accelerate Lincare's payments. (Trial Tr. Jan. 10 at 92-93; Ex. 41.) Under Apacheta's proposed amendment, Lincare would make six monthly installment payments of $10,000 for professional services beginning on September 1, 2015. (Ex. 41 at 2.) Lincare would also pay the initial $250,000 software license fee in five $50,000 monthly installments beginning on September 1. (Id.) Lincare, however, never agreed to the amendment. (Trial Tr. Jan. 10 at 105.)
3. The parties collaborate on software specifications.
On July 14, Apacheta provided Lincare with the first drafts of three functional specification documents for the software programs. (Ex. 123.) Apacheta uses functional specifications to outline the software configurations and customizations needed to meet a client's needs. (Trial Tr. Jan. 9 at 206-07.)
The parties went through several drafts of the functional specification documents between mid-July 2015 and early October 2015. (See, e.g., Exs. 123-126, 137.) Lincare responded to one set of drafts sent on August 4 with several pages of questions and comments. (Exs. 124, 79; see also Ex. 128; Trial Tr. Jan. 9 at 214-15.) Lincare employees expressed dissatisfaction with certain aspects of the software's capabilities, including password syncing and email security. (See Exs. 80, 165.)
The dialogue continued throughout August and September, and Forgeng of Apacheta sent several more revised functional specifications to Lincare; each time, Lincare provided additional feedback which Forgeng incorporated into another revision. (See, e.g., Exs. 14, 125-26, 137, 149, 165.) On September 15, Lincare followed up with more questions regarding a software feature called "Active Directory synchronization" and sought to set up a "brainstorming session." (Ex. 82; Trial Tr. Jan. 11 at 26-27.) On September 17, Lincare contacted Apacheta with a handful of topics regarding the software that it wanted to "explore." (Ex. 83; Trial Tr. Jan. 11 at 27-28.) The parties then held a brainstorming session on September 30. (Ex. 166.)
4. Lincare stops work on the software project, rejects deliverables, and terminates the agreement.
On October 1, 2015, Linda Reid began working at Lincare as Head of Application Technology. (Trial Tr. Jan. 10 at 154-55.) Upon starting, Reid was asked to "do a deep-dive evaluation of [the Apacheta] project and where it was at." (Id. at 156.) After reviewing the project, Reid produced a chart identifying what she perceived to be gaps between what the proposed software provided and what Lincare wanted. (See Ex. 31.)
On October 5, Apacheta again sent three revised functional specification documents to Lincare in an email entitled "Updated Functional Specs for your review and approval." (Ex. 19.) Lincare did not immediately respond to Apacheta regarding these documents. In fact, around the time of this email, Reid instructed Lincare's project team to stop working on the Apacheta project. (Trial Tr. Jan. 10 at 149.) Lincare did not inform Apacheta that it had put the project on hold. (Id.) Instead, it told Apacheta in three consecutive weekly status meetings that Barnes Marshall was reviewing the functional specifications. (See Ex. 20 (emails from Forgeng containing notes from weekly meetings).) Lincare then canceled the next four weekly meetings, telling Apacheta each time that it had "nothing new to report." (Id.)
In Apacheta's view, the October 5 functional specifications comprised the "Final SOW" contemplated by the Agreement, or at least a significant portion of it. (Pl.'s Proposed Findings of Fact and Conclusions of Law at 43, ¶ 17.) If the specifications did constitute the Final SOW, Lincare would have been required to accept or reject this "deliverable" within 15 days. (Agreement at 3, ¶ 4.3.) However, the parties had not put together the Acceptance Criteria and Project Plan at this point, which were required components of the "Final SOW." (See Trial Tr. Jan. 9 at 237.)
On November 20, Timmons and Greg McCarthy, Lincare's COO, held a phone call. (Ex. 68; Trial Tr. Jan. 9 at 166.) McCarthy followed up on the call with an email explaining that "Lincare's executive team have not reviewed nor accepted the proposed deliverables," referring to the October 5 functional specifications. (Ex. 68.) McCarthy also explained that in his view, because of the lack of Acceptance Criteria, there was no Final SOW and therefore the 15 day acceptance/rejection period did not apply to the October 5 functional specifications. (Id.) That same day, Apacheta unilaterally drafted Acceptance Criteria documents, as well as a Project Plan. (Trial Tr. Jan. 9 at 122; see Ex. 25.) Forgeng sent these documents to Lincare shortly after McCarthy's email to Timmons. (Ex. 25.) Lincare did not respond to this email. (Trial Tr. Jan. 9 at 122.)
On December 3, 2015, Lincare rejected the Acceptance Criteria and Project Plan via email from Reid to Forgeng. (Ex. 18.) The email subject line read: "Not Accepted - Apacheta Acceptance Criteria - Lincare Implementation & Project Plan." (Id.) In the email, Reid referenced the communications between McCarthy and Timmons on November 20 and 30. (Id.) She requested that "the parties' respective decision makers have a discussion" about the project to address certain software features that Lincare believed were supposed to be included in the software. (Id.) Following this email, McCarthy and Timmons exchanged emails over the course of the next few weeks, attempting to set up a phone call. (Ex. 100.) No call took place, however. Instead, on February 1, 2016, Lincare terminated the Agreement via letter from McCarthy to Timmons. (Ex. 28; Trial Tr. Jan. 9 at 172.)
At the time Lincare terminated the Agreement, Apacheta had billed Lincare for the initial $30,000 professional services fee and for an additional $22,500 for 15 days of professional services beyond the work covered by that initial payment. (Exs. 47, 94.) Lincare paid both of these invoices, a total of $52,500. (Trial Tr. Jan. 9 at 164-65; Trial Tr. Jan. 10 at 114; Exs. 47, 94.)
5. The evidence does not establish when the software would have been completed if Lincare had not terminated the Agreement.
A significant issue in determining damages in this case is the factual question of when Lincare would have begun licensing the software if it had not ended the Agreement. At the time Lincare terminated, the software development process was far from complete. (See Agreement at 14-15.) The Agreement itself, as noted, did not impose any deadlines, other than limits on Lincare's time to accept or reject deliverables and a requirement that Lincare perform its duties in a timely and businesslike manner. (See Agreement at 3, ¶ 4.1.)
Several individuals testified at trial regarding the anticipated project timeline. For instance, Wee, Apacheta's salesman, was asked about the professional services fee provision in the Agreement, which provided for 60 days of work at $1,500 per day, for a total of $90,000. (Agreement at 9.) Wee acknowledged that the 60 day number was only an estimate, and that development could take more or less time. (Id.) Wolsiefer had a slightly different timeline in mind: when he proposed that Lincare pay Apacheta extra money because of its delays, he believed, "based on conversation with Apacheta," that the software coding could have been completed "in about 90 days." (Trial Tr. Jan. 9 at 61-62.) But Wolsiefer also attested to the flexibility of the project timeline. (Trial Tr. Jan. 9 at 55.)
There was also testimony regarding the overall project timeline. Apacheta CEO Timmons, who was not with the company when the Agreement was negotiated or signed, testified that at the beginning of the relationship, based on discussions with Apacheta's and Lincare's project teams, "it was pretty clear to everyone that this was a project that should have been rolled out in their first beta roll-out by the third quarter of 2015. We would ramp out that roll-out through the third and fourth quarter of 2015." (Trial Tr. Jan. 10 at 96-97.) Hermes of Lincare similarly testified that at the beginning of the project, Lincare expected to be into production of the software by the fall of 2015. (Trial Tr. Jan. 9 at 106.)
Timmons joined Apacheta on June 4, 2015. (Trial Tr. Jan. 10 at 70.)
Of course, that did not happen. By August 2015, Timmons was being told that the rollout would probably be in "Q[uarter] 1/Q[uarter] 2 of 2016." (Trial Tr. Jan. 10 at 97.) Forgeng similarly testified that the rollout was expected to be "Q[uarter] 2 2016." (Trial Tr. Jan. 9 at 234.) She also said that if Lincare had signed off on the October 5 functional specifications, Apacheta would have been able to complete the customizations listed in the specifications in "a few months." (Trial Tr. Jan. 10 at 59.)
It makes sense that Forgeng and Timmons had a similar timeline in mind, as Forgeng was the project manager and Timmons said his timeline was based on what he was told by the team working on the project.
Despite the testimony regarding the software's completion date, the Court does not find that Apacheta has proved by a preponderance of the evidence that the Agreement would have proceeded to the software licensing phase by mid-2016. There are two reasons for this. First, as noted, the Agreement did not impose deadlines, meaning the timeline could fluctuate without either party necessarily being in breach. Indeed, this precise scenario played out in 2015: the project was delayed because of Lincare, Apacheta unsuccessfully attempted to modify the Agreement because of the delay, and Apacheta then pushed back its expectations regarding the project timeline. Any attempts to prognosticate the project's timeline must be considered in light of the Agreement's built-in uncertainty and the project's history.
Second, the Court finds that while Apacheta employees based their time estimates in part on their experience with similar projects (see Trial Tr. Jan. 9 at 234 (Forgeng testifying that "based on [her] experience," rollout in Quarter 2 of 2016 was feasible)), this project was larger and more complex than Apacheta's typical software contract. To wit, Apacheta CEO Timmons testified that between 175 of its home medical equipment delivery customers, Apacheta has 3,700 total software users, compared with 2,700 would-be users for Lincare alone. (Trial Tr. Jan. 10 at 77.) And Forgeng's testimony suggested that the Lincare project required more customization than other home medical equipment delivery projects. (See Trial Tr. Jan. 10 at 69; Trial Tr. Jan. 9 at 243.)
Moreover, when Forgeng testified at trial that the project could have been completed by mid-2016, she was not asked to and did not seem to take into consideration the possibility that Lincare might seek further changes to the software specifications. But given that the parties spent more than two months between mid-July and early October 2015 making adjustments to the functional specifications and the repeated discussions about addressing Lincare's need for features such as a more automated user authentication system, it is reasonable to conclude that Lincare would have done just this.
All of this evidence supports a finding that the project timeline was fluid and likely to change. Because of this, the Court cannot find that the project would have been completed by mid-2016 if Lincare had not stopped work and terminated the Agreement.
II. CONCLUSIONS OF LAW
The parties agree that this case is governed by Pennsylvania law. (Agreement at 7, ¶ 9.12.) Under Pennsylvania law, a party asserting a breach of contract claim must establish: (1) the existence of a contract; (2) a breach of a duty imposed by the contract; and (3) damages resulting from the breach. Ware v. Rodale Press, Inc., 322 F.3d 218, 225 (3d Cir. 2003) (citing CoreStates Bank, N.A. v. Cutillo, 723 A.2d 1053, 1058 (Pa. Super. Ct. 1999)). Here, there is no dispute that the parties had a contract. As discussed below, the Court also finds that Lincare breached the contract. However, the Court finds that Apacheta is only entitled to nominal damages because it has not proved damages to a reasonable certainty.
A. Interpreting the Agreement
When interpreting a contract under Pennsylvania law, courts first determine whether, as a matter of law, the contract is ambiguous. Pac. Emp'rs Ins. Co. v. Glob. Reins. Corp. of Am., 693 F.3d 417, 426 (3d Cir. 2012). If the contract is unambiguous, its meaning is a matter of law. Lesko v. Frankford Hospital-Bucks Cty., 15 A.3d 337, 342 (Pa. 2011). However, if the contract is ambiguous, its meaning becomes a question of fact. Pac. Emp'rs, 693 F.3d at 426. "A contract is ambiguous if it is reasonably susceptible of different constructions and capable of being understood in more than one sense." Hutchison v. Sunbeam Coal Corp., 519 A.2d 385, 390 (Pa. 1986).
In determining whether a contract is ambiguous, the court is not confined to the text of the contract, but should also consider "the context in which the agreement arose." Steuart v. McChesney, 444 A.2d 659, 662 (Pa. 1982). The court may consider extrinsic evidence such as "the structure of the contract, the bargaining history, and the conduct of the parties that reflects their understanding of the contract's meaning." Teamsters Indus. Emps. Welfare Fund v. Rolls-Royce Motor Cars, Inc., 989 F.2d 132, 135 (3d Cir. 1993).
Here, the Agreement contains a number of provisions that are ambiguous or incomplete. Below, the Court discusses the relevant terms: the meaning of the Agreement with regard to the disputed features and Lincare's payment obligations. Because certain terms are ambiguous or incomplete, the Court includes findings of fact in this discussion.
1. Disputed features
The Court denied summary judgment in part because it found that there were factual questions as to whether certain software features that Lincare claims Apacheta was unable to provide were, in fact, part of the agreement. The dispute over these features arises from the December 3 email Linda Reid, Lincare's Head of Application Technology, sent to Apacheta, in which she complained about the proposed software's lack of the following components: "patient portal, directory integration, single sign-on, dynamic electronic forms mapping, inventory and tracking, scalability, [and] route optimization." (Ex. 18.) None of the terms mentioned in Reid's email appear in the Scope of Work section of the Agreement. (See Agreement at 13.) Below are the Court's findings with regard to each of these disputed features.
a. Patient portal
Wee of Apacheta testified that he did not discuss a "patient portal" software feature with Lincare. (Trial Tr. Jan. 8 at 88.) There is no evidence that Lincare raised the patient portal issue with Apacheta before Reid's December 3 email. (See Trial Tr. Jan. 10 at 214.) The Court finds that Apacheta was not required to provide patient portal software.
b. Directory integration and single sign-on
"Directory integration" and "single sign-on" are related to Active Directory, a software product sold by Microsoft that is used to, among other things, authenticate software users. (See Trial Tr. Jan. 9 at 139-40.) Wee testified that he did not promise Lincare that the software would integrate with Active Directory. (Trial Tr. Jan. 8 at 88.) Lincare raised questions about authentication and Active Directory integration at the project kick-off meeting, and the parties discussed possible solutions throughout the software development process. (See, e.g., Trial Tr. Jan. 9 at 142.) However, Lincare never told Apacheta that it believed Active Directory was required, and Apacheta never told Lincare it was incapable of integrating with Active Directory. (Id.) Apacheta therefore was not in breach of any promises regarding authentication.
c. Dynamic electronic forms mapping
The SOW lists "[e]lectronic forms" as a software component. However, it does not include the term "dynamic electronic forms mapping." Wee testified that he did not discuss this feature with Lincare prior to the Agreement being signed. (Trial Tr. Jan. 8 at 89.) Lincare did not provide any credible evidence showing otherwise. The Court finds that this feature was not required by the Agreement.
d. Inventory and tracking
Both Wee and Forgeng testified that Apacheta provides software for tracking of the inventory on delivery trucks. (Trial Tr. Jan. 8 at 89; Trial Tr. Jan. 9 at 134.) Specifically, Forgeng testified that Apacheta's inventory tracking software handles "storing proof of delivery. So tracking . . . inventory, which inventory is dropped off to a customer, how much of it . . . ." (Trial Tr. Jan. 9 at 134.)
Reid testified that tracking inventory on Lincare's trucks would require "the ability to track the serial number and the lot number and where [assets] are . . . ." (Trial Tr. Jan. 10 at 184-85.) She also testified that the October 5 functional specifications did not address a software solution for Lincare's tracking needs. (Id. at 185.) She explained that in a comment on one page of the functional specifications for the Transport Manager software, Apacheta had noted that "Lincare does not support the passing of preassigned serial numbers or lot numbers." (Id.; Ex. 19 at 240.) Reid testified that this was untrue: Lincare did, in fact, support the passing of preassigned serial and lot numbers. (Trial Tr. Jan. 10 at 185-86.) This inaccuracy in the functional specifications would have created a deficiency in the software's ability to support inventory tracking. (See id.)
Based on the parties' course of performance and statements reflecting their understanding of the Agreement, the Court finds that Apacheta was required to provide software allowing the tracking of inventory on Lincare's trucks. As of the October 5 functional specifications, Apacheta had not satisfied this requirement. However, Lincare has not proved that Apacheta was incapable of satisfying this requirement.
e. Scalability
Wee testified that he discussed scalability with Lincare. (Trial Tr. Jan. 8 at 86.) Specifically, Wolsiefer asked Wee whether Apacheta's software was capable of being used on a global scale, and Wee informed him that it was. (Id.; Ex. 134.) The Court finds that Apacheta agreed to provide software that could be scaled up. Again, however, Lincare did not prove that Apacheta was incapable of satisfying this requirement.
f. Route optimization
Wee testified that he had conversations with Lincare regarding this feature, and that "at the time," Apacheta's software was not capable of route optimization. (Trial Tr. Jan. 8 at 62.)
The "white paper" that Apacheta sent to Lincare prior to contract formation claimed that Apacheta's Transport Manager software allows clients to "[q]uickly build and optimize routes." (Ex. 93 at 9.) However, Wee testified that "the intent of [this] statement is that [Apacheta] can enable the [client's] dispatch to quickly build routes and to optimize [them] manually." (Trial Tr. Jan. 8 at 98-99 (emphasis added).) Moreover, the list of Transport Manager software features in the SOW does not include "route optimization" or any similar term. Thus, the Court finds that Apacheta was not required to provide route optimization software.
2. Payment terms
As noted, the Agreement unambiguously provided for an annual $750,000 license and maintenance fee beginning a year after Lincare accepted the completed software. It also required a $250,000 payment upon Lincare's acceptance of the software. However, the two other "TBD" or "to be determined" payment terms for the first year after Lincare accepted are patently ambiguous. Below are the Court's findings regarding the TBD payment terms.
The first TBD payment was linked to the "first beta site," and was to be "[p]rorated from Acceptance Date." (Agreement at 9.) The term "beta site" was not defined in the Agreement. Wee explained what the intent of this provision was: the parties planned to roll out the software in phases because "[i]t was impractical to roll out 2700 users in one shot." (Trial Tr. Jan. 9 at 24-25.)
So you would—you selected a designated [site]. The beta site is essentially the pilot site, so it would be the site that you would do the soft launch to make sure that [the] application's functioning in the field, and if there's any behavior that's irregular, that would be addressed in that phase before you would roll it out to the subsequent locations.(Id. at 25.) During the beta site phase, Wee explained, Lincare was expected to "be charged for the number of users at the beta site," rather than for the full 2,700 users on which the $750,000 license fee was based. (Id.)
Apacheta argues that "the evidence leads to the reasonable inference that Lincare would have required at least 2,700 licenses at any given time and, therefore, that the minimum annual license fee . . . was $750,000." (Pl.'s Proposed Findings of Fact and Conclusions of Law at 7, ¶ 28.) Thus, it claims that the total license and maintenance fee for the first year of implementation was expected to be $750,000. (Id. ¶ 31.)
This interpretation is impossible to square with either the Agreement or Wee's testimony. The pricing exhibit in the Agreement explicitly provides for a "prorated" license payment during the first year after the software is accepted. This is unambiguous. Even if it were not, Wee testified that it was "inconceivable for [the first-year license fee] to be a full $750,000." (Trial Tr. Jan. 8 at 124.) He also stated that the first TBD payment was to be based on the number of users at the beta site. Therefore, the Court concludes that the first TBD payment in the first year of the software license was to be proportionate to the number of licensed users and length of time the software was licensed at the first beta site. However, because Apacheta offered no evidence as to the number of users, the Court cannot make a finding as to what the first TBD amount would have been.
The second TBD payment was to be triggered 90 days after the "First Beta Milestone." This term was also not defined in the Agreement. Wee offered testimony on its meaning: "The intent was to charge for the remaining users—to charge for 2700 [licensed users] by 90 days after the first beta site." (Trial Tr. Jan. 9 at 25-26.) This testimony offers some clarity: the parties expected to reach a "milestone" 90 days after the software was rolled out at the beta site. At this point the parties seemingly expected the software to be ready to roll out to all of Lincare's locations. Thus, the second TBD amount was intended to be based on the full 2,700 users, so it would be a fraction of $750,000 in proportion to the time left in the year in which Lincare accepted the software when the first beta milestone was reached. However, Apacheta did not present evidence as to how long after Lincare's acceptance the software was expected be installed at the beta site. (See Trial Tr. Jan. 8 at 122.) Moreover, there was no evidence introduced to address what would happen if—as seems plausible—the beta site rollout did not go well enough for a full rollout within 90 days. Thus, the Court is unable to make a finding as to what the second TBD payment in year one would have been.
To illustrate: if the software were rolled out at a beta site with 91 days left in the first year of acceptance, and the beta site testing went well, the software would be rolled out universally 90 days later, on the last day of the first year of Lincare's acceptance of the software, and thus the second TBD payment would be 1/365 of $750,000, or approximately $2,055. --------
Because the Court cannot make findings as to what the two TBD payments would have been, it cannot determine, as a matter of fact, what the first-year license fee would have been.
B. Lincare Breached the Agreement
Lincare terminated the Agreement on February 1, 2016. Apacheta argues that the termination breached the Agreement's right-to-cure provision, which required a party to give notice that the other party was in breach and an opportunity to cure before terminating. Pennsylvania law allows a party to ignore a right-to-cure provision only "when there is a breach of contract going directly to the essence of the contract, which is so exceedingly grave as to irreparably damage the trust between the contracting parties." LJL Transp., Inc. v. Pilot Air Freight Corp., 962 A.2d 639, 652 (Pa. 2009). "The breach must be so severe that 'requiring . . . notice before termination . . . would be a useless gesture.'" Milton Reg'l Sewer Auth. v. Travelers Cas. & Sur. Co. of Am., 648 F. App'x 215, 217 (3d Cir. 2016) (citing LJL, 962 A.2d at 652). In Milton, the Third Circuit, interpreting Pennsylvania law, provided some guidance as to the type of breach that is severe enough to allow a party to ignore a right-to-cure provision: on one end of the spectrum, fraudulent conduct is sufficiently severe. Id. On the other end, poor performance alone is not. Id.
Here, Lincare argues that Apacheta failed to provide the disputed features and that it was therefore free to ignore the Agreement's right-to-cure provision. (See Def.'s Proposed Findings of Fact and Conclusions of Law at 41-43, ¶¶ 37-43.) However, while Lincare was unsatisfied with the software's lack of certain features, as explained above, the Court finds that most of the disputed features were not, in fact, required by the Agreement. See supra § II.A.1. Even if they were, Lincare did not prove that Apacheta was completely unable to perform its duties with regard to any required features. At most, Lincare demonstrated that Apacheta had not fulfilled its contractual obligation with regard to certain features, including inventory and tracking, at the time Lincare sent the December 3 email. However, the Court does not find that Apacheta committed a breach so serious as to be "incurable" or to make notice a "useless gesture." LJL, 962 A.2d at 652, n.8; Milton, 648 F. App'x 217. Thus, Lincare's argument that it was free to ignore the right-to-cure provision fails.
Alternatively, Lincare argues that the December 3 email constituted adequate notice of Apacheta's supposed breach and gave Apacheta an opportunity to cure. (Def.'s Proposed Findings of Fact and Conclusions of Law at 40, ¶ 31.) This argument also fails.
"In Pennsylvania, conditions precedent to a contract termination must be strictly fulfilled." Accu-Weather, Inc. v. Prospect Commc'ns, Inc., 644 A.2d 1251, 1254 (Pa. Super. Ct. 1994). Here, the Agreement's termination provision required that a party seeking to terminate give "thirty . . . days' written notice to the breaching party specifying any such breach." (Agreement at 3, ¶ 5.2.) The email from Reid of Lincare to Apacheta did not comply with this provision. The relevant portion of the email states:
We . . . believe the better means of moving the parties forward in this matter [the Agreement] is to have, the parties' respective decision makers have a discussion on this matter, such discussion to include availability of aspects of a product previously identified, e.g. [the disputed features] . . . .(Ex. 18.) Nothing in this email approaches a clear statement that Apacheta was in breach or that Lincare intended to terminate the agreement in 30 days. Rather, the email suggests a meeting and discussion to resolve the issues with the software.
Mr. McCarthy [Lincare's COO] remains available to discuss this matter and would appreciate any assistance you could provide in arranging such a meeting. While Lincare does not agree that the criteria presented in your email are acceptable, we look forward to having a substantive discussion on the matter.
Thus, the Court finds that the email did not constitute notice in compliance with the Agreement's termination provision, and Lincare's termination without notice breached the Agreement.
C. Damages
In order to recover on a breach of contract claim, the plaintiff must prove damages to a reasonable certainty. ATACS Corp. v. Trans World Commc'ns, Inc., 155 F.3d 659, 669 (3d Cir. 1998). The "reasonable certainty" standard is a "difficult concept to quantify." Id. However, at a minimum, it requires a "rough calculation that is not 'too speculative, vague or contingent' upon some unknown factor." Id. (quoting Spang & Co. v. U.S. Steel Corp., 545 A.2d 861, 866 (Pa. 1988)). "Although the law does not command mathematical precision from evidence in finding damages, sufficient facts must be introduced so that the court can arrive at an intelligent estimate without conjecture." Delahanty v. First Pa. Bank, N.A., 464 A.2d 1243, 1257-58 (Pa. Super. Ct. 1983).
Apacheta seeks expectation damages. Expectation damages are measured by the "losses caused and gains prevented by defendant's breach, to the extent they are in excess of any savings made possible by nonperformance." Am. Air Filter Co. v. McNichol, 527 F.2d 1297, 1299 (3d Cir. 1975).
In Apacheta's view, the expectation damages analysis in this case is straightforward. It argues that because the Agreement was for a three-year term and required a $750,000 yearly software license fee, and because Lincare was the sole cause of delays in the project, "the evidence presented leads to the reasonable conclusion that but-for Lincare's multiple breaches, Apacheta would have received the full expected value of the software licensing fees of $2,250,000 during the Agreement's initial three-year term." (Pl.'s Proposed Findings of Fact and Conclusions of Law at 52, ¶ 49.)
There are several issues with Apacheta's simplistic damages analysis. The Court made this clear at trial. (E.g. Trial Tr. Jan. 11 at 93.) Still, Apacheta failed to address these issues. And now, because of the significant uncertainties outlined below, the Court finds that Apacheta is not entitled to expectation damages.
First, it is inconceivable that Apacheta could have licensed the software to Lincare for three full years. The Agreement provided for a software development phase of at least 60 days, and the parties did not even hold a kick-off meeting for the development process until a month after the Agreement was signed. Moreover, Timmons, Apacheta's CEO, testified that even at the beginning of the software development process, Apacheta did not expect to roll out the software until late 2015. Since Lincare did not agree to pay a license fee before there was a finished software product for it to license, it was impossible—from the day the Agreement was signed—for Lincare to pay a license fee for a full three years.
Second, as previously noted, the evidence introduced at trial is not sufficient to allow the Court to make a finding as to when Lincare would have begun licensing the software if it had not breached. See supra § I.D.5. Without this fact, the Court would have to rely on conjecture to determine how much Apacheta would have been paid in licensing fees but for Lincare's breach.
Third, even if the Court accepted Apacheta's witnesses' estimate that the software could have been completed by mid-2016, for the reasons discussed above, the Court is unable to find, with anything approximating reasonable certainty, what Lincare would have owed in the first year of the software license period. See supra § II.A.2.
Finally, expectation damages are measured by the "losses caused and gains prevented by defendant's breach, to the extent they are in excess of any savings made possible by nonperformance." McNichol, 527 F.2d at 1299. Here, Apacheta agreed to provide annual software maintenance services for no additional fee once Lincare began paying the license fee. The record contains no evidence regarding how much it would have cost Apacheta to maintain software for Lincare, a client with 2,700 users. Thus, the Court cannot estimate with reasonable certainty the extent to which Apacheta's losses exceeded the amount it saved by nonperformance.
In short, the facts introduced in this case are insufficient to allow the Court to "arrive at an intelligent estimate [of expectation damages] without conjecture." Delahanty, 464 A.2d at 1257-58. Thus, Apacheta has failed to meet its burden to prove damages to a reasonable certainty.
If expectation damages are inappropriate, courts can award reliance damages. ATACS, 155 F.3d at 669. The goal of reliance damages is to put the non-breaching party "back in the position in which [it] would have been had the contract not been made." Trosky v. Civil Serv. Comm'n, City of Pittsburgh, 652 A.2d 813, 817 (Pa. 1995). Reliance damages are "usually measured by the expenditures made in performance of the contract." Darius Int'l, Inc. v. Young, Civ. A. No. 05-6184, 2008 WL 1820945, at *50 (E.D. Pa. Apr. 23, 2008). Here, Lincare paid Apacheta $52,500 for the work Apacheta performed in reliance on the Agreement during the software development phase. (Exs. 47, 94; see also Trial Tr. Jan. 10 at 113-15.) To be clear, there is no question that Apacheta was entitled to receive this amount. However, Apacheta did not introduce evidence of other uncompensated work or expenses. In addition, although Apacheta introduced an email in which its CEO, Timmons, informed Lincare that the project had had a large impact on Apacheta's resource planning and had caused it to pass on other potential customers, Apacheta did not address the potential economic impact of these issues at trial or in its post-trial briefs. Thus, there are no reliance damages.
Because the Court finds Lincare liable for breach of contract but cannot calculate damages to a reasonable certainty, the Court will award Apacheta nominal damages of one dollar. See Scobell, Inc. v. Schade, 688 A.2d 715, 719 (Pa. Super. Ct. 1997) ("[A]ny breach of contract entitles the injured party at least to nominal damages.") (internal citation omitted); Stevenson v. Econ. Bank of Ambridge, 197 A.2d 721, 728 (Pa. 1964) ("[W]hen nominal damages are awarded in our courts, one dollar shall be the measure thereof.").
IV. CONCLUSION
Lincare breached the Agreement by failing to comply with the right-to-cure provision. However, Apacheta did not present sufficient evidence to establish its expectation damages to a reasonable certainty. Therefore, Apacheta is only entitled to nominal damages. An Order consistent with this Memorandum will be docketed separately.