225 lines
5.0 KiB
Markdown
225 lines
5.0 KiB
Markdown
# QUESTION_REWRITE_PLAN.md
|
|
|
|
## Purpose
|
|
|
|
This plan defines how to rewrite Closer question packs without producing valid but dead content.
|
|
|
|
The goal is not just clean JSON.
|
|
|
|
The goal is questions real couples want to answer.
|
|
|
|
## Standard Pack Workflow
|
|
|
|
For normal 250 question category packs:
|
|
|
|
1. Define the category purpose.
|
|
2. Define the main subtopics.
|
|
3. Write in batches of 40 to 50.
|
|
4. Review tone and repetition after each batch.
|
|
5. Assign types, access, and depth.
|
|
6. Validate schema.
|
|
7. Check duplicate question text.
|
|
8. Check duplicate option lists.
|
|
9. Read random questions out loud.
|
|
10. Fix weak items before shipping.
|
|
|
|
## Standard 250 Question Mix
|
|
|
|
| Type | Count |
|
|
|---|---:|
|
|
| multi_choice | 140 |
|
|
| single_choice | 50 |
|
|
| scale | 35 |
|
|
| this_or_that | 15 |
|
|
| written | 10 |
|
|
|
|
Free and premium split:
|
|
|
|
* 75 free
|
|
* 175 premium
|
|
|
|
## 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, schema, and sample review.
|
|
|
|
## Daily Single Choice Weekday Pack
|
|
|
|
Pack id:
|
|
|
|
```text
|
|
daily_single_choice_weekly_v1
|
|
```
|
|
|
|
Current compatibility file name:
|
|
|
|
```text
|
|
daily_fun_multiple_choice_v3.json
|
|
```
|
|
|
|
Recommended future file name:
|
|
|
|
```text
|
|
daily_single_choice_weekly_v1.json
|
|
```
|
|
|
|
Expected counts:
|
|
|
|
* 500 total questions
|
|
* 75 free questions
|
|
* 425 premium questions
|
|
* 500 single_choice questions
|
|
|
|
Rules:
|
|
|
|
* every question must be single_choice
|
|
* every question must have 4 to 6 options
|
|
* 4 options preferred
|
|
* every question must have a weekday tag
|
|
* every option must answer the prompt
|
|
* no therapy worksheet tone
|
|
* no wellness survey tone
|
|
* no household admin tone
|
|
* no chore-heavy answer sets
|
|
* no repeated exact 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
|
|
|
|
## Daily Fun-First Rule
|
|
|
|
Daily questions must be fun before they are useful.
|
|
|
|
If a daily prompt mostly helps the couple manage chores, bedtime, errands, dishes, bills, or logistics, rewrite it toward one of these:
|
|
|
|
* a tiny date
|
|
* a joke
|
|
* a snack
|
|
* a flirt
|
|
* a mini adventure
|
|
* a sweet surprise
|
|
* a playful choice
|
|
* a cute debate
|
|
* a small shared moment
|
|
|
|
Do not approve a daily batch just because it is concrete.
|
|
|
|
Concrete can still be boring.
|
|
|
|
A daily batch should feel like something users would want to tap tonight.
|
|
|
|
## Daily Production Loop
|
|
|
|
Do not write or rewrite 500 daily questions in one pass.
|
|
|
|
Use a bounded loop. The goal is quality control, not infinite polishing until everyone forgets why the app exists.
|
|
|
|
### Per Weekday Loop
|
|
|
|
For each weekday theme:
|
|
|
|
1. Write or rewrite 20 questions.
|
|
2. Review the 20 questions out loud.
|
|
3. Mark every weak question with a reason.
|
|
4. Fix only the marked questions.
|
|
5. Review the fixed questions again.
|
|
6. Continue only when at least 18 of 20 pass.
|
|
7. Continue only when at least 16 of 20 feel fun, playful, sweet, flirty, silly, or date-like.
|
|
8. Expand that weekday theme in batches of 20 to 30.
|
|
9. Repeat mark, fix, review after each batch.
|
|
10. Move to the next weekday only after the current weekday passes.
|
|
|
|
### Pass Standard
|
|
|
|
A daily question passes only if:
|
|
|
|
* it sounds like something normal people would say
|
|
* it can be answered in under 10 seconds
|
|
* it feels like a couples game
|
|
* it is fun before merely useful
|
|
* it is concrete and tied to real life
|
|
* every option answers the exact prompt
|
|
* every option is a complete answer
|
|
* the weekday theme is clear
|
|
* the wording does not feel generated
|
|
* the answer set is not household admin
|
|
|
|
### Required Marking Reasons
|
|
|
|
When marking a daily question, use one or more of these reasons:
|
|
|
|
* 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
|
|
|
|
### Final Pack Gate
|
|
|
|
After all weekdays are drafted:
|
|
|
|
1. Run schema and count validation.
|
|
2. Run duplicate question and duplicate option-list checks.
|
|
3. Check repeated openers.
|
|
4. Check repeated option text.
|
|
5. Read 10 random questions from each weekday.
|
|
6. Mark anything weak.
|
|
7. Fix marked questions.
|
|
8. Run a second random sample from each weekday.
|
|
9. Ship only if the second sample passes cleanly.
|
|
|
|
Do not skip the final sample gate.
|
|
|
|
A pack can be technically valid and still sound like a relationship app generated by a toaster with abandonment issues.
|
|
|
|
## Rewrite Rules
|
|
|
|
When rewriting weak questions:
|
|
|
|
* keep the original category purpose
|
|
* remove therapy wording
|
|
* remove abstract phrasing
|
|
* use simpler language
|
|
* make the prompt answerable
|
|
* make options balanced
|
|
* avoid fake healthy answers
|
|
* avoid repeated stems
|
|
* keep the emotional intensity appropriate
|
|
|
|
## Final Deliverables
|
|
|
|
Each rewrite should provide:
|
|
|
|
* updated JSON
|
|
* validation report
|
|
* marked fixes CSV or JSON
|
|
* short review findings
|
|
* apply instructions
|