* Revenue figures are market-based estimates only and are not guarantees of income. Actual results will vary based on execution, market conditions, and individual effort. This is not financial or investment advice.
How the agent runs it
When a sponsor submits an order via a fixed intake form, a stateless Intake Agent reads the therapeutic area, indication, phase, and geographic region from the Airtable record and opens a row in the PostgreSQL ledger with status=pending. A separate Research Agent (triggered by ledger status change, not by conversation) pulls site enrollment history from ClinicalTrials.gov API, investigator publication counts from PubMed E-utilities, and IRB approval timelines from public FDA databases, writing every cited fact as a row in a citations table keyed to the report ID — the agent is forbidden by code from including any claim in the report that lacks a matching citation row. A Report Agent assembles the structured feasibility report from the citations table using a fixed 12-section template (patient population size, competing trial density, PI track record, site infrastructure score, enrollment velocity benchmark, regulatory environment, and six others), saves the draft to the ledger, and flags it for human review before delivery. Stripe payment must be confirmed in the ledger before any report is released; the agent checks payment_status=confirmed via a database read, never from memory or email content.
Who this is for
The ideal owner has 3–5 years of clinical operations or contract research organization (CRO) experience and understands what biotech sponsors actually need in a feasibility report — this domain knowledge is essential for writing the 12-section template, validating the first 20 reports manually, and catching citation errors the agent misses. They do not need to be a software engineer but must be comfortable configuring no-code tools (Airtable, Retool) and reading a PostgreSQL table to verify ledger state. This business suits someone who wants to exit full-time CRO employment and monetize their network of biotech contacts, since the first 5–10 customers will almost certainly come from direct outreach to former colleagues.
Market opportunity
Biotech and pharma sponsors spend an estimated $800M+ annually on site feasibility and selection services globally, a process that today is almost entirely manual — CROs send Word-document questionnaires to sites and compile results by hand over 4–8 weeks. The 2024–2026 wave of AI adoption in clinical operations has created buyer willingness among smaller biotech sponsors (Series A–C) who cannot afford full CRO feasibility studies ($15,000–$80,000) but need structured, citable data fast to satisfy their IRB and investor timelines. ClinicalTrials.gov's 2023 data modernization (structured JSON endpoints, richer enrollment history) makes automated data extraction significantly more reliable than it was two years ago.
Tech stack
Monetization
Price: $1,200 per feasibility report (standard, 1 indication + 1 geography); $1,050 per report for customers with 5+ confirmed orders in the ledger — no other discounts exist and no agent tool can override these Stripe price IDs. Variable cost per customer: Claude API usage ~$4 (Research + Report agents, ~2M tokens at blended Sonnet/Haiku pricing); ClinicalTrials.gov + PubMed API calls ~$0 (free tiers sufficient at current volume); Stripe payment fee ~$36 (3% of $1,200); human review time 45 min at $40/hr = $30; Postmark delivery ~$0.10. Total variable cost per report: $4 + $0 + $36 + $30 + $0.10 = $70.10. Fixed monthly costs: PostgreSQL hosting (Railway) $20; Airtable Pro $20; Retool $50; GitHub Actions (included in repo plan) $0; Postmark $15; Claude API base (no minimum) $0; owner time for digest review and escalations ~5 hrs/mo at $40/hr = $200. Total fixed: $305/mo. Break-even: Fixed $305 / gross margin per report ($1,200 - $70.10 = $1,129.90) = 0.27 reports/mo — effectively 1 report covers fixed costs; realistic break-even including owner ramp time is 3 reports/mo. Margin at target: At 15 reports/mo (=$18,000 revenue): variable costs = 15 × $70.10 = $1,051.50; fixed = $305; total costs = $1,356.50; gross profit = $16,643.50; margin = 92.5%. At a conservative 7 reports/mo (=$8,400): variable = $490.70; fixed = $305; profit = $7,604.30; margin = 90.5%. Error buffer: if 2 of 15 reports require a full redo (extra 45 min human time + Claude API), cost rises by ~$88, margin stays above 89%.
Key risks
- → Fabricated citation risk (Vend-style: agent invents enrollment statistics when ClinicalTrials.gov returns sparse data): controlled by a pre-report checklist enforced in code — report generation is blocked if citations_count < minimum_required_citations for any section; sparse sections are flagged as 'insufficient public data' rather than filled with estimates.
- → Authority impersonation risk (Vend-style adversarial manipulation: a bad actor emails claiming to be a sponsor executive and requests a report revision to inflate a site's score, or claims to be 'the owner' to unlock a discount): controlled by the rule that no instruction arriving via email or Airtable comment field can modify a delivered report or price; all change requests must come through the authenticated Stripe customer portal tied to the original order ID, and any revision request generates a human-escalation ticket automatically.
- → Long-run drift risk (Vend-style: agent reinstates dropped data sources or changes section weighting over time without awareness of prior decisions): controlled by a nightly GitHub Actions job that recomputes average report accuracy flags, human correction rate per section, and margin per report, writes a dated lessons.md file, and injects the last 30 days of lessons into every agent's system context at task start — the agent cannot modify lessons.md, only the nightly job can.
- → Over-discounting risk (Vend-style: agent stacks courtesy discounts for repeat customers or researchers claiming nonprofit status): controlled entirely outside the model — Stripe price IDs are hardcoded at $1,200 standard and $1,050 for verified 5+ order volume tier; no coupon codes exist; the agent has no tool call that modifies price, only a tool that reads the fixed price table.
- → Stuck-agent / spiral risk (Vend-style meltdown on long horizon): a GitHub Actions heartbeat checks every report task row in the ledger every 30 minutes; any task in status=in_progress for more than 90 minutes triggers an automatic pause and a Slack alert to the human owner with the task ID and last completed checklist step.
Getting started
- 1 Build and validate the 12-section report templateBefore writing any agent code, draft the feasibility report template manually for two real past trials you know well, defining exactly which data field populates each cell and which public API is the authoritative source. This template becomes the immutable schema the Report Agent fills — sections with no reliable public data source are marked 'not automatable' and handled by the human reviewer.
- 2 Stand up the PostgreSQL ledger and citation schemaCreate the orders, citations, report_drafts, and lessons tables in a Railway-hosted PostgreSQL instance before any agent is written. Every subsequent agent tool is a function that reads or writes this ledger — this is the single source of truth that prevents fabrication, and getting the schema right first prevents costly migrations later.
- 3 Build the Research Agent with citation-gating logicImplement the Research Agent as a stateless Claude API call that accepts a structured JSON task (indication, geography, phase) and returns only rows to insert into the citations table — it has no tool to write prose directly to a report. Code a pre-report gate that counts citations per section and blocks report generation if any required section is below its minimum threshold, returning a structured error instead.
- 4 Configure Stripe with hardcoded price IDs and payment gateCreate exactly two Stripe price objects ($1,200 standard, $1,050 volume) and store their IDs in an environment variable the agent reads but cannot write. Add a database function check_payment_confirmed(order_id) that the Report Agent must call and receive true from before it can write a report draft to the ledger — this is enforced in the agent's tool schema, not in a prompt.
- 5 Run 10 paid pilot reports with full human review at every stepSell the first 10 reports at $800 (one-time pilot price, manually applied in Stripe by the owner — not by the agent) and have the owner review every citation row and every report section before delivery, logging every correction into lessons.md. This builds the correction dataset that the nightly GitHub Actions job will feed back into agent context, and it stress-tests the checklist gates before reducing human review time.
// done for you
Want us to build
Clinical Trial Site Feasibility Reports for Biotech Sponsors
for you?
We contract experienced engineers to deploy AI agent businesses end-to-end — custom domain, branding, live and earning in weeks. No code required on your part.
We reply within 1 business day · No obligation · Canadian-based team