Zephiel API
Company11 December 20188 min read

Three years in: the things we got wrong

An honest list. The normalisation layer, the pricing page, the region, and the year we spent building for a customer who did not exist.

We started in early 2015. Three years is long enough that the early mistakes are safely in the past and short enough that we still remember them clearly.

The normalisation layer

We tried to translate every provider's response into a single house schema. It felt principled. It produced a translation layer that grew a special case for every new provider and collapsed under its own weight around the sixth.

What survived was the envelope: auth, errors, pagination, rate limits, dates. Those are the same everywhere and always will be. The data inside belongs to the provider, and pretending otherwise cost us a month and a lot of goodwill with the providers whose models we had mangled.

The pricing page

For most of 2016 our pricing page had five tiers with feature matrices. We believed this gave people choice. What it actually did was make everyone stop and think, and a meaningful number of them stopped and did not resume.

Three tiers, one of them free forever, converted better and generated fewer support tickets. The features we had been using to differentiate tiers were mostly things nobody should have to pay extra for, like being allowed to have more than one API key.

The enterprise customer who did not exist

We spent most of a year building for a customer profile we had invented: a large organisation with a procurement process, an SSO requirement, and an audit log with configurable retention. We built all of it.

The customers we actually had were teams of three to twelve who wanted a key in ninety seconds and an invoice they could expense. The enterprise features were not wrong, they were early by about four years, and building them first meant a year of not building what our real users were asking for.

The region

Covered at the time, but it belongs on this list. We ran in one region for a year and worried constantly about the region failing. It never did. What we should have worried about was latency for customers far away from it, which was quietly costing us conversions in Asia the whole time.

What we would keep

Publishing real numbers. Free tiers that do not expire. Refusing to charge per endpoint. Those were unpopular internally at various points and all three were right.

Keep reading