Roberson Franze

The decisions that spend your funding are made before anyone writes code.

Schema shape. What runs in the cloud and what doesn't. What you build against what you buy. Whether anyone can continue the work after the person who started it leaves.

None of these are engineering questions. All of them arrive later as an invoice, or as a rewrite you cannot afford. And by the time they are visible, the cheap moment to fix them has passed.

Line item As generated After review
AWS Lambda bundle 7 MB 250 KB
Schema for one communication channel 32 tables 18, for all channels
Fields written, never read billed both ways removed
Shared naming standard none enforced

Not one of these failed a test, broke a build, or raised an alert. That is precisely why they survive to production.

Scope

I don't judge whether your idea is good. I make sure the way it gets built doesn't consume the money raised to build it.

What this is

  • Technical viability of the plan you already have
  • Where infrastructure cost accumulates, and why
  • A data model that survives the next three features
  • A vocabulary any developer or agent can continue from
  • What to build now and what to defer

What this is not

  • An opinion on your market or your business model
  • Validation, endorsement, or investor readiness
  • Implementation — I diagnose and direct, I don't execute
  • A review of your team's competence

Before anything else

Your model stays yours. That is a term of the engagement, not a courtesy.

Every founder who buys advice faces the same silent problem: to get anything useful, you have to open the whole thing to a stranger. I have been on that side of the table, and I did not buy. So this comes first, in writing, every time.

I sign confidentiality agreements without negotiation. I do not sign non-compete clauses or assignments of intellectual property, because I am building my own company alongside this work — which is also why the second commitment above exists.

What a deliverable looks like

One model that absorbs the next channel, instead of one model per channel.

channel PK id kind account_id is_active channel_credential PK id channel_id secret_ref rotated_at account PK id name created_at conversation PK id channel_id external_ref state message PK id conversation_id direction body_ref attachment PK id message_id stored_bytes source_bytes message_event PK id message_id kind occurred_at 1..n 1..n 1..n 1..n 1..n 1..n 0..n
Illustration only — not a client model
erDiagram
  account  ||--o{ channel      : owns
  channel  ||--o{ conversation : carries
  message  ||--o{ attachment   : holds

  attachment {
    bigint stored_bytes  "as encoded on disk"
    bigint source_bytes  "what the user sent"
  }

Why it is written this way

Adding WhatsApp, SMS or social to this model adds rows, not tables. Channel-specific behaviour lives in kind and in the connector, never in the shape.

Two byte counts, not one. Encoding a payload for storage inflates it — base64 by roughly 37%. Systems that bill or meter from the stored size overcharge by that margin, silently, forever.

Delivered as Mermaid source: plain text, versionable, sitting in your repository next to the code it describes. Not a picture that goes stale in a folder.

Engagements

Fixed price. Fixed deliverable. Agreed before anything starts.

Most projects continue past the first session — but what continues is scoped during it, priced before it starts, and never open-ended. Nothing here is a retainer and nothing renews on its own.

The order matters more than the discount. A cost projection built before the data model is settled is arithmetic on a shape that is about to change — which is why I will not sell one without the other.

Remote or in person, London No production access required Two invoices above £2,000 No VAT — price is the price

Who is telling you this

Four decades of building systems, and of running the companies that had to pay for them.

An ISP built from nothing to ten thousand users. VoIP infrastructure moving half a million messages a day. A content management system built before WordPress existed. In every one of them I was both the person making the architecture decision and the person whose money it was.

That combination is the whole offer. Most technical advice comes from people who never carried the cost of being wrong, and most cost advice comes from people who cannot read the schema.

Today I run a multi-agent development stack in production — local models for proprietary code, cloud models where they earn their cost, continuous supervision throughout. I am building GOE with it, workforce infrastructure for the labour market, on a runway I have to defend every month. Every recommendation I give has been tested against that constraint first.

The full background →

  • Client–serverpromised speed
  • Webpromised speed
  • Cloudpromised speed
  • AIfastest yet

Each cycle arrived faster than the last and left behind a generation of systems nobody could maintain. This one accumulates that debt at machine speed — which is the only reason the hour before you start is now worth more than the month after.

Questions founders ask

What this is, what it is not, and what it costs.

Start here

Tell me what you are deciding. I will tell you whether a session is worth your money.

This carries your name, email and message only. Send nothing confidential here — the NDA is signed before we talk, and everything of substance happens after it.