# Week of 26 October 2026: the week the replies came, and what broke on the way

> 85 commits in four days, 39 replies to 131 invitations by Friday, nearly triple the week before. The provider migration, a cap of $0.50 a day on the model, the hiring play, a funnel that only writes to people with a reason, a worker silent for ten hours, and an inbox that was losing half of every conversation.

By Adarsh Mamgain, 31 October 2026. From the Hellofew blog at https://hellofew.com/blog.

Part 8 of Building Hellofew, week by week. Every part: [Week of 24 August 2026: the schema before the product](https://hellofew.com/blog/building-week-1-the-schema-before-the-product.md), [Week of 31 August 2026: everything that touches money or the account, first](https://hellofew.com/blog/building-week-2-money-and-the-account-first.md), [Week of 7 September 2026: the loop closes, on a fake LinkedIn first](https://hellofew.com/blog/building-week-3-the-loop-closes.md), [Week of 14 September 2026: read the person before writing to them](https://hellofew.com/blog/building-week-4-read-before-you-write.md), [Weeks of 21 September 2026 to 5 October 2026: the quiet weeks, and the first two replies](https://hellofew.com/blog/building-week-5-the-quiet-weeks.md), [Week of 12 October 2026: the launch week, a name, and 94 commits](https://hellofew.com/blog/building-week-6-the-launch-week.md), [Week of 19 October 2026: writing that reads like a person, and the first fourteen replies](https://hellofew.com/blog/building-week-7-writing-that-reads-like-a-person.md), [Week of 26 October 2026: the week the replies came, and what broke on the way](https://hellofew.com/blog/building-week-8-the-week-the-replies-came.md).

By Friday 30 October the three accounts had sent 131 invitations in the week, had 55 accepted, and had 39 replies, against 14 the whole of the week before. My own account went from 7 replies to 24. I want to be careful about the causes, because the week also had the most commits of any since the launch, and a week with that many changes does not let you point at one. But the writing changed on the Wednesday of the previous week and the replies came in the week after, and that is the order a person would expect.

**What the published accounts did, the last four weeks**

Invitations sent, accepted, and replies across the accounts on the numbers page, read from the admin report on 2026-10-30. The last week was five days old when it was read.

| Week of | Sent | Accepted | Replied |
| --- | --- | --- | --- |
| 5 Oct | 0 | 0 | 1 |
| 12 Oct | 38 | 20 | 0 |
| 19 Oct | 91 | 60 | 14 |
| 26 Oct | 131 | 55 | 39 |

Check it: [the numbers page, which reads the same rows live](https://hellofew.com/numbers)

## Monday: the provider's second version, learned the expensive way

The session provider shipped a new version of its API, and every account was moved to it on Monday. The move is one dispatch on the account id: every read and every send goes to whichever version the account is on, one signed endpoint receives every event, and an admin page can move an account. Then LinkedIn messaging on the new version failed three times in a day. The account-wide chat routes answer that LinkedIn is not supported and to use the inbox routes. The inbox id the documentation names is not what a real account calls it. And the inbox to use is the one the provider itself asks for, not the shortest id in the list. Three fixes, three commits, each one a fact the documentation did not have, each written into the code's comments with the date so the next person does not pay for it again.

Monday also brought pooled learning: what every account learns about which kind of person replies, by segment, pooled with nobody named and handed to every new account on day one, and published on the numbers page once enough workspaces stand behind a bucket. Reply alerts went to the phone, a thumbs-up on a message was noted as the warm signal it is, Today put the one number first, and the inbox got a yardstick beside the reply box: their message was this many words, so yours should not be longer.

## Tuesday: the cap on the model, and the hiring play

On Tuesday a priced spend ledger went in, every model call recorded with its tokens priced against the workspace it was for, and with it a hard cap of $0.50 per workspace per day. The system prompt is cached on every call, the batch is the rule rather than the exception, and the repair pass for drafts that failed a check runs as a second batch rather than one direct call per draft. [The fifty-cents post](/blog/fifty-cents-a-day) has the arithmetic. The same day: the hiring play, where a company that posted the job this week is a buyer this week, found under 6 reads a day; the company's own words from the website on their profile as evidence a message may use; and the guard that reads every message again in the moment before it goes and refuses any that carry a line the workspace no longer says about itself, which exists because of [a message that went out under my name claiming I was an affiliate](/blog/say-who-you-are).

Tuesday was also the day of thirty-two commits that are not features: the poller taking the provider's cache and going quiet on a long refusal instead of making two hundred and sixty requests and sending fifteen emails about them; the reconcile running four times a day against the per-route budget; a phone menu on every header; the help docs, one article per task; three posts on this blog; a quadrant of eleven tools on two axes from their own words; and the effort setting on the model, which left unset had been thinking at the highest level and billing it as output for three quarters of a day.

## Wednesday: a reason of their own

The daily run was rebuilt as a funnel. Only somebody with a reason of their own is written to: they wrote about the problem, they commented under a post about it, their company posted the job, or they are a close fit the reading can defend. A title match alone is no longer enough, a student or a job seeker is not a buyer, and an industry alone is not relevance. The sender's own posts are always watched. Replies the inline classifier missed are tagged once a day in one batch across every workspace. The reply poller runs every twenty minutes and reads one page, because three accounts had been filling the provider's day window, and it remembers what it read.

## What broke

- The worker was silent for ten hours on one night. The heartbeat from week one raised the alarm; nobody was awake for it. The admin report now carries the worker's last word at the top, and the loop that failed and why.
- The model budget being spent was raised as a failed loop twenty-seven times in a week. It is a warning now. A cap doing its job is not an error.
- A refused profile read, a company post without the flag that says it is a company's, a queue page where approved people pushed the drafted ones off the bottom, the model's batch answer arriving wrapped in an object named after the schema and being paid for twice. Each one a commit, each one found by a real account.
- A reply arriving twice in the inbox under two different ids, and the customer's own replies sent from LinkedIn never appearing at all, so threads read as if nobody had answered. That one is the last commit of the series, below.

## Thursday: the voice, the graph, and the thread

Thursday's nineteen commits finish the writing work: the product is never described as an agent, first messages are held to shorter bounds with the machine habits named and checked in code, each sender's voice is learned daily from the first messages of theirs that got a reply, a suggested reply is checked for the same habits and rewritten once, and a no ends it, meaning the classified intent of their last message decides whether a suggested reply may sell at all. Hourly, daily and weekly database backups now go to object storage with a restore drill written down. And a data graph of companies, people and posts, pooled across workspaces and readable by the operator alone, got its own locked tables and a canvas to draw it on.

*Figure: The ledger, the replies table and a mirror of the chat are merged into one thread, deduplicated by message id or by words.*

*The last fix of the series, on 31 October. The replies table stays the record that drives cancellation and alerts; a mirror of the chat, filled by the poller and the webhook in both directions, makes the thread whole. Two deliveries of one reply with the same words a few minutes apart are one reply.*

The inbox fix is the right one to end on, because it is the shape of every fix in the series. A customer said they could not see what they had sent on LinkedIn and that some replies appeared twice. The cause was two decisions made in good faith weeks apart: the inbox only recorded what the other person said, because holding a second copy of a conversation is how you end up telling somebody they never answered when they did; and the dedupe trusted the provider's message id, because why would the same message have two. Both were right until the provider had two versions and the customer answered from their phone. The fix holds our side of the chat too, reads the chats we spoke last in, and treats the same words from the same person a few minutes apart as one message.

| Account | Found | Approved | Invited | Accepted | Replied |
| --- | --- | --- | --- | --- | --- |
| Adarsh | 233 | 196 | 119 | 61 | 14 |
| Shifali | 215 | 132 | 65 | 36 | 6 |
| Abhishek | 181 | 119 | 76 | 34 | 6 |

*The three accounts' funnels on 2026-10-30, from the admin report. Found is people the daily run read; approved is the owner's yes; the rest is what LinkedIn and the people did.*

304 commits from an empty repository to here, counted on 2026-10-29. The limits have not moved since week two: 20 a day, 80 a week, 5 to begin with, nothing under 150 connections, on [the limits page](/limits). What the accounts did under them, this week and every week, including the ones with zero in the replies column, is on [the numbers page](/numbers), read live. If next week's number is lower, it will be there too.
