This repository is a machine for finding medtech spin-out ideas and then
trying very hard to knock them down. It has four moving parts. Three of them are automated
and run unattended; the fourth is a person, and stays a person on purpose.
The long version, with every stage and gate drawn out: index.html
The problem it is built for
Point a capable model at "find me a medtech product worth building" and you will get an
answer. It will be fluent, well-organised, and roughly 80% true. The other 20% is the
expensive part: a predicate device that does not exist, a billing code that was never
issued, a patent described as expired because the summary said so. Those errors do not
look like errors. They look exactly like the true statements sitting next to them, in the
same font, with the same confident tone.
The cost of finding out late is asymmetric. A wrong market-size estimate loses you a
slide. A wrong reimbursement pathway loses you the programme — usually about eighteen
months in, when someone finally calls the payer.
So this system is not optimised to produce ideas. It is optimised to make every fact
underneath an idea checkable, checked, and labelled with the result — including,
loudly, the ones it could not check.
The four blocks
Figure 1 ·The whole thing, once. Blocks 1
and 2 are cheap and fast, and are treated as untrusted drafting. Block 3 is the expensive
one and is the only place a fact becomes real. What crosses the dashed line is a compiled
packet — every claim tagged, every gap named — never a recommendation. The dashed return
path is the "flywheel" part: outcomes recalibrate the rubric that Block 2 grades with, so
the tenth cycle is not the first cycle repeated.
Block 1
The Finder — reads the world, drafts the idea
Two agents: Scout (continuous) and Generator (on demand) · Tier 1 · fully autonomous
Watches what changed. New FDA clearances and De Novo grants, device recalls,
new billing codes and payer policy moves, new papers and trial registrations. A new
clearance is not just news — it can create a regulatory pathway that did not exist last
quarter, which resurrects ideas that were correctly killed before it.
Drafts candidates in a fixed shape. Device class, target (human / veterinary /
research-use), mechanism, the closest named predicate or analog, launch jurisdiction,
and — mandatory — a written intended use.
Reads the graveyard first. The killed-idea log is an input, not an archive, so
the same dead shape does not get re-proposed every cycle with a new adjective.
Goes in Public agency feeds, the existing knowledge base, the current rubric,
every idea previously killed and the condition that would revive it.
Comes out One markdown file per idea. Every factual statement in it is tagged
unverified and contributes nothing to any score.
Will not Check its own claims. The agent that produced an argument is the
worst possible auditor of it, which is the entire reason Block 3 exists separately.
Why "intended use" is a required field. Regulatory class is not a property of the
hardware. It is a property of the hardware plus the claimed indication — the same
device, indicated more narrowly, can land in a cheaper class with a different review
burden. Ask "what class is this device?" without an indication and the question is not
hard, it is malformed. So the field is mandatory, and the regulatory factor stays unscored
without it. It also turns out to be a design lever: narrowing an indication to move class
is a legitimate engineering decision, not paperwork.
Block 2
The Scorer — turns an idea into a number, and shows the holes in it
One agent, run twice: once before verification for triage, once after for the real score · Tier 1
Nine weighted factors. Regulatory pathway, reimbursement pathway, market size
and freedom-to-operate carry 15% each; moat, mechanism risk and capital intensity 10%
each; competitive intensity and strategic fit 5% each.
The first pass is explicitly a draft. It is allowed to score on guesses,
because its only job is to decide what is worth the cost of verifying. It is labelled as
a draft in the file so nobody quotes it later.
The second pass counts verified claims only. A factor with no verified claim
behind it is left blank — not zeroed, not estimated. Zeroing an unknown is a
silent, confident lie about the idea's quality.
Two numbers are always reported together: the composite score, and how much of
the rubric's weight that score actually spans. One live candidate scores 60/100 — over a
single factor carrying 15% of the rubric. Read alone, "60" makes a barely-evidenced idea
look mid-pack. The coverage figure is the one to read first.
Goes in The candidate file, and the rubric as it currently stands.
Comes out A score, the weight it covers, and a per-factor note saying which
claim carried it or why it is blank.
Will not Treat an unconfirmed claim as true, upgrade a confidence tag to move
an idea along, or edit the rubric it is being graded against.
Block 3 — the one the rest exists to protect
The Prover — checks each claim against a primary source, or says it could not
One agent, structurally isolated from the Scorer, plus eleven typed lookups · Tier 2 · autonomous but mandatory
It runs cold. A fresh context, opening the candidate file off disk, with no
access to the conversation that produced the claim. It never reads the pitch. A checker
who has read the pitch is reviewing a case, not checking a fact.
One claim type, one typed lookup. openFDA for clearances and classification;
the actual 510(k) summary PDF for the Indications for Use statement, which is
where the load-bearing half of any predicate claim really lives; the eCFR for regulation
text; PatentsView for patents; the CMS files for codes, payment rates, coverage policies
and procedure volumes.
Three tags, three different meanings.verified
with a citable record ID · unconfirmed — it looked and could
not confirm, which is not a No · refuted — a primary
source contradicts the claim, which actively pulls the factor down.
Three lookups answer "I cannot know that", by design and permanently. Market
size, stakeholder preference, and CPT codes have no free authoritative machine-readable
source. A model's guess about what a surgeon would prefer is not a weak claim; it is a
fabricated one, and it is the hardest kind to catch afterwards.
Guards run before the lookup does. A regulatory or payment claim with no stated
jurisdiction is refused rather than routed — otherwise a European pathway claim quietly
matches a real American record, cites it, and comes back verified about the wrong
regulatory regime entirely. That refusal lives in code, not in a prompt.
Goes in The candidate file, read cold. Nothing else.
Comes out The same file, with every claim line carrying a tag, a source record
or a named missing document, and a date.
Will not Accept a summarised web search as verification — that is an opinion
about a search result, not a primary source. It will not answer a non-US claim from a US
database, and it will not turn "could not confirm" into "no".
Figure 2 ·What happens to one claim. The
middle exit is the one that does the most work. Collapsing "could not confirm" into "no"
would let a missing spreadsheet look identical to an adverse finding — one queues a piece
of research, the other kills an idea. Keeping them apart is what lets the system report
ignorance without pretending it is evidence.
Block 4
The Desk — the gates, then a person, then the lesson
An automated hard gate, a human review, and a Librarian that records what happened · Tier 3 · human-only
The hard gate runs first, on verified data only. Regulatory and
reimbursement both below floor: killed. Market below floor: killed. Freedom-to-operate
blocked by a live enforceable patent: killed regardless of every other score. Fewer than
six of nine factors verified: not killed — queued for research, in a separate
pile, because "we don't know yet" and "the answer is no" are different facts about an
idea.
What reaches a person is a packet, not a pitch. Source-linked, tagged, with
every blank named as a specific document somebody would have to go and get. The
compilation step deliberately does not rank or recommend.
The human boundary is enforced by the database, not by a prompt. Decisions get
written to a table that only one script can write to — and Claude sessions are denied
permission to run that script at all. A human runs it in their own terminal. This is less
about trusting the model's judgement than about accountability: somebody's name has to be
on the decision afterwards.
Even the rubric is a human decision. An agent can write an argument for
changing a weight and queue it (six are queued right now); it cannot apply one. A model
that can adjust its own grading function will, sooner or later, describe its own priors
as findings.
Then the loop closes. Real outcomes — approval timelines, actual costs, actual
sales cycles, and kills later proved right or wrong — go into a calibration log. The gap
between what the rubric predicted and what happened is the only thing allowed to move a
weight.
Goes in Gate-cleared candidates, each with its verified evidence and its named
gaps.
Comes out A recorded human decision, and eventually an outcome that changes
how the next cycle scores.
Will not Let any agent simulate a shortlist decision, approve spend, greenlight
an animal study, or advance a candidate into an approval state.
If you remember one sentence
No claim reaches a score without passing
Block 3, and Block 3 never shares context with the block that wrote the claim.
Every other convention
here exists to protect that sentence. Agents do not hand results to each other in
conversation; they read and write the same file on disk, in sequence, in separate
sessions. That is what makes the separation structural rather than a naming convention.
What the checking actually catches
Three real examples from the eight candidates currently in the repository. None of them
is dramatic. All three are the kind of thing that survives a confident summary intact.
A predicate that was friendlier in the file than in the PDF
A home phototherapy candidate cited a cleared wearable device as its closest predicate,
"cleared 2025". Block 3 pulled the actual FDA summary. Two things fell out. The decision
date is January 2026 — the number in the K-number is the submission year, not the
clearance year. And the cleared indication is broader than the candidate's own: no
gestational-age floor, no bilirubin ceiling, caregiver-administered home use explicitly
permitted.
Why it matters: the file treated its narrow indication as a
de-risking lever. The closest analog already occupies the wide version of the same
position. A summary would have returned "predicate exists ✓" and been technically
correct.
A reimbursement claim that was never searched — and said so
The same candidate's economics rest on one billing code. The lookup returned: no local
CMS file present, so the code cannot be checked, and nothing was searched. Tagged
unconfirmed, with the exact filename and the CMS source that would resolve it.
Why it matters: this is a costed, assignable task — one file, and
three claims across every candidate resolve at once. The alternative behaviour, a web
search returning a plausible-looking descriptor, is precisely the failure the whole system
is built against. An honest blank beats a confident guess that nobody re-checks.
A predicate pool that was quietly two different regulations
An incontinence-device candidate listed four comparable cleared devices under one
product code, grouped that way by an earlier web search. The check found two of them sit
under a different regulation entirely — transcutaneous skin electrodes rather than an
intravaginal probe.
Why it matters: they remain useful market analogs and are still
named in the file. They are no longer usable as predicates, which is a different and much
more expensive kind of claim to get wrong.
Where it actually stands today
The honest headline is that this pipeline currently cannot finish a lap, and the reason
is worth more than a lap would have been.
8candidates
245claim lines
26verified
126unconfirmed
1refuted
0shortlisted
Figure 3 ·The evidence, counted. The green
sliver is what the system is currently willing to stand behind. That ratio is not a
performance problem to be tuned away — it is the measurement. Note the right-hand block:
those are assumptions the pitch decks surfaced, deliberately written back into the
candidate file as unverified claims, because an assumption that lives only in a deck is
invisible to Block 3 and would be a side channel around the one rule.
Why no candidate has cleared
Only three of the nine scoring factors have any verification path at all, and the rubric
requires six before an idea leaves the research queue. The other six factors are not
under-resourced — five of them are judgements, and no database anywhere will settle them.
Figure 4 ·The ceiling, and the bar. A system
that reports "nothing cleared" because it genuinely cannot verify enough is behaving
correctly. The tempting fix — lower the bar until something gets through — converts an
honest blockage into a steady stream of under-evidenced shortlists, which is exactly the
outcome the design exists to prevent. So the bar stays, and the blockage stays visible.
What would move it
Usefully, most of those 126 unconfirmed results are missing inputs rather than adverse
findings — which means the path forward is a short list of concrete, assignable tasks
rather than a redesign.
Do this
And this opens up
Whose job
Place the CMS code, payment-rate, coverage and volume files in data/
Factor 2 becomes checkable across every candidate at once — right now the entire reimbursement factor is blocked on files nobody has downloaded
A person, once
Set a PatentsView API key
Factor 4 — freedom to operate, the one factor that can kill an idea on its own regardless of every other score
A person, once
Attach a licensed market report, or commission primary preference research
Factors 3 and 5 — the two the system will otherwise never be able to answer, and knows it
A budget decision
Decide the six queued rubric proposals
Whether the 6-of-9 bar is the right bar, or whether "all four gate-relevant factors verified" is a better test
A person, at the desk
What you are actually getting
Not "an AI that finds good medtech ideas". Something narrower and more useful:
You get
Which means
A filter that does not flatter
It is built to be able to return "nothing cleared" and mean it. Every constraint in it trades impressiveness for believability — an idea only looks good here if the evidence underneath it is real.
An audit trail per claim
Every factual statement carries a tag, a date, and either a citable record ID or the name of the specific document that would settle it. Six months later you can reconstruct why anything was believed.
A priced list of your unknowns
Gaps are not hand-waved as "further research required". They are enumerated, each attached to the thing somebody would have to go and get — which is what makes them assignable.
A boundary that holds under pressure
Spend, legal sign-off, animal-study approval and clinical review stay human, enforced in the schema and the permission config rather than in a prompt somebody can talk their way past.
A model that gets better with use
Real outcomes recalibrate the weights. The rubric is a live output of the work, not a fixed formula written once at the start.
The point of all of it. This is not trying to be right more often than a good
analyst. It is trying to be wrong in ways that are visible. An idea that arrives
with three verified factors, six honest blanks, and a price on each blank is worth more
than a confident score with nothing underneath it — because you can act on the first one,
and the second one only feels like you can.
A plain-language overview of the repository at
andygsu/The-Medtech-Flywheel. Figures are drawn from the current state of the knowledge
base. For the full walkthrough — all nine stages, every gate and guard, the connector
routing map and the data model — see index.html.