what does lulu plan do?

Sizes a round before it is bought, prices both ends of what it needs, and says where no number of repeats would be enough.

how do you run it?

In the parser’s own words, how many calls a target precision needs, and what it costs. Every flag this build accepts, on one line:

lulu plan --prompts PROMPTS [--brands BRANDS] [--half-width HALF_WIDTH] [--confidence CONFIDENCE] [--rate RATE] [--days DAYS] [--scans-per-day SCANS_PER_DAY] [--per-brand] [--pilot PILOT] [--brand BRAND] [--ledger LEDGER] [--provider PROVIDER] [--searches-per-call SEARCHES_PER_CALL] [--model MODEL]
lulu plan --prompts 40 --brands 5 --half-width 5 ± forty questions, five brands, five points
lulu plan --prompts 40 --pilot ROUND --brand BRAND ± the split measured off a recorded round

why will it not hand back one number?

For a yes-or-no outcome the total per-draw variance is p(1-p) and cannot exceed a quarter, which is arithmetic. How that splits between the model answering differently and the questions you picked is not, and the split is what decides whether repeats or prompts buy your precision.

So with no pilot it prints the range, the icc above which no number of repeats reaches the target at all, and the price of both ends. Point it at a recorded round with --pilot and every one of those is replaced by a measured value.

do more brands cost more calls?

No. One answer is read for every tracked brand at once, so five brands cost what one does. What the number of brands changes is the critical value: five brands is five intervals, and a leaderboard is one claim about all of them, so a family-wide claim pays for the stronger statement in calls rather than pretending it is free. --per-brand sizes one brand at a time instead.

which flags does it take?

--prompts PROMPTS ± how many tracked questions, required
--brands BRANDS ± how many brands are read from the same answers, default 1
--half-width HALF_WIDTH ± target precision in percentage points, e.g. 5 for +/-5 points, default 5
--confidence CONFIDENCE ± default 0.95
--rate RATE ± expected appearance rate; 0.5 is the worst case and the default, default 0.5
--days DAYS ± window the daily comparison covers, default 30
--scans-per-day SCANS_PER_DAY ± default 1
--per-brand ± size one brand at a time instead of holding every brand at once
--pilot PILOT ± a recorded round to measure the split from
--brand BRAND ± which brand the pilot is scored for
--ledger LEDGER ± where the pilot round lives, default ./ledger
--provider PROVIDER ± which engine's price table to use, default anthropic
--searches-per-call SEARCHES_PER_CALL ± searches one call may run, for engines billed per search rather than per call, default 3
--model MODEL ± model to price; the provider's check model by default

where does it lead?

lulu size ± lulu collect ± lulu draft

the engines it can ask: perplexity sonar, claude.

the parts of the method it reaches: intervals, variance.

every command: setup, init, doctor, collect, draft, usage, ablate, lift, screened, publish, rivals, report, verify, plan, size. back to the docs