Skip to content

For judges

Sixty seconds, no sign-in

Everything on this page works without an account. Sample residents are labelled Sample. Live builds are limited per visitor and per day; the saved sample card is shown on /compare without a build.

  1. 1

    Open the sample

    A resident, born 1940, with three favourites. No sign-in.

    Open /sample
  2. 2

    Watch the agent place the card

    Each tool call appears as it happens. Every item shows the year, the favourite it connects to, and a Personal, Shared era or Widely known tag.

    Build it live
  3. 3

    Open what the rules turned away

    Candidates outside the years, without a year, or not linked to a favourite are listed with the reason.

    See rejections
  4. 4

    Run the session on a phone

    One item per screen, six big taps for what the carer sees.

    Open session mode
  5. 5

    Compare with a plain AI list

    The same model without Qloo, checked by the same rules.

    Compare
  6. 6

    Plan a room

    Four residents, one pool, the item that works for the person it fits least.

    Group session
  7. 7

    Break it on purpose

    The hard case below, and the fault switch result.

    Jump to it

Try a hard case

A resident born in 1925 whose only favourite is a name Qloo cannot resolve. Aftersong should say what it could not find and stop.

Abstention preset

A resident born in 1900, the oldest the intake allows, with one obscure favourite, Mildred Bailey. Their years are 1910 to 1930. Where Qloo has too little in those years, such as television, the card says so and adds nothing.

Fault switch

With AFTERSONG_SABOTAGE=model_injects the model tries to swap a card line for a name that is not on the card and to add an item that does not exist.

Result of the last run: 1 line blocked and replaced with a template line, 1 extra item refused, card checks all pass. Run 2026-10-28 on a synthetic Qloo stand-in, offline, so it spends nothing.

Reproduce: npm run sabotage

Ten minutes, from a clean clone

git clone https://github.com/0xkinno/aftersong
cd aftersong
npm --prefix backend ci
npm test
npm run verify:fixtures
npm run check

No keys needed. To check a live card, download its export from the sample page and run npm run verify -- card.json.