"""Hand-built reference grouping of the Lorimer predicaments (Claude-written, no inference of any kind). Lorimer's *Letters from a Self-Made Merchant to His Son* is an advice book, not a story collection: each of its twenty letters is a "story", and the scenes are stretches of a father's advice and the anecdotes he tells to carry it. Each scene is in at most one group; scenes that fit no recurring situation stay unassigned. Every group spans at least three of the 20 letters, and no letter supplies more than half a group's members. Options follow DESIGN.md: 3-5 per group, each marked by where it came from -- 'archetype' a fixed, setting-free option 'scene:N' what someone in scene N actually did (or refused to do) 'advice:N' a move the book itself advises for or against in scene N (see batches/, `advice`) 'filled' written to fill a gap the scenes leave `moves` names spine paths and a direction only (+ / - / risk / set). No magnitudes: the model never chooses a number. Skill labels proposed for this corpus: judgment (sizing up goods, prices, people and claims: the father's "one-part talk and nine-parts judgment") and hustle (drive, application, doing the second half of the work). """ G = [ # ---- money habits --------------------------------------------------------------------------------- dict(id='G01', name='Spending ahead of what you earn', predicament='You are spending more than you earn, often to keep up with free-spending company, and the bills are coming due.', actor='young earner', wants='to live well now', counterpart='their own pay packet, and the company they keep', members=[8, 10, 11, 25, 63, 64], options=[ ('Bring your spending down to what you actually earn.', 'advice:8', {'money':'+', 'relationships.peers':'-'}), ('Keep saving, and keep expenses down.', 'advice:10', {'money':'+', 'flags.buying_in':'set'}), ('Spend freely, so nobody thinks you mean.', 'advice:11', {'relationships.peers':'+', 'money':'-', 'standing':'-'}), ('Ask for an advance on your pay.', 'scene:13', {'money':'+', 'relationships.boss':'-'}), ('Spend it as fast as it comes.', 'advice:10', {'money':'-', 'relationships.peers':'+'})]), dict(id='G02', name='Starting at the bottom', predicament='You are starting at the bottom on low pay and dull work, and must decide whether it is a first step or a resting place.', actor='new hand', wants='to rise', counterpart='the boss who put them there', members=[9, 19, 20, 26, 33, 34, 35], options=[ ('Take the first job offered and use it as bait for a better one.', 'advice:26', {'money':'+', 'standing':'+'}), ('Find a way to do the work cheaper, even if it abolishes your job.', 'advice:20', {'judgment':'+', 'money':'+', 'relationships.boss':'+'}), ('Learn how little you can do and still keep the job.', 'scene:33', {'relationships.boss':'-', 'standing':'-'}), ('Hold your own job firmly and reach for the next one.', 'advice:33', {'hustle':'+', 'relationships.boss':'+'}), ('Come early, stay late and keep at it.', 'advice:35', {'hustle':'+', 'standing':'+'})]), dict(id='G03', name='Doing just enough', predicament='You could keep your place with half your effort, and must decide whether the other half is worth giving.', actor='settled employee', wants='to keep the job without killing themselves', counterpart='the boss deciding who rises', members=[40, 41, 44, 80, 81, 87, 119], options=[ ('Do just enough to keep from being dismissed.', 'advice:80', {'relationships.boss':'-', 'standing':'-'}), ('Put in the second half of the effort.', 'advice:80', {'hustle':'+', 'relationships.boss':'+'}), ('Learn more of the business than your job needs.', 'advice:81', {'judgment':'+', 'flags.promoted':'set'}), ('Come in late, leave early, and do your own business in between.', 'advice:44', {'money':'+', 'flags.passed_over':'set'}), ('Take on every extra job going, and cheerfully.', 'advice:87', {'hustle':'+', 'flags.promoted':'set'})]), # ---- those above you ------------------------------------------------------------------------------ dict(id='G04', name='A hard boss', predicament='Your superior is gruff, demanding and unimpressed with you, and you are tempted to complain, sulk or go over their head.', actor='subordinate', wants='fair treatment and a chance', counterpart='a gruff superior', members=[38, 45, 46, 88, 89], options=[ ('Say you cannot work under them.', 'advice:45', {'relationships.boss':'-', 'standing':'-'}), ('Give way to them, and approach them with respect.', 'advice:46', {'relationships.boss':'+'}), ('Go over their head and report what is wrong with them.', 'advice:46', {'relationships.boss':'-', 'relationships.owner':'risk'}), ('Take the criticism in wounded silence.', 'advice:88', {'relationships.boss':'-'}), ('Complain that you are being held down.', 'advice:89', {'relationships.boss':'-', 'standing':'-'})]), dict(id='G05', name='Talking yourself up', predicament='You are doing well, or want to seem to, and are tempted to make sure everyone knows it.', actor='rising employee', wants='to be noticed', counterpart='superiors and colleagues', members=[50, 90, 91, 138, 139, 140], options=[ ('Tell your superiors how well you are doing.', 'advice:138', {'relationships.boss':'-'}), ('Say nothing, and let the results speak.', 'advice:140', {'standing':'+', 'hustle':'+'}), ('Put on airs around the office.', 'advice:50', {'standing':'-', 'relationships.peers':'-'}), ('Rise on talk and show while it works.', 'advice:139', {'standing':'risk'}), ('Give more than you are paid for.', 'advice:138', {'hustle':'+', 'standing':'+'})]), dict(id='G06', name='Saying too much', predicament='You are tempted to say more than you need to: a joke, a retort, an opinion, or a complaint about someone.', actor='talker', wants='to be heard', counterpart='whoever is listening', members=[32, 47, 49, 71, 72], options=[ ('Say what you came to say, and stop.', 'advice:32', {'judgment':'+', 'money':'+'}), ('Listen more than you talk.', 'advice:33', {'judgment':'+', 'relationships.counterpart':'+'}), ('Crack the joke.', 'advice:72', {'standing':'-', 'relationships.counterpart':'+'}), ('Run down the people you used to work for.', 'advice:49', {'relationships.boss':'-', 'flags.not_hired':'set'}), ('Answer back with a smart retort.', 'advice:71', {'relationships.counterpart':'-', 'money':'-'})]), # ---- customers and the trade ---------------------------------------------------------------------- dict(id='G07', name='A customer tries you', predicament='A customer complains, needles you or sets a trap, and how you answer decides whether you keep their trade.', actor='seller', wants='to keep the trade', counterpart='a difficult customer', members=[74, 75, 82, 93], options=[ ('Settle a fair complaint on the spot, bargaining down from the first figure.', 'advice:75', {'money':'-', 'relationships.customer':'+'}), ('Know your goods well enough to turn their trap round.', 'advice:82', {'judgment':'+', 'money':'+', 'standing':'+'}), ('Say something about them that they will take as praise.', 'advice:93', {'judgment':'+', 'relationships.customer':'+', 'money':'+'}), ('Flatter them.', 'advice:74', {'relationships.customer':'+', 'standing':'-'}), ('Tell them to their face that they are a liar.', 'advice:93', {'relationships.customer':'-', 'flags.fought':'set'})]), dict(id='G08', name='Goods nobody wants', predicament='You have goods to sell and buyers who feel no need of them.', actor='seller', wants='to move the goods', counterpart='buyers who are not hungry', members=[51, 52, 77, 95, 98, 99], options=[ ('Give them a grander label and a higher price.', 'advice:52', {'money':'+', 'judgment':'+'}), ('Tell the buyers plainly that they need it.', 'scene:77', {'relationships.customer':'-'}), ('Stage a show that makes the need feel real.', 'advice:98', {'money':'+', 'flags.sharp_practice':'set'}), ('Dress the same goods up as something new.', 'advice:51', {'money':'-'}), ('Take them where the money already is.', 'advice:78', {'money':'+', 'hustle':'+'})]), dict(id='G09', name='Easy money', predicament='Someone offers, or the market seems to offer, money for nothing, and you have a little you could stake.', actor='person of small means', wants='to get rich quicker', counterpart='a schemer, a tipster, or the market', members=[30, 36, 37, 109, 111, 117], options=[ ('Stay clear: take the elevator to the roof garden.', 'advice:36', {'judgment':'+', 'relationships.schemer':'-'}), ('Take a little flyer on it.', 'scene:108', {'money':'risk', 'relationships.boss':'-', 'flags.speculated':'set'}), ('Lend them a little rather than join in.', 'advice:37', {'money':'-', 'relationships.schemer':'+'}), ('Ask why the return is so high before you trust it.', 'advice:111', {'judgment':'+'}), ('Talk yourself into it, principles and all.', 'scene:117', {'money':'risk', 'standing':'-'})]), dict(id='G17', name='Rivals are taking the trade', predicament='Rivals are getting the better of you in the trade, and you must decide whether to explain it, shrug it off or go after them.', actor='seller or manager', wants='the business', counterpart='rival firms', members=[76, 78, 127, 148], options=[ ('Send in a full account of what the competition is doing.', 'advice:78', {'relationships.boss':'-', 'flags.resigned':'set'}), ('Go for all of the trade, not a share of it.', 'advice:128', {'hustle':'+', 'money':'+', 'relationships.rival':'-'}), ('Take up the line you left to them.', 'advice:127', {'money':'+', 'hustle':'+'}), ('Stand and fight: you never sold what you could not deliver.', 'advice:148', {'standing':'+', 'relationships.rival':'-'}), ('Go where the money already is.', 'advice:78', {'money':'+', 'judgment':'+'})]), # ---- judging people ------------------------------------------------------------------------------- dict(id='G10', name='Taking someone on', predicament='You are about to hire or trust someone on the strength of how they look, how they talk, or who vouches for them.', actor='employer', wants='a good hand', counterpart='the candidate and whoever vouches for them', members=[48, 53, 56, 59, 105, 106, 107], options=[ ('Take them on the word of whoever vouches for them.', 'scene:53', {'relationships.friend':'+', 'money':'risk'}), ('Try them out in the work before committing.', 'advice:105', {'judgment':'+'}), ("Get an outsider's valuation, in figures.", 'advice:56', {'judgment':'+', 'relationships.friend':'-'}), ('Trust the one with the polished manners.', 'advice:107', {'relationships.hire':'+', 'money':'risk'}), ('Be on your guard against anyone too smooth.', 'advice:48', {'judgment':'+', 'relationships.hire':'-'})]), dict(id='G11', name='Looking the part', predicament='You want to be taken for more than you yet are, and must decide how much to spend on looking the part.', actor='person on the way up', wants='to be taken seriously', counterpart='the people who judge by appearances', members=[31, 100, 101, 102, 104, 134, 135, 144], options=[ ('Get a sober, well-made suit and look the part.', 'scene:100', {'money':'-', 'standing':'+'}), ('Look like someone of consequence before you are one.', 'advice:104', {'standing':'+', 'money':'-'}), ('Build your name on your work, not on borrowed rank.', 'advice:31', {'standing':'+', 'hustle':'+'}), ('Throw a lavish show to win acceptance.', 'advice:135', {'money':'-', 'standing':'-', 'flags.public_scandal':'set'}), ('Keep up appearances beyond your means.', 'advice:144', {'money':'-', 'standing':'risk'})]), # ---- in charge ------------------------------------------------------------------------------------ dict(id='G12', name='Someone under you falls short', predicament='Someone under you is slack, wrong for the post, or in a bad habit, and it falls to you to act.', actor='manager', wants='the work done well', counterpart='a subordinate falling short', members=[28, 43, 103, 121, 122], options=[ ("Let a wrong hire go at once, with a month's pay.", 'advice:122', {'money':'-', 'relationships.staff':'+'}), ('Put it off a little longer.', 'advice:28', {'money':'-', 'flags.lost_good_hand':'set'}), ('Set the example yourself, starting with your own habits.', 'advice:103', {'hustle':'+', 'relationships.staff':'+'}), ('Tell them bluntly what is wrong with them.', 'advice:121', {'relationships.staff':'-'}), ('Threaten them.', 'advice:122', {'relationships.staff':'-', 'standing':'risk'})]), dict(id='G13', name='Caught between two sides', predicament='You stand between two sides who each want your loyalty, and favouring either openly will cost you with the other.', actor='go-between', wants='to keep both sides', counterpart='those above and those below, or the firm and the customer', members=[92, 94, 128, 129, 149], options=[ ('Try openly to please both sides.', 'advice:92', {'relationships.boss':'-', 'relationships.other_side':'-'}), ('Keep them apart, and let each think they have slightly the better of it.', 'advice:92', {'judgment':'+', 'relationships.boss':'+', 'relationships.other_side':'+'}), ('Please your own side and let the other grumble.', 'advice:149', {'relationships.boss':'+', 'relationships.other_side':'-'}), ('Cut a corner on one side to keep the other sweet.', 'advice:94', {'relationships.boss':'+', 'relationships.other_side':'-', 'flags.skinned_someone':'set'}), ('Explain yourself to both.', 'advice:128', {'relationships.other_side':'+', 'standing':'-'})]), # ---- private life --------------------------------------------------------------------------------- dict(id='G14', name='Sizing up a match', predicament='You are drifting toward marrying someone and have not yet taken a clear look at them, their family, or what it will cost.', actor='suitor', wants='to marry well', counterpart='the person they are courting, and that person\'s family', members=[65, 70, 158, 159, 172, 173], options=[ ('Size them up before you are engaged, at breakfast as well as at the theatre.', 'advice:172', {'judgment':'+', 'relationships.partner':'risk'}), ('Marry someone raised above the means you can give them.', 'advice:65', {'relationships.partner':'+', 'money':'-'}), ('Tell them exactly what you earn.', 'advice:63', {'relationships.partner':'risk', 'judgment':'+'}), ('Marry a sensible partner, even on modest pay.', 'advice:158', {'relationships.partner':'+', 'money':'-'}), ('Propose first and find out later.', 'advice:172', {'relationships.partner':'+', 'flags.married_in_haste':'set'})]), dict(id='G15', name='The wrong line of work', predicament='You are in, or headed for, work that does not suit you, and must decide whether to push on, switch, or wait for something better.', actor='misfit', wants='work that suits them', counterpart='a parent or an employer with other plans', members=[5, 6, 7, 18, 57, 58, 62, 141], options=[ ('Try the work you are set on, whatever your family says.', 'advice:57', {'relationships.family':'-', 'money':'risk'}), ('Leave the family trade for one that suits your gifts.', 'advice:62', {'money':'+', 'relationships.family':'-'}), ('Hold out for work worthy of your old position.', 'advice:141', {'money':'-', 'standing':'-'}), ('Take whatever work is going, however heavy.', 'scene:19', {'money':'+', 'hustle':'+', 'standing':'-'}), ('Tell your new superior how it ought to be done.', 'advice:6', {'relationships.boss':'-', 'flags.dismissed':'set'})]), dict(id='G16', name='The fast set', predicament='The people around you are spending their time and money on amusement, and you must decide how far to go along.', actor='young person', wants='to belong', counterpart='free-spending companions', members=[3, 14, 15, 130, 131, 137], options=[ ('Do as everyone else does.', 'advice:14', {'relationships.peers':'+', 'money':'-', 'standing':'-'}), ('Keep away, even if it leaves you on your own.', 'advice:15', {'relationships.peers':'-', 'judgment':'+'}), ('Go slow, and pick your amusements.', 'advice:3', {'judgment':'+'}), ('Take working afternoons off to play.', 'advice:130', {'relationships.peers':'+', 'relationships.boss':'-'}), ('Cultivate the fashionable set.', 'advice:131', {'relationships.peers':'+', 'money':'-', 'standing':'risk'})]), dict(id='G18', name='Your mistake has come to light', predicament='A mistake of yours has come to light, and you can own up, joke it off, cover it, or let it pass.', actor='person at fault', wants='to come out of it well', counterpart='the one who found out', members=[29, 39, 108, 146, 147], options=[ ('Own up at once.', 'advice:93', {'standing':'-', 'relationships.boss':'+'}), ('Make a joke of it.', 'scene:39', {'relationships.boss':'-'}), ('Keep quiet and hope it passes.', 'advice:93', {'relationships.boss':'risk', 'flags.covered_up':'set'}), ('Take the public humbling.', 'advice:147', {'standing':'-', 'judgment':'+'}), ('Make sure it never happens twice.', 'advice:29', {'judgment':'+'})]), ] # The son's standing by letter, for stage assignment (DESIGN.md "Stages"). Per letter, not per scene. The # son is the protagonist even where a scene is an anecdote about someone else, so this stages the letter, # not the anecdote. Letters 1-5 (0-4): a student, then a graduate about to start. Letters 6-9 (5-8): the # mailing desk, then the billing desk. Letters 10-14 (9-13): a travelling salesman, raised to thirty a week # in letter 13. Letters 15-20 (14-19): assistant manager of a department at fifty a week. "high" is only the # top of this book's ladder, a junior manager, not the owner's chair. STANDING = {0:'low', 1:'low', 2:'low', 3:'low', 4:'low', 5:'low', 6:'low', 7:'low', 8:'low', 9:'middle', 10:'middle', 11:'middle', 12:'middle', 13:'middle', 14:'high', 15:'high', 16:'high', 17:'high', 18:'high', 19:'high'}