This commit is contained in:
null 2026-06-21 19:47:57 -05:00
parent 5663daad89
commit 66bbbed7b7
1 changed files with 205 additions and 219 deletions

View File

@ -4,7 +4,7 @@
This guide defines how Closer question packs should be written, reviewed, and validated. This guide defines how Closer question packs should be written, reviewed, and validated.
Closer is a private couples app. The questions should help two people feel closer through honest, warm, simple conversation. The app should not sound robotic, clinical, cheesy, judgmental, or like therapy homework. Closer is a private couples app. The questions should help two people feel closer through honest, warm, simple conversation. The app should not sound robotic, clinical, cheesy, judgmental, overly sexual, or like therapy homework.
Use this guide before writing or rewriting any question JSON file. Use this guide before writing or rewriting any question JSON file.
@ -14,30 +14,30 @@ Use this guide before writing or rewriting any question JSON file.
Closer should sound: Closer should sound:
- warm - Warm
- private - Private
- plainspoken - Plainspoken
- emotionally honest - Emotionally honest
- lightly playful when appropriate - Lightly playful when appropriate
- easy to answer - Easy to answer
- respectful of both partners - Respectful of both partners
- safe and non-pressuring - Safe and non-pressuring
Closer should not sound: Closer should not sound:
- robotic - Robotic
- overly formal - Overly formal
- fake-deep - Fake-deep
- preachy - Preachy
- judgmental - Judgmental
- clinical - Clinical
- like a therapist worksheet - Like a therapist worksheet
- like a corporate wellness app - Like a corporate wellness app
- sexually pushy - Sexually pushy
- repetitive - Repetitive
- awkwardly generated - Awkwardly generated
## Voice rule ## Voice Rule
A good Closer question should sound like something a real person could comfortably ask their partner. A good Closer question should sound like something a real person could comfortably ask their partner.
@ -65,14 +65,12 @@ What is one money habit we could agree on that would make things feel calmer bet
Every question should pass this test: Every question should pass this test:
```bat - Would a real couple actually answer this?
ECHO Would a real couple actually answer this? - Is it clear in one read?
ECHO Is it clear in one read? - Does it sound natural out loud?
ECHO Does it sound natural out loud? - Does it invite honesty without blaming either partner?
ECHO Does it invite honesty without blaming either partner? - Does it fit the pack topic?
ECHO Does it fit the pack topic? - Does it avoid sounding like AI-generated filler?
ECHO Does it avoid sounding like AI generated filler?
```
If the answer is no, rewrite it. If the answer is no, rewrite it.
@ -105,30 +103,38 @@ This makes me feel accused.
--- ---
# 4. Category Purpose # 4. Pack Purpose
Every pack needs a clear purpose. Every pack needs a clear job.
Before writing a pack, define: Before writing a pack, define:
```bat - Pack name
SET PACK_NAME= - Pack purpose
SET PACK_PURPOSE= - How the user should feel while answering
SET USER_FEELING= - What kind of connection the pack should create
SET RELATIONSHIP_OUTCOME= - What free users should get from the pack
SET FREE_VALUE= - What premium users should get from the pack
SET PREMIUM_VALUE=
```
Example: Example:
```bat ```md
SET PACK_NAME=Date Night Pack name: Date Night
SET PACK_PURPOSE=Help couples plan, enjoy, and remember time together.
SET USER_FEELING=Playful, wanted, relaxed, connected. Pack purpose:
SET RELATIONSHIP_OUTCOME=More intentional time together without pressure. Help couples plan, enjoy, and remember time together.
SET FREE_VALUE=Easy, fun, low-pressure date questions.
SET PREMIUM_VALUE=Deeper romance, planning preferences, rut-breaking, and memory-making prompts. User feeling:
Playful, wanted, relaxed, connected.
Relationship outcome:
More intentional time together without pressure.
Free value:
Easy, fun, low-pressure date questions.
Premium value:
Deeper romance, planning preferences, rut-breaking, and memory-making prompts.
``` ```
--- ---
@ -173,14 +179,12 @@ What kind of attention from me makes you feel closest?
What do you miss about the way we used to spend time together? What do you miss about the way we used to spend time together?
``` ```
## Depth rules ## Depth Rules
```bat - Light questions should not feel shallow or useless.
ECHO Light questions should not feel shallow or useless. - Medium questions should not feel like a confrontation.
ECHO Medium questions should not feel like a confrontation. - Deep questions should not feel like a trap.
ECHO Deep questions should not feel like a trap. - Sensitive questions should never pressure a partner to disclose, forgive, explain, or perform.
ECHO Sensitive questions should never pressure a partner to disclose, forgive, explain, or perform.
```
--- ---
@ -190,9 +194,9 @@ Each question type should have a purpose.
## written ## written
Use for stories, memories, reflection, emotional honesty, and open-ended answers. Use written questions for stories, memories, reflection, emotional honesty, and open-ended answers.
Good written examples: Good examples:
```text ```text
What is one small thing I do that makes you feel cared for? What is one small thing I do that makes you feel cared for?
@ -216,9 +220,9 @@ What is one thing we could do this week that would make us feel more like a team
## single_choice ## single_choice
Use for preferences and simple decisions. Use single-choice questions for preferences and simple decisions.
Good single-choice example: Good example:
```json ```json
{ {
@ -236,20 +240,19 @@ Good single-choice example:
Rules: Rules:
```bat - Options should be short.
ECHO Options should be short. - Options should not overlap too much.
ECHO Options should not overlap too much. - Options should sound like real choices.
ECHO Options should sound like real choices. - Avoid more than 6 options unless truly needed.
ECHO Avoid more than 6 options unless truly needed. - Option IDs should be clean, neutral, and stable.
```
--- ---
## multi_choice ## multi_choice
Use when more than one answer can be true. Use multi-choice questions when more than one answer can be true.
Good multi-choice example: Good example:
```json ```json
{ {
@ -268,19 +271,18 @@ Good multi-choice example:
Rules: Rules:
```bat - Multi-choice prompts should say or imply that multiple answers are okay.
ECHO Multi-choice prompts should say or imply that multiple answers are okay. - Options should not shame either partner.
ECHO Options should not shame either partner. - Include practical and emotional options when possible.
ECHO Include practical and emotional options when possible. - Avoid options that are almost the same thing.
```
--- ---
## scale ## scale
Use for comfort level, closeness, energy, readiness, satisfaction, or frequency. Use scale questions for comfort level, closeness, energy, readiness, satisfaction, or frequency.
Good scale example: Good example:
```json ```json
{ {
@ -297,11 +299,10 @@ Good scale example:
Rules: Rules:
```bat - Scale labels should be gentle and neutral.
ECHO Scale labels should be gentle and neutral. - Do not make the low end sound bad or shameful.
ECHO Do not make the low end sound bad or shameful. - Scale questions should measure one thing only.
ECHO Scale questions should measure one thing only. - Avoid loaded or accusatory wording.
```
Bad: Bad:
@ -319,9 +320,9 @@ How much would some intentional time together help us right now?
## this_or_that ## this_or_that
Use for fast, playful, low-pressure choices. Use this-or-that questions for fast, playful, low-pressure choices.
Good this-or-that examples: Good examples:
```text ```text
Planned date or spontaneous date? Planned date or spontaneous date?
@ -332,11 +333,10 @@ Sunset walk or late-night drive?
Rules: Rules:
```bat - This-or-that prompts should be quick.
ECHO This-or-that prompts should be quick. - Avoid choices that imply one partner is wrong.
ECHO Avoid choices that imply one partner is wrong. - Use this type most often in fun, date, intimacy, home, and lifestyle packs.
ECHO Best used in fun, date, intimacy, home, and lifestyle packs. - Do not overuse it in serious conflict or trust packs.
```
--- ---
@ -346,25 +346,23 @@ Free questions should prove the app is worth using.
Premium questions should feel deeper, more specific, more personalized, more playful, or more valuable. Premium questions should feel deeper, more specific, more personalized, more playful, or more valuable.
## Free questions should be: ## Free Questions Should Be
```bat - Easy to answer
ECHO Easy to answer. - Warm and useful
ECHO Warm and useful. - Good enough to create trust
ECHO Good enough to create trust. - Low-pressure
ECHO Low-pressure. - Representative of the pack
ECHO Representative of the pack. - Strong enough that the app feels valuable before payment
```
## Premium questions should be: ## Premium Questions Should Be
```bat - More specific
ECHO More specific. - More thoughtful
ECHO More thoughtful. - More emotionally useful
ECHO More emotionally useful. - More creative
ECHO More creative. - More likely to start a meaningful conversation
ECHO More likely to start a meaningful conversation. - Worth paying for
```
Premium must not be only “more of the same.” Premium must not be only “more of the same.”
@ -384,9 +382,9 @@ Premium: What kind of date would make you feel pursued, not just scheduled?
--- ---
# 8. Banned or Overused Phrases # 8. Phrases to Avoid
Avoid these unless there is a very good reason. Avoid these unless there is a very good reason:
```text ```text
What boundary around... What boundary around...
@ -407,7 +405,7 @@ navigate conflict
honor your needs honor your needs
``` ```
These phrases are not always wrong, but they quickly make the app sound generic or clinical. These phrases are not always wrong, but they quickly make the app sound generic, clinical, or AI-written.
Use natural language instead. Use natural language instead.
@ -439,9 +437,9 @@ What is one small thing that makes you want to be closer to me?
# 9. Tone Rules by Pack Type # 9. Tone Rules by Pack Type
## Fun packs ## Fun Packs
Should feel light, playful, and easy. Fun packs should feel light, playful, and easy.
Use: Use:
@ -459,9 +457,9 @@ How can we optimize shared leisure experiences?
--- ---
## Date Night packs ## Date Night Packs
Should feel romantic, playful, practical, and low-pressure. Date Night packs should feel romantic, playful, practical, and low-pressure.
Use: Use:
@ -479,9 +477,9 @@ What date structure would best support our connection goals?
--- ---
## Boundaries packs ## Boundaries Packs
Should feel respectful, calm, and non-accusing. Boundaries packs should feel respectful, calm, and non-accusing.
Use: Use:
@ -499,9 +497,9 @@ What boundary around boundaries would support emotional safety?
--- ---
## Conflict packs ## Conflict Packs
Should feel safe, repair-focused, and not blaming. Conflict packs should feel safe, repair-focused, and not blaming.
Use: Use:
@ -519,9 +517,9 @@ What do I always do wrong during conflict?
--- ---
## Trust packs ## Trust Packs
Should feel careful, honest, and non-punishing. Trust packs should feel careful, honest, and non-punishing.
Use: Use:
@ -539,9 +537,9 @@ What have I done to make you unable to trust me?
--- ---
## Sex, desire, and physical intimacy packs ## Sex, Desire, and Physical Intimacy Packs
Should feel adult, consent-based, respectful, optional, and never pushy. Sex, desire, and physical intimacy packs should feel adult, consent-based, respectful, optional, and never pushy.
Use: Use:
@ -561,15 +559,13 @@ Why do you not want me more?
Sensitive packs should include: Sensitive packs should include:
```bat - Consent-first wording
ECHO Consent-first wording. - No pressure
ECHO No pressure. - No shame
ECHO No shame. - No assumptions about gender roles
ECHO No assumptions about gender roles. - No assumptions about sex drive
ECHO No assumptions about sex drive. - No coercive language
ECHO No coercive language. - No questions that pressure disclosure of trauma
ECHO No questions that pressure disclosure of trauma.
```
--- ---
@ -579,18 +575,17 @@ Closer is not therapy, counseling, crisis support, or medical advice.
Questions must not: Questions must not:
```bat - Encourage staying in unsafe relationships
ECHO Encourage staying in unsafe relationships. - Pressure forgiveness
ECHO Pressure forgiveness. - Minimize abuse
ECHO Minimize abuse. - Encourage sexual pressure
ECHO Encourage sexual pressure. - Ask users to disclose trauma before they are ready
ECHO Ask users to disclose trauma before they are ready. - Diagnose a partner
ECHO Diagnose a partner. - Tell a partner what they owe
ECHO Tell a partner what they owe. - Encourage monitoring, control, or isolation
ECHO Encourage monitoring, control, or isolation. - Frame controlling behavior as love or boundaries
```
## Abuse-sensitive rule ## Abuse-Sensitive Rule
Avoid questions that frame controlling behavior as a normal boundary. Avoid questions that frame controlling behavior as a normal boundary.
@ -606,7 +601,7 @@ Better:
What helps you feel secure in our relationship while still respecting each other's independence? What helps you feel secure in our relationship while still respecting each other's independence?
``` ```
## Consent rule ## Consent Rule
Bad: Bad:
@ -624,13 +619,13 @@ What kind of affection feels good to you when you are open to closeness?
# 11. Wording Rules # 11. Wording Rules
## Keep questions short ## Keep Questions Short
Aim for 8 to 22 words when possible. Aim for 8 to 22 words when possible.
Long questions are okay only when the topic needs softness or context. Longer questions are okay only when the topic needs softness or context.
## Ask one thing at a time ## Ask One Thing at a Time
Bad: Bad:
@ -644,7 +639,7 @@ Better:
What family boundary would make our relationship feel more protected? What family boundary would make our relationship feel more protected?
``` ```
## Avoid stacked emotional words ## Avoid Stacked Emotional Words
Bad: Bad:
@ -658,7 +653,7 @@ Better:
What helps you feel respected by me? What helps you feel respected by me?
``` ```
## Avoid vague “more” questions ## Avoid Vague “More” Questions
Bad: Bad:
@ -672,7 +667,7 @@ Better:
What is one thing we could do tonight to feel closer? What is one thing we could do tonight to feel closer?
``` ```
## Avoid blame ## Avoid Blame
Bad: Bad:
@ -690,28 +685,26 @@ What tends to make date night harder for you to enjoy?
# 12. JSON Quality Rules # 12. JSON Quality Rules
Every JSON file should pass these checks. Every JSON file should pass these checks:
```bat - Valid JSON
ECHO [ ] Valid JSON. - Category ID matches file purpose
ECHO [ ] Category id matches file purpose. - Category title sounds user-facing
ECHO [ ] Category title sounds user-facing. - Category access matches actual free/premium strategy
ECHO [ ] Category access matches actual free/premium strategy. - Metadata counts match actual question counts
ECHO [ ] Metadata counts match actual question counts. - All question IDs are unique
ECHO [ ] All question IDs are unique. - All question texts are unique
ECHO [ ] All question texts are unique. - No near-duplicate blocks
ECHO [ ] No near-duplicate blocks. - Type counts match metadata
ECHO [ ] Type counts match metadata. - Free/premium counts match metadata
ECHO [ ] Free/premium counts match metadata. - Depth values are valid
ECHO [ ] Depth values are valid. - Access values are valid
ECHO [ ] Access values are valid. - Options have unique IDs inside each question
ECHO [ ] Options have unique IDs inside each question. - Option IDs are neutral and clean
ECHO [ ] Option IDs are neutral and clean. - Scale labels are present when needed
ECHO [ ] Scale labels are present when needed. - No malformed keys like `m a x _ l e n g t h`
ECHO [ ] No malformed keys like m a x _ l e n g t h. - No placeholder text
ECHO [ ] No placeholder text. - No accidental old gendered IDs unless intentionally used
ECHO [ ] No accidental old gendered IDs unless intentionally used.
```
Recommended access values: Recommended access values:
@ -752,20 +745,20 @@ this_or_that
For a 250-question pack: For a 250-question pack:
```bat ```text
SET TOTAL_QUESTIONS=250 Total questions: 250
SET FREE_QUESTIONS=75 Free questions: 75
SET PREMIUM_QUESTIONS=175 Premium questions: 175
SET WRITTEN=150 Written: 150
SET SINGLE_CHOICE=40 Single choice: 40
SET MULTI_CHOICE=20 Multi choice: 20
SET SCALE=25 Scale: 25
SET THIS_OR_THAT=15 This-or-that: 15
``` ```
This structure is acceptable if the current app expects those counts. This structure is acceptable if the current app expects those counts.
But quality matters more than exact counts. If a pack cannot support 250 good questions without filler, reduce the pack or split it. Quality matters more than exact counts. If a pack cannot support 250 good questions without filler, reduce the pack or split it.
--- ---
@ -775,18 +768,16 @@ Do not write all 250 questions in one creative pass.
Use this process: Use this process:
```bat 1. Define the pack purpose.
ECHO Step 1: Define pack purpose. 2. Define subtopics.
ECHO Step 2: Define subtopics. 3. Write 40 to 50 high-quality questions.
ECHO Step 3: Write 40-50 high-quality questions. 4. Review tone and repetition.
ECHO Step 4: Review tone and repetition. 5. Write the next batch.
ECHO Step 5: Write the next batch. 6. Add choice, scale, and this-or-that questions.
ECHO Step 6: Add choice, scale, and this-or-that questions. 7. Assign free/premium.
ECHO Step 7: Assign free/premium. 8. Assign depth.
ECHO Step 8: Assign depth. 9. Validate JSON.
ECHO Step 9: Validate JSON. 10. Read the full file like a user.
ECHO Step 10: Read the full file like a user.
```
--- ---
@ -794,7 +785,7 @@ ECHO Step 10: Read the full file like a user.
Each pack should have subtopics to prevent repetition. Each pack should have subtopics to prevent repetition.
Example for Date Night: ## Example: Date Night
```text ```text
easy dates easy dates
@ -810,13 +801,13 @@ seasonal dates
surprises surprises
feeling wanted feeling wanted
getting out of a rut getting out of a rut
after-kids / busy life busy-life dates
date-night stress date-night stress
memories memories
future date dreams future date dreams
``` ```
Example for Boundaries: ## Example: Boundaries
```text ```text
alone time alone time
@ -833,7 +824,7 @@ conflict
tone of voice tone of voice
physical affection physical affection
private conversations private conversations
parenting/family roles parenting or family roles
emotional bandwidth emotional bandwidth
plans and scheduling plans and scheduling
personal belongings personal belongings
@ -873,14 +864,12 @@ Before finalizing, read 25 random questions out loud.
Reject questions that: Reject questions that:
```bat - Sound stiff
ECHO Sound stiff. - Sound embarrassing for the wrong reason
ECHO Sound embarrassing for the wrong reason. - Sound like a therapy script
ECHO Sound like a therapy script. - Sound too much like another question
ECHO Sound too much like another question. - Take too long to understand
ECHO Take too long to understand. - Would make a normal couple roll their eyes
ECHO Would make a normal couple roll their eyes.
```
--- ---
@ -888,31 +877,28 @@ ECHO Would make a normal couple roll their eyes.
When Claude rewrites a pack: When Claude rewrites a pack:
```bat 1. Read this guide first.
ECHO Read the existing JSON first. 2. Read the existing JSON file.
ECHO Preserve required schema unless told otherwise. 3. Preserve the required schema unless told otherwise.
ECHO Preserve required counts unless told otherwise. 4. Preserve required counts unless told otherwise.
ECHO Improve wording, variety, and product feel. 5. Improve wording, variety, and product feel.
ECHO Do not create repetitive template blocks. 6. Do not create repetitive template blocks.
ECHO Do not use weird phrasing. 7. Do not use weird phrasing.
ECHO Do not overuse therapy language. 8. Do not overuse therapy language.
ECHO Do not make sensitive prompts coercive. 9. Do not make sensitive prompts coercive.
ECHO Validate the final JSON. 10. Validate the final JSON.
ECHO Report count totals. 11. Report count totals.
ECHO Report any schema changes. 12. Report any schema changes.
```
Claude should not say a file is done unless: Claude should not say a file is done unless:
```bat - The JSON parses.
ECHO The JSON parses. - The counts match.
ECHO The counts match. - IDs are unique.
ECHO IDs are unique. - Question texts are unique.
ECHO Question texts are unique. - Free/premium counts match.
ECHO Free/premium counts match. - Type counts match.
ECHO Type counts match. - The tone guide was followed.
ECHO The tone guide was followed.
```
--- ---