Seven questions at the top of a survey place a household on a 48-point scale and into one of five social grades. Pick a grade to read the whole study from its point of view.
Shares are of this panel, not of Egypt — the panel over-owns assets several times over versus national benchmarks. Click a card to select a grade; the selection follows you into the other views.
Every option carries its points and its incidence in each grade, so you can see what each option is actually buying. A steep left-to-right climb means the option discriminates; a flat row means it does not.
None of these 39 measures are in the screener — they are what the grades predict. This is the payoff: assign a grade from seven questions, then read off everything else.
Slide through the individual respondents inside a grade and read each one whole — how their score was built, everything they own and do, and their answers in their own words. De-identified: no names, phone numbers, IPs or session ids are in this data. Arrow keys move between people.
Answer as a respondent would. The card sums to a grade the same way
ses_screener.py does — blanks simply score zero.
Selection ran three ways — greedy against the long-form score, greedy against reported income alone, and exhaustive best-subset over the top twelve questions. All three converged on the same core.
| Screener length | Q | Exact | Within 1 | κ | ρ income |
|---|
| Long form ↓ / screener → | E | D | C | B | A |
|---|
every off-diagonal cell is one grade away — no respondent is ever misplaced further
| Question | R² vs income |
|---|
Penetration on the left, correlation with income on the right. Saturated items cost attention and buy nothing; the semi-automatic washer earns its place by scoring negative.
Base: the valid-base respondents that also survive the integrity screen in
clean_submitted.py (coordinated response farms, duplicate mobiles, impossible
durations) — n = 1,240. Grades here are assigned by the 7-question card in
ses_screener.py; accuracy figures compare it against the 13-item long form in
ses_classifier.py and, on a 635-row holdout never used in fitting, hold at 85.0%
exact and κ 0.960. Full method and sources in SES_SCREENER.md.