Connectd task · September 2026
A founder enters their website. Ninety seconds later they have a read on their own leadership that is specific enough to argue with, or a straight answer about why we would not give them one.
Hannah Tomi Ajiboye · linkedin.com/in/tomi-ajiboye
In about a minute, if that is all you have.
Paste any early stage startup's website and get a real report in about ninety seconds. No key, no signup.
Free, nothing to sign up for. Each run reports what it actually spent.
Connectd's offer to a startup is up to three senior experts, pro bono, for three to six months. So the lead magnet's output is deliberately three named advisory gaps, in a fixed vocabulary, each carrying the evidence it rests on.
Aggregated across runs, the diagnostic also tells you which advisory archetypes founders keep needing and cannot get. That is a demand forecast for exec side recruitment, so the startup funnel becomes an instrument pointed at the exec funnel.
Real UK companies, read from their own public websites. Two of the four produced no report at all.
Anemo Labs
London deep tech, 700k pre-seed, three named staff. Regulatory and data protection, each sourced to a page.
ReportRidelogix
Claims citing a named enterprise customer as proof the company could not sell to enterprises were discarded by the adversarial pass.
Out of profileChatterbox
29 staff, blue chip client, past the stage this is built for. Screened before any judgement about gaps was made.
RefusedRule
A 615 character site. Too little to work from, so it declined rather than infer a gap from an empty page.
A diagnostic that only knows how to produce a diagnosis will produce one whether or not it should. Two of these four are the system deciding not to.
Six steps. A human touches two of them: confirming we have the right company before anything expensive runs, and accepting or rejecting each gap before a brief reaches an exec. Everything between is unattended.
Drawn in code rather than generated, because a generated image cannot be held to a structure. Every box is a function that runs.
21 advisory archetypes in a config file. The classifier picks from that list and may not invent one. That single constraint does two jobs: it collapses the hallucination surface, because "which of these 21 applies, and cite your evidence" is classification rather than invention, and it makes the output routable, because free text gap descriptions cannot be matched to a person on your bench.
A seam is where one agent's output becomes another's input, and it is where a plausible but wrong answer does the most damage.
Every other failure in this funnel costs a lead. One costs credibility, in writing, in a document a founder may forward to their board. So all eight gates sit at that single seam, evidence to named gap.
| Gate | What it stops | Where |
|---|---|---|
| Closed taxonomy | Invented gaps | config |
| Mandatory citation | Unfalsifiable claims | prompt |
| Fewer than three allowed | Reaching a target for its own sake | prompt |
| Adversarial pass | Contradicted and inverted claims | prompt |
| Leadership visibility | Diagnosing from a missing page | code |
| Confidence cap | The model over rating its own certainty | code |
| Shared evidence check | Two gaps resting on one citation | code |
| Unknowns section | Filling silence with inference | template |
The three marked code are there because asking a model more firmly to respect its own confidence definitions is not a control. A rule is.
No gate on extraction, which is cheap and whose worst failure the confirmation step catches. None on copy variants. And no human review of an individual report when every gap rule passed, because a human in that seat at volume rubber stamps, and a rubber stamp is worse than a rule since it looks like oversight.
The question worth asking about a system like this is whether you would put your name on what it tells a founder.
An early version told a startup its Scientific Advisory Board section was empty. The board has three members. They load into the page by JavaScript and appear nowhere in the HTML a scraper receives.
I read it and knew it was wrong. That is the argument for keeping a human gate rather than a decoration on one, and it is why the accept or reject step before a brief reaches an exec is built rather than described.
The fix was a reasoning one, not a scraping one. A heading is evidence the thing exists. Now: unrendered pages are detected by their text to markup ratio, a heading for an unrendered section suppresses the matching archetype, and absence can never be a citation. All three sit in code.
The loop reads the run log and proposes changes to the config. At the volume a new funnel runs at, a few dozen a week, it cannot do statistics, so calling it an optimiser overclaims. What it enforces is discipline: one variable at a time, nothing promoted until there is enough data to attribute the result. That makes it impossible to change three things at once and then argue about which one worked.
North star: accepted placement briefs per 100 diagnostic starts. The only metric that cannot be gamed by generating engagement that never becomes a placement.
Three label sources, in rank order, because an optimiser is only as good as its ground truth: the human accept or reject per gap, strongest and now collected; behaviour; and the founder's own yes, partly or no, which is cheapest, highest volume and politeness-biased, so it sets direction and never decides alone.
Two clocks. Fast, weekly, copy only, one variable per surface, nothing promoted below n=30. Slow, monthly, looking for archetypes named often and rejected often, which are the taxonomy's bad entries. It opens a proposal and never merges, because the taxonomy decides what a founder gets told about their own company.
An artefact with no route to founders is not a funnel.
Give every senior exec on your books a personalised diagnostic link for their own network. The distributor is motivated by the placement they are already chasing, the relationships are warm so it needs no verified email, and no competitor can copy it.
A startup that just closed a round is the best qualified lead this funnel will ever see, because getting senior leadership in place becomes urgent exactly when the cash lands. The agent runs the diagnostic on a match, so the outreach opens with a real read rather than a template. The lead magnet becomes the outbound personalisation layer.
A verification gate makes that safe: only valid and
deliverable pass. catch_all accepts any address whether the
mailbox exists or not, which is the exact condition that produces a mass hard bounce.
Both routes above are orchestration rather than diagnosis, so they are built where orchestration belongs. The diagnostic stays in Python, because a gate that has to fire on every run is a function with a test, not a node that can be dragged out of the path. n8n takes the schedule, the credentials, the retries, the three day wait and the branch on outcome.
26 nodes, two triggers. Green ticks and item counts are a real execution. The capture branch at readable size · the workflow JSON · why each node is where it is
The top branch is what happens after a founder asks for their report. Consent is separable, so the no branch records the run against the contact and stops. Then the outcome decides the follow up: a report waits three days and asks which gap was wrong, which is the one label the loop cannot get from behaviour; a screened-out company routes to the exec side; a refusal gets the ten minute call.
The lower branch is the funding signal agent. Companies House advanced search builds the ICP watchlist, a second call reads each company's filing history, and an SH01 dated in the last 36 hours is the trigger, because a share allotment is the legal record of a round landing rather than a press mention that might be six months old. It ends at a node called No report, no outreach. A diagnostic that declined to diagnose must not still fire a cold email.
Measured, not projected. Every run logs what it actually spent.
| Outcome | Calls | Cost |
|---|---|---|
| Full report | 3 to 4 | $0.075 to $0.151 |
| Screened out | 1 | $0.016 |
| Refused | 1 | $0.003 |
| When | What |
|---|---|
| Week 1 | Own surfaces only, human reviews everything. Thirty runs, for a config baseline rather than for conversion. |
| Month 1 | Per exec links with attribution. Fast loop on. First slow loop pass on the taxonomy, using real reject reasons. |
| Quarter | Cohort distribution through partnerships. Archetype demand reporting feeding exec recruitment, where the funnel starts paying for itself twice. Six month re-runs producing before and after cases. |
The human accept gate. Comfortable at ten a week, a full time job at a hundred, and it breaks quietly by degrading into rubber stamping. Then the exec bench, where demand outruns matchable supply. No funnel engineering fixes a supply problem, which is where a marketplace plan and a lead generation plan diverge.
| Not claimed | The honest version |
|---|---|
| End to end | The diagnostic runs end to end on real companies. The routing and nurture layer is built as an n8n workflow, imported and credentialed, and has not been fired at live traffic. |
| It knows your business | Built from your public offer. No access to the CRM, the bench or the real thresholds. Replacing them is a config edit. |
| The loop is running | Schema and config in place, a handful of rows. It needs about thirty runs per variant before its output means anything. |
| Emails sent at volume | A copy and an onward share both sent, a malformed address rejected without sending. A working mechanism, not a campaign. |
| It reads any website | Static fetch only, no JavaScript, which is what produced the failure above. There is content on some sites this cannot see. |
| Identical runs | Temperature is zero and runs still differ, which is why three gates sit in code rather than in wording. |
| A wide target | A rich public footprint correlates with being further along. Thin sites get refused, rich sites get screened out, and the profile sits between them. |
The taxonomy and the ICP were written before the engine, for the same reason they were at a previous company where I was the sole marketing hire across five product divisions, each selling a different technical product to a different industrial buyer. I defined the positioning for each before building the engine that executed against it: five workflows running research, drafting, image generation and publishing across five divisional sites. Two day cycle to under two hours, still running.
The order was what mattered. Without the ICP work first I would have built a faster way to publish the wrong thing five times over. A loop pointed at the wrong definition of a good lead finds the wrong leads faster.