Buyout preflight: Sample Target, Inc.
A made-up health AI company that summarises clinical notes for outpatient clinics. Five pages, as delivered, with every number traceable to its inputs.
Evidence labels: Scan = from the target's scanner bundle. Data room = from documents provided. Session = from the 90-minute technical session.
Summary for the investment committee
Proceed, with two issues to resolve before signing. The product's value rests more on its clinical-note labelling pipeline than on its models, which is defensible but thinner than the management presentation suggests. Two licence problems and heavy reliance on one engineer need to be addressed in the deal. Inference cost is manageable and has room to fall.
| Area | Rating | Main finding | Why it matters |
|---|---|---|---|
| AI dependence | Amber | 71% of AI-related code is API calls and prompts; one in-house classifier and a labelling pipeline | The moat is the labelled data, not the models. Diligence should test that data's rights and size. |
| Cost to run | Amber | Reserved GPUs about 9% busy; no token caps on 11 model calls | Cost grows faster than usage today, but the fixes are routine. |
| Maintainability | Red | One engineer wrote 81% of changes; 14 of 22 functions that call models have no tests | Losing that engineer would stall work on the core product. |
| Licences | Red | A non-commercial model in production; a modified AGPL service used by customers | Both need a licence, a replacement or compliance steps before or soon after closing. |
| Security and data | Amber | Patient notes sent to a model provider; no business associate agreement in the data room | May be a documentation gap or a HIPAA problem. Request the agreement. |
Scope: three repositories at the commits recorded in the bundle; twelve months of cloud and model-API invoices; one 90-minute session with two engineers. Not reviewed: production infrastructure, organisation, processes.
AI dependence and cost to run
AI dependence Amber
- 71% of AI-related code is calls to OpenAI and Anthropic models through LangChain, plus 38 prompt templates. Scan
- One in-house model: a small classifier that routes notes by specialty, trained on the company's own labelled data. Scan
- A labelling pipeline with about 410,000 clinician-reviewed note summaries, which the team says is the real asset. Data room, Session
Reading: a vendor model release would not replace the labelled data, but it would narrow the gap to competitors who lack it. Confirm the company has the rights to use those notes for training.
Cost to run Amber
| Item | Basis | Per year |
|---|---|---|
| Model API usage | Invoices, average $7,400 a month | $88,800 |
| Two reserved H100 GPUs | 2 × $3.49 × 8,760 hours | $61,145 |
| Total | Data room | $149,945 |
- Monitoring exports show the GPUs busy about 9% of the time. Moving to on-demand capacity for roughly 20% of hours would cost about $12,230 a year, saving about $48,900. Data room
- 11 model calls have no output token limit, 2 retry loops have no ceiling, and nothing is cached. Logs show about a fifth of calls repeat an earlier request, so fixing these should cut API spend by an estimated 15% to 25%, or $13,300 to $22,200 a year. Scan
- Estimated reducible cost: $62,000 to $71,000 a year, after about $20,000 to $40,000 of engineering work (page 5).
Maintainability and key-person risk Red
- Six people committed in the last 12 months. The CTO wrote 81% of the changes; the next author wrote 7%. Normalised author entropy is 0.42. Scan
- 14 of the 22 functions that call a model (64%) are not exercised by any test. Scan
- Nine commits of more than 600 lines with no linked review; five of them touch the summarisation pipeline. Scan
Hotspots: frequent change and high complexity
| File | Lines changed, 12 months | Complexity | Tests |
|---|---|---|---|
pipeline/summarize.py | 4,820 | 41 | None |
pipeline/router.py | 2,310 | 27 | Partial |
api/notes.py | 1,960 | 22 | Partial |
workers/retry.py | 1,140 | 19 | None |
Technical session
The CTO explained the summarisation pipeline and its failure handling clearly and in depth. The second engineer, who would own the code if the CTO left, could not explain how workers/retry.py behaves when the model provider rate-limits. Both worked without AI assistants. Session
Reading: the code is understood, but by one person. Retention for the CTO and a documented handover are the practical fixes.
Licences, security and data
Licences Red
| Component | Licence | How it is used | Consequence |
|---|---|---|---|
| Clinical entity-recognition model | CC BY-NC 4.0 | In production, in the paid product | Licensed for non-commercial use only. Needs a commercial licence from the author or a replacement. |
| Document rendering service | AGPL-3.0, modified | Customers reach it through the web app | Modified and offered over a network, so users must be offered its source. Counsel to assess scope; replace or comply. |
| Fine-tuned Llama 3.1 8B | Llama 3.1 Community License | Internal evaluation only | Attribution and naming terms not yet met. Minor fix. |
Security and data Amber
- Full clinical notes, which contain protected health information, are sent to a model provider. The data room has the provider's standard terms but no business associate agreement. Scan, Data room
- Text from uploaded documents is placed directly into prompts with no separation from instructions, which exposes the pipeline to prompt injection. Scan
- Two API keys are committed in configuration files. Both should be rotated whatever else happens. Scan
- All summarisation depends on one provider, with no fallback. Scan
Regulatory context for counsel. A health product that summarises clinical notes raises HIPAA questions and possibly FDA software-as-a-medical-device questions, and in the EU, medical-device rules and AI Act obligations for AI in regulated products from 2 August 2028. These are outside the scan and are listed for counsel to assess.
Remediation and next steps
| Item | Suggested fix | Estimate |
|---|---|---|
| Non-commercial model in production | Commercial licence, or retrain on licensed data | $40k–$90k |
| Modified AGPL service | Replace the component, or publish the modified source | $25k–$60k |
| Untested model-calling code | Tests for the 14 functions, starting with the pipeline | $35k–$70k |
| Key-person dependence | Documented handover and a second owner for each hotspot | $30k–$60k |
| Cost controls | Token caps, retry limits, caching, GPU scheduling | $20k–$40k |
| Security fixes | Rotate keys, separate document text from instructions | $15k–$35k |
| Llama licence terms | Add attribution and rename the fine-tuned model | $2k–$5k |
| Total | Engineering cost at market rates | $167k–$360k |
Questions for management
- Do you have written rights to use the clinician-reviewed summaries for training, from every clinic that supplied notes?
- Is there a business associate agreement with the model provider? If not, when was patient data first sent?
- Who else can run and change the summarisation pipeline today?
- Is the entity-recognition model's author willing to grant a commercial licence, and on what terms?
- What is the plan for the modified rendering service?
Items for counsel
- Schedule both licence findings; consider fixing them before closing or covering them with a specific indemnity.
- Request the business associate agreement and training-data rights as closing deliverables.
- Retention arrangements for the CTO and confirmation of IP assignment from all six committers.
Prepared and signed by Cisco Caceres. Engineering findings and cost estimates only; not legal, tax, accounting or valuation advice. Reliance is limited to the parties named in the engagement letter.
Want this for a real deal?
The rapid tier covers one repository with a 48-hour memo; the buyout tier adds billing review and the technical session.