The brief line — the news brief is the product design · 2026-09-22
Short answer: Ink stops asking a persona to write. Each morning the scope's harvest is read, the day's stories are picked by the brief's shares, and every picked story becomes a block brief — the gist, keep reading, the questions, the numbers, the people, what came before, still unknown — on the list as a news item. No essay, no meeting, no rival reader, no art. About 3.7 cents a brief, about 50 cents a morning of twelve, off-peak; the essay line it replaces spent more than that on one piece.
Now we change the Ink design. We will no longer have the persona to write, for now; the brief is the end product. Describe the brief production line and mark the cost. — the owner, 2026-09-22
1 · The line
THE MORNING (03:00 CST, off-peak) cost · per morning of 12
1 HARVEST the brief's searches (Google News RSS, 20 a query, zh edition for zh) $0 search
+ the broad themes' SECTIONS read whole + the wild-card front pages $0 feeds
→ ~1,000 stories, ads out, folded (one story, many outlets) code
2 THE READ every story judged against the brief: in? theme · ● ●● ●●● · beat ~$0.05 Flash, batched
→ the pool, seated by the brief's shares (floor a quarter of equal) code
3 THE PICK N stories (the console's count): per-theme cap ceil(N × share) + 1,
●●● first by attention, one wild card if the brief reserves one,
the same story never twice code $0
│
▼ per story, 4 in parallel
4 THE DESK fetch the story (the full-text ladder), 2 searches, 2–4 pages read,
ONE Flash distillation → the notebook: facts · numbers · people ·
quotes · disputed · unknown, each with its source $0.006 ($0.004 model + $0.002 search)
5 THE QUESTIONS ONE call, two lists: up to six the story itself raises + up to three
「what does this mean for me」only when it touches money, home, health,
safety (the union, under nine) + four canned intents, never printed as labels
(precedent · numbers · critics · mechanism) $0.001
6 THE LOOK-UP one search a question, 12 pages read once, notes per page,
ONE answer a question merged $0.028 ($0.018 model + $0.010 search)
7 THE BLOCKS ONE Flash call reads the notebook + the look-up → the JSON page $0.002
→ the LINTS in code: every figure in the records · digits in the gist ·
no「the records do not say」· a timeline line is an event · no
aggregator among the sources; one re-ask on a fail +$0.002 sometimes
8 THE DEK one line under the title: what the headline leaves out, under 15 words;
re-asked once when it reuses a third of the headline $0.001
9 PUBLISH the list item {kind: "brief", field, title, dek} + the page record
(pegs.json, brief.en.blocks); the edition flips; yesterday's stays code $0
ONE BRIEF ≈ $0.037 · TWELVE ≈ $0.44
+ the morning's shared read ≈ $0.05
A MORNING ≈ $0.50 off-peak · ≈ $0.90 at peak
Every figure above is measured, not estimated: the three real-estate briefs built from scratch on 09-22 (desk + look-up + blocks + dek, the dev call ledger by leaf) and the 09-22 scope harvest's read. The search fees are Serper's ($0.001 a query). Peak = DeepSeek's 09–12 and 14–18 CST at twice the model price; the search fees do not move.
2 · Where the money goes
| Step | Model | Search | Per brief | Share | The dial |
| the desk notebook | $0.004 | $0.002 | $0.006 | 16% | none — the notebook is the floor; a brief without it has nothing to say |
| the questions + the look-up | $0.019 | $0.010 | $0.029 | 78% | the one dial. Six questions + four intents = 10 searches, 12 pages. Four questions + two intents ≈ $0.018; no look-up = a notebook-only brief under a cent, and no questions block |
| the blocks + the lints + the dek | $0.002 | — | $0.002 | 6% | none worth turning |
| one brief | $0.025 | $0.012 | $0.037 | | ≈ $0.06 at peak |
| the morning's read (shared) | $0.05 | $0 | ≈ $0.004 at twelve | | grows with the pool, not with the count of briefs |
For comparison, the essay line: the Nscale piece alone was $0.11 of writing and $0.017 of art, after a meeting, a pitch round and a rival reader that a brief never needs. The brief line writes twelve pages for what one essay cost.
3 · What the old morning did that this one does not
| Stage of the essay brew | In the brief line |
| the pitches — every persona reads the pool and pitches | gone; the pick is code, by the brief's shares |
| the meeting and the slate — the editor matches stories to writers, the match gate | gone; a story needs no writer |
| the archive — prior coverage, the precedent, the study, the numbers over years | folded into the look-up's canned intents (precedent · numbers · critics · mechanism) |
| the persona drives — reaction · life · angle · point · order · draft · mend · reread | gone |
| the rival reader and the mends, the reread | gone; the lints in code take the seat |
| the renditions (en ⇄ zh) | open: a zh reader today gets the English blocks; one more Flash call a brief (≈ $0.002) would render them in Chinese — decide when a zh reader asks |
| the art | off (owner: not yet); $0.017 an image when it returns |
| the gate and the fine print | gone; a brief that fails its lints twice is dropped, the morning says so in its log |
| the Background page behind an essay | is the product — opened from the list item, the field in its head |
4 · Built and owed
| Piece | State | Where |
| the scope: the brief → searches, sections, shares, wild card | on the box | the scope · ink_harvest.harvest_brief |
| the harvest + the read + the seats by share | on the box | ink_harvest.judge_pool · select |
| the desk notebook | on the box (the essay line's research) | ink_brew.research |
| the look-up | on the box (the essay line's; today given the persona's questions) | ink_brew.look_up |
| the reader's questions | built 09-22 | ink_brew.reader_questions |
| the blocks call + the five lints + the re-ask | built 09-22 | ink_brew.brief_blocks · brief_lint (the prompt is BRIEF_SYS); a brief whose page is unusable after the re-ask is dropped and the log says so |
| the pick | built 09-22 | ink_brew.line_pick: the brief's shares walked (weighted_order), ●●● before ●●, never ●, a dry theme's seat handed on, the wild card's reserve, a story burned for three days after it is briefed, the same headline never twice |
| the dek · the list item · the page record | on main | ink_brew.brief_dek · brief_item · peg_card |
| the list, the page, the bubbles, the text size | on main (v1111–v1116) | the Background page |
| the stage — pegs → the line (four stories at a time) → publish, one pass | built 09-22, run on dev | ink_brew.run_line · stage_line · line_one · publish_line; the CLI python lib/ink_brew.py line --n 12; the console's Brew now and the dawn slot run it while「the brief line」is on (the evening slot has nothing to do — the news would be stale by morning) |
| the zh rendition of the blocks | built 09-22 (owner: yes for Chinese) | ink_brew.blocks_zh, one call a brief on the rendition seat; a Chinese reader gets the zh title on the list and the zh blocks on the page |
| the console | built 09-22 | Ink tab: the switch「the brief line」(knob line: briefs | essays, default briefs) · Usage & cost ▸ the day's cost groups lead with the line's four (the harvest · the desk · the look-up · the brief) · Models & APIs: the seats' copy says what each does under the line and its measured price |
| the same story twice from two outlets | owed | the pick refuses a headline that repeats a picked one by half its words; two rewrites of one Reuters story with different words still both pass (seen 09-22: two Anthropic-model stories) — the fix is a check after the desk on the notebooks' one-line, before the look-up spends |
5 · Status
| Date | What |
| 2026-09-22 · a weak answer, traced | the owner:「What is driving SF prices so far above asking?」came back as three Compass figures — the good answer touches the inventory and the AI rich. Traced: both WERE in the look-up's notes (the Guardian's AI boom, CBS's agent on AI pay, a buyer's guide on scarce single-family inventory); the merge kept one page's figures under its 130-word cap and dropped the other two, then the blocks rule「one fact with its figure」dropped the causes that had no number. Fixed at both seams: a WHY question is merged causes-first from every page, figures after; on the page a why question gets one cause per bullet, named. The mortgage brief re-run. |
| 2026-09-22 · deployed | the owner:「I think we can now deploy」→ the box at v1130: the line, the company, the pictures. The box's line knob reads briefs by default from here. Owed on the box: OPENROUTER_API_KEY in its .env — until then Jev is unreachable there and the seating falls to the tag shortlist's top two. |
| 2026-09-22 · the meter's clock | the owner:「make sure the cost numbers are accurate」. A recompute of the day's ledger against the price sheet disagreed by a quarter. Traced: the brew stamps each call with Shanghai time and the meter's peak test read that stamp on the UTC clock — so a 15:00 CST pass (07:00 UTC, peak) was booked off-peak, and the box's 03:00 CST dawn brew (19:00 UTC, off-peak) was booked at the peak rate, since 09-13 when calls began to be priced as of their own hour. Fixed at the seam (cost.is_peak and the dated rows normalise an aware time to UTC; the ledger row now carries the call's own hour), a smoketest check pins 03:00 CST off-peak and 10:00 CST peak, and scripts/reprice_ledger.py re-derives booked rows from their tokens and hour — run on dev (5,700 Ink rows since 09-13: $6.51 booked → $8.34 true; the dev brews ran in CST afternoons, i.e. at peak). The box owes the same run after deploy; its dawn rows will come DOWN. The figures on this page stand: they are rate-based (off-peak sheet), not clock-based. Jev's rows are booked flat from OpenRouter's own cost line and were right — a probe shows that line is exactly input tokens × $0.042/M, output free — and since 09-22 they also carry their token counts, so the console's token columns no longer read zero for Jev. Jev also has its row on the console's price sheet (Models & APIs › prices, under TypeSafe): $0.042/M on every input column, output 0 — the sheet OpenRouter's line has matched, and the brew's fallback rate when a response carries none. |
| 2026-09-22 · the story's own picture (v1128) | the owner:「50 cents for 12 personalized stories plus the masters — the only thing missing is a good hero picture, but at 3¢ it carries little info」→「use the source picture if available and meaningful」. The outlet's photograph is free and IS the story: the peg page's og:image (then the first fetched sources'), pulled once through the unfurl guard (the reader never hotlinks the origin), the code drops logos, icons, strips and tiny files, and ONE look by the eyes (V4.1 Flash, multimodal, ≈0.1¢ — Jev reads text only, so it cannot judge a picture) says whether it is OF the story or stock art, a logo, a reporter's headshot. A brief with no usable picture has none. It rides the list row and the top of the brief page, credited「Photo: CBS News」. Owed: a per-outlet opt-in before a launch (rights). |
| 2026-09-22 · the questions' union | the owner read the crater's「who pays to protect NASA's moon base?」→ a comp on four briefs (the checklist A · 「after reading this」on the notebook B · the same on the finished brief C, docs/ink-background.html): A wins on the reader's own stakes, B and C on what the story raises, B ≈ C. The owner:「A is worth keeping — how does this impact me; B and C are very good — the union, cheaply」→ ONE call returns two lists (the story's six, the reader's three only when the story touches money, home, health or safety), the look-up's page budget holds (≈ +0.3¢ a brief), and the four canned intents never reach the page as their labels — a found fact is written under the question a reader would have asked. The crater and the mortgage briefs re-run on dev. |
| 2026-09-22 · built on local | the whole line in ink_brew (the pick · the desk · the questions · the look-up · the blocks with five lints and one re-ask · the zh blocks · the dek · the publish), the console's switch, the seats' copy, the smoketest's three checks (the lints, the pick, the wiring); the first dev morning for 09-22 run at 12 under the dev scope. Not on the box. |
| 2026-09-22 · the design | the owner's turn:「the brief is the end product」after reading twelve on the dev server. The line above; the cost measured on the 09-22 set. Next: the build of the stage, then a dev morning under the box's scope for the owner's read, then the box. |