04 · The calls
Five decisions, each with the road not taken.
This is the part of the work that does not screenshot well: what got chosen, what got rejected, and the tradeoff each call accepted.
01
A spreadsheet is the database.
Rejected: a hosted database with a proper backend
The data already lived there, so the source of truth needed no migration. It stays human readable, so the business survives the app breaking. And it hands over hosting and authentication for free. The tradeoff is accepted openly: reads take three to five seconds, and it caps out in the tens of thousands of rows. At this team's size and lead volume, those limits are irrelevant.
02
Identity by fingerprint, never by row number.
Rejected: writing status to row seven, the obvious way
Spreadsheet rows are positions, and positions move as leads arrive and sorting changes. Writing by position means a status eventually lands on the wrong customer, which in a sales tool is a revenue bug. Every save recomputes a composite fingerprint from timestamp, email, phone and name, and writes only to exact matches. Position becomes irrelevant.
03
Split the two boba businesses by buyer intent.
Rejected: grouping by which website the lead came from
One word, two completely different conversations: brands who want boba drinks manufactured, and cafes who want to buy popping boba as an ingredient. Different pricing, different follow up cadence. They became separate categories, and leads from both sites were unified by intent. Buyer intent is the right grouping axis, not lead source.
04
Starring is a flag, not a seventh status.
Rejected: adding Starred to the pipeline
When bookmarking was requested, the easy path was another status. I pushed back: a status answers "where is this deal," a star answers "do I care right now," and mixing them corrupts both. A starred lead keeps its stage and its date order, and gains a gold border plus its own filter. Orthogonal concerns stay orthogonal.
05
Notes save on a button, not automatically.
Rejected: auto save, the modern default
This field holds quoted prices. A dropped connection during an auto save can destroy a price note silently, and nobody would know until the customer quoted it back. Explicit save is the right call when the field holds money.