Skip to the page
Rekindle

Weekly activity schedulename Maya · a fictional caseweek 1 → 2

The schedule that crosses things out and then lights up what she liked.

Maya can't name one thing she'd enjoy this week. Her clinician types what she loved before: Phoebe Bridgers, Fleabag, ramen. Rekindle's agent turns those into a week of at-home doses and real places near her, strikes any that fail a rule, waits for the clinician's approval, and re-plans week two from her ratings. Checked one by one against public listings by our build agent (Claude, an AI; not blind), the same LLM alone got 7 of 17 named venues wrong; Rekindle, 0 of 14 (a random 20 per arm).

no login · every case fictional · every plan, swap and toggle calls Qloo live; nothing on the path is replayed

  1. Week 1 · Thu 15:00 · rated

    Dun-Well Doughnuts

    P 8 · M 6

  2. Week 1 · Sun 14:00 · rated

    Juice Generation

    P 2 · M 3 · excluded from week 2

  3. Week 2 · Thu · solo · 15:00

    Dun-Well Doughnuts

    ↻ kept from last week, rated 8 · re-checked live

  4. Week 2 · Sat · solo · 11:00

    Ceremonia Bakeshop

    ← because of Dun-Well Doughnuts, rated 8 · 0.296, +0.044 over Phoebe Bridgers (original love)

  5. Week 2 · Sun · social · 14:00

    Bushwick Pita Palace

    ← because of Dun-Well Doughnuts, rated 8 · 0.307, +0.073 over Phoebe Bridgers (original love)

Rekindle plans a week of real, open, nearby activities with Qloo, strikes every venue that fails a rule, and re-plans week two from her own ratings. Recreated from the live re-plan e0adf88a (8 Oct 2026) in the app's own words and weights. Maya is a fictional case. The threads are Qloo's attribution, not causation.

Receipts

Manual audit · Claude

0of14

named venues wrong for Rekindle, checked one by one against public listings by our build agent (Claude, an AI; not blind). The same LLM alone, asked for named places: 7 of 17.

the same LLM alone7 struck · 3 dashed

Rekindle0 struck · 6 dashed

a random 20 per arm · struck = wrong, dashed = inconclusive · bench/audit.json

In recovery

0of30

in-recovery outings carry an alcohol tag or keyword with Rekindle's screen on top of Qloo's filters: zero by construction, since the screen refuses exactly those. With the screen off and our 14-tag exclusion kept, 3 of 28 do (10 fictional profiles).

Qloo, 4 bar tags excluded21 of 28

Qloo, 14 tags excluded3 of 28

+ Rekindle's screen0 of 30

it counts tags and keywords, not menus · bench/results.json · ablation_in_recovery

Re-plan

16/16

eligible re-plans (4 of 20 profiles had too few verified outings) put a ≥ 7 rating at the top of Qloo's attribution for a new card, ahead of that profile's original loves by ≥ 0.02 (an ember thread's lead). Entities rated ≤ 3 that came back: 0.

bench/replan.json

Verifier

60,000

generated cases: in none did an outing that passes break a hard constraint. 534 tests in all, none needing a key.

tests/verify.property.test.ts · docs/rigor.json

Bench: 20 fictional profiles, finished 2026-10-07 13:11 UTC. The bench run of 7 Oct 2026 predates 31 later plan-path changes (listed in DEMO.md). The manual audit was done by our build agent (Claude, an AI), which ran the bench, so it was not blind.Every receipt, with its script, on /judge →

Monthe case

She can't name one thing she'd enjoy this week.

Her case card on the live app's home page, 8 Oct 2026. Maya is a fictional case; her loves resolve to real Qloo entities and a tag.

Behavioral activation is a first-line, low-cost treatment for depression. In the COBRA trial, BA from junior mental-health workers was non-inferior to CBT from psychological therapists, so a scheduling tool must work for non-specialists. Its core step is activity scheduling: plan specific pleasant activities for specific times, then rate them. That step breaks where it matters most.

  1. She cannot name anything she would enjoy, so the session goes to brainstorming.
  2. Generic suggestions do not stick: go for a walk.
  3. Nobody checks the place: open at the planned hour, close enough for a low-energy day, within budget, quiet enough, alcohol-free for a patient in recovery.

README · The Problem. Evidence base for behavioral activation: Richards et al., Lancet 2016 (COBRA).

Tuethe loop

The model picks where to look. Qloo picks the venue.

Deterministic code decides what is true. A refused candidate stays on the sheet, struck through with its rule, so the clinician sees what was left out and why.

Clinician · intake

What she loved

3–6 loves, each confirmed against Qloo; a neighbourhood, an energy level, constraints.

LLM tool loop

Where to look

Picks the rung, the domain and the query; writes one coaching line per card.

qwen3.8-flash

Qloo

The venue

Real places and titles near her, explained by her loves.

/v2/insights · heatmap

Verifier · no I/O

What is true

PASS, REFUSE with its rule, or REVIEW for the clinician.

R-ID … R-HIST

Clinician gate

Approve week

Approve, swap or remove each card. Nothing reaches her unapproved.

Her ratings

Pleasure, mastery

≥ 7 becomes a Qloo signal, ≤ 3 an exclusion.

re-plan week 2

Truth boundary between the model and Qloo: radius, price, recovery, quiet and wheelchair come from the stored case, never from the model. ↺ Her ratings re-plan week two.

The refill, as Qloo was asked for it

When In recovery went on, Rekindle asked Qloo again for Thursday: 14 alcohol tags and the three struck places excluded, her loves as the signal. From the plan's own call log, without the key.

GET /v2/insights
filter.type=urn:entity:placesignal.interests.entities=<Phoebe Bridgers>,<Fleabag>signal.interests.tags=urn:tag:genre:place:restaurant:ramenfilter.hours=thursday · filter.price_level.max=2filter.location=POINT(-73.9571 40.7081) · filter.location.radius=1500filter.exclude.tags=bar, night_club, cocktail_bar, full_bar, cocktails, beer, wine, distillery, brewery, wine_bar … (14)filter.exclude.entities=<Patisserie Tomoko>,<Brooklyn Ball Factory>,<Mozzarella Kosher>feature.explainability=true · take=25→ 200 · 25 places · 231 ms→ Thursday's refill: Dun-Well Doughnuts · 1421 m · Thu 08:00–18:00 · slot 15:00 ✓ · moved from 18:00 (closed then)

Every outing is checked

R-OPEN
open at its slot; missing hours are refused, never assumed open
R-NEAR
within her radius
R-PRICE
within her budget
R-KIND
an activity, never a drinking establishment
R-ALC
alcohol-free in recovery: exact tags and whole tokens; ambiguous goes to REVIEW
R-HIST
nothing she rated ≤ 3, nothing the clinician swapped out
lib/verify.ts+ R-ID · R-QUIET · R-ACCESS

Explained by her own loves

Every card says why, in Qloo's weights: because Phoebe Bridgers 0.54 · Fleabag 0.46. Tag loves such as ramen change the ranking, but Qloo doesn't attribute tag signals, and the card doesn't pretend it does.

The one social outing a week goes where her taste gathers: the top-affinity cell near her on a Qloo heatmap. Sunday's Juice Generation sits in cell dr5rsuw.

feature.explainabilityurn:heatmap · geohash

Wedher week, replayed

Planned, struck, stamped, rated, re-planned.

Recreated from three stored live plans of 8 Oct 2026 in the app's own words (Maya is a fictional case), beside each step's real agent trace. A step shows only the slots it changed; each opens live for the whole week.

Week 2: 2 kept · 5 new · 2 rekindled by a rating (Qloo's attribution, not causation)plan e0adf88a · re-planned from week 1 · 08 Oct 2026 09:45 UTC · open it live →

Week 1 as rated · pleasure · mastery

THU

Dun-Well Doughnuts

P 8 · M 6

SAT

Muz Muz Shop & Cafè

P – · M –

SUN

Juice Generation

P 2 · M 3 · excluded

Week 2

  1. THUsolo

    SOLO · 15:00

    Dun-Well Doughnuts

    place

    ↻ kept from last week, rated 8 · re-checked live

    because Phoebe Bridgers 0.539 · Fleabag 0.461

    1421 m · Thu 08:00–18:00 · slot 15:00 ✓moved from 18:00 (closed then)

  2. SATsolo

    SOLO · 11:00

    Ceremonia Bakeshop

    place

    ← because of Dun-Well Doughnuts, rated 8 · 0.296, +0.044 over Phoebe Bridgers (original love)

    563 m · Sat 09:00–15:00 · slot 11:00 ✓

  3. SUNsocial

    SOCIAL · 14:00

    Bushwick Pita Palace

    place

    ← because of Dun-Well Doughnuts, rated 8 · 0.307, +0.073 over Phoebe Bridgers (original love) · with Lucy Dacus 0.239

    1473 m · Sun 11:00–01:00 · slot 14:00 ✓taste cell dr5rt6v

Kept: Dun-Well Doughnuts, rated 8, re-checked live with Qloo /entities. Lucy Dacus, rated 7, is now a Qloo signal. Juice Generation, rated 2, is excluded.

The threads are Qloo's attribution, not causation; Monday and Tuesday are labelled ties.

Agent trace plan e0adf88a · re-plan

  1. start week 2 · 7 slots · LLM qwen:qwen3.8-flash → groq:openai/gpt-oss-120b
  2. findOutings day=thursday kept=true rated=8 → 1 returned → Dun-Well Doughnuts ✓
  3. qwen:qwen3.8-flash step 1 · 6 tool calls · 5260 ms
  4. findAtHome day=tuesday type=podcast take=4 → 4 returned → Las Culturistas with Matt Rogers and Bowen Yang ✓
  5. findAtHome day=wednesday type=book take=4 → 4 returned → A Little Devil in America: Notes in Praise of Black Performance ✓
  6. findOutings day=saturday hour=11 → 25 returned · review 1 → Ceremonia Bakeshop ✓
  7. findAtHome day=friday type=tv_show take=4 → 4 returned → Shrill ✓
  8. placeSocial day=sunday hour=14 → 11 returned · refused R-KIND 2 → Bushwick Pita Palace ✓
  9. findAtHome day=monday type=artist take=4 → 4 returned → Big Thief ✓
  10. groq:openai/gpt-oss-120b step 2 · 1 tool call · 3090 ms
Thursday to Sunday, reloaded 9 Oct: each refusal stays under the card that replaced it, with the tag that refused it.

Thuin recovery

Struck in place. Refilled live.

rekindle.edycu.dev/plans/ab088de3-3544-4a11-9c4e-033d2cf60965LIVE
The live app one click after In recovery, for Maya, a fictional case: constraints with In recovery ticked, then Quiet, Wheelchair entrance, within 1.5 km and two price levels; her loves Phoebe Bridgers, Fleabag and Ramen restaurant; and the notice 3 outings struck in place and 3 slots refilled live · 2.2 s. (opens the full-size capture)
  • R-ALC · bar_service, wine +3 more
    Qloo itself tags Patisserie Tomoko with bar service. Struck where it stood, under Dun-Well Doughnuts: open at 15:00, 1421 m away.
  • R-ALC · alcohol, bar_onsite
    Brooklyn Ball Factory is struck; Saturday becomes Muz Muz Shop & Cafè, moved from 11:00 (closed then).
  • R-ALC · full_bar, beer +3 more
    Mozzarella Kosher is struck; Sunday's social becomes Juice Generation, in taste cell dr5rsuw.
  • REVIEW · barstool_seating · happy_hour
    Van Leeuwen Ice Cream and Dunkin' go to the clinician in dashed boxes: ambiguous, not refused; the clinician decides.

Why a screen on top of Qloo's filter

With four bar tags excluded, 17 of the 25 places Qloo returned for Maya's Thursday query still carried alcohol tags, so Rekindle excludes 14 tags and screens every tag and token on top. In-recovery outings with an alcohol tag or keyword: 21 of 28 with four bar tags, 3 of 28 with 14 and no screen, 0 of 30 with the screen (by construction).

DX-REPORT §2 · bench/results.json · it counts tags and keywords, not menus (README · Limitations, 5)

Frithe re-plan

What she enjoyed comes back. What she didn't stays out.

Maya rated Dun-Well Doughnuts 8: kept, re-checked live, and threaded to two new outings. Juice Generation, rated 2, stays out.

  • ↻ kept from last week, rated 8 · re-checked live
    The top-rated outing comes back in its own slot after a live Qloo /entities re-check of the same rules.
  • +0.044 · +0.073
    A thread is drawn only where Qloo's attribution puts a rating at least 0.02 over her best original love; a narrower lead is labelled a tie, with no thread. On live re-plans of Maya most leads are still ties.
  • ≥ 7 → a signal · ≤ 3 → excluded
    What she rated 7 or more becomes a Qloo signal for week two; what she rated 3 or less is left out.
rekindle.edycu.dev/plans/e0adf88a…LIVE
Sunday's week-2 card on the live app at phone width: social, 14:00, Bushwick Pita Palace, a place; drop in for a quick bite; because Dun-Well Doughnuts 0.307, Lucy Dacus 0.239, Phoebe Bridgers 0.234; in ember: because of Dun-Well Doughnuts, rated 8, 0.307, +0.073 over Phoebe Bridgers (original love), with Lucy Dacus 0.239; 1473 m, Sun 11:00 to 01:00, slot 14:00 checked; taste cell dr5rt6v; 243 Bushwick Ave. (opens the full-size capture)
Sunday's week-2 card at the app's own size (plan e0adf88a, re-planned 8 Oct 2026, reloaded 9 Oct, phone width). On a laptop the same lead also draws the thread.

Satwhat the clinician hands her

Nothing reaches her until a clinician approves.

  • Approve, swap or remove each card, then Approve week. A swap re-runs that one slot live; the old card stays on the clinician's sheet as a CLINICIAN strike.
  • Her sheet prints only what was approved: what, when, where and the coaching line, with empty P and M boxes to fill in by hand.
  • No weights, rule IDs or strikes reach her. A draft week prints nothing.
  • Clinician support only. No diagnosis, no efficacy claims, no patient logins. Every case is fictional.

The real print view of plan ab088de3 (8 Oct 2026; reloaded 9 Oct).

Sunhonest by design

What it does not do, said before you ask.

“It is not a clinical tool. It is clinician support only: no diagnosis, no efficacy claims, no patient logins.”
README · Limitations, 1
“The alcohol screen is a deny list. It is measured (see the ablation), but a venue that serves alcohol and carries none of the tags or keywords would get through.”
README · Limitations, 5
“The ember thread is Qloo's attribution, not causation.”
README · Limitations, 6

A beer hall passed as a café.

The bench placed “TeKu Tavern + Café” for a profile not in recovery, because its café category passed R-KIND. Drinking-establishment categories are now refused for every case.

A substring alcohol screen.

A probe showed it would refuse espresso_bar and independent_publishing (“pub”), so R-ALC matches exact tag IDs and whole tokens, with an allow list.

A blind audit.

The manual audit was done by our build agent (Claude, an AI), which ran the bench, so it was not blind. It is labelled that way everywhere; an external audit, when one happens, works from a handout without the repo; none has returned yet.

README · What we got wrong. And a plan is slow: p50 17.43 s from click on the bench, inside the 30 s gate we set, over the 15 s we aimed for.

Questions a judge would ask.

Is anything replayed or mocked?

No. Every plan, re-plan, swap and toggle calls Qloo live; plans and re-plans also call the routing model. Captured Qloo responses are used only in unit tests.

Without keys, as in CI, the app refuses to plan rather than invent a week, and the end-to-end suite asserts exactly that. This page's replay is a recreation of three stored live plans; each step links to the real one.

Does the AI choose the places?

No. The model picks where to look (the rung, the domain, the query) and writes one coaching line per card. Qloo picks the venue and the verifier checks it. A coaching line keyed to an ID no tool returned is dropped, and drinking language in coaching is dropped on every case.

Is it a clinical tool? Has it been used with patients?

No. It is clinician support only: no diagnosis, no efficacy claims, no patient logins. Every case in the app is fictional. Behavioral activation is the evidence-based step; Rekindle supports that step and is not itself evidence-based.

What does Qloo learn about the patient?

Taste entities and tags, a map point and constraint filters. The case name never leaves the server. The text typed into an intake love box is sent to Qloo to find matches, so the clinician types only the taste, and a small deny list refuses clinical words and contact details before any request (a screen, not a guarantee).

What does the language model see?

The week number, her energy level (1 to 3), her loves by name, the names of activities she rated as enjoyed (not the scores), and the open slots. Each tool call returns the placed card's Qloo ID, name, type, hour, distance and Qloo's explainability weights, or why the slot stayed empty. The case label and its map point never reach the model, though the places it is shown, with their distances, say roughly where she is. The care constraints (in recovery, quiet, wheelchair, budget, radius) are applied to every Qloo request on the server and are not written into the prompt. Because the model is never told whether she is in recovery, drinking language in a coaching line is dropped on every case, not only in recovery (lib/agent.ts, userPrompt and COACH_ALC).

How was “7 of 17 against 0 of 14” measured?

A random 20 venues per arm, from plans for 20 fictional profiles, checked one by one against public listings by our build agent (Claude, an AI; not blind); inconclusive: 3 of the LLM's 20 and 6 of Rekindle's 20. Wrong means not found, closed at the planned hour, or serving alcohol to a patient in recovery.

Our automated checker over-flags (it matches by street address and misses large venues such as parks), so the manual audit leads. The bench run of 7 Oct 2026 predates 31 later plan-path changes (listed in DEMO.md).

Why does a plan take about 20 seconds?

The bench measured p50 17.43 s and p95 20.61 s from click; the coaching step dominates. It meets the 30 s gate we set, not the 15 s we aimed for. The week streams in card by card with the agent trace live, so the wait shows its work.

What happens where Qloo has few places?

A coverage refusal. The sheet says how many outings it could verify and why each empty slot is empty; a wider radius is offered only with the clinician's consent. It never fills a slot with an unverified suggestion. Try Cal, the sparse-coverage case, on /judge.

Can I try my own case?

Yes. New fictional case opens the intake: type 3–6 loves, confirm each against Qloo's live matches, pick a neighbourhood, energy, budget and constraints, and save. Week 1 then plans live.

Plan Maya's week, live.

About 20 seconds, no login, every case fictional. Then switch on In recovery and watch the strikes.