Everything the deck summarises, with the tables, assumptions and the reasons other options were set aside. Part 1 covers hosting. Part 2 covers where AI is used and what it costs.
The Blood Review Agent is a prototype on a hobby hosting service. To run it on real patient records it needs a proper home. This page explains three ways to set that up, what each costs per month, and which one we recommend.
One computer runs the app. DigitalOcean runs the database and backs it up automatically, so the records can be put back to any minute in the past week. If something goes wrong, the clinic loses minutes of work rather than months of records.
| Question | Our assumption | What it means for the setup |
|---|---|---|
| How many records? | Around 10,000 now, up to 100,000 over the next few years, counting patients, reviews, reminders and check-ins | Small. The database plan we recommend could hold ten times this. |
| How many people use it? | 3 to 5 staff, with one doctor signing off | Speed is not the problem. Keeping records safe is. |
| What gets uploaded? | Blood result PDFs and photos, about 1 to 3 MB each | Files go into a separate locked file store, not onto the computer running the app. |
| How long does an AI review take? | 10 to 30 seconds | It runs in the background, so nobody sits watching a spinning wheel. |
| What does it connect to? | Cliniko, GoHighLevel and the AI provider | The system reaches out to these. Nothing on the internet reaches in. |
| What kind of data is it? | Identifiable health information, covered by Australian privacy law | Everything, including backups and files, stays in Australia. Access is controlled and every look at a record is logged. |
All three run the same app. The difference is who looks after the database and how much spare capacity you pay for.
| Item | What it is | Quick | Balanced | Big |
|---|---|---|---|---|
| App computer | The computer that shows the screens and runs the background work. Big uses two larger ones. | $24.00 | $24.00 | $96.00 |
| Daily snapshot | A copy of the app computer taken every day, so it can be rebuilt | $7.20 | $7.20 | $28.80 |
| Database | Where the records live. In Balanced and Big, DigitalOcean runs it and backs it up. In Quick, it shares the app computer and your team backs it up. | $0.00 | $30.45 | $60.90 |
| Spare database | A live copy that takes over automatically if the main one fails | $0.00 | $0.00 | $30.00 |
| Traffic splitter | Shares visitors between the two app computers | $0.00 | $0.00 | $12.00 |
| File store | Locked storage for uploaded blood results, 250 GB included | $5.00 | $5.00 | $5.00 |
| Private network, monitoring, firewall | Included by DigitalOcean at no charge | $0.00 | $0.00 | $0.00 |
| Monthly total | $36.20 | $66.65 | $232.70 |
| If this happens | Quick | Balanced | Big |
|---|---|---|---|
| Someone deletes the wrong thing, or the records get corrupted | Your team restores last night's copy. Anything entered since is gone. | DigitalOcean puts the records back to any minute in the past 7 days | DigitalOcean the same, with a spare copy already running |
| The app computer breaks | Down for 30 to 60 minutes while it is rebuilt from the snapshot | Down for 30 to 60 minutes. The records are untouched. | Stays up the other computer carries on |
| The database computer breaks | Down and the records are as old as last night's copy | Minutes DigitalOcean replaces it. Nothing is lost. | Seconds the spare takes over |
| Security updates for the database | Your team does them | DigitalOcean does them | DigitalOcean does them |
| Can the database be reached from the internet? | Only if your team keeps the door locked | No. Only the app can talk to it. | No. Only the app can talk to it. |
| Room to grow before an upgrade | About 300,000 records | About 500,000 records. Upgrading is a few clicks, no downtime. | Millions of records |
| Time your tech person spends each month | 2 to 4 hours | Under an hour | 1 to 2 hours |
| Option | Why we set it aside |
|---|---|
| Two computers, one for the app and one for the database | Costs about the same as letting DigitalOcean run the database, but your team still does the backups and updates. Two machines to look after and no extra safety. Splitting the two only makes sense once the app itself needs more power, which does not happen at 100,000 records. |
| Stay on Replit | Fine for a demo. It cannot promise the data stays in Australia, the database is not sealed off from the internet, and there is no way to wind the records back to a point in time. |
| Let DigitalOcean run the app computer too | A fair alternative. It removes the last bit of server upkeep for about $1 a month more, with less control over background tasks and file handling. Worth choosing if nobody on the team wants to touch a server. |
| Amazon or Google cloud | More capable, and two to three times the cost and setup effort at this size. Both have Sydney data centres, so this is a future move if a compliance program ever demands certifications DigitalOcean does not hold. |
| A database from a different company | Good services exist with Sydney locations, but they split the setup across two companies. The brief asked for one provider with strong backups, and DigitalOcean covers both. |
| A different style of database | Some databases are built for loose, unconnected data. The clinic's records are tightly connected, patients to reviews to reminders, and the standard kind of database handles that best. |
| A pay-per-use database that sleeps when idle | The first person each morning waits several seconds for it to wake up. The saving is tiny when the database costs $30 a month anyway. |
These are the things that make the system safe to hold patient records. Every one is required, whichever option is chosen.
Each step happens in place. Make the computer bigger, raise the database plan, add the spare. No rebuild and no interruption.
Today the prototype asks the AI to do almost everything, including jobs that have one right answer. The rebuild uses AI for the four pieces that need judgement and plain rules for the rest.
Claude Sonnet 5, given time to reason, writes the full blood report, the pre-consult brief for Dr Ashraf and the check-in summaries. Claude Opus 5 writes the 16-week review, the one job that weighs new bloods against months of symptom history. Eligibility, patient stages, reminders, emails, scores and PDFs are handled by ordinary software. A clinician still signs off every AI output, and every job has a spending cap.
| Area | Today | Rebuild |
|---|---|---|
| Which AI | Claude Sonnet 4.5, a mid-range model from last year, answering in one pass with no time to reason | Claude Sonnet 5 with reasoning turned on for most jobs. Claude Opus 5, the top tier, for the 16-week review only. |
| Where the AI is called from | The browser sends results to a Replit server in the United States, which passes them to the AI | The Sydney computer sends them straight to the AI provider under a signed data agreement |
| How blood results are read | Every result goes to the AI as a picture | The system reads the text inside the PDF itself. Only photos and scans go to the AI, which hands back the numbers. |
| Deciding eligibility | The AI reads the Free T value and writes its verdict as a sentence | The system compares the number with the 400 pmol/L threshold. Same input, same answer, every time. |
| How results are kept | As a block of AI text. On the symptoms screen you can see raw code pasted into the notes. | As separate fields on the patient record, along with which AI wrote it and who signed it off |
| Emails and notes | Written fresh by the AI each time | Fill-in-the-blanks templates, reviewed once by the clinic and reused |
| Reminders and alerts | Worked out in the browser from the whole patient list, every time a page opens | Worked out once overnight and saved. Screens just read the list. |
| Scores | The AI interprets the questionnaire | The system adds up the AMS score, picks the severity band and raises the standard flags. The AI writes only the summary. |
| Spending limits | None. A job can write as much as it likes. | Each job has a length cap and a reasoning depth. A monthly ceiling at the provider stops surprises. |
| PDF reports | A screenshot of the web page | Generated from a fixed layout, identical every time |
| Record of decisions | None. A note cannot be traced back to the AI version or the instructions that produced it. | Every review records who ran it, which AI, which instructions, and who signed it off |
| When the AI gets it wrong | A patient can land in the wrong stage, a reminder can be missed, a note can come out garbled | The doctor rejects a report. Stages and reminders are unaffected because the AI never touches them. |
| Job | Today | Rebuild | Why |
|---|---|---|---|
| Read the numbers off a blood result | AI reads the picture | Software with AI for photos only | Most pathology PDFs contain the text already. |
| Is Free T above 400 pmol/L? | AI | Software | A comparison of two numbers. |
| Move the patient to the next stage | AI, read from its sentence | Software | A fixed rule for each verdict. |
| Short note for Cliniko after the first panel | AI | Template | Three values, same layout every time. |
| Welcome, journey and stage emails, 7 kinds | AI | Template | A name, a stage and a booking link. |
| AMS score and severity | AI | Software | Seventeen answers added up against fixed bands. |
| Check-in warning flags | AI | Rules | Each flag comes from one specific answer, such as blood pressure not checked. |
| Check-in summary for the doctor | AI | AI, standard tier | A short write-up over answers the system has already checked. |
| Full blood report | AI | AI, standard tier, reasoning on | Judgement across every marker, then a doctor's sign-off. |
| Pre-consult brief for Dr Ashraf | AI | AI, standard tier, reasoning on | Same. |
| 16-week review | AI | AI, top tier | Weighs new bloods against months of symptom history. The hardest job in the system. |
| When the next blood check is due | Worked out on every page open | Overnight | Follows from the review type and date. |
| Waiver and new-patient follow-ups | Worked out on every page open | Overnight | Same. |
| Alert counts | Worked out on every page open | Software | Read from the saved reminders list. |
| Sending through GoHighLevel | A button someone presses | Automatic | Sent on schedule, retried if it fails. |
| PDF reports and packs | Screenshot of the page | Software | Same layout every time, prints cleanly. |
| The chat assistant | AI | Optional | The filters on the patients screen answer most of what it is asked. Keep it only if staff use it every week. |
Nineteen AI jobs become four, plus one we would let the clinic decide on.
For two of the three reports, probably yes. The doctor signs off every report, the numbers are checked by software before the AI sees them, and the standard tier from either major provider now reasons well enough for a structured clinical write-up. We would keep the top tier for the 16-week review only, because that one has to weigh a new set of bloods against months of symptom scores, and it is the report most likely to change treatment.
The honest way to settle it is a trial, not a benchmark. Run the first 20 full reports through both tiers, let Dr Ashraf compare them without knowing which is which, and keep the cheaper one unless the difference is obvious. The rebuild makes that a one-line change per job.
| AI | Made by | Price per million words in, out | One full report, roughly | Notes |
|---|---|---|---|---|
| Claude Sonnet 5 | Anthropic | $2 / $10 | $0.08 | Standard tier with reasoning built in. Price made permanent in August 2026. Our pick for most jobs. |
| Claude Opus 5 | Anthropic | $5 / $25 | $0.20 | Top tier. Our pick for the 16-week review. |
| GPT-5.6 Terra | OpenAI | $2 / $12, rising to $2.50 / $15 | $0.09 to $0.11 | The equivalent standard tier. Comparable to Sonnet 5 on this kind of writing. Current price is a promotion. |
| GPT-5.6 Sol | OpenAI | $4 / $20 until 21 November 2026, then $5 / $30 | $0.15 to $0.22 | The equivalent top tier. Same class as Opus 5. |
Yes, in four places. Today there are no limits, so a confused job could write pages of nonsense and bill for all of it.
The AI bill is the smallest cost in this system. The real cost is people's time when something comes back wrong, and today the prototype makes that time expensive.
The patient list already shows the pattern. Several patients have five or six reviews at the same stage, which is repeat runs, not clinical history. Four patients exist twice under slightly different spellings, because a re-run with a typo creates a new person instead of matching the old one. Each duplicate splits a patient's history in two and cannot be merged without a developer.
We assume one in five reports is sent back today and one in ten after the rebuild, the doctor's time at $150 an hour and a coordinator's at $50. These are assumptions to confirm with the clinic, and the conclusion holds even if they are halved.
| Cost | Today | Per 100 reviews | Rebuild | Per 100 reviews |
|---|---|---|---|---|
| Reports sent back | 20, each re-run in full | 10, each re-run as a revision | ||
| Doctor's second read | 12 minutes to re-read a full report | $600 | 4 minutes to read the changed parts | $100 |
| Coordinator re-running the job | 20 minutes to find, re-upload, re-run and check | $333 | Nothing. The doctor's button does it. | $0 |
| Working out what went wrong | About 1 in 4 rejections needs an hour of digging with no logs | $250 | 15 minutes reading the log, on 1 in 10 | $13 |
| Fixing a stage or reminder that moved | About 1 in 4 rejections, 20 minutes | $83 | Cannot happen. The AI does not touch stages. | $0 |
| Duplicate patient records | About 3 per 100, an hour each to untangle, and often never done | $150 | Prevented by matching before creation | $0 |
| Repeat AI charges | 20 full re-runs at 9 cents | $2 | 10 revisions at 5 cents | $1 |
| Hidden cost per 100 reviews | $1,418 | $114 |
AI is charged per job. Hosting is charged per month. They are shown separately because they grow differently.
We assumed the mix the prototype shows today. Out of every 1,000 records, roughly 150 first panels, 100 full panels, 100 16-week reviews, 200 check-ins, and 450 emails, leads and reminders.
| Kind of record | How many | Today, Sonnet 4.5 for everything | Rebuild, standard tier for everything | Rebuild, recommended | Rebuild, top tier for all reports |
|---|---|---|---|---|---|
| First panel | 150 | $4.50 | $0.90 | $0.90 | $0.90 |
| Full blood report and brief | 100 | $8.50 | $8.20 | $8.20 | $22.00 |
| 16-week review | 100 | $9.00 | $9.60 | $23.00 | $23.00 |
| Check-in | 200 | $6.00 | $3.20 | $3.20 | $3.20 |
| Emails, leads, reminders | 450 | $6.30 | $0.00 | $0.00 | $0.00 |
| Per 1,000 records | $34.30 | $21.90 | $35.30 | $49.10 |
| Records processed | Today | Standard tier | Recommended | Top tier for all reports | What that looks like |
|---|---|---|---|---|---|
| 1,000 | $34 | $22 | $35 | $49 | About a year of the clinic as it is now. |
| 10,000 | $343 | $219 | $353 | $491 | Several years of growth. Small next to hosting. |
| 100,000 | $3,430 | $2,190 | $3,530 | $4,910 | The upper end of the brief. Spread over years, and the discounts above cut it by a third. |
| 1,000,000 | $34,300 | $21,900 | $35,300 | $49,100 | A network of clinics. At this size a volume agreement with the provider would apply. |
| Records stored | Today | Rebuild | Per month |
|---|---|---|---|
| 1,000 | Replit, one shared server, location not guaranteed | Balanced option, Sydney | $67 |
| 10,000 | The same. Pages start to drag because the browser downloads every patient. | Balanced option, unchanged | $67 |
| 100,000 | Barely usable. Each page waits on the whole list. | Balanced option with the next database size up | $97 |
| 1,000,000 | Does not work. The browser cannot hold the list, and working out reminders on each page open would take minutes. | Big option, with a larger database and its spare | $260 to $320 |
| Measure | Records | Today | Rebuild |
|---|---|---|---|
| How long a screen takes to open | 1,000 | 1 to 2 seconds. The whole list is downloaded. | Under a quarter of a second. One page of results at a time. |
| 10,000 | 5 to 15 seconds. Browsers start to struggle. | Under a quarter of a second | |
| 100,000 | A minute or more, and some browsers give up | Under a quarter of a second | |
| 1,000,000 | Does not open | Under a third of a second | |
| Getting eligibility and stages right | 1,000 | Mostly right. A handful of misreads a year, each needing a person to notice. | Exact. The same rule every time, checked by automatic tests. |
| 10,000 | Dozens of misreads | Exact | |
| 100,000 | Hundreds of misreads. Finding them means re-reading every note. | Exact | |
| 1,000,000 | Thousands of misreads, and no way to find them without an audit | Exact | |
| Quality of the clinical reports | 1,000 | Adequate. A mid-range AI, no time to reason, numbers read off pictures. | Better. Reasoning turned on, working from numbers the system has already checked, top tier where it counts. |
| 10,000 to 100,000 | Same per report. No way to tell which reports came from older instructions. | Same per report. Each one records its instructions, so a batch can be redone if the instructions improve. | |
| 1,000,000 | Same per report. No quality checks are possible. | Spot-checking AI output becomes routine, because inputs and outputs are stored as separate fields. | |
| Explaining a past decision | Any | Not possible. The AI version and instructions are not recorded. | Yes. Which AI, which instructions, what it saw, what it wrote, who approved it. |
| 100,000 and up | A request from a regulator cannot be answered | Answered from the records | |
| Doctor's time per review | Any | Read the AI's prose, find the verdict, check the numbers against the picture yourself | Numbers shown next to the source, verdict already worked out, one report to approve or send back |
| 10,000 and up | Does not improve | Reports the doctor sends back feed into better instructions, so quality rises over time |