Skip to main content

Question Type: get_all_children_age_gender

Collect the ages and genders of all eligible children in a household, returning one record per child.

Updated over 2 weeks ago

When and Why to Use

Use this when you need a complete roster of children within an age window, including:

  • total count,

  • each child’s age (with optional recodes),

  • each child’s gender,

  • a readable “name” label (e.g., “16 year old son”) for downstream questions.

Great for: youth-targeted studies, quota setup, segmentation, or routing follow-ups to each child profile.

Chat Experience

  • Three-step flow: count → ages → genders.

  • Copy for each step is customizable via question_1_text–question_3_text.

  • Gender terms shown to respondents can be mapped to “son/daughter” (or alternatives) via gender_map.

Traditional Experience

  • Sequential screens and compact multi-field forms.

  • Numeric input for count/ages; single/multi-select for genders.

  • Summary list of created child records before proceeding (optional).

Configuration Options

Option

Type

Required

Default

Description

min_age

int

yes

Minimum eligible age.

max_age

int

yes

Maximum eligible age.

age_recodes

Optional[Dict[int, str]]

no

None

Map raw ages to recoded labels (e.g., 13: "Secondary").

gender_map

Optional[Dict[str, str]]

no

{ "Male": "son", "Female": "daughter" }

Maps gender → child term used in the “name” label.

question_1_text

Optional[str]

no

"How many children do you have between the ages of {min_age} and {max_age}?"

Custom text for count prompt.

question_2_text

Optional[str]

no

"For each child, please let us know their age"

Custom text for ages prompt.

question_3_text

Optional[str]

no

"Now, please let us know their gender"

Custom text for genders prompt.

Return Value

List[StringResponse] — One StringResponse per child, with tags attached:

  • age: the recoded age (if age_recodes supplied; otherwise raw age as string),

  • gender: the selected gender,

  • name: a readable label combining age and gender_map term (e.g., “16 year old son”).

If the respondent reports no eligible children, returns an empty list.

Example Code

Basic usage

from survey import Survey s = Survey(**globals()) children = s.get_all_children_age_gender( min_age=5, max_age=18, ) for child in children: s.text_question(f"What is {child.name}'s favorite subject in school?") s.complete()

With age recodes and custom gender terms

children = s.get_all_children_age_gender( min_age=5, max_age=17, age_recodes={ 5: "Pre-school", 6: "Primary", 7: "Primary", 8: "Primary", 9: "Primary", 10: "Primary", 11: "Secondary", 12: "Secondary", 13: "Secondary", 14: "Secondary", 15: "Secondary", 16: "Secondary", 17: "Secondary", }, gender_map={"Male": "boy", "Female": "girl"}, )

Custom question copy

children = s.get_all_children_age_gender( min_age=10, max_age=16, question_1_text="Between {min_age} and {max_age}, how many children live in your household?", question_2_text="Please enter each child's age.", question_3_text="Please select each child's gender." )

Notes

  • Validation is performed on raw ages; age_recodes affect labels/reporting only.

  • Expand gender options as needed (e.g., “Non-binary,” “Prefer not to say”); use gender_map to control the child term used in name.

  • The name field is for respondent-friendly copy; avoid relying on it for programmatic logic—use age and gender tags instead.

Did this answer your question?