2026-06-30 23:48:14 -05:00
|
|
|
# Closer Question Quality Checklist v7
|
2026-06-25 18:48:37 -05:00
|
|
|
|
2026-06-30 21:24:56 -05:00
|
|
|
**See also:** [QUESTION_CONTENT_GUIDE.md](QUESTION_CONTENT_GUIDE.md) | [QUESTION_SCHEMA.md](QUESTION_SCHEMA.md) | [QUESTION_REWRITE_PLAN.md](QUESTION_REWRITE_PLAN.md)
|
2026-06-25 18:48:37 -05:00
|
|
|
|
|
|
|
|
## Purpose
|
|
|
|
|
|
|
|
|
|
This checklist prevents technically valid but boring questions from reaching the app.
|
|
|
|
|
|
|
|
|
|
Passing JSON validation is not enough.
|
|
|
|
|
|
2026-06-30 23:33:48 -05:00
|
|
|
Every question must also feel human, useful, fun, and worth answering.
|
2026-06-25 18:48:37 -05:00
|
|
|
|
|
|
|
|
## Automatic Rejects
|
|
|
|
|
|
|
|
|
|
Reject any question that contains or strongly resembles:
|
|
|
|
|
|
|
|
|
|
* Describe...
|
|
|
|
|
* Reflect on...
|
|
|
|
|
* Discuss...
|
|
|
|
|
* Evaluate...
|
|
|
|
|
* In what ways...
|
|
|
|
|
* How satisfied are you...
|
|
|
|
|
* What boundary around...
|
|
|
|
|
* Explore your feelings...
|
|
|
|
|
* Identify the ways...
|
|
|
|
|
* Rate the effectiveness...
|
|
|
|
|
* Communication style
|
|
|
|
|
* Emotional processing
|
|
|
|
|
* Conflict framework
|
|
|
|
|
* Relationship dynamic
|
|
|
|
|
|
|
|
|
|
These are therapy worksheet patterns.
|
|
|
|
|
|
2026-06-30 21:24:56 -05:00
|
|
|
## Daily Pack Hard Checks
|
|
|
|
|
|
|
|
|
|
For the daily single choice weekday pack, confirm before content review:
|
|
|
|
|
|
|
|
|
|
* 500 total questions
|
|
|
|
|
* 75 free questions
|
|
|
|
|
* 425 premium questions
|
|
|
|
|
* every question is single_choice
|
2026-06-30 23:33:48 -05:00
|
|
|
* every question has a weekday tag
|
2026-06-30 21:24:56 -05:00
|
|
|
* every question has 4 to 6 options
|
2026-06-30 23:33:48 -05:00
|
|
|
* 4 options preferred
|
|
|
|
|
* no duplicate IDs
|
|
|
|
|
* no duplicate question text
|
|
|
|
|
* no duplicate exact option lists
|
|
|
|
|
|
|
|
|
|
## Daily Fun Gate
|
|
|
|
|
|
|
|
|
|
For daily questions, reject anything that is merely useful but not fun.
|
|
|
|
|
|
|
|
|
|
A daily question must feel like one of these:
|
|
|
|
|
|
|
|
|
|
* a game moment
|
|
|
|
|
* a tiny date choice
|
|
|
|
|
* a sweet choice
|
|
|
|
|
* a flirt
|
|
|
|
|
* a silly prompt
|
|
|
|
|
* a playful debate
|
|
|
|
|
* a low-pressure couple moment
|
|
|
|
|
|
|
|
|
|
Reject daily questions with answer sets built around:
|
|
|
|
|
|
|
|
|
|
* clean counters
|
|
|
|
|
* dishes
|
|
|
|
|
* laundry
|
|
|
|
|
* bills
|
|
|
|
|
* appointments
|
|
|
|
|
* errands
|
|
|
|
|
* bedtime planning
|
|
|
|
|
* household maintenance
|
|
|
|
|
* saved blankets
|
|
|
|
|
* clinical reassurance phrasing
|
|
|
|
|
|
|
|
|
|
These can exist in the real relationship. They should not dominate the daily fun pack.
|
|
|
|
|
|
|
|
|
|
Bad:
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
Before phones win, what would make the night nicer?
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Bad options:
|
|
|
|
|
|
|
|
|
|
* A clean counter
|
|
|
|
|
* A quick shoulder rub
|
|
|
|
|
* A simple bedtime plan
|
|
|
|
|
* The good blanket saved
|
|
|
|
|
|
|
|
|
|
Better:
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
Before phones win, what should we do for fun?
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Better options:
|
|
|
|
|
|
|
|
|
|
* Pick a ridiculous snack
|
|
|
|
|
* Watch one guilty-pleasure clip
|
|
|
|
|
* Trade dramatic compliments
|
|
|
|
|
* Choose tomorrow's tiny date
|
2026-06-30 21:24:56 -05:00
|
|
|
|
2026-06-30 23:45:47 -05:00
|
|
|
|
|
|
|
|
## Research-Informed Daily Fun Checks
|
|
|
|
|
|
|
|
|
|
A daily question must feel playable, not merely pleasant.
|
|
|
|
|
|
|
|
|
|
Pass only if the question uses at least one of these:
|
|
|
|
|
|
|
|
|
|
* a tiny mission
|
|
|
|
|
* a funny choice
|
|
|
|
|
* a playful debate
|
|
|
|
|
* a flirty pick
|
|
|
|
|
* a cute mini date
|
|
|
|
|
* a snack or treat choice
|
|
|
|
|
* a memory prompt
|
|
|
|
|
* a silly award
|
|
|
|
|
* a low-pressure dare
|
|
|
|
|
* a small surprise
|
|
|
|
|
|
|
|
|
|
Reject if the question mainly feels like:
|
|
|
|
|
|
|
|
|
|
* relationship maintenance
|
|
|
|
|
* emotional homework
|
|
|
|
|
* household management
|
|
|
|
|
* responsible adult planning
|
|
|
|
|
* generic wellness advice
|
|
|
|
|
* a cute phrase with no actual game inside it
|
|
|
|
|
|
|
|
|
|
Ask this out loud:
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
Would two tired people still want to tap this for fun tonight?
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
If not, mark it as `not_fun` or `filler_question` and rewrite it.
|
|
|
|
|
|
|
|
|
|
## Research-Informed Option Checks
|
|
|
|
|
|
|
|
|
|
Options must feel like choices in a game.
|
|
|
|
|
|
|
|
|
|
Reject options that are:
|
|
|
|
|
|
|
|
|
|
* vague, like "something sweet"
|
|
|
|
|
* clinical, like "more reassurance"
|
|
|
|
|
* logistical, like "a bedtime plan"
|
|
|
|
|
* chore-coded, like "a clean counter"
|
|
|
|
|
* oddly phrased, like "the good blanket saved"
|
|
|
|
|
* too similar to each other
|
|
|
|
|
* too different in effort or intimacy
|
|
|
|
|
|
|
|
|
|
At least 3 out of 4 options should be visibly fun, sweet, flirty, silly, or date-like. If only 1 or 2 options feel fun, rewrite the whole answer set.
|
|
|
|
|
|
2026-06-30 21:24:56 -05:00
|
|
|
## Daily Pack Rejects
|
|
|
|
|
|
2026-06-30 23:33:48 -05:00
|
|
|
Reject daily prompts that feel like:
|
2026-06-30 21:24:56 -05:00
|
|
|
|
|
|
|
|
* therapy homework
|
|
|
|
|
* self-help content
|
2026-06-30 23:33:48 -05:00
|
|
|
* HR wellness surveys
|
|
|
|
|
* communication worksheets
|
2026-06-30 21:24:56 -05:00
|
|
|
* abstract emotional processing
|
|
|
|
|
* generic AI relationship advice
|
2026-06-30 23:33:48 -05:00
|
|
|
* household admin
|
|
|
|
|
* bedtime logistics
|
|
|
|
|
* chore planning
|
2026-06-30 21:24:56 -05:00
|
|
|
|
2026-06-30 23:33:48 -05:00
|
|
|
Reject daily questions using these words or phrases:
|
2026-06-30 21:24:56 -05:00
|
|
|
|
|
|
|
|
* reset
|
|
|
|
|
* process
|
|
|
|
|
* mental load
|
|
|
|
|
* emotional load
|
|
|
|
|
* autopilot
|
|
|
|
|
* pressure
|
|
|
|
|
* soft landing
|
|
|
|
|
* relationship dynamic
|
|
|
|
|
* name the mood
|
|
|
|
|
* emotional processing
|
|
|
|
|
* communication style
|
|
|
|
|
* conflict framework
|
|
|
|
|
|
2026-06-30 23:33:48 -05:00
|
|
|
## Daily Option Checks
|
2026-06-30 21:24:56 -05:00
|
|
|
|
2026-06-30 23:33:48 -05:00
|
|
|
Every daily option must:
|
2026-06-30 21:24:56 -05:00
|
|
|
|
2026-06-30 23:33:48 -05:00
|
|
|
* answer the exact prompt
|
|
|
|
|
* be a complete answer
|
|
|
|
|
* sound natural
|
|
|
|
|
* be similar in weight to the other options
|
|
|
|
|
* be fun, sweet, playful, flirty, silly, date-like, or warmly specific
|
2026-06-30 21:24:56 -05:00
|
|
|
|
2026-06-30 23:33:48 -05:00
|
|
|
Reject options that are:
|
|
|
|
|
|
|
|
|
|
* fragments
|
|
|
|
|
* too abstract
|
|
|
|
|
* weirdly specific
|
|
|
|
|
* chore-heavy
|
|
|
|
|
* clinical
|
|
|
|
|
* not connected to the prompt
|
|
|
|
|
* much better or worse than the other options
|
2026-06-30 21:24:56 -05:00
|
|
|
|
2026-06-30 23:33:48 -05:00
|
|
|
Bad fragment:
|
2026-06-30 21:24:56 -05:00
|
|
|
|
|
|
|
|
```text
|
2026-06-30 23:33:48 -05:00
|
|
|
When I need reassurance
|
2026-06-30 21:24:56 -05:00
|
|
|
```
|
|
|
|
|
|
2026-06-30 23:33:48 -05:00
|
|
|
Better:
|
2026-06-30 21:24:56 -05:00
|
|
|
|
|
|
|
|
```text
|
2026-06-30 23:33:48 -05:00
|
|
|
Tell me one thing you liked about today
|
2026-06-30 21:24:56 -05:00
|
|
|
```
|
|
|
|
|
|
2026-06-30 23:33:48 -05:00
|
|
|
Bad weird option:
|
2026-06-25 18:48:37 -05:00
|
|
|
|
2026-06-30 23:33:48 -05:00
|
|
|
```text
|
|
|
|
|
The good blanket saved
|
|
|
|
|
```
|
2026-06-25 18:48:37 -05:00
|
|
|
|
2026-06-30 23:33:48 -05:00
|
|
|
Better:
|
2026-06-25 18:48:37 -05:00
|
|
|
|
2026-06-30 23:33:48 -05:00
|
|
|
```text
|
|
|
|
|
Save me the best couch spot
|
|
|
|
|
```
|
2026-06-25 18:48:37 -05:00
|
|
|
|
2026-06-30 23:48:14 -05:00
|
|
|
## Patch Discipline Checks
|
|
|
|
|
|
|
|
|
|
Before updating a daily pack, confirm the workflow is patch mode.
|
|
|
|
|
|
|
|
|
|
Required:
|
|
|
|
|
|
|
|
|
|
* every failed question has a marked ID
|
|
|
|
|
* every mark has a reason
|
|
|
|
|
* every mark has a fix scope
|
|
|
|
|
* only marked IDs are edited
|
|
|
|
|
* passing IDs are left unchanged
|
|
|
|
|
* metadata is preserved unless metadata failed
|
|
|
|
|
* the report lists marked count, patched count, and remaining flag count
|
|
|
|
|
|
|
|
|
|
Reject the update if it rewrites passing questions without a mass rewrite exception.
|
|
|
|
|
|
|
|
|
|
Mass rewrite exception requires:
|
|
|
|
|
|
|
|
|
|
* more than 60 percent of the weekday or pack fails
|
|
|
|
|
* one shared root cause is named
|
|
|
|
|
* the report explains why patching is worse
|
|
|
|
|
* preserved fields are listed
|
|
|
|
|
|
|
|
|
|
## Fun But Grounded Checks
|
|
|
|
|
|
|
|
|
|
Reject daily questions that are fun only because they are random.
|
|
|
|
|
|
|
|
|
|
Mark as `too_random` or `mechanic_overuse` when the pack overuses:
|
|
|
|
|
|
|
|
|
|
* snack drafts
|
|
|
|
|
* fake awards
|
|
|
|
|
* mascot jokes
|
|
|
|
|
* couch games
|
|
|
|
|
* dramatic bits
|
|
|
|
|
* random object picks
|
|
|
|
|
* silly phrases that do not fit the prompt
|
|
|
|
|
|
|
|
|
|
A good daily question should feel playful and usable by adults.
|
|
|
|
|
|
|
|
|
|
It should not feel like a children's party game, a meme prompt, or a slot machine full of snacks.
|
|
|
|
|
|
|
|
|
|
## Option Answer Test
|
|
|
|
|
|
|
|
|
|
For every single-choice question, read the prompt followed by each option.
|
|
|
|
|
|
|
|
|
|
Each option must sound like a direct answer.
|
|
|
|
|
|
|
|
|
|
If one option fails, fix that option.
|
|
|
|
|
|
|
|
|
|
If two or more options fail, rewrite the answer set.
|
|
|
|
|
|
|
|
|
|
Mark failures as `option_mismatch` or `weird_option`.
|
|
|
|
|
|
|
|
|
|
Examples that fail:
|
|
|
|
|
|
|
|
|
|
* Prompt asks for a date move, option is an object.
|
|
|
|
|
* Prompt asks what to do tonight, option is a vague feeling.
|
|
|
|
|
* Prompt asks for a playful choice, option is a chore.
|
|
|
|
|
* Prompt asks for a flirty pick, option is a household task.
|
|
|
|
|
|
2026-06-30 23:33:48 -05:00
|
|
|
## Repetition Checks
|
2026-06-25 18:48:37 -05:00
|
|
|
|
2026-06-30 23:33:48 -05:00
|
|
|
Reject or rewrite if:
|
2026-06-25 18:48:37 -05:00
|
|
|
|
2026-06-30 23:33:48 -05:00
|
|
|
* too many questions start the same way
|
|
|
|
|
* the same option text appears too often
|
|
|
|
|
* the same situation repeats with different nouns
|
|
|
|
|
* the same answer pattern repeats
|
|
|
|
|
* the weekday starts to feel like wallpaper
|
2026-06-25 18:48:37 -05:00
|
|
|
|
2026-06-30 23:33:48 -05:00
|
|
|
The pack can pass duplicate checks and still fail repetition review.
|
2026-06-25 18:48:37 -05:00
|
|
|
|
2026-06-30 23:33:48 -05:00
|
|
|
## Daily Sample Gate
|
2026-06-25 18:48:37 -05:00
|
|
|
|
2026-06-30 23:33:48 -05:00
|
|
|
Before approving the full daily pack:
|
2026-06-25 18:48:37 -05:00
|
|
|
|
2026-06-30 23:33:48 -05:00
|
|
|
1. Read 10 random questions from each weekday.
|
|
|
|
|
2. Mark anything therapy-coded, boring, weird, logistical, or not fun.
|
|
|
|
|
3. Fix the marked items.
|
|
|
|
|
4. Run a second random sample from each weekday.
|
2026-06-30 23:48:14 -05:00
|
|
|
5. Fix only the sampled items that fail.
|
|
|
|
|
6. Run another sample if any sampled item changed.
|
|
|
|
|
7. Ship only when the second clean sample passes and the remaining hard flag count is 0.
|
2026-06-25 18:48:37 -05:00
|
|
|
|
2026-06-30 23:48:14 -05:00
|
|
|
The sample must include no chore-heavy answer sets, no weird domestic options, and no random silliness that does not fit the prompt.
|
2026-06-25 18:48:37 -05:00
|
|
|
|
2026-06-30 23:33:48 -05:00
|
|
|
## General Question Checks
|
2026-06-25 18:48:37 -05:00
|
|
|
|
2026-06-30 23:33:48 -05:00
|
|
|
Every question must pass:
|
2026-06-25 18:48:37 -05:00
|
|
|
|
2026-06-30 23:33:48 -05:00
|
|
|
* Would a real couple answer this willingly?
|
|
|
|
|
* Is it easy to understand on the first read?
|
|
|
|
|
* Does it create a conversation, laugh, flirt, memory, plan, or useful preference?
|
|
|
|
|
* Are the answer options balanced?
|
|
|
|
|
* Is the wording natural out loud?
|
|
|
|
|
* Would this feel premium in the app?
|
2026-06-25 18:48:37 -05:00
|
|
|
|
2026-06-30 23:33:48 -05:00
|
|
|
## Marking Reasons
|
2026-06-25 18:48:37 -05:00
|
|
|
|
2026-06-30 23:33:48 -05:00
|
|
|
Use these reasons when marking weak questions:
|
2026-06-25 18:48:37 -05:00
|
|
|
|
2026-06-30 23:33:48 -05:00
|
|
|
* therapy_voice
|
|
|
|
|
* wellness_voice
|
|
|
|
|
* household_admin
|
|
|
|
|
* not_fun
|
|
|
|
|
* abstract_prompt
|
|
|
|
|
* awkward_split_phrase
|
|
|
|
|
* repeated_stem
|
|
|
|
|
* option_mismatch
|
|
|
|
|
* fragment_options
|
|
|
|
|
* too_generic
|
|
|
|
|
* weird_option
|
|
|
|
|
* weak_weekday_fit
|
|
|
|
|
* filler_question
|
2026-06-30 23:48:14 -05:00
|
|
|
* too_random
|
|
|
|
|
* mechanic_overuse
|
|
|
|
|
* patch_scope_violation
|
2026-06-30 23:33:48 -05:00
|
|
|
* duplicate_text
|
|
|
|
|
* duplicate_options
|
|
|
|
|
* schema_issue
|
2026-06-25 18:48:37 -05:00
|
|
|
|
2026-06-30 23:33:48 -05:00
|
|
|
## Final Verdict Labels
|
2026-06-25 18:48:37 -05:00
|
|
|
|
2026-06-30 23:33:48 -05:00
|
|
|
Use one of these labels when reviewing a pack:
|
2026-06-25 18:48:37 -05:00
|
|
|
|
2026-06-30 23:33:48 -05:00
|
|
|
* production_ready
|
2026-06-30 23:48:14 -05:00
|
|
|
* production_candidate
|
2026-06-30 23:33:48 -05:00
|
|
|
* staging_only
|
|
|
|
|
* needs_rewrite
|
|
|
|
|
* reject
|
2026-06-25 18:48:37 -05:00
|
|
|
|
2026-06-30 23:48:14 -05:00
|
|
|
Do not call a pack production ready just because the JSON validates. Do not call it production ready while known hard content flags remain.
|