
Booth 's poverty notebooks For each of London 's streets , Booth extracted information from the detailed record sheets kept by the small army of attendance officers employed by the London School Board . He and eight collaborators entered this information by hand ( mostly using pencil ) , in a total of 65 notebooks . The first 55 notebooks contain highly detailed family data , the remaining 10 notebooks contain less detailed street information . The family notebooks Early in the poverty survey , Booth began to collect information for every family in each street of London that had children . He and his collaborators entered this information into notebooks that Booth had specially printed for his inquiry . During the early part of the family survey , Booth actually had three different notebook layouts printed . As the example illustrated below reveals , the notebook entries include the street number , occupation of the head of household ( usually highly abbreviated ) , an indication of the wife 's occupation ( especially if they were the household head ) , the number of childen in various age groups , the number of rooms occupied and rent paid ( often a single summary for an entire street ) , and notes on the social position of the household . Here is part of a page of the notebook recording informaiton for families in a street in Poplar : When the original information had been gathered from the attendance officers , Booth and his co-workers converted the head of household occupations into a ' section ' number , and gave each family that had children a letter ( A to H ) that indicated to which of seven social classes they belonged . Finally , each street was given a colour which indicated its general social condition . ( Booth devised a set of eight colours based largely on the social mix of street residents . ) These additional items of information can all be seen on the example notebook page above . Note how the employment section number is entered in the ' Rent ' column , and the family social class letter is written in the ' Wages ' column . The street colour ( ' l bl ' for light blue ) is written alongside the street name . The street notebooks As the poverty survey progressed , Booth began to record information for entire streets ( or parts of streets ) , rather than for individual families . Again , he had notebooks specially designed and printed to record the information gathered from the School Board attendance officers . As the example illustrated below reveals , the notebook entry for individual streets includes comments on the character of the housing , the number of children of school-going age , general comments on the social character of the street , and the number of families in each social class . Because the street entries occupy a two-page spread of the notebook , the extract below is split into two sections . This is the left-hand side of the entry for five streets in Lambeth : Here is the right-hand side of the entry for the same five streets : Again , Booth assigned a colour to each street according to the social mix of its residents and its general condition . It is not entirely clear whether the street colour was assigned during discussions with the attendance officers , or following subsequent analysis of the summary data . 