Cohorts · status review · 14 October 2026

Cohorts: what's built, what isn't, and what we do next

We compared all 35 tickets on the Cohorts Engineering board with what is actually working in the app today. In short: a researcher can find cohorts, look inside them, pick what data they want, see a price and put it in a cart. Everything after the cart is not built yet.

The app runs on our development environment only. On the live site, the Cohorts button still says "Coming soon".

How far a researcher can get today

  1. WorksSign inWith their existing Pan.bio account, from the lab
  2. PartlySearch & filterWorks, but filtering has bugs to hunt down
  3. PartlyLook inside a cohortReal numbers and charts, some details missing
  4. WorksChoose data & see priceSample size, data types, duration, discounts
  5. WorksCartSaved to their account
  6. Not builtRequest or buyThe button is there but switched off
  7. Not builtUse the data securelyThe secure research workspace

Every ticket, in plain terms

4Working 6Partly working 20Not started 2Needs rethinking 3Not a cohorts ticket

Accounts

TicketWhat it's forStatusWhere it stands
ENG-35Sign up & sign inWorkingHandled by the existing Pan.bio account: sign-up, sign-in, email check and password reset already exist there. Missing: signing in through a university or hospital login, an institution field, and a sign-out button.
ENG-34Roles & permissionsRethinkNothing built. Our agreed plan changes this: the organization's owner and admins decide who can buy, instead of four separate roles. The ticket should be rewritten.

Finding cohorts

TicketWhat it's forStatusWhere it stands
ENG-33Browse the catalogPartlyGrid and table views, sorting, paging through results. Cohort names and descriptions are generated from internal codes (for example "Tcga Brca Cohort"), there is no "last updated" date or open/restricted label, and "most recent" sorting is not real.
ENG-32SearchWorkingFinds cohorts by disease, place, data type and more, and tolerates typos. It understands a short fixed list of medical abbreviations, not a full medical vocabulary.
ENG-31FiltersPartlyTen filters, each showing how many cohorts match. There is no sample-size filter, and a "years of data" filter exists behind the scenes but isn't on screen. Several filtering bugs have been reported; this is the main focus of the QA round.
ENG-30Search in plain EnglishNot startedTyping a sentence like "large breast cancer cohorts in the Middle East" and having filters set for you.

Looking inside a cohort

TicketWhat it's forStatusWhere it stands
ENG-29Cohort pagePartlyTabs with real numbers. Missing: who provides the data, open or restricted access, last updated, and a completeness score. The page can crash in some situations; the fix is written but not yet released.
ENG-28Charts & statisticsPartlyDiagnoses, age, sex, ancestry, data types, tissue types. Missing: survival curves, common co-existing conditions, downloading a chart. "Collection methods" is always empty, and tabs show even when a cohort has nothing for them.
ENG-6Only show what a cohort hasNot startedHiding sections a dataset doesn't have. The layout is fixed today. Depends on ENG-5.

Choosing data and price

TicketWhat it's forStatusWhere it stands
ENG-27Build a data packageWorkingPick sample size, data types and how long access lasts, or start from a Discovery / Research / Enterprise preset. The presets live only in the screen, not on the server, so they can drift.
ENG-26Clear pricingPartlyItemised price with discounts for larger samples and longer access. Missing: a discount for bundling data types, a way for admins to change prices, "contact us" pricing and free open-access cohorts. The 12-month discount shown on screen (10%) doesn't match the price charged (30%).
ENG-25CartWorkingSaved to the account, works across devices, items can be removed. Items can't be edited yet. The cart belongs to the person; our plan says it should belong to the organization.

Getting and using the data

TicketWhat it's forStatusWhere it stands
ENG-24Submit a data requestNot startedThe "Request Access" button exists but is switched off. For the first release our plan replaces this with buy and pay.
ENG-23Review & approvalPostponedOur plan skips a human review step in the first release; purchases go straight to a secure workspace. Comes back later.
ENG-22My requestsNot startedBecomes a "My purchases" page with a button to open the secure workspace.
ENG-21Secure environmentNot startedThe secure research workspace where bought data is used and can't leave. Built on Yahia's track; Cohorts connects to it.
ENG-20Patient records browserNot startedInside the secure workspace.
ENG-19Genetic variant browserNot startedInside the secure workspace.
ENG-18Medical imaging browserNot startedInside the secure workspace.

Running the platform and its data

TicketWhat it's forStatusWhere it stands
ENG-17Admin dashboardNot startedToday only engineers can load data, using a shared key.
ENG-16Usage analyticsNot started
ENG-15Data provider portalNot started
ENG-14Partner onboardingNot startedOnly a spreadsheet template for describing a dataset exists.
ENG-13Automatic data refreshPartlyEngineers can pull public cancer data (TCGA) by hand. Nothing runs on a schedule, and there's no "last synced" date.
ENG-5List of fields per datasetNot startedThe record of which fields each dataset has, which drives ENG-6.
ENG-1KHCC metadata (100 patients)Not startedNo description on the ticket. Today only TCGA and synthetic test data can be loaded.
ENG-7–12Six placeholder ideasNot startedExport, saved searches, comparing cohorts, request messages, email preferences, notification centre. None of these have a description yet.

Filed here by mistake

TicketWhat it's forStatusWhere it stands
ENG-2, 3, 4Notebook machine follow-upsMoveAbout notebook computers, not Cohorts. ENG-3 is done; ENG-2 and ENG-4 should move to the Notebooks project.

Problems we already know about

Found while reading the code, before any hands-on testing. The QA round will add to this list.

The plan

  1. A full hands-on QA round on what's built

    Before building anything new, we test every working feature on the development site, with filtering as the main focus. Each problem goes on the board with steps to reproduce it and how serious it is.

    • Every filter alone and in combination, checking that the counts match the results shown
    • Search and filters together, clearing filters, sharing a filtered link, sorting and paging
    • Signed in versus signed out, and whether a cohort's page matches the filters chosen
    • Building a package, the price and discounts, adding to and removing from the cart
  2. Fix what QA finds and tidy the board

    Fix the bugs by severity, release the cohort-page crash fix, and correct the discount label. Rewrite the tickets our plan has changed (roles, requests, review), move the three notebook tickets out, and add tickets for the steps below.

  3. Give each cohort a proper record

    A real name, description, provider, region, access level and last-updated date, plus the list of files behind each cohort. This fixes the generated names and unlocks the missing details on the catalog and cohort page, and the "only show what a cohort has" work.

  4. Buying

    The cart moves to the organization, then checkout and payment, then a "My purchases" page.

  5. Delivering the data securely

    Together with Yahia's secure workspace: purchased data is delivered into the organization's secure workspace, and access is locked when the purchase expires.

Later: human review of requests, admin dashboard, provider portal and onboarding, notifications, analytics, plain-English search, comparison and export.