docs(questions): v4 content guide, v3 quality checklist, daily single choice weekday lineup spec
This commit is contained in:
parent
aa09566636
commit
683e4ed8d0
|
|
@ -0,0 +1,419 @@
|
|||
# Daily Single Choice Weekday System
|
||||
|
||||
This is the weekday question system for Closer daily questions.
|
||||
|
||||
It is not a normal mixed question pack. It is a daily single choice pack where each weekday has its own theme.
|
||||
|
||||
## Pack Identity
|
||||
|
||||
Recommended file id:
|
||||
|
||||
```text
|
||||
daily_single_choice_weekly_v1
|
||||
```
|
||||
|
||||
Recommended file name:
|
||||
|
||||
```text
|
||||
daily_single_choice_weekly_v1.json
|
||||
```
|
||||
|
||||
Current compatibility option:
|
||||
|
||||
```text
|
||||
daily_fun_multiple_choice_v3.json
|
||||
```
|
||||
|
||||
Use the old filename only if the app code still expects it. The content should still be single choice.
|
||||
|
||||
|
||||
## Required Pack Counts
|
||||
|
||||
This special daily pack should use these counts unless the app code is changed and the README explains why:
|
||||
|
||||
* total questions: 500
|
||||
* free questions: 75
|
||||
* premium questions: 425
|
||||
* question type: 500 single_choice
|
||||
|
||||
These counts are different from standard 250 question category packs. Do not apply the normal 140 multi_choice, 50 single_choice, 35 scale, 15 this_or_that, and 10 written mix to this daily pack.
|
||||
|
||||
## Required Question Type
|
||||
|
||||
Every question in this pack must use:
|
||||
|
||||
```json
|
||||
"type": "single_choice"
|
||||
```
|
||||
|
||||
Single choice means the user picks one best answer.
|
||||
|
||||
Every question must have 4 to 6 short options. Four is preferred for daily questions.
|
||||
|
||||
## Daily Voice Standard
|
||||
|
||||
Daily questions should sound like two people deciding what to do, say, eat, watch, laugh about, try, or enjoy together today.
|
||||
|
||||
They should be:
|
||||
|
||||
* quick
|
||||
* warm
|
||||
* concrete
|
||||
* playful
|
||||
* easy to answer
|
||||
* relationship focused
|
||||
* doable in normal life
|
||||
|
||||
They should not sound like:
|
||||
|
||||
* therapy homework
|
||||
* a self-help worksheet
|
||||
* an HR wellness survey
|
||||
* a communication framework
|
||||
* generic AI relationship advice
|
||||
|
||||
If the question sounds like a couples counselor wrote it, rewrite it.
|
||||
|
||||
## Banned Daily Tone Words
|
||||
|
||||
Avoid these in daily questions unless there is a very specific reason:
|
||||
|
||||
* reset
|
||||
* process
|
||||
* mental load
|
||||
* emotional load
|
||||
* autopilot
|
||||
* pressure
|
||||
* soft landing
|
||||
* relationship dynamic
|
||||
* name the mood
|
||||
* emotional processing
|
||||
* communication style
|
||||
* conflict framework
|
||||
|
||||
These words push the pack toward therapy voice.
|
||||
|
||||
## Good Daily Question Style
|
||||
|
||||
Good:
|
||||
|
||||
```text
|
||||
Long day. What would actually help tonight?
|
||||
```
|
||||
|
||||
Options:
|
||||
|
||||
* A hug before chores
|
||||
* Dinner without overthinking it
|
||||
* Ten quiet minutes together
|
||||
* One tiny task done
|
||||
|
||||
Good:
|
||||
|
||||
```text
|
||||
What tiny date move sounds best tonight?
|
||||
```
|
||||
|
||||
Options:
|
||||
|
||||
* Dessert on the couch
|
||||
* A short walk
|
||||
* A movie we already love
|
||||
* A silly little errand together
|
||||
|
||||
Good:
|
||||
|
||||
```text
|
||||
What would make tonight feel more fun?
|
||||
```
|
||||
|
||||
Options:
|
||||
|
||||
* Snacks and a bad movie
|
||||
* Music while we clean
|
||||
* A tiny bet over dinner
|
||||
* One dumb inside joke revived
|
||||
|
||||
## Bad Daily Question Style
|
||||
|
||||
Bad:
|
||||
|
||||
```text
|
||||
Which reset would help us avoid autopilot?
|
||||
```
|
||||
|
||||
Why it fails:
|
||||
|
||||
* therapy coded
|
||||
* abstract
|
||||
* not concrete
|
||||
* sounds generated
|
||||
|
||||
Bad:
|
||||
|
||||
```text
|
||||
What would help us process the emotional load of the week?
|
||||
```
|
||||
|
||||
Why it fails:
|
||||
|
||||
* too clinical
|
||||
* too heavy for a daily prompt
|
||||
* sounds like a worksheet
|
||||
|
||||
Bad:
|
||||
|
||||
```text
|
||||
Which communication dynamic would support our connection tonight?
|
||||
```
|
||||
|
||||
Why it fails:
|
||||
|
||||
* no real couple talks like this
|
||||
* generic
|
||||
* dead on arrival
|
||||
|
||||
## Weekday Lineup
|
||||
|
||||
### Monday: Mood Check Monday
|
||||
|
||||
Purpose: pick what kind of day the relationship needs.
|
||||
|
||||
Vibe: gentle, simple, start of week, low pressure.
|
||||
|
||||
Use prompts about:
|
||||
|
||||
* tired evenings
|
||||
* small kindness
|
||||
* easy dinners
|
||||
* starting the week well
|
||||
* tiny help
|
||||
* feeling cared for
|
||||
|
||||
Example:
|
||||
|
||||
```text
|
||||
What would help us start the week feeling closer?
|
||||
```
|
||||
|
||||
Required tag:
|
||||
|
||||
```text
|
||||
daily_monday_mood_check
|
||||
```
|
||||
|
||||
### Tuesday: Tiny Win Tuesday
|
||||
|
||||
Purpose: pick one small thing to do together.
|
||||
|
||||
Vibe: low effort, practical, cute, doable.
|
||||
|
||||
Use prompts about:
|
||||
|
||||
* one chore handled
|
||||
* one tiny plan
|
||||
* one easy treat
|
||||
* one small date move
|
||||
* one useful win
|
||||
|
||||
Example:
|
||||
|
||||
```text
|
||||
Which tiny win should we aim for tonight?
|
||||
```
|
||||
|
||||
Required tag:
|
||||
|
||||
```text
|
||||
daily_tuesday_tiny_win
|
||||
```
|
||||
|
||||
### Wednesday: Real One Wednesday
|
||||
|
||||
Purpose: pick the most honest answer.
|
||||
|
||||
Vibe: present, grounded, lightly meaningful, not heavy.
|
||||
|
||||
Use prompts about:
|
||||
|
||||
* honest preferences
|
||||
* what would help today
|
||||
* real needs
|
||||
* simple attention
|
||||
* small truths
|
||||
|
||||
Example:
|
||||
|
||||
```text
|
||||
What would make us feel more present with each other tonight?
|
||||
```
|
||||
|
||||
Required tag:
|
||||
|
||||
```text
|
||||
daily_wednesday_real_one
|
||||
```
|
||||
|
||||
### Thursday: Laugh It Off Thursday
|
||||
|
||||
Purpose: pick something silly or low pressure.
|
||||
|
||||
Vibe: weird, funny, tired week energy.
|
||||
|
||||
Use prompts about:
|
||||
|
||||
* dumb jokes
|
||||
* snacks
|
||||
* bad movies
|
||||
* silly awards
|
||||
* weird couple habits
|
||||
* harmless chaos
|
||||
|
||||
Example:
|
||||
|
||||
```text
|
||||
What ridiculous little thing would improve our night?
|
||||
```
|
||||
|
||||
Required tag:
|
||||
|
||||
```text
|
||||
daily_thursday_laugh
|
||||
```
|
||||
|
||||
### Friday: Flirty Friday
|
||||
|
||||
Purpose: pick something playful, sweet, attractive, or date like.
|
||||
|
||||
Vibe: compliments, attraction, flirting, fun.
|
||||
|
||||
Use prompts about:
|
||||
|
||||
* compliments
|
||||
* date energy
|
||||
* kisses
|
||||
* playful texts
|
||||
* looking good for each other
|
||||
* feeling wanted
|
||||
|
||||
Example:
|
||||
|
||||
```text
|
||||
What kind of flirting from me still works best?
|
||||
```
|
||||
|
||||
Required tag:
|
||||
|
||||
```text
|
||||
daily_friday_flirty
|
||||
```
|
||||
|
||||
### Saturday: Side Quest Saturday
|
||||
|
||||
Purpose: pick a tiny adventure or date idea.
|
||||
|
||||
Vibe: playful, outside the routine, doable.
|
||||
|
||||
Use prompts about:
|
||||
|
||||
* errands turned into dates
|
||||
* food trips
|
||||
* walks
|
||||
* trying something new
|
||||
* small adventures
|
||||
* leaving the house
|
||||
|
||||
Example:
|
||||
|
||||
```text
|
||||
What kind of mini adventure sounds most like us today?
|
||||
```
|
||||
|
||||
Required tag:
|
||||
|
||||
```text
|
||||
daily_saturday_side_quest
|
||||
```
|
||||
|
||||
### Sunday: Slow Burn Sunday
|
||||
|
||||
Purpose: pick a warm intimacy or closeness answer.
|
||||
|
||||
Vibe: affectionate, cozy, optionally spicy, never pushy.
|
||||
|
||||
Use prompts about:
|
||||
|
||||
* cuddling
|
||||
* closeness
|
||||
* kisses
|
||||
* sweet attention
|
||||
* cozy plans
|
||||
* affection with consent
|
||||
|
||||
Example:
|
||||
|
||||
```text
|
||||
What kind of closeness would feel best tonight?
|
||||
```
|
||||
|
||||
Required tag:
|
||||
|
||||
```text
|
||||
daily_sunday_slow_burn
|
||||
```
|
||||
|
||||
## Option Rules
|
||||
|
||||
For every single choice daily question:
|
||||
|
||||
* use 4 options when possible
|
||||
* keep options short
|
||||
* make every option answer the prompt
|
||||
* avoid obvious correct answers
|
||||
* avoid duplicate option sets
|
||||
* avoid options that overlap too much
|
||||
* avoid shame
|
||||
* keep choices realistic
|
||||
|
||||
Bad options:
|
||||
|
||||
* Be better
|
||||
* Communicate more
|
||||
* Fix the relationship
|
||||
* Other
|
||||
|
||||
Good options:
|
||||
|
||||
* Make dinner easy
|
||||
* Take a short walk
|
||||
* Send a sweet text
|
||||
* Save me the good blanket
|
||||
|
||||
## Batch Workflow
|
||||
|
||||
Do not write 500 daily questions in one pass.
|
||||
|
||||
Use this flow:
|
||||
|
||||
1. Write 20 to 30 sample questions for one weekday.
|
||||
2. Review voice before scaling.
|
||||
3. Remove therapy coded words.
|
||||
4. Check that every option answers the prompt.
|
||||
5. Check opening variety.
|
||||
6. Only then write the next batch.
|
||||
7. After all weekdays are written, read 30 random questions aloud.
|
||||
8. Reject the pack if it sounds repetitive, clinical, generic, or AI written.
|
||||
|
||||
## Final Approval
|
||||
|
||||
A daily single choice weekday pack is ready only when:
|
||||
|
||||
* every question is single_choice
|
||||
* every question has exactly one weekday tag
|
||||
* every question has 4 to 6 options
|
||||
* no question sounds like therapy homework
|
||||
* no question sounds like a wellness survey
|
||||
* no option list is reused exactly
|
||||
* no question text is duplicated
|
||||
* weekday identity is obvious
|
||||
* the pack feels like a couples game
|
||||
|
|
@ -1,6 +1,5 @@
|
|||
# QUESTION_CONTENT_GUIDE.md
|
||||
|
||||
# Closer Question Writing Guide v3
|
||||
# Closer Question Writing Guide v4
|
||||
|
||||
## Mission
|
||||
|
||||
|
|
@ -10,27 +9,24 @@ Closer is not therapy homework.
|
|||
|
||||
Closer is not a personality quiz.
|
||||
|
||||
Closer should feel like a conversation game couples voluntarily keep
|
||||
playing because they are having fun.
|
||||
Closer should feel like a conversation game couples voluntarily keep playing because they are having fun.
|
||||
|
||||
Every question should move the couple toward at least one of these:
|
||||
|
||||
- laughing
|
||||
- flirting
|
||||
- learning something new
|
||||
- remembering something
|
||||
- planning something together
|
||||
- feeling understood
|
||||
- feeling appreciated
|
||||
- creating a future memory
|
||||
* laughing
|
||||
* flirting
|
||||
* learning something new
|
||||
* remembering something
|
||||
* planning something together
|
||||
* feeling understood
|
||||
* feeling appreciated
|
||||
* creating a future memory
|
||||
|
||||
If a question does none of those things, delete it.
|
||||
|
||||
------------------------------------------------------------------------
|
||||
## Consumer First
|
||||
|
||||
# Consumer First
|
||||
|
||||
Every question must pass this test.
|
||||
Every question must pass this test:
|
||||
|
||||
Would a real couple willingly answer this on a Friday night?
|
||||
|
||||
|
|
@ -40,67 +36,264 @@ Never write for psychologists.
|
|||
|
||||
Write for normal couples.
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
# Product Standard
|
||||
## Product Standard
|
||||
|
||||
Closer should feel premium.
|
||||
|
||||
Every category should feel like it was hand written by an experienced
|
||||
relationship coach and game designer, not generated by AI.
|
||||
Every category should feel like it was handwritten by an experienced relationship coach and game designer, not generated by AI.
|
||||
|
||||
If a user can predict the next question, the category fails.
|
||||
|
||||
------------------------------------------------------------------------
|
||||
## Question Mix
|
||||
|
||||
# Question Mix
|
||||
Standard 250 question packs should use this mix:
|
||||
|
||||
Per 250 questions:
|
||||
|
||||
- 140 multi_choice
|
||||
- 50 single_choice
|
||||
- 35 scale
|
||||
- 15 this_or_that
|
||||
- 10 written
|
||||
| Type | Count |
|
||||
|---|---:|
|
||||
| multi_choice | 140 |
|
||||
| single_choice | 50 |
|
||||
| scale | 35 |
|
||||
| this_or_that | 15 |
|
||||
| written | 10 |
|
||||
|
||||
At least 76 percent must be choice based.
|
||||
|
||||
Typing should feel rare and meaningful.
|
||||
|
||||
------------------------------------------------------------------------
|
||||
Special packs may override this mix only when the override is documented in the pack metadata and in `QUESTION_REWRITE_PLAN.md`.
|
||||
|
||||
# Emotional Mix
|
||||
## Emotional Mix
|
||||
|
||||
Each category should roughly contain:
|
||||
Each standard category should roughly contain:
|
||||
|
||||
- 35 percent playful
|
||||
- 25 percent everyday relationship
|
||||
- 20 percent meaningful
|
||||
- 10 percent future focused
|
||||
- 10 percent deeper vulnerability
|
||||
* 35 percent playful
|
||||
* 25 percent everyday relationship
|
||||
* 20 percent meaningful
|
||||
* 10 percent future focused
|
||||
* 10 percent deeper vulnerability
|
||||
|
||||
Never stack several heavy questions together.
|
||||
|
||||
Alternate emotional intensity naturally.
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
# Conversation Goals
|
||||
## Conversation Goals
|
||||
|
||||
Every question should create at least one of these reactions:
|
||||
|
||||
- "I didn't know that."
|
||||
- "That's adorable."
|
||||
- "We should actually do that."
|
||||
- "I can't believe you picked that."
|
||||
- "I've never thought about that."
|
||||
- "That's a really good point."
|
||||
* "I didn't know that."
|
||||
* "That's adorable."
|
||||
* "We should actually do that."
|
||||
* "I can't believe you picked that."
|
||||
* "I've never thought about that."
|
||||
* "That's a really good point."
|
||||
|
||||
If none apply, rewrite it.
|
||||
|
||||
------------------------------------------------------------------------
|
||||
## Daily Single Choice Voice Standard
|
||||
|
||||
# Variety
|
||||
Daily questions are different from normal category packs.
|
||||
|
||||
They should feel like two people deciding what to do, say, eat, watch, laugh about, try, or enjoy together today.
|
||||
|
||||
Daily questions should be:
|
||||
|
||||
* quick
|
||||
* warm
|
||||
* concrete
|
||||
* playful
|
||||
* easy to answer
|
||||
* relationship focused
|
||||
* doable in normal life
|
||||
|
||||
Daily questions should not sound like:
|
||||
|
||||
* therapy homework
|
||||
* self-help worksheets
|
||||
* HR wellness surveys
|
||||
* abstract emotional processing
|
||||
* generic AI relationship advice
|
||||
|
||||
If the question sounds like a couples counselor wrote it, rewrite it.
|
||||
|
||||
### Banned Daily Tone Words
|
||||
|
||||
Avoid these in daily questions:
|
||||
|
||||
* reset
|
||||
* process
|
||||
* mental load
|
||||
* emotional load
|
||||
* autopilot
|
||||
* pressure
|
||||
* soft landing
|
||||
* relationship dynamic
|
||||
* name the mood
|
||||
* emotional processing
|
||||
* communication style
|
||||
* conflict framework
|
||||
|
||||
These are not banned from every serious category forever, but they should almost never appear in daily questions.
|
||||
|
||||
### Daily Good vs Bad
|
||||
|
||||
Good daily question:
|
||||
|
||||
```text
|
||||
Long day. What would actually help tonight?
|
||||
```
|
||||
|
||||
Good options:
|
||||
|
||||
* A hug before chores
|
||||
* Dinner without overthinking it
|
||||
* Ten quiet minutes together
|
||||
* One tiny task done
|
||||
|
||||
Bad daily question:
|
||||
|
||||
```text
|
||||
Which reset would help us avoid autopilot?
|
||||
```
|
||||
|
||||
Why it fails:
|
||||
|
||||
* therapy coded
|
||||
* abstract
|
||||
* not concrete
|
||||
* sounds generated
|
||||
|
||||
## Daily Single Choice Weekday Lineup
|
||||
|
||||
This is a special daily pack, not a standard 250 question category pack. Target counts are 500 total, 75 free, 425 premium, and 500 single_choice.
|
||||
|
||||
|
||||
### Monday: Mood Check Monday
|
||||
|
||||
Purpose: pick what kind of day the relationship needs.
|
||||
|
||||
Vibe: gentle, simple, start of week, low pressure.
|
||||
|
||||
Example:
|
||||
|
||||
```text
|
||||
What would help us start the week feeling closer?
|
||||
```
|
||||
|
||||
Required tag:
|
||||
|
||||
```text
|
||||
daily_monday_mood_check
|
||||
```
|
||||
|
||||
### Tuesday: Tiny Win Tuesday
|
||||
|
||||
Purpose: pick one small thing to do together.
|
||||
|
||||
Vibe: low effort, practical, cute, doable.
|
||||
|
||||
Example:
|
||||
|
||||
```text
|
||||
Which tiny win should we aim for tonight?
|
||||
```
|
||||
|
||||
Required tag:
|
||||
|
||||
```text
|
||||
daily_tuesday_tiny_win
|
||||
```
|
||||
|
||||
### Wednesday: Real One Wednesday
|
||||
|
||||
Purpose: pick the most honest answer.
|
||||
|
||||
Vibe: present, grounded, lightly meaningful, not heavy.
|
||||
|
||||
Example:
|
||||
|
||||
```text
|
||||
What would make us feel more present with each other tonight?
|
||||
```
|
||||
|
||||
Required tag:
|
||||
|
||||
```text
|
||||
daily_wednesday_real_one
|
||||
```
|
||||
|
||||
### Thursday: Laugh It Off Thursday
|
||||
|
||||
Purpose: pick something silly or low pressure.
|
||||
|
||||
Vibe: weird, funny, tired week energy.
|
||||
|
||||
Example:
|
||||
|
||||
```text
|
||||
What ridiculous little thing would improve our night?
|
||||
```
|
||||
|
||||
Required tag:
|
||||
|
||||
```text
|
||||
daily_thursday_laugh
|
||||
```
|
||||
|
||||
### Friday: Flirty Friday
|
||||
|
||||
Purpose: pick something playful, sweet, attractive, or date like.
|
||||
|
||||
Vibe: compliments, attraction, flirting, fun.
|
||||
|
||||
Example:
|
||||
|
||||
```text
|
||||
What kind of flirting from me still works best?
|
||||
```
|
||||
|
||||
Required tag:
|
||||
|
||||
```text
|
||||
daily_friday_flirty
|
||||
```
|
||||
|
||||
### Saturday: Side Quest Saturday
|
||||
|
||||
Purpose: pick a tiny adventure or date idea.
|
||||
|
||||
Vibe: playful, outside the routine, doable.
|
||||
|
||||
Example:
|
||||
|
||||
```text
|
||||
What kind of mini adventure sounds most like us today?
|
||||
```
|
||||
|
||||
Required tag:
|
||||
|
||||
```text
|
||||
daily_saturday_side_quest
|
||||
```
|
||||
|
||||
### Sunday: Slow Burn Sunday
|
||||
|
||||
Purpose: pick a warm intimacy or closeness answer.
|
||||
|
||||
Vibe: affectionate, cozy, optionally spicy, never pushy.
|
||||
|
||||
Example:
|
||||
|
||||
```text
|
||||
What kind of closeness would feel best tonight?
|
||||
```
|
||||
|
||||
Required tag:
|
||||
|
||||
```text
|
||||
daily_sunday_slow_burn
|
||||
```
|
||||
|
||||
## Variety
|
||||
|
||||
Never repeat sentence openings.
|
||||
|
||||
|
|
@ -108,45 +301,41 @@ Mix structures constantly.
|
|||
|
||||
Examples:
|
||||
|
||||
- Imagine...
|
||||
- Suppose...
|
||||
- If we suddenly...
|
||||
- Pretend...
|
||||
- Pick every answer...
|
||||
- Finish this thought...
|
||||
- What's one thing...
|
||||
- Which tiny habit...
|
||||
- If we only had one hour...
|
||||
- What would make...
|
||||
- When do you feel...
|
||||
- Which sounds most like us...
|
||||
* Imagine...
|
||||
* Suppose...
|
||||
* If we suddenly...
|
||||
* Pretend...
|
||||
* Pick every answer...
|
||||
* Finish this thought...
|
||||
* What's one thing...
|
||||
* Which tiny habit...
|
||||
* If we only had one hour...
|
||||
* What would make...
|
||||
* When do you feel...
|
||||
* Which sounds most like us...
|
||||
|
||||
No opening should dominate a category.
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
# No AI Writing
|
||||
## No AI Writing
|
||||
|
||||
Reject questions that sound like:
|
||||
|
||||
- Describe...
|
||||
- Reflect on...
|
||||
- Discuss...
|
||||
- Evaluate...
|
||||
- In what ways...
|
||||
- How satisfied are you...
|
||||
- What boundary around...
|
||||
- Explore your feelings...
|
||||
- Identify...
|
||||
- Rate the effectiveness...
|
||||
* Describe...
|
||||
* Reflect on...
|
||||
* Discuss...
|
||||
* Evaluate...
|
||||
* In what ways...
|
||||
* How satisfied are you...
|
||||
* What boundary around...
|
||||
* Explore your feelings...
|
||||
* Identify...
|
||||
* Rate the effectiveness...
|
||||
|
||||
These sound like surveys.
|
||||
|
||||
Not conversations.
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
# Multiple Choice
|
||||
## Multiple Choice
|
||||
|
||||
Should make people pause because several answers feel right.
|
||||
|
||||
|
|
@ -158,39 +347,34 @@ Avoid filler.
|
|||
|
||||
Whenever realistic, allow multiple selections.
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
# Single Choice
|
||||
## Single Choice
|
||||
|
||||
There should never be one obvious answer.
|
||||
|
||||
Every option should feel believable.
|
||||
|
||||
------------------------------------------------------------------------
|
||||
Every option must directly answer the prompt.
|
||||
|
||||
# Scale
|
||||
Use 4 to 6 options.
|
||||
|
||||
Use scales only when measuring intensity genuinely improves the
|
||||
conversation.
|
||||
## Scale
|
||||
|
||||
Use scales only when measuring intensity genuinely improves the conversation.
|
||||
|
||||
Never use a scale because it is easier than writing good options.
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
# This Or That
|
||||
## This Or That
|
||||
|
||||
Keep them:
|
||||
|
||||
- fast
|
||||
- funny
|
||||
- memorable
|
||||
- shareable
|
||||
* fast
|
||||
* funny
|
||||
* memorable
|
||||
* shareable
|
||||
|
||||
Most should take under three seconds.
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
# Written Questions
|
||||
## Written Questions
|
||||
|
||||
Written questions must earn the keyboard.
|
||||
|
||||
|
|
@ -198,113 +382,99 @@ Only use them when typing creates something choices cannot.
|
|||
|
||||
Good written questions create:
|
||||
|
||||
- stories
|
||||
- memories
|
||||
- appreciation
|
||||
- future plans
|
||||
* stories
|
||||
* memories
|
||||
* appreciation
|
||||
* future plans
|
||||
|
||||
Never ask users to write essays.
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
# Fun Rule
|
||||
## Fun Rule
|
||||
|
||||
Every category should include:
|
||||
|
||||
- inside jokes
|
||||
- tiny challenges
|
||||
- food debates
|
||||
- traditions
|
||||
- bucket lists
|
||||
- silly scenarios
|
||||
- future adventures
|
||||
- friendly competitions
|
||||
- low pressure date ideas
|
||||
- unexpected situations
|
||||
* inside jokes
|
||||
* tiny challenges
|
||||
* food debates
|
||||
* traditions
|
||||
* bucket lists
|
||||
* silly scenarios
|
||||
* future adventures
|
||||
* friendly competitions
|
||||
* low pressure date ideas
|
||||
* unexpected situations
|
||||
|
||||
Even serious categories need moments to smile.
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
# Relationship First
|
||||
## Relationship First
|
||||
|
||||
Anchor every question to:
|
||||
|
||||
- us
|
||||
- we
|
||||
- you
|
||||
- your partner
|
||||
- our memories
|
||||
- our future
|
||||
* us
|
||||
* we
|
||||
* you
|
||||
* your partner
|
||||
* our memories
|
||||
* our future
|
||||
|
||||
Avoid generic questions that could belong in any survey.
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
# Duplicate Prevention
|
||||
## Duplicate Prevention
|
||||
|
||||
Never repeat:
|
||||
|
||||
- sentence openings
|
||||
- concepts
|
||||
- option lists
|
||||
- conversation goals
|
||||
- emotional outcome
|
||||
* sentence openings
|
||||
* concepts
|
||||
* option lists
|
||||
* conversation goals
|
||||
* emotional outcome
|
||||
|
||||
If two questions feel similar, delete one.
|
||||
|
||||
------------------------------------------------------------------------
|
||||
## Readability Test
|
||||
|
||||
# Readability Test
|
||||
|
||||
After completing a category:
|
||||
|
||||
Randomly read 30 questions.
|
||||
After completing a category, randomly read 30 questions.
|
||||
|
||||
Reject the category if:
|
||||
|
||||
- the writing feels repetitive
|
||||
- the openings repeat too often
|
||||
- the tone feels robotic
|
||||
- the next question becomes predictable
|
||||
- multiple questions blend together
|
||||
- it sounds AI generated
|
||||
* the writing feels repetitive
|
||||
* the openings repeat too often
|
||||
* the tone feels robotic
|
||||
* the next question becomes predictable
|
||||
* multiple questions blend together
|
||||
* it sounds AI generated
|
||||
* it sounds clinical
|
||||
* it sounds like a wellness worksheet
|
||||
|
||||
This test is mandatory.
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
# Premium Test
|
||||
## Premium Test
|
||||
|
||||
Before approving every question ask:
|
||||
|
||||
- Would I pay for this?
|
||||
- Would this start a real conversation?
|
||||
- Would this create a memory?
|
||||
- Would I screenshot this?
|
||||
- Would I send this to my partner?
|
||||
- Would I smile while answering it?
|
||||
* Would I pay for this?
|
||||
* Would this start a real conversation?
|
||||
* Would this create a memory?
|
||||
* Would I screenshot this?
|
||||
* Would I send this to my partner?
|
||||
* Would I smile while answering it?
|
||||
|
||||
If any answer is no, rewrite it.
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
# Final Approval
|
||||
## Final Approval
|
||||
|
||||
A category is complete only if:
|
||||
|
||||
- schema validation passes
|
||||
- duplicate checks pass
|
||||
- readability test passes
|
||||
- category identity is obvious
|
||||
- emotional mix feels balanced
|
||||
- consumer test passes
|
||||
- premium test passes
|
||||
- it does not sound AI generated
|
||||
* schema validation passes
|
||||
* duplicate checks pass
|
||||
* readability test passes
|
||||
* category identity is obvious
|
||||
* emotional mix feels balanced
|
||||
* consumer test passes
|
||||
* premium test passes
|
||||
* it does not sound AI generated
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
# Final Rule
|
||||
## Final Rule
|
||||
|
||||
Conversation quality always beats quantity.
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
# Closer Question Quality Checklist v2
|
||||
# Closer Question Quality Checklist v3
|
||||
|
||||
**See also:** [QUESTION_CONTENT_GUIDE.md](QUESTION_CONTENT_GUIDE.md) — writing philosophy, voice & tone | [QUESTION_SCHEMA.md](QUESTION_SCHEMA.md) — JSON schema & validation rules | [QUESTION_REWRITE_PLAN.md](QUESTION_REWRITE_PLAN.md) — rewrite checklist & category order
|
||||
**See also:** [QUESTION_CONTENT_GUIDE.md](QUESTION_CONTENT_GUIDE.md) | [QUESTION_SCHEMA.md](QUESTION_SCHEMA.md) | [QUESTION_REWRITE_PLAN.md](QUESTION_REWRITE_PLAN.md)
|
||||
|
||||
## Purpose
|
||||
|
||||
|
|
@ -33,6 +33,87 @@ These are therapy worksheet patterns.
|
|||
|
||||
Burn them politely.
|
||||
|
||||
## 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
|
||||
* every question has exactly one weekday tag
|
||||
* every question has 4 to 6 options
|
||||
|
||||
## Daily Pack Rejects
|
||||
|
||||
For daily single choice weekday questions, reject any prompt that feels like:
|
||||
|
||||
* therapy homework
|
||||
* self-help content
|
||||
* an HR wellness survey
|
||||
* a communication worksheet
|
||||
* abstract emotional processing
|
||||
* generic AI relationship advice
|
||||
|
||||
Reject daily questions using these words or phrases unless there is a strong reason:
|
||||
|
||||
* reset
|
||||
* process
|
||||
* mental load
|
||||
* emotional load
|
||||
* autopilot
|
||||
* pressure
|
||||
* soft landing
|
||||
* relationship dynamic
|
||||
* name the mood
|
||||
* emotional processing
|
||||
* communication style
|
||||
* conflict framework
|
||||
|
||||
Bad daily question:
|
||||
|
||||
```text
|
||||
Which reset would help us avoid autopilot?
|
||||
```
|
||||
|
||||
Good daily question:
|
||||
|
||||
```text
|
||||
Long day. What would actually help tonight?
|
||||
```
|
||||
|
||||
Bad daily question:
|
||||
|
||||
```text
|
||||
What would help us process the emotional load of the week?
|
||||
```
|
||||
|
||||
Good daily question:
|
||||
|
||||
```text
|
||||
What tiny nice thing would make tonight better?
|
||||
```
|
||||
|
||||
## Daily Question Voice Test
|
||||
|
||||
A daily question passes only if the answer is yes to all of these:
|
||||
|
||||
* Would a real couple answer this in under 10 seconds?
|
||||
* Does it sound like something normal people would say?
|
||||
* Is it about today or normal life?
|
||||
* Are the options concrete?
|
||||
* Does every option answer the prompt?
|
||||
* Is it warm, playful, honest, or useful?
|
||||
|
||||
Reject it if:
|
||||
|
||||
* it sounds clinical
|
||||
* it sounds like advice
|
||||
* it sounds like therapy
|
||||
* it is too abstract
|
||||
* it uses a wellness app phrase
|
||||
* it could belong in any generic relationship app
|
||||
|
||||
## Duplicate Pattern Rejects
|
||||
|
||||
Reject the question if it repeats too much of a previous question:
|
||||
|
|
@ -109,6 +190,21 @@ For multi_choice and single_choice:
|
|||
* avoid options that shame either partner
|
||||
* keep options short
|
||||
* make options feel realistic
|
||||
* make every option answer the exact prompt
|
||||
|
||||
Bad options:
|
||||
|
||||
* Be better
|
||||
* Communicate more
|
||||
* Fix us
|
||||
* Other
|
||||
|
||||
Good options:
|
||||
|
||||
* Make dinner easy
|
||||
* Take a short walk
|
||||
* Send a sweet text
|
||||
* Save me the good blanket
|
||||
|
||||
## Written Question Gate
|
||||
|
||||
|
|
@ -178,15 +274,17 @@ Every question must clearly belong to its category.
|
|||
|
||||
Reject questions that could fit anywhere.
|
||||
|
||||
Example:
|
||||
|
||||
Bad for Gratitude:
|
||||
|
||||
* What do you like most about us?
|
||||
```text
|
||||
What do you like most about us?
|
||||
```
|
||||
|
||||
Better:
|
||||
|
||||
* What's one small thing I do that deserves more credit?
|
||||
```text
|
||||
What's one small thing I do that deserves more credit?
|
||||
```
|
||||
|
||||
## Relationship Anchor
|
||||
|
||||
|
|
@ -216,6 +314,8 @@ Reject the pack if it sounds:
|
|||
* too similar
|
||||
* too heavy
|
||||
* too generic
|
||||
* like a wellness worksheet
|
||||
* like a couples counselor wrote it
|
||||
|
||||
## Final Approval
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
# Closer Question Rewrite Plan v2
|
||||
# Closer Question Rewrite Plan v3
|
||||
|
||||
**See also:** [QUESTION_CONTENT_GUIDE.md](QUESTION_CONTENT_GUIDE.md) — writing philosophy, voice & tone | [QUESTION_SCHEMA.md](QUESTION_SCHEMA.md) — JSON schema & validation rules | [QUESTION_QUALITY_CHECKLIST.md](QUESTION_QUALITY_CHECKLIST.md) — quality gate before commit
|
||||
**See also:** [QUESTION_CONTENT_GUIDE.md](QUESTION_CONTENT_GUIDE.md) | [QUESTION_SCHEMA.md](QUESTION_SCHEMA.md) | [QUESTION_QUALITY_CHECKLIST.md](QUESTION_QUALITY_CHECKLIST.md)
|
||||
|
||||
## Product Goal
|
||||
|
||||
|
|
@ -22,7 +22,7 @@ Use these type names exactly:
|
|||
|
||||
Do not rename them unless the app code is updated first.
|
||||
|
||||
## Question Mix per 250
|
||||
## Standard Question Mix per 250
|
||||
|
||||
| Type | Count |
|
||||
|---|---:|
|
||||
|
|
@ -38,7 +38,7 @@ Written questions should stay rare.
|
|||
|
||||
## Free and Premium Split
|
||||
|
||||
Per 250 question pack:
|
||||
Per standard 250 question pack:
|
||||
|
||||
* 75 free
|
||||
* 175 premium
|
||||
|
|
@ -63,9 +63,103 @@ Free should feel useful, fun, and complete.
|
|||
|
||||
Premium should feel deeper, richer, and more varied.
|
||||
|
||||
## Special Pack Exception
|
||||
|
||||
Some packs are product-specific and may override the standard 250 question mix.
|
||||
|
||||
A special pack must document:
|
||||
|
||||
* pack id
|
||||
* file name
|
||||
* expected count
|
||||
* allowed question types
|
||||
* free count
|
||||
* premium count
|
||||
* required tags
|
||||
* reason for the exception
|
||||
|
||||
Special packs still must pass tone, duplicate, option, and schema review.
|
||||
|
||||
## Daily Single Choice Weekday Pack
|
||||
|
||||
Pack id:
|
||||
|
||||
```text
|
||||
daily_single_choice_weekly_v1
|
||||
```
|
||||
|
||||
Current compatibility file, if the app still expects it:
|
||||
|
||||
```text
|
||||
daily_fun_multiple_choice_v3.json
|
||||
```
|
||||
|
||||
Recommended file name after code cleanup:
|
||||
|
||||
```text
|
||||
daily_single_choice_weekly_v1.json
|
||||
```
|
||||
|
||||
Expected counts:
|
||||
|
||||
* total questions: 500
|
||||
* free questions: 75
|
||||
* premium questions: 425
|
||||
* type count: 500 single_choice
|
||||
|
||||
These counts are a special daily pack exception. Do not use the standard 250 question mix for this file.
|
||||
|
||||
Rules:
|
||||
|
||||
* every question must be single_choice
|
||||
* every question must have 4 to 6 options
|
||||
* every question must have exactly one weekday tag
|
||||
* every option must answer the prompt
|
||||
* no therapy worksheet tone
|
||||
* no wellness survey tone
|
||||
* no repeated option lists
|
||||
|
||||
Weekday tags:
|
||||
|
||||
* daily_monday_mood_check
|
||||
* daily_tuesday_tiny_win
|
||||
* daily_wednesday_real_one
|
||||
* daily_thursday_laugh
|
||||
* daily_friday_flirty
|
||||
* daily_saturday_side_quest
|
||||
* daily_sunday_slow_burn
|
||||
|
||||
Weekday lineup:
|
||||
|
||||
| Day | Theme | Purpose |
|
||||
|---|---|---|
|
||||
| Monday | Mood Check Monday | Pick what kind of day the relationship needs |
|
||||
| Tuesday | Tiny Win Tuesday | Pick one small thing to do together |
|
||||
| Wednesday | Real One Wednesday | Pick the most honest answer |
|
||||
| Thursday | Laugh It Off Thursday | Pick something silly or low pressure |
|
||||
| Friday | Flirty Friday | Pick something playful, sweet, or date like |
|
||||
| Saturday | Side Quest Saturday | Pick a tiny adventure or date idea |
|
||||
| Sunday | Slow Burn Sunday | Pick a warm intimacy or closeness answer |
|
||||
|
||||
## Daily Pack Writing Workflow
|
||||
|
||||
Do not write 500 daily questions in one pass.
|
||||
|
||||
Use this process:
|
||||
|
||||
1. Write 20 to 30 sample questions for one weekday.
|
||||
2. Review tone before scaling.
|
||||
3. Remove therapy coded words.
|
||||
4. Confirm every option answers the prompt.
|
||||
5. Check opening variety.
|
||||
6. Check exact option list reuse.
|
||||
7. Only then write the next batch.
|
||||
8. After all weekdays are drafted, read 30 random questions aloud.
|
||||
9. Reject the pack if it sounds repetitive, clinical, generic, or AI written.
|
||||
|
||||
## Emotional Mix
|
||||
|
||||
Every category should roughly include:
|
||||
Every standard category should roughly include:
|
||||
|
||||
* 35 percent playful
|
||||
* 25 percent everyday relationship
|
||||
|
|
@ -77,21 +171,23 @@ Never group heavy questions together.
|
|||
|
||||
Every category must include lighter moments.
|
||||
|
||||
Daily packs should lean more playful, practical, and low pressure than standard category packs.
|
||||
|
||||
## Rewrite Rules
|
||||
|
||||
For every category:
|
||||
|
||||
* Rewrite every question from scratch.
|
||||
* Keep category ids.
|
||||
* Use conversational language.
|
||||
* Avoid therapy wording.
|
||||
* Avoid survey wording.
|
||||
* Avoid repetitive templates.
|
||||
* Use 4 to 6 options for choice questions.
|
||||
* Keep written questions rare.
|
||||
* Add fun to every category.
|
||||
* Make every category feel different.
|
||||
* Reject questions that feel generated.
|
||||
* rewrite every question from scratch
|
||||
* keep category ids unless renaming is planned with app code
|
||||
* use conversational language
|
||||
* avoid therapy wording
|
||||
* avoid survey wording
|
||||
* avoid repetitive templates
|
||||
* use 4 to 6 options for choice questions
|
||||
* keep written questions rare
|
||||
* add fun to every category
|
||||
* make every category feel different
|
||||
* reject questions that feel generated
|
||||
|
||||
## Rewrite Order
|
||||
|
||||
|
|
@ -116,6 +212,7 @@ For every category:
|
|||
19. couple_intimacy
|
||||
20. sex_and_desire
|
||||
21. sexual_preferences
|
||||
22. daily_single_choice_weekly_v1
|
||||
|
||||
## Serious Category Rule
|
||||
|
||||
|
|
@ -125,9 +222,9 @@ Do not make conflict, trust, boundaries, or intimacy feel like couples counselin
|
|||
|
||||
Use soft, safe, specific wording.
|
||||
|
||||
## Validation Rules
|
||||
## Validation Rules for Standard Packs
|
||||
|
||||
Every rewritten pack must pass:
|
||||
Every standard rewritten pack must pass:
|
||||
|
||||
* valid JSON
|
||||
* exactly 250 questions
|
||||
|
|
@ -151,6 +248,26 @@ Every rewritten pack must pass:
|
|||
* no therapy worksheet tone
|
||||
* no obvious AI repetition
|
||||
|
||||
## Validation Rules for Special Daily Packs
|
||||
|
||||
Every daily single choice weekday pack must pass:
|
||||
|
||||
* valid JSON
|
||||
* metadata counts match actual counts
|
||||
* exactly 500 questions unless a new documented app decision changes the count
|
||||
* exactly 75 free questions
|
||||
* exactly 425 premium questions
|
||||
* every question is single_choice
|
||||
* every choice question has 4 to 6 options
|
||||
* every question has exactly one weekday tag
|
||||
* no duplicate ids
|
||||
* no duplicate question text
|
||||
* no exact repeated option lists
|
||||
* no placeholder text
|
||||
* no therapy worksheet tone
|
||||
* no wellness survey tone
|
||||
* no obvious AI repetition
|
||||
|
||||
## Final Rule
|
||||
|
||||
The schema only proves the file can load.
|
||||
|
|
|
|||
|
|
@ -1,15 +1,14 @@
|
|||
# Closer Question Schema
|
||||
|
||||
**See also:** [QUESTION_CONTENT_GUIDE.md](QUESTION_CONTENT_GUIDE.md) — writing philosophy, voice & tone | [QUESTION_REWRITE_PLAN.md](QUESTION_REWRITE_PLAN.md) — rewrite checklist & category order | [QUESTION_QUALITY_CHECKLIST.md](QUESTION_QUALITY_CHECKLIST.md) — quality gate before commit
|
||||
**See also:** [QUESTION_CONTENT_GUIDE.md](QUESTION_CONTENT_GUIDE.md) | [QUESTION_REWRITE_PLAN.md](QUESTION_REWRITE_PLAN.md) | [QUESTION_QUALITY_CHECKLIST.md](QUESTION_QUALITY_CHECKLIST.md)
|
||||
|
||||
## Purpose
|
||||
|
||||
This document defines the JSON schema, question types, validation rules, and required counts for Closer question packs.
|
||||
|
||||
For writing philosophy and tone, see `QUESTION_CONTENT_GUIDE.md`.
|
||||
For the active rewrite checklist and category order, see `QUESTION_REWRITE_PLAN.md`.
|
||||
|
||||
---
|
||||
For rewrite workflow and special pack exceptions, see `QUESTION_REWRITE_PLAN.md`.
|
||||
|
||||
# 1. Question Types
|
||||
|
||||
|
|
@ -17,7 +16,7 @@ For the active rewrite checklist and category order, see `QUESTION_REWRITE_PLAN.
|
|||
|
||||
Select every option that applies.
|
||||
|
||||
Primary question type. At least 75% of all questions must be choice-based (multi_choice + single_choice).
|
||||
Primary question type. At least 75 percent of standard pack questions must be choice based when combined with `single_choice`.
|
||||
|
||||
```json
|
||||
{
|
||||
|
|
@ -36,9 +35,10 @@ Primary question type. At least 75% of all questions must be choice-based (multi
|
|||
|
||||
Rules:
|
||||
|
||||
- Prompt should clearly allow multiple answers.
|
||||
- Options should not shame either partner.
|
||||
- Include practical and emotional options when possible.
|
||||
* Prompt should clearly allow multiple answers.
|
||||
* Options should not shame either partner.
|
||||
* Include practical and emotional options when possible.
|
||||
* Use 4 to 6 options.
|
||||
|
||||
## single_choice
|
||||
|
||||
|
|
@ -60,10 +60,11 @@ Select one best answer.
|
|||
|
||||
Rules:
|
||||
|
||||
- Options should be short.
|
||||
- Options should not overlap too much.
|
||||
- Options should sound like real choices.
|
||||
- Use 4 to 6 options.
|
||||
* Options should be short.
|
||||
* Options should not overlap too much.
|
||||
* Options should sound like real choices.
|
||||
* Every option must directly answer the prompt.
|
||||
* Use 4 to 6 options.
|
||||
|
||||
## scale
|
||||
|
||||
|
|
@ -84,25 +85,27 @@ Rate agreement, comfort, importance, confidence, or frequency.
|
|||
|
||||
Rules:
|
||||
|
||||
- Scale labels should be gentle and neutral.
|
||||
- Do not make the low end sound bad or shameful.
|
||||
- Scale questions should measure one thing only.
|
||||
* Scale labels should be gentle and neutral.
|
||||
* Do not make the low end sound bad or shameful.
|
||||
* Scale questions should measure one thing only.
|
||||
|
||||
Bad:
|
||||
|
||||
```
|
||||
```text
|
||||
How badly are we failing at making time for each other?
|
||||
```
|
||||
|
||||
Better:
|
||||
|
||||
```
|
||||
```text
|
||||
How much would some intentional time together help us right now?
|
||||
```
|
||||
|
||||
## this_or_that
|
||||
|
||||
Very fast playful questions. Should take under three seconds.
|
||||
Very fast playful questions.
|
||||
|
||||
Should take under three seconds.
|
||||
|
||||
```json
|
||||
{
|
||||
|
|
@ -113,9 +116,9 @@ Very fast playful questions. Should take under three seconds.
|
|||
|
||||
Rules:
|
||||
|
||||
- Prompts should be quick.
|
||||
- Avoid choices that imply one partner is wrong.
|
||||
- Best used in fun, date, intimacy, home, and lifestyle packs.
|
||||
* Prompts should be quick.
|
||||
* Avoid choices that imply one partner is wrong.
|
||||
* Best used in fun, date, intimacy, home, and lifestyle packs.
|
||||
|
||||
## written
|
||||
|
||||
|
|
@ -137,7 +140,7 @@ Written questions require an `answer` configuration with `max_length`.
|
|||
|
||||
Good written examples:
|
||||
|
||||
```
|
||||
```text
|
||||
What is one small thing I do that makes you feel cared for?
|
||||
What is a memory of us that still makes you smile?
|
||||
What is something you wish we made more time for?
|
||||
|
|
@ -145,65 +148,88 @@ What is something you wish we made more time for?
|
|||
|
||||
Avoid written questions that are too vague:
|
||||
|
||||
```
|
||||
```text
|
||||
How can we deepen our connection?
|
||||
```
|
||||
|
||||
Better:
|
||||
|
||||
```
|
||||
```text
|
||||
What is one thing we could do this week that would make us feel more like a team?
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# 2. Required Counts
|
||||
|
||||
Every 250-question pack must contain:
|
||||
## Standard 250 Question Packs
|
||||
|
||||
Every standard 250 question pack must contain:
|
||||
|
||||
| Type | Count | Percent |
|
||||
|---|---|---|
|
||||
|---|---:|---:|
|
||||
| multi_choice | 140 | 56% |
|
||||
| single_choice | 50 | 20% |
|
||||
| scale | 35 | 14% |
|
||||
| this_or_that | 15 | 6% |
|
||||
| written | 10 | 4% |
|
||||
|
||||
At least 75% of all questions must be choice-based (multi_choice + single_choice).
|
||||
At least 75 percent of all standard pack questions must be choice based.
|
||||
|
||||
Written questions should be rare and only used when typing creates a better conversation.
|
||||
|
||||
## Special Packs
|
||||
|
||||
Special product packs may override standard counts only when documented.
|
||||
|
||||
The daily single choice weekday pack is a special pack.
|
||||
|
||||
It may use all `single_choice` questions when the pack metadata and rewrite plan say so.
|
||||
|
||||
Current daily pack target counts:
|
||||
|
||||
| Field | Count |
|
||||
|---|---:|
|
||||
| total | 500 |
|
||||
| free | 75 |
|
||||
| premium | 425 |
|
||||
| single_choice | 500 |
|
||||
|
||||
These counts do not apply to standard category packs. Standard packs still use the normal 250 question mix.
|
||||
|
||||
## Free vs Premium
|
||||
|
||||
Standard 250 question packs:
|
||||
|
||||
| Access | Count |
|
||||
|---|---|
|
||||
|---|---:|
|
||||
| free | 75 |
|
||||
| premium | 175 |
|
||||
|
||||
Special packs must define their own free and premium counts in metadata.
|
||||
|
||||
## Depth
|
||||
|
||||
Valid depth values:
|
||||
Valid depth values in the documented schema:
|
||||
|
||||
- light
|
||||
- medium
|
||||
- deep
|
||||
* light
|
||||
* medium
|
||||
* deep
|
||||
|
||||
Do not use numeric depth values unless the active app import code still requires numeric depth for compatibility. If compatibility requires numeric depth, document the exception in the pack README and fix the import code later.
|
||||
|
||||
## Access
|
||||
|
||||
Valid access values:
|
||||
|
||||
- free
|
||||
- premium
|
||||
* free
|
||||
* premium
|
||||
|
||||
## Category Access
|
||||
|
||||
Valid category access values:
|
||||
|
||||
- free
|
||||
- premium
|
||||
- mixed
|
||||
|
||||
---
|
||||
* free
|
||||
* premium
|
||||
* mixed
|
||||
|
||||
# 3. JSON Structure
|
||||
|
||||
|
|
@ -243,115 +269,139 @@ Valid category access values:
|
|||
}
|
||||
```
|
||||
|
||||
## Scale question object
|
||||
## Daily single choice category metadata
|
||||
|
||||
```json
|
||||
{
|
||||
"id": "dn_042",
|
||||
"type": "scale",
|
||||
"text": "How much do you feel like we need a real date soon?",
|
||||
"depth": "medium",
|
||||
"access": "free",
|
||||
"sex": "neutral",
|
||||
"scale": {
|
||||
"min": 1,
|
||||
"max": 5,
|
||||
"min_label": "Not much",
|
||||
"max_label": "Very much"
|
||||
}
|
||||
"id": "daily_single_choice_weekly_v1",
|
||||
"title": "Daily Single Choice",
|
||||
"access": "mixed",
|
||||
"description": "One weekday themed single choice question per day.",
|
||||
"count": 500,
|
||||
"free_count": 75,
|
||||
"premium_count": 425,
|
||||
"questions": []
|
||||
}
|
||||
```
|
||||
|
||||
## This-or-that question object
|
||||
Use `daily_fun_multiple_choice_v3.json` only as a temporary compatibility filename if the app still expects it. The content inside the file must still be single_choice.
|
||||
|
||||
## Daily single choice question object
|
||||
|
||||
```json
|
||||
{
|
||||
"id": "dn_089",
|
||||
"type": "this_or_that",
|
||||
"text": "Planned date or spontaneous date?",
|
||||
"id": "daily_monday_001",
|
||||
"type": "single_choice",
|
||||
"text": "Long day. What would actually help tonight?",
|
||||
"depth": "light",
|
||||
"access": "free",
|
||||
"sex": "neutral"
|
||||
}
|
||||
```
|
||||
|
||||
## Written question object
|
||||
|
||||
```json
|
||||
{
|
||||
"id": "dn_113",
|
||||
"type": "written",
|
||||
"text": "What is one date we should bring back?",
|
||||
"depth": "medium",
|
||||
"access": "premium",
|
||||
"sex": "neutral",
|
||||
"answer": {
|
||||
"max_length": 500
|
||||
}
|
||||
"tags": ["daily_monday_mood_check"],
|
||||
"options": [
|
||||
{ "id": "hug_before_chores", "text": "A hug before chores" },
|
||||
{ "id": "easy_dinner", "text": "Dinner without overthinking it" },
|
||||
{ "id": "quiet_minutes", "text": "Ten quiet minutes together" },
|
||||
{ "id": "tiny_task", "text": "One tiny task done" }
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Written questions require an `answer` configuration with `max_length`.
|
||||
Daily question rules:
|
||||
|
||||
---
|
||||
* Use `single_choice` only.
|
||||
* Use 4 to 6 options.
|
||||
* Use exactly one weekday tag.
|
||||
* Every option must answer the prompt.
|
||||
* Avoid therapy coded wording.
|
||||
|
||||
Weekday tags:
|
||||
|
||||
* daily_monday_mood_check
|
||||
* daily_tuesday_tiny_win
|
||||
* daily_wednesday_real_one
|
||||
* daily_thursday_laugh
|
||||
* daily_friday_flirty
|
||||
* daily_saturday_side_quest
|
||||
* daily_sunday_slow_burn
|
||||
|
||||
# 4. Validation Rules
|
||||
|
||||
Every rewritten pack must pass:
|
||||
## Standard Packs
|
||||
|
||||
- Valid JSON
|
||||
- Exactly 250 questions
|
||||
- 75 free
|
||||
- 175 premium
|
||||
- 140 multi_choice
|
||||
- 50 single_choice
|
||||
- 35 scale
|
||||
- 15 this_or_that
|
||||
- 10 written
|
||||
- Valid depth values only (light, medium, deep) — no numeric depth values
|
||||
- Valid access values only (free, premium)
|
||||
- Valid type values only (multi_choice, single_choice, scale, this_or_that, written)
|
||||
- Valid sex values only (neutral, female, male)
|
||||
- No duplicate question IDs
|
||||
- No duplicate question texts
|
||||
- No near-duplicate blocks
|
||||
- No malformed keys
|
||||
- No placeholder text
|
||||
- No therapy worksheet tone
|
||||
- Options have unique IDs inside each question
|
||||
- Option IDs are neutral and clean
|
||||
- Scale labels are present when needed
|
||||
- Every choice question has options
|
||||
- Every scale question has scale configuration
|
||||
- Every written question has answer configuration
|
||||
- Every category contains fun, curiosity, and meaningful conversations
|
||||
Every standard rewritten pack must pass:
|
||||
|
||||
* valid JSON
|
||||
* exactly 250 questions
|
||||
* 75 free
|
||||
* 175 premium
|
||||
* 140 multi_choice
|
||||
* 50 single_choice
|
||||
* 35 scale
|
||||
* 15 this_or_that
|
||||
* 10 written
|
||||
* valid depth values only: light, medium, deep
|
||||
* valid access values only: free, premium
|
||||
* valid type values only: multi_choice, single_choice, scale, this_or_that, written
|
||||
* valid sex values only: neutral, female, male
|
||||
* no duplicate question IDs
|
||||
* no duplicate question texts
|
||||
* no near duplicate blocks
|
||||
* no malformed keys
|
||||
* no placeholder text
|
||||
* no therapy worksheet tone
|
||||
* options have unique IDs inside each question
|
||||
* option IDs are neutral and clean
|
||||
* scale labels are present when needed
|
||||
* every choice question has options
|
||||
* every scale question has scale configuration
|
||||
* every written question has answer configuration
|
||||
* every category contains fun, curiosity, and meaningful conversations
|
||||
|
||||
## Daily Single Choice Weekday Packs
|
||||
|
||||
Every daily single choice weekday pack must pass:
|
||||
|
||||
* valid JSON
|
||||
* metadata counts match actual counts
|
||||
* exactly 500 questions unless a new documented app decision changes the count
|
||||
* exactly 75 free questions
|
||||
* exactly 425 premium questions
|
||||
* every question is single_choice
|
||||
* every question has 4 to 6 options
|
||||
* every question has exactly one weekday tag
|
||||
* every option directly answers the prompt
|
||||
* no duplicate question IDs
|
||||
* no duplicate question texts
|
||||
* no exact repeated option lists
|
||||
* no malformed keys
|
||||
* no placeholder text
|
||||
* no therapy worksheet tone
|
||||
* no wellness survey tone
|
||||
* no obvious AI repetition
|
||||
|
||||
## JSON Quality Checklist
|
||||
|
||||
- [ ] Valid JSON.
|
||||
- [ ] Category id matches file purpose.
|
||||
- [ ] Category title sounds user-facing.
|
||||
- [ ] Category access matches actual free/premium strategy.
|
||||
- [ ] Metadata counts match actual question counts.
|
||||
- [ ] All question IDs are unique.
|
||||
- [ ] All question texts are unique.
|
||||
- [ ] No near-duplicate blocks.
|
||||
- [ ] Type counts match metadata.
|
||||
- [ ] Free/premium counts match metadata.
|
||||
- [ ] Depth values are valid (light, medium, deep only).
|
||||
- [ ] No numeric depth values.
|
||||
- [ ] Access values are valid.
|
||||
- [ ] Options have unique IDs inside each question.
|
||||
- [ ] Option IDs are neutral and clean.
|
||||
- [ ] Scale labels are present when needed.
|
||||
- [ ] Every choice question has options.
|
||||
- [ ] Every scale question has scale configuration.
|
||||
- [ ] Every written question has answer configuration.
|
||||
- [ ] No malformed keys like m a x _ l e n g t h.
|
||||
- [ ] No placeholder text.
|
||||
- [ ] No accidental old gendered IDs unless intentionally used.
|
||||
|
||||
---
|
||||
* [ ] Valid JSON.
|
||||
* [ ] Category id matches file purpose.
|
||||
* [ ] Category title sounds user facing.
|
||||
* [ ] Category access matches actual free/premium strategy.
|
||||
* [ ] Metadata counts match actual question counts.
|
||||
* [ ] All question IDs are unique.
|
||||
* [ ] All question texts are unique.
|
||||
* [ ] No near duplicate blocks.
|
||||
* [ ] Type counts match metadata or documented special pack rules.
|
||||
* [ ] Free/premium counts match metadata.
|
||||
* [ ] Depth values are valid or documented for compatibility.
|
||||
* [ ] Access values are valid.
|
||||
* [ ] Options have unique IDs inside each question.
|
||||
* [ ] Option IDs are neutral and clean.
|
||||
* [ ] Scale labels are present when needed.
|
||||
* [ ] Every choice question has options.
|
||||
* [ ] Every scale question has scale configuration.
|
||||
* [ ] Every written question has answer configuration.
|
||||
* [ ] No malformed keys.
|
||||
* [ ] No placeholder text.
|
||||
* [ ] No accidental old gendered IDs unless intentionally used.
|
||||
|
||||
# 5. Subtopic Planning
|
||||
|
||||
|
|
@ -359,54 +409,48 @@ Each pack should have subtopics to prevent repetition.
|
|||
|
||||
Example for Date Night:
|
||||
|
||||
- easy dates
|
||||
- low-cost dates
|
||||
- at-home dates
|
||||
- going out
|
||||
- planning preferences
|
||||
- romance style
|
||||
- fun and play
|
||||
- food and drinks
|
||||
- music and movies
|
||||
- seasonal dates
|
||||
- surprises
|
||||
- feeling wanted
|
||||
- getting out of a rut
|
||||
- after-kids / busy life
|
||||
- date-night stress
|
||||
- memories
|
||||
- future date dreams
|
||||
* easy dates
|
||||
* low cost dates
|
||||
* at home dates
|
||||
* going out
|
||||
* planning preferences
|
||||
* romance style
|
||||
* fun and play
|
||||
* food and drinks
|
||||
* music and movies
|
||||
* seasonal dates
|
||||
* surprises
|
||||
* feeling wanted
|
||||
* getting out of a rut
|
||||
* after kids or busy life
|
||||
* date night stress
|
||||
* memories
|
||||
* future date dreams
|
||||
|
||||
Example for Boundaries:
|
||||
Example for Daily Single Choice Weekday:
|
||||
|
||||
- alone time
|
||||
- phone privacy
|
||||
- social media
|
||||
- family involvement
|
||||
- friendships
|
||||
- money
|
||||
- work time
|
||||
- rest
|
||||
- chores
|
||||
- home space
|
||||
- conflict
|
||||
- tone of voice
|
||||
- physical affection
|
||||
- private conversations
|
||||
- parenting/family roles
|
||||
- emotional bandwidth
|
||||
- plans and scheduling
|
||||
- personal belongings
|
||||
- sleep
|
||||
- stress
|
||||
|
||||
---
|
||||
* easy dinner
|
||||
* couch time
|
||||
* small help
|
||||
* hugs
|
||||
* chores
|
||||
* snacks
|
||||
* little dates
|
||||
* inside jokes
|
||||
* errands together
|
||||
* walks
|
||||
* texts
|
||||
* compliments
|
||||
* kisses
|
||||
* bedtime
|
||||
* weekend plans
|
||||
* tiny surprises
|
||||
|
||||
# 6. Repetition Check
|
||||
|
||||
A pack fails if it has blocks like this:
|
||||
|
||||
```
|
||||
```text
|
||||
What boundary around alone time would help you feel respected?
|
||||
What boundary around phone privacy would help you feel respected?
|
||||
What boundary around family involvement would help you feel respected?
|
||||
|
|
@ -417,28 +461,47 @@ Instead, each question should have its own angle.
|
|||
|
||||
Better:
|
||||
|
||||
```
|
||||
```text
|
||||
When you need alone time, how should I respond so it does not feel personal?
|
||||
What phone privacy boundary would help us feel trusted instead of watched?
|
||||
How involved should family be in decisions that affect just the two of us?
|
||||
What helps friendships feel healthy without making our relationship feel pushed aside?
|
||||
```
|
||||
|
||||
---
|
||||
Daily packs also fail if they have blocks like this:
|
||||
|
||||
```text
|
||||
Which reset would help tonight?
|
||||
Which reset would help Monday?
|
||||
Which reset would help us feel closer?
|
||||
Which reset would help before bed?
|
||||
```
|
||||
|
||||
Better:
|
||||
|
||||
```text
|
||||
Long day. What would actually help tonight?
|
||||
What tiny nice thing would make Monday less annoying?
|
||||
What would make the couch feel like a date tonight?
|
||||
Before bed, what would feel sweetest?
|
||||
```
|
||||
|
||||
# 7. Content Batching Process
|
||||
|
||||
Do not write all 250 questions in one creative pass.
|
||||
|
||||
Do not write all 500 daily questions in one creative pass.
|
||||
|
||||
Use this process:
|
||||
|
||||
1. Define pack purpose.
|
||||
2. Define subtopics.
|
||||
3. Write 40-50 high-quality questions.
|
||||
3. Write 20 to 30 sample questions for the target voice.
|
||||
4. Review tone and repetition.
|
||||
5. Write the next batch.
|
||||
6. Add choice, scale, and this-or-that questions.
|
||||
7. Assign free/premium.
|
||||
8. Assign depth.
|
||||
9. Validate JSON.
|
||||
10. Read the full file like a user.
|
||||
5. Fix the sample before scaling.
|
||||
6. Write the next batch.
|
||||
7. Add choice, scale, and this or that questions when used.
|
||||
8. Assign free/premium.
|
||||
9. Assign depth.
|
||||
10. Validate JSON.
|
||||
11. Read the full file like a user.
|
||||
|
|
|
|||
Loading…
Reference in New Issue