Registration at the top and again at the bottom, with an agenda timed by the minute — so the reader knows what they are getting before handing over an address.
Take 1 of 27 blocks139 lineslucide-reactAdded 13 Sept 2026
Free to read, copy and install, for personal and non-commercial projects. Shipping it in client work or a paid product needs Pro ($79 once). The source lands in your repo and stops being ours — no attribution, nothing to upgrade.
A real import against a real dataset with real faults in it, then twenty minutes of matching rules and twenty of unfiltered questions. Recording sent to everyone who registers.
Average wait for a first appointment: 2 days
The hour, by the minute
So you can decide whether it is worth yours before you give us an email address.
0–18 min
Getting four years of history in, and proving it reconciles
Live, against a real dataset with real problems in it — including the duplicate-supplier fault we hit at Halyard. The import is the whole cost of a migration and it is where every demo stops short.
4.1M rows, start to finish
Reconciling totals before go-live
What the three commonest import failures look like
18–38 min
Writing matching rules an auditor can read
Six rules covering 80% of volume, and the argument for leaving the tail manual. We will write one badly first, then fix it, because the failure is more instructive than the finished version.
Rule syntax and review queue
Why we stop at 80%
Making every automated match reversible
38–60 min
Questions, unfiltered
Not a curated Q&A. Everything asked in the chat gets answered on the call or in a follow-up email within two working days, including the ones about competitors.
No pre-screened questions
Written follow-up within two days
Competitor questions answered honestly
Who is presenting
Both of them do customer migrations for a living and neither works in marketing, which is why the demo is allowed to fail on stage.
PR
Priya Raghavan
Co-founder & CEO
Previously led platform at a payments unicorn; still reviews PRs.
MO
Marcus Okafor
Co-founder & CTO
Wrote the first commit in March 2023 and the incident runbook the week after.
ES
Elena Sokolova
Head of Design
Believes every empty state deserves as much care as the dashboard.
TW
Tom Whitfield
Staff Engineer
Owns the sync engine; measures success in p99s, not features.
AD
Aisha Diallo
Product Manager
Turns forty support tickets a week into a roadmap the team believes in.
DK
Daniel Kim
Developer Advocate
If you found us through a conference talk in 2026, it was probably his.
Before you register
Including the one that stops most people, which is the recording.
I cannot make that time. Is it recorded?
Yes, and it is sent to everyone who registers whether or not they attend — no separate "watch on demand" form afterwards. Register even if Thursday is already lost.
Is this a product demo?
Two-thirds of it is the product doing a real migration, so honestly yes — but against a messy dataset rather than a prepared one, and the failures stay in. There is no slide deck.
Will I be called by a salesperson afterwards?
No. You get the recording and one email asking whether it was useful. If you want a conversation there is a link in it, and if you do not, nothing else happens.
Can I send a colleague instead?
Forward the confirmation — the link is not personalised. Registering the whole team is fine too and costs us nothing.
Register, or hear about the next one
One email when a workshop is scheduled, roughly every six weeks. Nothing else is sent to this address.
Recording sent to everyone who registers, attending or not.
The real page, rendered in your current theme — every section below is a live block, not a screenshot.
The other take
Same page type, different bet about what the reader came for. Neither is the “correct” one — pick the layout whose opening section matches the question your visitors arrive with.
The full recording, no registration. A controller, a CFO and one of our founders, including the twenty-minute Q&A and the part where our own software is losing to a spreadsheet.
Timestamped, because almost nobody watches fifty-two minutes and the second chapter is the one most people came for.
00:00 – 06:12
Why multi-entity close breaks at eleven entities and not at ten
The threshold is not size, it is the point at which one person stops being able to hold the whole reconciliation in their head. Priya walks through the 340-tab workbook that ran Meridian for six years and identifies the exact three tabs that made it unmaintainable.
Skip to 04:30 for the workbook itself
The three-tab diagnosis is at 05:48
06:12 – 22:40
Writing match rules that survive an auditor
The longest chapter and the reason most people are here. Live rule-writing against a real ledger, including two rules that turn out to be wrong and the exception queue catching them. Nothing here is pre-baked; the 71-percent number on screen at 14:02 is what it actually was.
Live rule editing from 09:15
The two wrong rules: 14:02 and 17:36
22:40 – 31:05
The parallel month, and why cutting it is a mistake
Tobias makes the case for running both systems for one close, which is the advice most people in the chat disagreed with at the time. He also names what it costs: roughly two extra days of controller time.
The disagreement starts at 24:10
Cost breakdown at 28:55
31:05 – 52:18
Live Q&A
Twenty-one minutes, thirty-four questions, and the answers are transcribed further down this page because this chapter is the most useful and the least watchable part of the recording.
Transcribed in full below
Three questions we could not answer live are answered there too
Three clips
The moments worth sending to a colleague
Each under three minutes and each survives being watched without context — which is the only test that matters for a clip someone pastes into Slack.
“If your close is under four days already, we will make it slower for about a quarter. That is a real thing and we should say it out loud.”
Dana OkonkwoCo-founder, Acme
The live Q&A, in text
Thirty-four questions were asked; these are the six that came up more than once. Two answers correct what was said live, and both corrections are marked.
Does this work if our entities are on different ledgers?
Yes, and about a fifth of customers are in that position — typically NetSuite for the group and Xero for two acquisitions nobody has migrated. Rules are written once and reference a normalised line, so they do not care which ledger it came from.
What happens to rules when the chart of accounts changes?
A rule referencing a deleted account is suspended rather than silently skipped, and it appears in the exception queue with the reason. This was asked three times in the chat and the answer live was slightly wrong — it suspends, it does not fail the sync.
How long before we see 90 percent?
Twelve weeks is the median, and week six is typically in the sixties. If your data has a lot of supplier trading-name variance it is faster, because that is the pattern the structural rules handle best.
Can auditors see how a match was decided?
They can see which rule fired and what it matched on. A plain-language explanation is being built and is not shipped — asked at 44:10, and the honest answer then and now is that a rule id is not good enough.
Is the rule editor available on every plan?
Yes, all plans, and it is not an add-on. This is a deliberate difference from at least one competitor where rule changes go through a support ticket.
What was the actual cost of the parallel month?
Two days of controller time at Meridian and three at Northwind. Both said it was worth it; Tobias makes the case at 28:55 and is more convincing than we are.
The rule-writing template and the full transcript
The seventeen-rule starting set Priya used, as a file, plus the complete 52-minute transcript. This is the one thing on the page that asks for an email address.
Two files, one email, and you are not subscribed to anything by submitting this.
The replay, ungated, for the traffic that arrives months after the event — the gate moves to the transcript and the template, where it is a trade rather than a toll.
Only want one section? Open it and copy that block instead — browse Navigation.
Source
app/webinar-page.tsx
/**
* The event / webinar registration page.
*
* hero the date and the sign-up, above everything
* agenda what is actually covered, by the minute
* speakers who is presenting
* faq the four questions that stop people registering
* book the second chance to register, at the bottom
*
* Two registration points, not one. This page is short enough to read in
* full, and a reader who has just been convinced by the agenda should not
* have to scroll back up — the duplicate form at the end converts materially
* better than the hero form alone on every event page anyone has measured.
*
* The agenda is timed. "Deep dive into best practices" is what event pages
* say and it tells nobody whether the hour is worth theirs; "18 minutes on
* the import, with the failure modes" does. A reader who knows exactly what
* they are getting is also the reader who turns up, which is the number that
* actually matters — registrations are vanity, attendance is the event.
*
* "Recording sent to everyone who registers, whether or not you attend" is
* in the FAQ because it is the single most common reason people do not
* register: they know they are busy that Thursday.
*/
import * as React from 'react'
import { NavbarSimple } from '@/components/navbar-simple'
import { HeroBooking } from '@/components/hero-booking'
import { FeatureRows } from '@/components/feature-rows'
import { TeamGrid } from '@/components/team-grid'
import { FaqAccordion } from '@/components/faq-accordion'
import { NewsletterSignup } from '@/components/newsletter-signup'
import { FooterMinimal } from '@/components/footer-minimal'
/*
Real dates rather than the block's demo days.
An event page whose dates are the component's placeholders is the single
most embarrassing thing this template could ship — and on a catalog hub two
copies of the default set collide on their day ids, so the second one's
buttons are wired to the first one's. Named dates fix both.
*/
const EVENT_DAYS = [
{ weekday: 'Tue', day: '17', slots: 40 },
{ weekday: 'Thu', day: '19', slots: 120 },
{ weekday: 'Tue', day: '24', slots: 210 },
{ weekday: 'Thu', day: '26', slots: 260 },
]
const SESSIONS = [
{
eyebrow: '0–18 min',
title: 'Getting four years of history in, and proving it reconciles',
body: 'Live, against a real dataset with real problems in it — including the duplicate-supplier fault we hit at Halyard. The import is the whole cost of a migration and it is where every demo stops short.',
bullets: ['4.1M rows, start to finish', 'Reconciling totals before go-live', 'What the three commonest import failures look like'],
},
{
eyebrow: '18–38 min',
title: 'Writing matching rules an auditor can read',
body: 'Six rules covering 80% of volume, and the argument for leaving the tail manual. We will write one badly first, then fix it, because the failure is more instructive than the finished version.',
bullets: ['Rule syntax and review queue', 'Why we stop at 80%', 'Making every automated match reversible'],
},
{
eyebrow: '38–60 min',
title: 'Questions, unfiltered',
body: 'Not a curated Q&A. Everything asked in the chat gets answered on the call or in a follow-up email within two working days, including the ones about competitors.',
bullets: ['No pre-screened questions', 'Written follow-up within two days', 'Competitor questions answered honestly'],
},
]
const EVENT_FAQ = [
{
question: 'I cannot make that time. Is it recorded?',
answer:
'Yes, and it is sent to everyone who registers whether or not they attend — no separate "watch on demand" form afterwards. Register even if Thursday is already lost.',
},
{
question: 'Is this a product demo?',
answer:
'Two-thirds of it is the product doing a real migration, so honestly yes — but against a messy dataset rather than a prepared one, and the failures stay in. There is no slide deck.',
},
{
question: 'Will I be called by a salesperson afterwards?',
answer:
'No. You get the recording and one email asking whether it was useful. If you want a conversation there is a link in it, and if you do not, nothing else happens.',
},
{
question: 'Can I send a colleague instead?',
answer:
'Forward the confirmation — the link is not personalised. Registering the whole team is fine too and costs us nothing.',
},
]
export default function WebinarPage() {
return (
<div className="min-h-screen bg-background text-foreground">
<NavbarSimple brand="Acme" activeLabel="Events" ctaLabel="Register" ctaHref="#agenda" />
<main>
<HeroBooking
eyebrow="Live workshop · 60 minutes · Free"
heading="Migrating four years of ledger history, live"
subheading="A real import against a real dataset with real faults in it, then twenty minutes of matching rules and twenty of unfiltered questions. Recording sent to everyone who registers."
submitLabel="Save my place"
days={EVENT_DAYS}
/>
<div id="agenda">
<FeatureRows
heading="The hour, by the minute"
subheading="So you can decide whether it is worth yours before you give us an email address."
rows={SESSIONS}
/>
</div>
<TeamGrid
heading="Who is presenting"
intro="Both of them do customer migrations for a living and neither works in marketing, which is why the demo is allowed to fail on stage."
/>
<FaqAccordion
heading="Before you register"
subheading="Including the one that stops most people, which is the recording."
items={EVENT_FAQ}
/>
<NewsletterSignup
heading="Register, or hear about the next one"
subheading="One email when a workshop is scheduled, roughly every six weeks. Nothing else is sent to this address."
ctaLabel="Save my place"
note="Recording sent to everyone who registers, attending or not."
/>
</main>
<FooterMinimal brand="Acme" />
</div>
)
}
How to use it
1. Copy each of the 7 blocks above into components/ — each block page has its own copy button.
2. Drop this file at app/webinar-page.tsx. The imports already point at @/components/…, so they resolve with no edits.
3. Delete the sections you do not want. Every block takes props, so the copy changes without the layout moving.
For AI
The component, its props, the design tokens it expects and the command that installs it — as one prompt. Paste it into Claude, Cursor, v0 or ChatGPT and what they build around it will match the rest of the catalog instead of inventing its own system.
A complete marketing page in the order that actually converts — hook, proof, substance, price, objections, exit. Twelve blocks, navbar and footer included.
Marketing Pages12 blocks89 lines
Pricing that scales with you, not ahead of you
Start free and stay free until it is worth paying for. Every plan includes the full library — the tiers differ on scale and support, never on quality.
MonthlyYearlySave 20%
Free
Everything you need to try it properly.
Free
Up to 3 projects
Community support
Core component library
Most popular
Pro
For working developers shipping real products.
$19/month
Unlimited projects
Commercial license
The full library
Priority email support
Figma source files
Team
Shared access and billing for a whole team.
$49/month
Everything in Pro
Up to 10 seats
Shared component presets
SSO and audit log
Invoice billing
What the tiers actually change
Every line, side by side.
What the tiers actually change — features by plan
Feature
Free
ProPopular
Team
Projects
3
Unlimited
Unlimited
Commercial license
Not included
Included
Included
Full component library
Not included
Included
Included
Figma source files
Not included
Included
Included
Seats
1
1
Up to 10
SSO and audit log
Not included
Not included
Included
Support
Community
Priority email
Dedicated
Before you decide
The questions people ask right before they buy.
Can I change plan later?
Any time, in both directions. Upgrades take effect immediately and are prorated; downgrades apply at the end of the current period so you keep what you paid for.
What happens when I hit a limit?
Nothing breaks. We email you at 80% and again at 100%, and usage above the limit is billed at the listed overage rate rather than being cut off mid-request.
Do you offer refunds?
Within 30 days, in full, no questions asked. After that we will prorate the unused portion of an annual plan if you ask.
Is there a discount for annual billing?
Two months free — that is the 20% you see on the toggle. Annual plans are invoiced and can be paid by bank transfer.
Do you have startup or nonprofit pricing?
Yes to both. Email us with a sentence about what you are building and we will sort it out — we have never said no to a nonprofit.
Still not sure which plan?
Start on Free. You will know within a week whether you need more, and upgrading takes one click with no migration.
Orbit reads the meeting out of the thread and books it, in the gap everyone can actually make. No polls, no back-and-forth, no third message asking about Tuesday.
Free for the first cohort. No card, and no marketing list.
ALRSMKJTPW
4,820 already waiting
Engineers on the list work at
Northwind
Contoso
Lumon
Vandelay
Initech
4,820
on the waitlist
Since the first demo, 9 March
120
per cohort
Small enough that we answer every email
Q4
general availability
Cohorts open monthly until then
Three things, done properly
Not a feature list — the three decisions the product is built around. Everything else follows from them.
It reads the thread
Forward the mail and Orbit works out who needs to be there, how long it should run, and which week you actually meant. You confirm; you do not fill anything in.
It defends the gaps
Focus blocks are real appointments, not a colour. Orbit will move a meeting before it splits an afternoon, and tells the other side why in a sentence you can edit.
It leaves no residue
Cancel and every hold disappears from every calendar it touched. No orphaned invites, no ghost blocks a month later, no cleanup task nobody owns.
“We ran the beta across a 40-person engineering org for six weeks. The scheduling threads didn't get shorter — they stopped happening.”
DODana OkonkwoVP Engineering, Northwind
in private beta
6 weeks
in private beta
scheduling messages
−71%
scheduling messages
returned per person, per week
3.5 hrs
returned per person, per week
Trusted by support teams at
Meridian
Coastline Health
Fieldstone
What people ask before they sign up
The four we get most, answered the way we would answer them in a reply.
Something we have not covered?
Mail the founders directly. Both of us read it, and one of us replies the same day.
Cohorts open monthly, 120 people each, in signup order. You will get a date rather than a "soon" — and if you are more than one cohort away we say so in the first mail rather than at the end.
What will it cost when it launches?
The first cohort is free permanently, not free for a trial. After that we expect to charge per seat per month, in the range you would expect for a calendar tool. We are not naming a number we might have to walk back.
What do you do with my calendar data?
Read the events, write the ones you confirm, and nothing else. It is not training data, it is not sold, and it is deleted within 30 days of you leaving. The data-processing agreement is available before you connect anything.
Does it work with Outlook, or only Google?
Both at launch. The beta is Google-first because that is what the first cohort ran; Outlook support is in the second. If you are Outlook-only, say so when you sign up and we will slot you accordingly.
Get in before the cohort fills
120 places a month, in signup order. It takes an email address and about four seconds.
4.1 billion events delivered last month, at 99.99% first-attempt success.
The whole integration
Two files. There is no third one where the complexity was hiding.
Signature verification is one call, and it throws rather than returning false
Retries, backoff and the dead-letter queue are server-side — nothing to schedule
Typed payloads generated from your own event schema
1import { verify } from '@relay/sdk'23export async function POST(req: Request) {4 // Throws on a bad signature or a replayed timestamp, so there is5 // no boolean to forget to check.6 const event = await verify(req, process.env.RELAY_SECRET!)78 switch (event.type) {9 case 'invoice.paid':10 await fulfil(event.data.invoiceId)11 break12 case 'invoice.failed':13 await notify(event.data.customerId)14 break15 }1617 // 200 means "stored". Relay retries anything else for 72 hours.18 return new Response(null, { status: 200 })19}
What you stop maintaining
Each of these is a thing teams build in-house, ship, and then own forever.
Delivery
The retry loop you were going to write on Friday
Twelve attempts over 72 hours with exponential backoff, resumed across your deploys rather than lost with the process that scheduled them. Anything that never lands goes to a dead-letter queue you can replay from a dashboard or a single API call.
Retries survive your restarts
Replay one event or ten thousand
Per-endpoint circuit breaking
Verification
Signatures, timestamps and replay windows, once
Constant-time comparison, a configurable tolerance window, and rejection of anything reused. The failure mode of hand-rolled verification is not an outage — it is silently accepting forged events for a year, which is why this is the section to read twice.
Constant-time compare
Replay rejection by default
Visibility
Every attempt, with the response body attached
The request, the response, the status code and the latency, for every attempt of every event, kept for 30 days. When a customer says the webhook never arrived, this is the difference between an answer and an afternoon.
Full request and response bodies
30-day retention
Filter by endpoint, type or status
Works with what you already run
Direct integrations, not a webhook you have to adapt at both ends.
S
Stripe
Payments
Available
Verified passthrough of every Stripe event type.
G
GitHub
Source
Available
Repository, org and app events, with installation scoping.
S
Shopify
Commerce
Available
Order, fulfilment and inventory topics.
S
Slack
Alerting
Available
Post failures into a channel with the payload attached.
A
AWS EventBridge
Infrastructure
Beta
Forward into a bus with the original signature preserved.
K
Kafka
Infrastructure
Planned
Produce to a topic with at-least-once semantics.
What it costs at your volume
Move the slider. There is no plan to pick, and the number below is the number on the invoice.
Infrastructure buyers ask about exits before they ask about features. Fair enough.
What happens if Relay goes down?
Your senders keep retrying into us and we keep the backlog; nothing is dropped for the length of your retry window. If we are down longer than that, the failover endpoint documented in the SDK forwards raw to your origin unverified, and you fall back to your own handling.
Can I self-host it?
Yes, on the enterprise plan, as a container with a Postgres and a Redis. It is the same image we run. The dashboard and the replay API come with it; the only thing that does not is our on-call.
How do I get my data out?
A single export endpoint returns every event, attempt and response body as newline-delimited JSON, and it is available on every plan including the free one. No ticket, no notice period, no export fee.
Is the SDK required?
No. It is 40 lines around a documented HTTP contract and an HMAC. The verification algorithm is written out in the docs so you can implement it in a language we do not ship for — several customers have.
What counts as an event?
One inbound payload, regardless of how many times we retry it or how many endpoints you fan it out to. Retries are our problem, so charging you for them would be charging you for our failures.
Do you have an SLA?
99.99% on ingest, credited automatically against the next invoice rather than on request. The status page below is the same one our own alerting reads, and its history is not editable after the fact.
Cancel in two taps from inside the app. No email, no retention offer.
What is included
Unlimited habits — the free app stops at three
Adaptive streaks that survive holidays and sick days
Apple Health and Google Fit, two-way
Home-screen and lock-screen widgets
Full export as CSV or JSON, any time, free plan included
Family Sharing for up to six people at no extra cost
Before you download
Everything people ask before getting started.
Is the free version actually usable?
Three habits, unlimited history, widgets and export. That is the app most people need; Plus exists for the ones tracking a dozen things at once. The free version is not time-limited and never becomes read-only.
How do I cancel?
Settings, Subscription, Cancel — two taps, inside the app, no chat window and no offer screen. Billing is through the App Store or Play Store, so you can also cancel there and we cannot stop you.
Does it work offline?
Entirely. Everything is stored on the device and syncs when it can. The app has no loading spinner on launch because it is not waiting for us.
What happens to my data if I stop paying?
You drop to three active habits and keep every one of your records. Nothing is deleted and nothing is locked — you can export the lot from the free tier at any point.
Does Family Sharing cost extra?
No. One subscription covers up to six people in your family group, which is how Apple intended it to work and how vanishingly few apps implement it.
…which is why the migration queues behind the reporting job rather than failing outright. The lock is held for as long as the report runs, and on a large table that can be several minutes.
The safe version is to set a lock timeout and accept that the migration may need a second pass, rather than letting it wait indefinitely and block every write behind it.
Four numbers from projects we can name, with the sample attached
Studios quote their best case and call it a result. These are medians across every engagement of the last three years, including two that were cancelled — which is why they are less flattering than the figures on most studio sites, and why we will show you the working.
Shapes of engagement rather than a capability list. Pick the one that matches where you are, or tell us we have the wrong three.
2 weeks
Teardown
We use your product the way a new customer does, then hand back a prioritised list of what is costing you activation and what it would take to fix each one. Fixed fee. Roughly a third of these end with us telling you not to hire us.
Annotated walkthrough of the real flows
Ranked by cost to you, not effort to us
Yours to hand to any studio, including not us
8–12 weeks
Product design
The main engagement. We take one surface — onboarding, the settings area, the billing flow — from research through to built components your engineers can ship, working inside your repo and your design system rather than beside them.
Research, interface design and front-end build
We write the components, not a spec of them
Weekly demo against your staging, not a Figma review
Ongoing
Embedded
Two or three days a week inside your team for six months or more, for companies at the point where the design work is continuous but a full-time hire is a year away. Same people every week, in your standups.
Named designers, not a rotating bench
Three-month minimum, one-month notice
We help you hire your replacement for us
The people who would actually do the work
Fieldwork is six people and stays six people. You meet everyone in week one, and the person in the pitch is the person on the project — a sentence every studio writes and this is the size at which it is true.
PR
Priya Raghavan
Co-founder & CEO
Previously led platform at a payments unicorn; still reviews PRs.
MO
Marcus Okafor
Co-founder & CTO
Wrote the first commit in March 2023 and the incident runbook the week after.
ES
Elena Sokolova
Head of Design
Believes every empty state deserves as much care as the dashboard.
TW
Tom Whitfield
Staff Engineer
Owns the sync engine; measures success in p99s, not features.
AD
Aisha Diallo
Product Manager
Turns forty support tickets a week into a roadmap the team believes in.
DK
Daniel Kim
Developer Advocate
If you found us through a conference talk in 2026, it was probably his.
“They spent the first fortnight telling us our onboarding problem was actually a pricing problem. Nobody we had paid before was willing to lose the next phase of work by saying that.”
MHMarisol HerreraChief Product Officer, Contoso
onboarding rebuild
11 weeks
onboarding rebuild
trial-to-paid conversion
+52%
trial-to-paid conversion
tried it before us
2 studios
tried it before us
Trusted by support teams at
Meridian
Coastline Health
Fieldstone
Tell us what is not working
A paragraph is enough to start. If we are the wrong studio for it we will say so in the reply, and usually name a better one.
Pulled from our Google reviews, with permission and without editing.
“I had not been to a dentist in eleven years and had worked myself into a state about it. They gave me an appointment where they just talked me through it and did nothing else. Went back a fortnight later and got it all done.”
AMAlison M.Comely Bank
“Rang at 8:40 with a broken filling and was in the chair by 11. No fuss about not being registered, and the price was what they said on the phone.”
TKTomasz K.Stockbridge
“Third generation of my family to use them. My gran went to the current dentist’s grandfather. They are not the cheapest and they have never once tried to sell me something I did not need.”
FRFiona R.Dean Village
“The aligners came in about £400 over the first estimate because I needed extra refinements. They flagged it before doing the work rather than on the invoice, which is the only reason this is still five stars.”
DHDan H.New Town
“Parking is genuinely a nightmare and they tell you so on the phone rather than letting you find out. Use the Raeburn Place car park.”
PSPriya S.Inverleith
“They ran 25 minutes late once in four years and the receptionist rang me before I left the house.”
GWGeorge W.Canonmills
Every price, on the page
Including the ones practices normally make you ring for. NHS bands are set nationally and change each April; the private column is ours.
Every price, on the page — features by plan
Feature
NHS Band 1
NHS Band 2Popular
Private
Examination and diagnosis
£29.00
Included
From £95
X-rays, where clinically needed
Included
Included
Included
Scale and polish
If required
Included
From £75
Fillings
Not included
£78.00
From £145
Root canal treatment
Not included
£78.00
From £420
Extraction
Not included
£78.00
From £180
Emergency appointment
£29.00
£29.00
£110
Whitening
Not included
Not included
From £320
Veneers, per tooth
Not included
Not included
From £480
Clear aligners, full course
Not included
Not included
£1,900–£3,400
Written quote before treatment starts
Included
Included
Included
0% finance over 12 months, above £500
Not included
Not included
Included
Free if under 18, pregnant, or on qualifying benefits
Included
Included
Not included
Visiting us
The things people ring up to ask
Getting here
Where do I park?
Honestly: not easily. Raeburn Place has a pay-and-display two minutes away and is your best bet. There is no practice car park and the residents’ bays are enforced. Give yourself ten minutes more than you think.
Is the practice accessible?
Ground floor, step-free from the street, and one surgery with a wheelchair-accessible chair. The upstairs surgeries have no lift — tell us when booking and we will put you downstairs.
Cost and payment
Am I entitled to free NHS treatment?
Under 18, under 19 and in full-time education, pregnant or having had a baby in the last 12 months, or on qualifying benefits. Bring the evidence to the first appointment — claiming without it and being checked later means paying the full charge plus a penalty.
Will I be told the price before you start?
Always, in writing, and we do not begin until you have said yes to it. If something changes mid-treatment we stop and tell you rather than adding it to the bill.
If you are nervous
Can I come in without having anything done?
Yes, and a fair number of people do. Fifteen minutes, sitting up, nothing in your mouth. Two of our dentists have specific training in dental anxiety and it is not treated as an unusual request.
What sedation do you offer?
Inhalation sedation for most anxious patients and intravenous sedation for longer or more difficult work. Both need a chat first, and IV sedation needs someone to take you home.
Out of hours
What do I do at the weekend?
Ring the practice number and the message gives you the NHS 24 dental line. For anything involving facial swelling, difficulty swallowing or uncontrolled bleeding, go to A&E rather than waiting for Monday.
Or just ask us something
A real person reads these during practice hours and answers the same day. If it is urgent, ring instead — we will always pick up faster than we type.
A booking widget above the fold, every price published including the awkward ones, and a footer carrying the registrations a regulated trade must show.
Nine thousand independent makers, no dropshippers, no resold factory stock. Every listing names the person who made it and the town they made it in.
Popular
What is on Thicket
Nine categories, and the makers are named in every one
Counts are live and include only sellers who have shipped an order in the last 90 days — a directory padded with dormant accounts is a directory nobody buys from twice.
Ceramics and glass1,840 makers
Ash & Ember
Coldwater Clay
Pothouse
Kiln Sixteen
Wood and furniture1,210 makers
Grain & Gable
Slow Timber
Bench No.4
Larchfield
Textiles2,470 makers
Fold Studio
Weft & Warp
Tansy Wool
Cloth Hall
Food and drink930 makers
Crumb Bakehouse
Hedgerow Preserve
Salt Marsh
Nine Acre
Shipping this week
Live listings from makers with stock on hand — not a curated editorial selection that is out of stock by the time you click.
Support metrics Craft fairs and Instagram compared with After twelve months on Thicket
Metric
Craft fairs and Instagram
After twelve months on Thicket
Change
Orders per month
11
74
Improved: 6.7×
Hours spent selling, not making
22 hrs
6 hrs
Improved: −73%
Average order value
£34
£51
Improved: +50%
Commission and fees
£0 + stall hire
6% + payment fees
Improved: Flat
Repeat customers
9%
31%
Improved: 3.4×
Medians across 1,204 sellers who joined in 2024 and were still listing twelve months later. Sellers who left inside the year are excluded, which flatters these numbers — 18% did, and the exit survey mostly says the volume was more than they wanted to make.
Makers
From people who moved their whole business onto it
5 out of 5
“I did eleven craft fairs in 2023 and made less than I now make in a good fortnight. The part nobody mentions is the weekends back — I have not stood behind a trestle table in a cold hall since March.”
RLRowan LislePotter, Coldwater Clay
5 out of 5
“The 6% is real money and I resented it for about two months. Then I worked out what my own website plus the ad spend to make anyone visit it had been costing, and stopped resenting it.”
AMAda MbekiWeaver, Fold Studio
4 out of 5
“The volume caught me out. I went from making things to running a small factory in about four months, and I had to deliberately raise prices to slow it down. That is a good problem and it is still a problem.”
JPJonah PretoriusFurniture maker, Bench No.4
5 out of 5
“They removed a seller who was reselling factory ceramics as handmade within a day of me reporting it. That is the whole reason I am still here rather than on the bigger one.”
ICInes CarvalhoCeramicist, Pothouse
Buying and selling
Ask it the way you would say it
What does it cost to sell?
6% of the item price plus the payment processor’s fee, taken at the point of sale. No listing fee, no monthly fee, no charge for photographs or promotion. If nothing sells, you pay nothing.
How do you know a seller actually makes the things?
Every seller submits work-in-progress photographs from their own workspace before their first listing goes live, and we spot-check them again at random. Reselling factory stock is the one thing that gets an account removed the same day rather than warned.
Who handles shipping?
The maker does, from their own workshop, using their own packaging. We buy the labels in bulk and pass the rate through, which is usually cheaper than a small seller can get alone. Nothing goes through a Thicket warehouse because there is not one.
What happens if something arrives broken?
Report it within 14 days with a photograph and we refund you immediately, then settle it with the maker separately. The buyer is never left waiting on a dispute between two other parties.
Can I return something I simply do not like?
Within 14 days for anything not made to order, at your cost for the return postage. Commissioned and personalised pieces are not returnable, and the listing says so before you buy rather than in the confirmation email.
When do sellers get paid?
Seven days after the order is marked delivered, into the account on file, with no minimum threshold. There is no rolling reserve and no payout schedule that quietly holds a month of your money.
Do you take international sellers?
UK, Ireland and the EU today. We will not open a country until we can settle payouts in the local currency without a conversion fee falling on the maker, which is why the list is short.
Open a stall
Twenty minutes to list your first piece, and nothing to pay until something sells.
Two audiences, one page: a search field and real listings for buyers up top, the seller economics below, and a searchable FAQ because they ask different things.
Four surfaces. Each of them is a spreadsheet somebody currently owns, maintains and worries about.
Matching that explains itself
Every automatic match records the rule that made it and the confidence it had, so a reviewer approves a decision rather than re-doing it. The 4% that cannot be matched arrive in a queue with the near-misses attached, not as an error log.
An audit trail nobody assembles
Immutable, timestamped, and exportable to the format your auditor asks for. It is generated as work happens rather than reconstructed in March.
Controls that map to the framework
SOX, ICFR and your own internal controls, mapped to the actual steps in the product, with evidence attached to each one.
Close the same way every month
A checklist with owners, dependencies and a real critical path, so the month-end that took eleven days does not take eleven days because two people were on holiday.
Against the two things you are probably using
Written by us, so read it accordingly — but the two rows we lose are real, and we would rather you found them here than in month three.
Against the two things you are probably using — features by plan
Feature
LedgerlinePopular
Legacy ERP module
Spreadsheets
Automatic match rate, out of the box
96%
71%
n/a
Match reasoning recorded per transaction
Included
Not included
Not included
Immutable audit trail
Included
Included
Not included
Close checklist with owners and critical path
Included
Not included
Manual
SOX / ICFR control mapping
Included
Add-on
Not included
SSO, SCIM and scoped roles
Included
Included
Not included
Median time to first close
3 weeks
9 months
Same day
Works offline on a plane
Not included
Not included
Included
Already integrated with your ERP
14 connectors
It is the ERP
n/a
Data residency in the EU or UK
Included
Varies
Your laptop
Cost of the first year
£48k–£140k
£300k+
Salaries
Nobody has to be trained on it
Not included
Not included
Included
Customers
Three finance leads, on the record
Filmed at their offices, unscripted, and each of them was told they could say what did not work. Two of them did.
“The match rate was 96% in the demo and about 80% on our data for the first two months, because our data was a mess. It is 95% now. Ask them what your number will really be.”
Hana ItoHead of Financial Operations, Lumon
The vendor-risk question
Whether we will still be here when your contract renews
2019
FoundedBy two people who had run month-end at a bank
First customer that November; still a customer.
2022
ProfitableAnd has been every quarter since
We raised once, in 2020, and have not needed to again.
2024
SOC 2 Type IIPlus ISO 27001 and UK/EU data residency
Reports available under NDA before you sign anything.
2026
412finance teams, 94% renewing at twelve months
The 6% who left mostly got acquired onto a parent’s stack.
Real numbers, so you can start the budget conversation
Published because a champion who cannot name a figure cannot open a budget conversation, and a deal that never opens is not protected — it is lost.
MonthlyYearlySave 15%
Team
Up to 15 finance users and 3 entities. Self-serve onboarding.
£4000/month
Automatic matching with recorded reasoning
Close checklist with owners and dependencies
Immutable audit trail and exports
4 ERP connectors included
Email support, next business day
Most popular
Business
Up to 60 users and 20 entities, with a named lead for the first close.
£9500/month
Everything in Team
SSO, SCIM and scoped roles
SOX / ICFR control mapping with evidence
All 14 ERP connectors
Named implementation lead through your first close
99.9% SLA with automatic credits
Enterprise
From — unlimited entities, your choice of data residency, custom controls.
£14000/month
Everything in Business
Unlimited entities and users
UK, EU or your own region for data residency
Custom controls and bespoke connectors
99.99% SLA, quarterly business reviews
Security pack and sub-processor list under NDA
Prices exclude VAT and are the same whether you find them here or ask a salesperson. Implementation is quoted separately and is typically £12k–£40k, depending on how many systems have to be connected.
See it against your own ledger
Forty-five minutes, with a solutions engineer rather than an account executive, using a sample of your data if you can share one.
Built for a champion assembling an internal case: numbers in the hero, a comparison that concedes two rows, video references, and published prices instead of a sales wall.
One API for every system your customers already run
Junction normalises 38 CRMs, ledgers and HR systems behind a single schema. Write the integration once; we keep it working when their vendor changes the field names.
Beta means the endpoints exist and the edge cases do not all have tests yet. Planned means it is not built. We would rather lose the signup than the trust.
S
Salesforce
CRM
Available
Accounts, contacts, opportunities and custom objects.
H
HubSpot
CRM
Available
Full CRM object model, including associations.
P
Pipedrive
CRM
Available
Deals, persons, organisations and activities.
N
NetSuite
Ledger
Available
GL, AR/AP, subsidiaries and saved searches.
X
Xero
Ledger
Available
Invoices, bills, contacts and tracking categories.
Q
QuickBooks
Ledger
Available
Online only — the desktop editions are not supported.
S
Sage Intacct
Ledger
Beta
Dimensions, journals and multi-entity consolidation.
W
Workday
HR
Beta
Workers, org structure and compensation, read-only.
B
BambooHR
HR
Available
Employees, time off and custom fields.
P
Personio
HR
Available
Employees, absences and attendance.
D
Dynamics 365
CRM
Beta
Sales and Business Central. Finance & Ops is planned.
S
SAP S/4HANA
Ledger
Planned
Scoped to the finance modules. In build with two design partners.
O
Oracle Fusion
Ledger
Planned
ERP and HCM. Design partners wanted.
G
Gusto
HR
Planned
Payroll runs, employees and contractor payments.
One normalised payload, whatever is behind it
$ import { Junction } from '@junction/sdk'
const junction = new Junction(process.env.JUNCTION_KEY!)
// Same shape whether the account lives in Salesforce,
// HubSpot or Dynamics — the connector is a parameter,
// not a different code path.
const { data } = await junction.accounts.list({
connection: 'conn_8fK2',
updatedSince: '2026-08-01',
limit: 100,
})
for (const account of data) {
console.log(account.id, account.name, account.owner?.email)
}
What this does that a webhook does not
Every one of these is a thing you would otherwise build once per connector, and then maintain once per connector for as long as the product exists.
Normalisation
One schema, thirty-eight field-naming conventions
An account is an account whether the system underneath calls it a Customer, an Organisation or a Business Partner. Custom fields come through in a typed passthrough rather than being dropped, so the 20% of every integration that is somebody’s bespoke field does not fall out of the abstraction.
One object model across CRM, ledger and HR
Custom fields preserved and typed
Field-level mapping you can override per connection
Auth
The OAuth dance, thirty-eight times, already done
A hosted connection flow your customer completes in your product, with token refresh, revocation handling and the per-vendor quirks absorbed. The one that expires silently after 90 days is handled; you find out from a webhook rather than from a customer.
Hosted or embedded connect flow
Refresh and revocation handled
Per-connection scope reporting
Change
When their vendor breaks the API, it is our incident
Upstream schema changes are absorbed behind the normalised model wherever they can be, and announced with a migration window where they cannot. In four years we have passed through two breaking changes to customers, both with ninety days’ notice.
Versioned, with a 12-month support window
2 breaking changes passed through since 2022
Status per connector, not just per platform
Pricing
Credits, because integration volume is not a straight line
A customer’s migration month is fifty times a normal one. Seats make the quiet months feel like a rip-off and the busy ones like a penalty.
One credit is one API call to a connected system — a read, a write or a page of results. Retries after our own failures are not charged.
250K
$99
per month
Enough for about 40 connected customers on a normal month.
Hard caps available, so a runaway job cannot invoice you
If yours is not on the list yet
Dated where we can date it, and marked planned rather than “coming soon”. Design partners get the connector free for the first year and a say in the field mapping.
Shipped
2
Salesforce custom objects, write path
Landed in v3.1, August.
Sage Intacct multi-entity
Consolidation dimensions included.
In progress
3
Workday write pathQ4 2026
Read-only today; writes with two design partners.
Dynamics 365 Finance & OpsQ4 2026
Sales and Business Central are already live.
Webhook-based change feeds for every connectorQ1 2027
Polling today on 11 of the 38.
Planned
3
SAP S/4HANA, finance modulesH1 2027
Scoped with two design partners. Not started.
Oracle Fusion ERPH1 2027
Design partners wanted — talk to us.
Gusto and Rippling payrollH1 2027
Payroll is a different object model; scoping now.
What you will ask in the security review
Or at the point where somebody senior asks what happens if this goes away.
Do you store our customers’ data?
Only what is needed to serve a request, and by default only for the 24 hours a retry window needs. Sync mode caches normalised records so you can query without hitting the upstream rate limit; it is opt-in per connection, and the retention is yours to set down to zero.
What happens when we outgrow you?
Every connection can be exported with its tokens and its field mappings, in a documented format, on every plan. We would rather you left cleanly than stayed because leaving was expensive — and the number of teams that ask this and then never leave is most of them.
How do you handle upstream rate limits?
Per-connection budgeting, queued writes and automatic backoff tuned to each vendor’s published limits. Your call either returns data or returns a documented 429 with a retry-after — it never silently returns a partial page.
Who is liable when a connector loses data?
We are, up to the limits in the contract, and the contract is on the site rather than behind a sales call. Writes are idempotent by key so a retry cannot double-post, which is the failure mode this question is really about.
Can we self-host it?
No, and we would rather say so plainly than run a sales process that ends here. Single-tenant deployment in your cloud region is available on the top tier; the code does not leave our estate.
What is your uptime, and where is it published?
99.95% on the API, measured per connector and published per connector — a status page that stays green while one connector has been broken for a week is worse than no status page at all.
The connector names in the hero, a catalogue with honest live/beta/planned status, four SDK languages, credit pricing, and a dated roadmap for everyone who is not on the list.
The skill nobody teaches and every job assumes: getting oriented in fifty thousand lines of someone else's decisions, quickly, without reading all of it.
I had been a developer for six years and had quietly assumed everyone else found new codebases as slow as I did. Week three broke that. I onboarded onto a new team in September and was shipping in four days.
NONadia OseiSenior engineer, Northwind — cohort 4
Past students now work at
Northwind
Contoso
Lumon
Initech
Globex
Vandelay
What you will be able to do in nine weeks
Written as capabilities rather than topics, because “covers dependency graphs” tells you nothing about whether you could use one on Monday.
Find the load-bearing 5% of a codebase in an afternoon
Most of any repository is leaves. There is a small core that everything else hangs off, and there are repeatable ways to find it that do not involve reading files in alphabetical order. You will do this on four real open-source projects, timed.
Reconstruct the decisions nobody wrote down
Why is there a second cache here? Why does this module import nothing? Git history, issue threads and the shape of the code itself are evidence, and reading them is a learnable skill rather than seniority.
Change something safely on day two
The goal of orientation is not understanding — it is a correct change. You will practise identifying the smallest safe edit and the blast radius around it, which is a different question from “how does this work”.
Say “I do not know yet” with a plan attached
The professional version of being lost is a specific list of what you have ruled out and what you would look at next. Half the cohort says this is the part that changed how they are perceived at work.
Nine weeks, one repository a fortnight
Two hours of recorded material a week and a live session on Thursdays. Everything is recorded, and nobody has ever been penalised for watching it late.
Reviews that start themselves
Reviewers assigned by file ownership, not by whoever is online
Stale approvals dismissed automatically when the diff changes
Merge unblocks the moment the last required check goes green
Who is actually teaching it
Not a faceless academy. One person, who answers the forum posts and runs the Thursday sessions live rather than shipping a recording from 2023.
MO
Marcus Okafor
Instructor — and the person who replies to your posts
Fourteen years across four companies, most of it inherited code. Spent three years as the person a large payments company sent into failing projects, which is where this material came from — it is the checklist I built for myself and then found I could teach. I have run this cohort eleven times and rewritten a third of it since the first one.
One price, one payment
No upsell tier, no “community edition”, and no separate charge for the live sessions.
Full refund up to the end of week three, no reason needed, no form to fill in — reply to any email from me. 11 of 340 students have taken it. Access does not expire and there is no subscription to cancel.
What is included
Nine weeks of material, yours to keep permanently
Nine live Thursday sessions, recorded if you miss one
Four real codebases with worked solutions
Written feedback on three submitted exercises
A private forum where I answer, not a moderator
Company invoice on request — most employers pay for this
Before you enrol
Everything people ask before getting started.
How much time does it actually take?
Two hours of recorded material and roughly three hours of exercises a week, plus a 90-minute live session on Thursdays at 18:00 UK. Call it six hours. People who treat it as three hours get noticeably less out of it, and I would rather say that than have you find out in week five.
What do I need to know already?
Comfort in at least one language and some experience of a codebase you did not start. Roughly two years in. It is not a beginner course and it is deliberately not an advanced one — the material is about a skill senior developers usually acquired by accident.
Which languages are the codebases in?
TypeScript, Python, Go and one Rust project. You do not need to know all four — that is somewhat the point, since orienting in an unfamiliar language is the harder version of the same skill. Every exercise has a worked solution.
What if I miss the live sessions?
They are recorded and posted the same evening, and the forum is where most of the actual discussion happens anyway. About a third of each cohort is in a timezone that makes 18:00 UK impossible and they do fine.
Will my employer pay for it?
Usually, yes. There is a one-page justification you can forward and I will invoice a company directly, with a PO number if procurement needs one. Roughly 60% of students go this route.
Does access expire?
No. The material, the recordings and the forum stay available, including the updates I make for later cohorts. There is no subscription and nothing to cancel.
What if it is not for me?
Full refund any time up to the end of week three — reply to an email and say so. No form, no exit interview, no attempt to talk you out of it. 11 people out of 340 have done it and I would rather that number were higher than have anyone stay resentful.
…which is why the migration queues behind the reporting job rather than failing outright. The lock is held for as long as the report runs, and on a large table that can be several minutes.
The safe version is to set a lock timeout and accept that the migration may need a second pass, rather than letting it wait indefinitely and block every write behind it.
One person selling one course: a student testimonial as the hero because a course cannot demo, a long instructor section, one price and a refund policy on the page.
Flags are borrowed complexity — this is what it cost to pay ours back, and the two rules that keep the debt from growing again.
PR
Priya Raman
Staff Engineer · · 12 min read
The pull request was titled “remove stale flags, part 1 of 8” and it deleted more code than the previous quarter had added. Our flag service listed 312 active flags; production telemetry showed 41 of them had evaluated to the same value for every user since at least January. The rest were split roughly evenly between experiments nobody remembered starting and kill switches for services we had already decommissioned.
“A feature flag is a loan. The interest is every engineer who has to reason about both branches forever.”
Read the next one when it ships
One email per post. Unsubscribe is one click and actually works.
Unsubscribe in one click. We never share your address.
Nothing that fits? We read every speculative application — jobs@hoverlab.dev.
Before you apply
The things candidates ask once there's an offer, answered while it can still save you time.
Is the team remote?
Remote-first across European and American time zones, with a four-hour overlap window. We meet in person twice a year, and the company pays for it.
Do you sponsor visas?
Yes, for roles marked as sponsoring in the listing. The process runs in parallel with the offer, not after it, so sponsorship never delays a start date.
What does the interview look like?
A conversation, a paid work sample you do on your own time, and a debrief with the people you would sit with. No whiteboard algorithms, no surprise rounds.
I don’t see a role that fits. Should I still write?
Yes. Several people on the team joined through a speculative note that named the problem they wanted to work on. Tell us that, and skip the cover letter.
Ship the roadmap, not the tooling
Start a workspace now and have your first sprint planned before standup tomorrow.
Every request to the Acme API is authenticated with a bearer token. This page covers creating a key, storing it safely, and rotating it without downtime.
Acme issues two kinds of keys. Secret keys (prefixed sk_live_) can read and write everything in your project and must only ever live on a server. Publishable keys (prefixed pk_live_) are safe to ship in a browser bundle and can only create client sessions.
Keys are scoped to a project, not to your account. Deleting a project revokes its keys immediately; removing a teammate does not, so treat offboarding as a reason to rotate.
Creating an API key
Create a key from the dashboard under Settings → API keys, then pass it as a bearer token on every request:
Note: the full secret is shown once, at creation. Acme stores only a hash, so a lost key cannot be recovered — it can only be rotated.
Rotating keys
Rotation is overlap, not replacement: create the new key, deploy it everywhere, and only then revoke the old one. Both keys stay valid during the window, so a slow rollout never turns into an outage.
Most of what reaches our inbox is answered on this page in about forty seconds. The four below are what people ask for most.
Popular
The six that come up most
Ordered by how often they arrive, not by how interesting they are.
I have lost my two-factor device.
Use one of the eight recovery codes issued when you turned 2FA on. If those are gone too, a workspace admin can reset your second factor from Settings → Team; we cannot do it for you, because a support agent who can disable 2FA is a way around 2FA.
Who receives our invoices?
The billing email on the account, which is separate from the owner’s login and can be a shared inbox. Change it under Billing → Details; the next invoice uses it, and past invoices are re-sendable to the new address from the same screen.
How do I get all of our data out?
Account → Export produces a ZIP of JSON and CSV, everything you have put in, with no plan gate and no notice period. Large workspaces are emailed a link when the file is ready, usually within the hour.
We have hit the seat limit mid-sprint.
Adding a seat is instant and prorated to the day — nobody is blocked while an invoice clears. If you would rather not add one, deactivating a dormant member frees their seat immediately and keeps everything they wrote.
Someone has left the company. What happens to their work?
Deactivate rather than delete. Their documents, comments and history stay where they are and reassign to whoever you name; deleting the account removes the person and keeps the work, but the audit trail then reads "deleted user", which is harder to answer questions about a year later.
Why is a page loading slowly for one person only?
Almost always a stale service worker. A hard reload fixes it. If it survives that, check the status page above — a regional degradation shows up as one office being slow while the rest of the company is fine.
Still stuck
One person reads every one of these. Include what you expected, what happened, and the workspace name — that is the difference between an answer and a first reply asking for details.
Search first, the six answers that absorb the most contact volume under it, and the ticket form in plain sight rather than behind a modal — a support page measured in tickets not filed.
The release timeline with the site chrome kept on, and the one subscribe form on the site that is not a detour — "tell me when this page changes" is exactly what it promises.
A wall of certification logos answers none of these. Each figure names its scope, because a control that covers one environment and not the other is the thing a reviewer is looking for.
Encryption at rest
AES-256
Every store, including backups and the search index.
Median patch time
31 h
Critical CVEs, from advisory to production, trailing year.
Data regions
4
EU, US, UK and AU. Pinned per workspace, never replicated out.
Access reviews
Quarterly
All production access, logged and exportable.
Measured, not claimed
How fast it is, and how we know
Every number below names the conditions it was taken under. A benchmark without its method is a marketing figure wearing a lab coat.
Cold start
112 ms
p50 over 10,000 invocations, Frankfurt, empty cache.
Query throughput
24.6k/s
Single node, 4 vCPU, read-only workload.
Index rebuild
38 s
One million rows, measured wall-clock end to end.
Memory ceiling
512 MB
Peak RSS under the throughput run above.
Security, answered properly
These four arrive in every procurement review. Answering them on a public page rather than in a questionnaire is worth about two weeks of a sales cycle.
Talk to someone who builds this
Three fields, because a fourteen-field form is a way of asking for the meeting twice. You get a reply inside one working day.
Page content sits here. The bar rides above it once the reader is past the threshold, and the spacer at the end of the document keeps the last element reachable.
Start with the free tier
Every component readable and installable. A licence only when you ship it commercially.
The page a security questionnaire arrives from, written to be forwarded rather than to persuade: certifications early, benchmarks with a denominator, objections in a reviewer’s own words, and a route to a human.
Every migration page promises everything comes across. Something never does, and finding out which thing after the cutover is how a switch becomes a rollback.
Records, history and attachmentsEverything with a stable id, including the timestamps, so reports still line up.
Users and their permissionsRoles are mapped, and the mapping is shown for approval before anything is written.
What does not come acrossCustom automations. The triggers have no equivalent here and a silent half-migration is worse.
Run it twiceA trial into a sandbox first, then the real one. The trial is free and does not count against anything.
Integrations
Not all of these mean the same thing
A grid of thirty logos implies thirty equivalent integrations. Usually four are deep, six are one-way, and the rest are a Zapier entry. Saying which is which costs one sentence each.
Two-way syncChanges flow both directions and conflicts are resolved, not last-write-wins.
One-way importWe read from them on a schedule. Nothing is written back, which is often what you want.
Notifications onlyWe post events into the channel. Honest, useful, and not a sync — so it is not listed as one.
Via the APIEverything else. Documented, versioned, and the same API the first row is built on.
Results
What changed, and over how long
Most readers skip the quotes. What they do not skip is a number with a time period attached to it, and every figure here names the company it came from and how long it took.
Support replies
-63%
Median first-response time at Northwind, over one quarter.
Onboarding
9 days → 2
Time to a customer's first live workspace, at Arden.
Manual reconciliation
12 hrs/wk
Hours returned to one finance team of three, measured before and after.
Kept using it
94%
Of teams past 90 days, over the last twelve months.
The awkward questions
Most FAQs answer what the company wishes it were asked. These are the four that actually decide it, including the one where the honest answer is no.
See it on your own data
Thirty minutes, screen-shared, against something of yours rather than a seeded demo account. If you would rather not talk to anyone, the free tier is the same product.
The landing page for a reader whose current tool already works: the migration mechanism second rather than buried, integrations stated at depth, and deliberately no pricing section.
Every product makes a claim about how its user should think. Most make it by accident. A short case for treating layout as a position rather than a container.
Everyone who joins gets a position and a link. Three people through your link moves you up a hundred places, which is the only honest way a waitlist is worth sharing.
A product announcement shaped as writing rather than a landing page — serif headline, real byline, three pieces of evidence, and an endpoint card that doubles as documentation for the week before the docs exist.
A price defends itself against the alternative, not against a competitor's price. The alternative here is engineering time, so that is the unit.
One section, hand-builtHalf a day for the markup, another for the responsive and keyboard passes.
The same section hereOne command, and the accessibility decisions are already made and explained.
Where it stops being closeAround the fourth section. Before that, honestly, build it yourself.
What you are not buyingA dependency. The source lands in your repository and stops being ours.
Reviews
4.6, and the numbers behind it
An average with nothing beside it is unreadable: 4.6 from nine reviews and 4.6 from nine hundred are different facts. These are what make the first number mean something.
Average
4.6
Across every review, including the ones left after a return.
Reviews
1,284
Unfiltered. Nothing is hidden for being low.
Verified purchase
91%
Matched to an order. The other 9% are labelled as such.
One and two star
6%
Shown, and sorted to the top when you filter by lowest.
Book a walkthrough
Thirty minutes with an engineer, not a sales team. Bring your codebase.
30 minutes
Video call, link on confirmation
Cookies, and what they are for
Essential cookies keep you signed in. The rest stay off until you turn them on, and you can change your mind at any time. Privacy policy
One thing, one price, named above the fold — for a course, a consultation or a one-time licence, where there is nothing to compare against and hiding the number answers the only question last.
Every finance team we knew was reconciling two systems by hand on the last Friday of the month. The tools that claimed to fix it assumed you had an engineer spare. We did not, and neither did they — so the product’s first constraint was that it had to work for someone with no engineer, and it still is.
No hero — a reader who clicked "About" has already read the pitch and is checking whether the company is real, so the page opens with numbers and a timeline instead of a headline.
Replies within one working day, and within two hours for anything marked urgent.
Faster than waiting for us
Four things people write in about most. All four have an answer you can act on now.
Where do I find an invoice?
Billing → Invoices, in your account. Every invoice is there as a PDF from the day the account was opened, including ones raised before you joined the team.
How do I cancel?
Billing → Plan → Cancel. It takes effect at the end of the period you have paid for, your data stays exportable for 90 days afterwards, and nobody will ring you about it.
Do you have a DPA and a security review pack?
Yes to both, and neither needs a sales conversation first. Ask here and they arrive as attachments, usually the same working day.
Something is broken right now.
Check status.example.com first — if it is us, the incident is already open and updating. If it is not, mark this form urgent and it routes to the on-call engineer rather than the queue.
The form first, then the four questions that cause most of the messages — answered here, because that is faster for the sender than a reply and leaves the inbox for what needs a person.
The company is small enough that the person who answers your question is usually the person who built the thing you are asking about. That is a deliberate ceiling, not a stage we are growing out of.
PR
Priya Raghavan
Co-founder & CEO
Previously led platform at a payments unicorn; still reviews PRs.
MO
Marcus Okafor
Co-founder & CTO
Wrote the first commit in March 2023 and the incident runbook the week after.
ES
Elena Sokolova
Head of Design
Believes every empty state deserves as much care as the dashboard.
TW
Tom Whitfield
Staff Engineer
Owns the sync engine; measures success in p99s, not features.
AD
Aisha Diallo
Product Manager
Turns forty support tickets a week into a roadmap the team believes in.
DK
Daniel Kim
Developer Advocate
If you found us through a conference talk in 2026, it was probably his.
41
People
9
Countries
4h
Daily overlap
3.1y
Median tenure
How we work, in the parts you can check
Three commitments with a shape you could hold us to. Everything else is a poster.
Support
Engineers take the rota
Every engineer does one support day a fortnight. It is the cheapest way we have found to keep the bug that annoys forty people from losing to the feature that impresses one.
One day a fortnight, named on the rota
No tier-one script
Fixes ship the same week
Decisions
Written down before they are made
Anything that changes the product or the roadmap starts as a document with the alternatives in it. Meetings are for disagreeing with the document, not for hearing it read out.
Decision log, searchable
Alternatives recorded, not just the winner
Reversals noted on the original
Hours
Async by default, overlapping by agreement
Nine time zones only works if the four hours everyone shares are spent on the things that genuinely need a conversation. Everything else is a document and a day to read it.
Four-hour shared window
No recurring meeting without an agenda
Two in-person weeks a year, company-paid
Want to work here?
Openings are on the careers page. If none of them fit, the speculative note is read by a person and answered either way.
Who we are, as distinct from who we are hiring: faces, the shape of the company in four numbers, and three working commitments that could actually be falsified.
There is a free tier rather than a trial: it does not expire, it is capped at one workspace and 500 transactions a month, and it never asks for a card. Most single-person users stay on it permanently.
Can I export everything if I leave?
Yes, as CSV or JSON, from Settings → Data, without asking us. The export includes historical records, attachments and the audit log. It keeps working for 90 days after cancellation.
Where is my data stored?
In the region chosen when the workspace is created — eu-west, us-east or ap-southeast — and it does not move. Backups stay in the same region.
Do you train models on my data?
No, and it is not a setting you have to find and turn off. Customer content is never used to train anything, by us or by a subprocessor; the DPA says so in a clause you can hold us to.
What happens when I go over the plan limit?
Nothing stops working. You get an email at 80% and another at 100%, and overage bills at the per-unit rate on the pricing page. We do not lock an account for going over.
Is there an API?
A public REST API on every plan, free tier included, with no separate key purchase. Rate limits differ by plan and are published in the docs rather than discovered.
Everything else
Browse by what you are deciding
Billing
Can I change plan mid-month?
Yes, both directions, and the change is prorated to the day. Downgrades take effect immediately rather than at renewal, so you are not paying for a tier you have stopped using.
Do you invoice annually?
On any plan, with a 15% discount and net-30 terms. Purchase orders and bank transfer are fine; a procurement portal is fine too, though it will be slower than either of us would like.
Is VAT included in the listed price?
Prices are excluding VAT. It is added at checkout based on the billing country, and a valid EU VAT number reverse-charges it.
Security
Do you have SOC 2?
Type II, audited annually, and the report is available under NDA within a day of asking. The penetration-test summary is available without one.
Is SSO available on every plan?
SAML and OIDC are on Business and above. They are not priced as a separate security add-on, which is a practice we have opinions about.
How long do you keep deleted data?
Thirty days in soft delete, then purged from primaries and from backups within a further sixty. Immediate hard delete is available on request for anything with a legal reason behind it.
Getting started
How long does setup actually take?
Twenty minutes to a working workspace if your data is in a supported system, and about a day if it is in spreadsheets. The import step is the whole cost; everything after it is configuration you can change later.
Do you migrate my existing data?
Self-serve importers cover the six commonest sources. Above 100,000 records, a person on our side runs the migration with you — included, not a professional-services line item.
Can I try it with my real data before deciding?
That is the recommended way. Import into a sandbox workspace, which is free and disposable, and throw it away if the answer is no.
…which is why the migration queues behind the reporting job rather than failing outright. The lock is held for as long as the report runs, and on a large table that can be several minutes.
The safe version is to set a lock timeout and accept that the migration may need a second pass, rather than letting it wait indefinitely and block every write behind it.
Search and browse, in that order, because the two halves serve opposite visitors — one arrives from a search engine with a phrase, the other from the navbar with none.
How Halyard Components closed the month in three days
A six-person finance team, four years of history in two systems, and a close that had been slipping later every quarter for two years.
PR
Priya Raman
Customer engineering · · 6 min read
The pull request was titled “remove stale flags, part 1 of 8” and it deleted more code than the previous quarter had added. Our flag service listed 312 active flags; production telemetry showed 41 of them had evaluated to the same value for every user since at least January. The rest were split roughly evenly between experiments nobody remembered starting and kill switches for services we had already decommissioned.
“A feature flag is a loan. The interest is every engineer who has to reason about both branches forever.”
Results
Six months before, six months after
Support metrics Jan–Jun 2025 compared with Jul–Dec 2025
Metric
Jan–Jun 2025
Jul–Dec 2025
Change
Days to close the month
9.5
3.0
Improved: −68%
Entries reconciled by hand
4,200
310
Improved: −93%
Reopened periods per quarter
2.3
0.4
Improved: −83%
Finance headcount
6
6
Improved: unchanged
Measured from Halyard’s own close calendar, not from our telemetry. Headcount is in the table because it did not change — the saving was in the hours, and nobody lost a job over it.
What the six weeks actually consisted of
Written up in the order it happened, including the part that was not planned.
Weeks 1–2
Imported four years of history before changing anything
The rule everywhere: no new process until the old data is in and reconciles to the same totals. It caught a duplicate-supplier problem that had been quietly inflating one cost centre since 2022.
4.1M rows imported
Totals matched to the penny before go-live
One pre-existing data fault found
Weeks 3–5
Automated the six matching rules that covered 80% of the work
Not all of it. The long tail of exceptions stayed manual on purpose — the team wanted to keep seeing them, and automating a rule you cannot explain to an auditor is a liability rather than a saving.
Six rules, all human-readable
Exceptions routed, not hidden
Every automated match reversible
Week 6 onward
Gave the auditors their own read-only access
The year-end request list went from a fortnight of screenshots to a login. This was not in the original scope and turned out to be the change the CFO mentions first.
Read-only auditor role
Immutable audit log
Year-end prep: 11 days → 2
“I had budgeted for a new hire to survive the close. We did not need one, and I would rather have the three days back than the headcount.”
The numbers above the story, which is the opposite of how these are usually written: the colleague this link gets forwarded to needs the result in the first screen.
Ask for a reference in your industry instead. We will introduce you to a customer who has been with us long enough to have complaints as well as compliments.
Excerpts that lead with the outcome rather than the customer’s biography, filterable by industry — because the reader is scanning for a problem that resembles their own.
Named by the situation you are in rather than by how much they cost, because the wrong engagement at the right price is still wrong.
Audit
You think something is wrong and cannot prove it
Two weeks, fixed fee
A written report you own outright
No obligation to hire us for the fix
Build
You know what to do and have nobody free to do it
Six to twelve weeks
Your repo, your CI, your review process
Handover session and a written runbook
Embed
You need the capability, not the deliverable
Three months minimum
Two of ours alongside two of yours
Pairing, not a parallel team
How the work runs
The three things clients ask about before they ask about price.
Always first
A week of reading before anyone writes code
The repository, the incident history, the last two post-mortems and an hour with whoever has been there longest. Every engagement that has gone badly for us skipped this to start faster.
Codebase and infra review
Incident and on-call history
One interview per team
How we bill
Fixed fee per phase, never by the hour
Hourly billing makes our incentive the opposite of yours on the only question that matters — how long this takes. The phase price is agreed before the phase starts and does not move unless the scope does, in writing.
Phase priced before it begins
Scope changes re-quoted, not absorbed silently
Unused phases simply are not invoiced
What you keep
Everything, including the reasoning
Code, infrastructure, documents and the decision log with the alternatives we rejected and why. A handover that is only the code leaves the next person re-deciding everything from scratch.
Full IP assignment
Decision log with alternatives
Runbook written by whoever is on call next
What each one costs
Ranges, with the variable named. If a number here is not the number you would be quoted, the difference is in the row underneath it.
What each one costs — features by plan
Feature
Audit
BuildPopular
Embed
Typical duration
2 weeks
6–12 weeks
3 months, rolling
Fee
£9k fixed
£12–18k per phase
£22k per month
What moves the number
Nothing — it is fixed
Source systems in scope
People embedded
Written report
Included
Included
Included
We write production code
Not included
Included
Included
Your team pairs with ours
Not included
Not included
Included
Handover runbook
Not included
Included
Included
Notice to stop
n/a
End of phase
30 days
Before you enquire
The four that come up on nearly every first call.
Will you sign our MSA rather than use yours?
Usually yes. Our standard terms exist so a small engagement does not need a legal review; if you have your own, send it and we will redline rather than negotiate from scratch.
Can we stop after the audit?
That is a normal outcome and the fee is structured for it. Around a third of audits end with a report that the client’s own team then acts on, which is a good result and we would rather have the reference.
Who actually does the work?
The people you meet on the call. We do not have a bench of juniors behind a senior pitch team, which is also why we can only run four engagements at a time.
What if we are unhappy halfway through?
Stop at the end of the current phase and pay only for that phase. There is no termination fee and no minimum term on Audit or Build.
Thirty minutes, no deck
Bring the problem rather than the requirements. If we are the wrong people for it, we will say so on the call and suggest who is not.
For a business that sells work rather than licences: three engagements named by situation, and prices in a comparison table rather than a pricing card with a monthly toggle that does not apply.
Live means supported and stable. Beta means supported and still moving. Planned means not yet built, and it is on this page rather than hidden so you can plan around it.
Q
Quartzly
Accounting
Available
Two-way sync of ledgers and cost centres, reconciled hourly.
N
Northwind
Logistics
Available
Shipment and duty records imported nightly, matched to invoices.
H
Halyard
Payments
Available
Payment runs pushed for approval and pulled back as settled.
M
Meridia
HR
Available
Employee and cost-centre directory as the source of truth for approvals.
C
Cobalt Loop
Cloud
Beta
Infrastructure spend broken out per team and posted as journal lines.
T
Tessellate
SaaS spend
Beta
Design-tool seat counts reconciled against the licence ledger.
O
Obsidia
Data
Available
Warehouse export for teams that would rather model it themselves.
F
Ferrous
Manufacturing
Planned
Works-order costs matched to purchase invoices at line level.
I
Isobar
Reporting
Planned
Carbon accounting fed from the same supplier records as the ledger.
By the job
Grouped by what you are trying to close
The same set, arranged by the reconciliation it removes rather than by vendor category.
Financial servicesand 40 more
Fieldstone
Meridian Capital
Umbra
Halden Trust
Healthcareand 18 more
Alcove Health
Coastline
Lumon Care
Logisticsand 12 more
Northwind Freight
Vandelay
Portside
Public sector
City of Ravel
Kestrel Authority
About this directory
Three questions every integration page raises and most of them dodge.
What does “beta” mean on a card here?
It works, it is supported, and the field mapping may still change with notice. It is not a waiting list — you can turn a beta integration on today, and roughly a third of customers run at least one.
Can I build my own?
Yes. Everything on this page uses the same public REST API and webhooks that you have, with no private endpoints and no partner tier. If ours does not fit, yours will not be second-class.
How do I get one built that is not listed?
Ask. We build the ones that more than five customers request, in request order, and the list of what has been asked for is public rather than a thing you have to guess at.
Every connection with its real status on the card — live, beta or planned — because a directory that hides which is which is discovered at exactly the wrong moment.
Posted journal lines out every hour, chart of accounts in every night, and a review queue instead of a silent overwrite when the two disagree.
LS
Live since
March 2023 · · 4 min read
The pull request was titled “remove stale flags, part 1 of 8” and it deleted more code than the previous quarter had added. Our flag service listed 312 active flags; production telemetry showed 41 of them had evaluated to the same value for every user since at least January. The rest were split roughly evenly between experiments nobody remembered starting and kill switches for services we had already decommissioned.
“A feature flag is a loan. The interest is every engineer who has to reason about both branches forever.”
What moves, and which way
The four questions an integration page usually leaves to a support ticket.
Acme → Quartzly
Journal lines, hourly
Every posted line is pushed with its cost centre, tax code and source reference. Nothing is pushed until it is posted, so a draft in Acme never appears in your ledger.
Posted lines only
Source reference preserved
Retried for 24h on failure, then surfaced
Quartzly → Acme
Chart of accounts and cost centres, nightly
Quartzly is the source of truth for structure. A cost centre renamed there is renamed here overnight, and one deleted there is archived here rather than deleted — because deleting it would orphan history.
Structure is one-way, by design
Deletes become archives
Full re-sync available on demand
On conflict
The ledger wins, and you are told
If the same period is edited in both systems, Quartzly’s version is kept and the Acme change is held in a review queue rather than discarded. Silent last-write-wins is how reconciliations become unexplainable.
Never a silent overwrite
Held changes reviewable for 30 days
Conflict count on the sync dashboard
Setting it up
Two API calls, or four clicks in the UI. Both are shown because the person evaluating this is usually not the person who will run it.
One connection per workspace
Scopes are enforced at authorize, not at call time
Webhooks are signed; verify before trusting
1# 1. Create the connection (once, from your terminal or the UI)2curl -X POST https://api.example.com/v1/connections \3 -H "Authorization: Bearer $ACME_TOKEN" \4 -H "Content-Type: application/json" \5 -d '{6 "provider": "quartzly",7 "workspace": "ws_8f21",8 "scopes": ["ledger.write", "coa.read"]9 }'1011# 2. Follow the returned authorize_url in a browser.12# 3. That is the whole of it. The first sync starts within a minute.
POST/v1/connections
Creates the connection and returns an authorize_url. Idempotent on provider + workspace, so retrying is safe.
Parameters
Name
Type
Required
Description
provider
string
Required
Always "quartzly" for this connection.
workspace
string
Required
The Acme workspace to bind. One connection per workspace.
scopes
string[]
Required
Minimum is ledger.write and coa.read. Requesting more than you use is refused at the authorize step.
sync_from
ISO date
Optional
Backfill start. Defaults to the first day of the current financial year.
For the initial authorisation, yes. After that the connection runs under a service identity, so it survives the admin leaving — which is the failure that takes a month to notice.
What does the backfill cost me?
Nothing, and it does not count against your plan volume. Historical records are read-only on our side and we would rather you imported everything.
Can I run it in one direction only?
Yes. Push-only is a supported configuration for teams whose chart of accounts is managed somewhere else entirely.
What happens if Quartzly is down?
Lines queue and retry for 24 hours, then appear in the sync dashboard as held with the reason. Nothing is dropped, and nothing is posted twice — every push carries an idempotency key.
Connect it in about four minutes
You will need a Quartzly admin for the first step and nothing after that. Backfill is free and does not count against plan volume.
One connection, answering the four questions an integration page usually leaves to a support ticket: which records move, which way, how often, and what happens on conflict.
Checked against published pricing and documentation on 9 January 2026. Rows where we lose are in the table, in the same type size as the rest.
Acme, Meridia and Obsidia — features by plan
Feature
AcmePopular
Meridia
Obsidia
Free tier that does not expire
Included
Not included
Not included
Public REST API on every plan
Included
Not included
Included
SSO without an enterprise contract
Included
Not included
Not included
Self-serve export of everything
Included
Included
Not included
Data residency choice
3 regions
1 region
6 regions
Published rate limits
Included
Not included
Not included
Native mobile apps
Not included
Included
Included
Offline desktop client
Not included
Included
Not included
Approval workflows
Basic
Advanced
Advanced
Implementation partners
4
140+
60+
Entry price, per month
£0
£49
£90
Minimum contract
None
12 months
12 months
When you should not buy ours
Three situations where one of the others is the better answer, written by us, on our own site.
Choose Meridia if
Your approval chains are genuinely complicated
Conditional, multi-branch approval routing is their strongest feature and is better than ours by a distance. If a purchase order takes four different paths depending on amount, department and supplier risk, buy theirs.
Conditional multi-branch routing
Delegation and out-of-office rules
Mature mobile approvals
Choose Obsidia if
You need a partner in the room, in your country
Sixty-plus implementation partners against our four. For a regulated rollout across twelve subsidiaries with local statutory requirements, a partner network is worth more than anything on our feature list.
60+ certified partners
Six data regions
Statutory reporting in 14 countries
Choose neither if
A spreadsheet is still working
Under about 500 transactions a month with one person doing the close, none of these three will pay for themselves. Come back when the close takes more than a day or when a second person has to touch it.
Under ~500 transactions/month
Single preparer
No audit requirement yet
Scores none of us control
4.7out of 5
from 612 verified reviews
5 stars
1,783
4 stars
402
3 stars
71
2 stars
24
1 star
18
4.7on G2 — Acme
4.5on G2 — Meridia
4.4on G2 — Obsidia
About this page
Questions a comparison page ought to answer about itself.
Who wrote this and when?
We did, on 9 January 2026, from each vendor’s public pricing and documentation on that date. Nothing here comes from a private conversation, and nothing is inferred from a sales call.
What if a row is out of date?
Tell us and we will fix it, including when the fix makes us look worse. Every row carries the date it was last checked in the published source data.
Do you compare against the enterprise tiers?
Against the cheapest tier of each product that includes the feature. Comparing our entry plan with a competitor’s top plan is the standard trick and produces a table that means nothing.
Can I get a migration from one of these?
From either, and it is included rather than a services line item. The importers were built because that is where most of our customers come from.
Try it against the one you are already paying for
Import into a sandbox workspace, run one real close in both, and keep whichever wins. The sandbox is free and disposable.
Planned items carry no date, because a quarter against something unstarted is a number invented for this page. In-progress items carry one because by then it is worth something.
Shipped
3
Per-tenant export concurrency capsDec 2025
Shipped in December after one tenant’s 4.1M-row export starved the shared pool.
Published rate limitsNov 2025
Limits are in the docs rather than discovered at 429.
Read-only auditor roleOct 2025
Came out of a customer engagement and turned out to be the feature CFOs mention first.
In progress
2
Ferrous works-order integrationQ1 2026
Line-level matching of works-order costs to purchase invoices. The most-requested connector by a distance.
Conditional approval routingQ2 2026
Multi-branch chains by amount, department and supplier risk. Currently our weakest area against Meridia, and we would rather say so than fudge it.
Planned
3
Scheduled report delivery to SFTP
For the finance teams whose downstream system still reads a folder at 6am.
Carbon accounting from supplier records
Same supplier ledger, second set of reports. Scoped, not started.
Native mobile approvals
Requested often and honestly not close. It is on the board so nobody buys on the assumption it is coming this year.
The last three releases
Here so the shipped column means something. Every entry links to the release notes and, where there was one, the incident that caused it.
Sandbox workspaces and a faster importer
2026.1
addedDisposable sandbox workspaces, free on every plan, for trying an import against real data.
changedCSV importer is roughly 4× faster above 100,000 rows.
fixedCost-centre archive no longer orphans historical lines on re-sync.
Export concurrency caps
2025.12
addedPer-tenant concurrency cap on exports and scheduled reports.
changedLarge exports now stream rather than buffering in memory.
Rate limits, written down
2025.11
addedPublished per-plan rate limits, with headers on every response.
fixedCertificate rotation staged behind a health check after the 2 November incident.
Hear about it instead of checking
One email per release, which is roughly monthly. No other use of the address and one click to stop.
Board plus changelog, because a roadmap alone is a promise — the last three releases underneath are what turn the shipped column into something with dates attached.
Marketing Pages6 blocks143 lines
A close that finishes on the third working day
Acme is being built for finance teams reconciling two systems by hand. Early access opens in March, in order of joining, and there is no charge during it.
No other email goes to this address. One click to leave.
ALRSMKJTPW
2,140 already waiting
What it is, before you give us an address
Including the third row, which is what it will not do yet.
The problem
Your close takes nine days and two of them are matching
Two systems that have never agreed, a spreadsheet holding them together, and one person who understands the spreadsheet. That is the situation this is being built for.
Ledger and bank, reconciled hourly
Rules you can read aloud
Exceptions surfaced, not hidden
The shape
Import first, automate second, never the other way round
Nothing is automated until four years of history is in and reconciles to the same totals. It is slower to start and it is the only order that finds the faults already in your data.
Full history import before go-live
Totals matched before any rule runs
Every automated match reversible
The honest part
What it will not do at launch
No mobile app, no conditional approval routing, and two of the six importers are not written yet. Listing this now is cheaper for both of us than discovering it in March.
No native mobile at launch
Basic approvals only
Four of six importers ready
Early access opens in March
Invitations go out in the order people joined. No countdown clock on this page, because a clock at zero is worse than no clock at all.
2,140 people ahead of you, and that number is real.
The shortest page in the catalog, and it still says what the product does — including what it will not do at launch. No countdown, because a clock at zero is worse than no clock.
Four thousand people who close the books for a living
The forum has been running since 2019 with the same searchable archive. Staff post in the same threads as everyone else, and the critical posts stay up.
Quoted with permission and not edited for length, including the four-star one.
“I asked a question at 11pm expecting nothing until Monday. Two other users had it solved before anyone from Acme woke up, and one of them had hit exactly the same importer bug.”
BPBogdan PetrovFinancial controller
“The rule library that members share is genuinely the reason we stayed. Half our matching rules started as somebody else’s post.”
SDSanne de VriesHead of finance ops
“Staff post in the same threads as everyone else and do not delete the critical ones. That is rarer than it should be and it is why the archive is worth searching.”
KTKenji TanakaSystems accountant
Local and topic groups
Fourteen groups that meet without us
Organised by members, listed here, not run by our marketing team. If there is none near you, we will pay for the first room.
Financial servicesand 40 more
Fieldstone
Meridian Capital
Umbra
Halden Trust
Healthcareand 18 more
Alcove Health
Coastline
Lumon Care
Logisticsand 12 more
Northwind Freight
Vandelay
Portside
Public sector
City of Ravel
Kestrel Authority
Not another chat app?
The monthly digest is the ten threads worth reading, as an email. No account, no app, and it is the same content.
Member counts and reply times on every door, because "join our community" with no number reads as an invitation into an empty room — plus a digest for people who will not install another chat app.
Move the slider to the number of paying accounts you think you would send in a year. The figure is twelve months of commission at the current average account value.
A programme that makes you apply to find out the rate is a programme whose rate is bad.
Attribution
First click, ninety days, and we do not bid against you
If a reader finds you in March and buys in June, you are paid. We also do not run paid search on our own brand terms in a way that outbids partners, which is the practice that quietly kills most programmes.
First-click attribution
90-day window
No brand-term outbidding by us
What is not allowed
Three rules, and they are the usual three
No bidding on our trademarks, no coupon-injection extensions, and no unmarked reviews. Everything else — comparison posts that rank us second, critical reviews, honest lists — is fine and we would rather have it.
No trademark bidding
No coupon extensions
Disclosure required by law and by us
When it stops
Twelve months per account, and you keep the tail
Commission runs twelve months from each referred account’s first payment. Leaving the programme does not cancel commission already accruing — you keep the tail on everyone already referred.
12 months from first payment
Tail survives leaving
No clawback after 60 days
Apply
1About you
2Your audience
3Payout details
Before you apply
Including the two that decide most disputes: attribution and what counts as qualified.
Do I need an audience of a particular size?
No minimum. The smallest active partner sends about four accounts a year and is paid for all four. There is no tier system and no volume bonus, so the rate is the same for everyone.
Can I write a critical review?
Yes, and it will not affect your status. A comparison that puts us second is more useful to your readers than one that does not, and a programme that punishes honesty produces reviews nobody believes.
What counts as a qualified referral?
A paid account that stays past the 60-day refund window. Free-tier signups do not pay out, which is stated here rather than discovered at the first payout.
How do I see what I have earned?
A dashboard with clicks, signups, conversions and pending commission, updated hourly. Referral-level detail is anonymised — you see that an account converted, not who they are.
“The importer choked twice on our data. Both times it told us exactly which rows and why, which is more than the last three tools managed between them.”
DPDmitri PetrovSystems Accountant, Ferrous
“Support is engineers on a rota. The bug I reported on Tuesday shipped on Friday.”
AKAnika KapoorFinance Manager, Quartzly
“Approval routing is genuinely weaker than what we came from and they told us so on the sales call. We bought it anyway for the reconciliation and the honesty.”
LWLiam WalshCFO, Driftless
“Read-only auditor access turned year-end from eleven days into two.”
EYElif YilmazHead of Finance Ops, Meridia Health
“Exported everything to CSV on day three to prove we could leave. That we could is why we stayed.”
YSYuki SatoGroup Financial Controller, Longshore
At greater length
The ones that did not fit in a card
5 out of 5
“We ran both systems in parallel for a full quarter because I did not believe the numbers. They matched every month, including the one where we found a duplicate supplier that had been inflating a cost centre since 2022 — which was our fault, not either tool’s, and only one of them surfaced it.”
“The thing I tell people is that it is slower to start than it looks. They insist on importing four years of history and reconciling it before any rule runs, and I resented that for about a fortnight. Then it found the fault and I stopped resenting it.”
KMKofi MensahFinance Director, Saltwater Group
4 out of 5
“Not everything is better. Our approval chains were more sophisticated in the old system and we have had to simplify them, which was a real cost and one I would weigh again. The close going from nine days to three outweighed it, but it was not free.”
LWLiam WalshCFO, Driftless
And 1,400 teams who have never said a word about us in public
Third-party scores first, because they are the only part of the page the company does not control — and the four-star quotes stay in, because a wall of nothing but fives reads as filtered.
One paragraph per screen, including the reason it is shaped that way.
The close dashboard
One number — days to close — and the three things standing between you and it. Everything else is a click away rather than on screen, because a dashboard that shows everything is a dashboard nobody reads on the ninth day.
Matching rules
Written as sentences, not as a query builder. If you cannot read a rule aloud to an auditor, it should not be running unattended.
The exception queue
Where the 20% we deliberately do not automate ends up. Sorted by how much money is at stake, not by date.
The auditor view
Read-only, immutable, and shareable with someone who will never have an account. Built for one customer’s year-end and now the feature CFOs mention first.
“The exception queue sorted by money rather than by date changed how we work more than any of the automation did.”
DPDmitri PetrovSystems Accountant, Ferrous
Screens, total
4
Screens, total
Features behind a demo call
0
Features behind a demo call
Days to close
3.0
Days to close
Trusted by support teams at
Meridian
Coastline Health
Fieldstone
Screenshots only get you so far
Import your own data into a free sandbox workspace and look at your own numbers in these four screens instead of ours.
We design the parts people have to use twice a day
Product design, design systems and the occasional identity, for companies whose software is the job rather than the marketing. Four projects at a time, which is a ceiling and not a stage.
A fixed-window rate limiter and the one test that matters. Thirty lines is enough to tell whether you want to read the other thirty thousand.
Comments explain the decision, not the syntax
Fails open, and the test says so out loud
No dependency added that a standard library could cover
1// Limiter is a fixed-window counter kept deliberately dull.2//3// A sliding log is more accurate and costs a sorted set per key; at our4// traffic the extra accuracy changed nobody's experience and the memory5// bill was real. Windows are aligned to the clock so two processes agree6// without coordinating.7type Limiter struct {8 redis *redis.Client9 limit int10 window time.Duration11}1213func (l *Limiter) Allow(ctx context.Context, key string) (bool, error) {14 // Bucket in the key, not in a value: expiry then cleans up for us and15 // there is no sweeper to get wrong.16 bucket := time.Now().Truncate(l.window).Unix()17 k := fmt.Sprintf("rl:%s:%d", key, bucket)1819 n, err := l.redis.Incr(ctx, k).Result()20 if err != nil {21 // Fail open. A limiter that takes the site down when Redis blips22 // has caused more outages than the abuse it was added to stop.23 return true, err24 }25 if n == 1 {26 l.redis.Expire(ctx, k, l.window)27 }28 return int(n) <= l.limit, nil29}
10
Years shipping
Three companies
4×
Checkout speedup
By deletion
$310k
Annual spend removed
Search migration
2
Pages per week
Down from 11
Elsewhere
The accounts are the real portfolio — this page is just the index.
An engineer’s portfolio that opens on a terminal rather than a gradient, and puts thirty legible lines of real code on the page — because a portfolio that only links to repositories asks the reader to go and judge for themselves, and almost nobody does.
Ten years building systems that other engineers depend on, mostly by removing things. I am at my best on a team that has outgrown its first architecture and has to keep shipping while it changes. Looking for a principal or staff role where the hard problem is technical rather than political.
Experience
Principal Engineer, Platform · Northwind
Mar 2023 — Present · Remote
Series B logistics platform, 40 engineers, one Rails monolith and four Go services.
Cut p95 checkout latency from 2.4s to 610ms by deleting a caching layer rather than adding one — the invalidation cost more than the reads saved.
Led the migration off a managed search product onto Postgres full-text, against a hard contract-expiry date. Saved $310k a year with no change to result quality anyone could measure.
Wrote the on-call handbook and cut pages per engineer per week from 11 to 2, mostly by deleting alerts nobody had ever acted on.
Senior Software Engineer · Contoso Health
Jun 2019 — Feb 2023 · Dublin
Patient records for 60 clinics. Regulated, audited, and slow to change by design.
Rebuilt the appointment booking flow to meet WCAG 2.1 AA before the deadline the procurement contract set. It passed audit first time, which nothing else that year did.
Introduced contract tests between the scheduling service and three consumers, ending a class of release that broke a downstream team every quarter.
Software Engineer · Umbra Labs
Sep 2016 — May 2019 · Dublin
Second engineer. Built the billing integration that the company ran on unchanged for six years.
Skills
TypeScript · Go · Postgres · React · Next.js · Terraform · OpenTelemetry · WCAG 2.2 AA · Incident command
Education
BA (Mod) Computer Science — Trinity College Dublin — First Class Honours2012 — 2016
Selected writing and talks
“The cache we deleted” — SRECon EMEA, main track2025
“Accessibility as a procurement requirement” — Write the Docs2024
Currently taking calls about principal and staff roles
The fastest route is email. Tell me what the system does and what has stopped working about it — that is the part I want to hear before anything about the company.
A personal site whose home page is the CV itself, printable, so the document that decides whether you get a reply is the one that is actually maintained. Four blocks, and the restraint is the design.
An exchange that publishes the number you are actually paying
Spot trading on 214 assets, a real order book, and a fee schedule on the same page as the marketing. Withdraw to your own wallet whenever you like — there is no lock-up and never was.
The four facts that decide whether an exchange is safe to use, each one checkable rather than asserted. If a venue will not answer these, that is the answer.
98% in cold storage
Offline
Multi-party signing, three geographies, no single quorum holder
Client assets segregated
Ring-fenced
Held apart from company funds in a bankruptcy-remote entity
Proof of reserves
Monthly
Merkle-tree attestation you can verify against your own balance
Insurance on the hot wallet
$250m
Underwritten by a Lloyd’s syndicate, policy published in full
Operations
Measured, published, and externally checked
Numbers from the last twelve months. The status page is third-party hosted, so it stays up when we do not.
Matching engine uptime
99.99%
Rolling 12 months, measured externally and published at status.meridian.exchange
Median withdrawal
4 min
Fiat SEPA, business hours, last 90 days
Order latency, p99
11 ms
Frankfurt colocation, matched to acknowledgement
Regulated in
9 markets
MiCA authorisation in the EU, FCA registration in the UK
Three things, done properly
We are not trying to be a bank, a card, a social network and a launchpad. Trading, custody and reporting — and the reporting is the one everybody else treats as an afterthought.
Trade
A real order book, not a swap widget
Limit, market, stop and trailing orders on every pair, with the full depth visible and no hidden spread priced into the quote you are shown.
Post-only and reduce-only flags on every order type
The spread is shown; we do not widen it and call it "zero fee"
REST and WebSocket APIs on the same rate limits we use ourselves
Hold
Withdraw to your own wallet, always, without asking
Self-custody is a right and not a feature. There is no minimum holding period, no withdrawal lock on a promotional balance, and no support ticket between you and your keys.
Whitelist addresses with a 24-hour cooling period you control
Hardware-key 2FA, and no SMS fallback that defeats it
A full CSV and API export of every movement, going back to day one
Report
The tax export your accountant will accept
Cost basis computed per jurisdiction, including the disposal rules that differ between the UK, Ireland and Germany, with the working shown rather than a single number.
FIFO, LIFO and average-cost, switchable per tax year
Direct export to three filing tools, or plain CSV
Free on every tier — a tax report behind a paywall is a hostage
The fee schedule, in full
Volume bands, not subscription plans — there is no monthly charge and nothing to cancel. Your band is recalculated every day on a rolling 30-day window.
The fee schedule, in full — features by plan
Feature
Entry
ActivePopular
Professional
Institutional
30-day volume
Under $50k
$50k – $1m
$1m – $10m
Over $10m
Maker fee
0.08%
0.04%
0.02%
0.00%
Taker fee
0.10%
0.08%
0.05%
0.03%
Crypto withdrawal
Network fee only
Network fee only
Network fee only
Network fee only
SEPA deposit and withdrawal
Included
Included
Included
Included
Dedicated API rate limit
Not included
Not included
Included
Included
Named account manager
Not included
Not included
Not included
Included
Risk warning
Read this part before the marketing
Crypto assets are unregulated in several of the markets we serve and are high risk everywhere. This section is required by law in most of them and we would print it anyway.
The value of crypto assets can go down as well as upYou may get back less than you put in, and you may get back nothing at all. Past performance tells you nothing about future returns.
Crypto assets are not covered by a deposit guarantee schemeUnlike a bank account, there is no FSCS or equivalent compensation if we fail. This is why segregation and proof of reserves are on this page.
You are responsible for your own tax positionWe produce the report; we do not file it and we are not your accountant. Disposals are usually taxable even when you never touch fiat.
Do not trade with money you needWe will not lend you money to trade, we do not offer leverage to retail clients, and we would rather lose the account than the customer.
The questions worth asking any exchange
Including the ones we would rather you did not ask. If a competitor cannot answer these in writing, that tells you something.
Still deciding?
Our compliance team answers questions about custody and segregation directly, in writing, before you deposit anything.
How do I know my money is not being lent out behind my back?
Because client assets sit in a separate, bankruptcy-remote entity and the monthly attestation is a Merkle tree you can check your own balance against — the leaf hash is in your account settings. We do not run a yield product, which is the mechanism by which this usually goes wrong.
What happens to my assets if you go out of business?
Client assets are segregated, so they are not part of the estate. The administrator returns them; they do not distribute them to our creditors. That is a legal structure rather than a promise, and it is the one question worth checking on any exchange.
Is "zero fee" trading elsewhere actually cheaper?
Usually not. Zero-fee venues make the money back on the spread, which is invisible at the moment you trade. Our spread is the order book’s and our fee is on this page, so the total cost is something you can calculate before you press the button.
Why do you need my identity documents?
Anti-money-laundering rules in all nine markets we are authorised in. We ask for the minimum the rule requires, delete the raw images after verification, and never sell or share the data. An exchange that skips this step is one regulatory action from freezing your withdrawals.
Can I use this through an API for a trading bot?
Yes, on every tier, with the same rate limits our own front end uses. Keys are scoped — a read-only key cannot place an order and a trading key cannot withdraw, which is the separation that saves people when a key leaks.
A regulated exchange’s front door: a moving price rail before a word of copy, custody and reserves above the feature grid, and the risk warning as a section rather than as small print.
Indicative prices, delayed 15 minutes · last updated 14:42 UTC
Markets
214 assets, 96 pairs, and the fee you pay on each of them on one page. Everything here is indicative and delayed — the order book is the only live price, and it is the one your order fills at.
The session so far
BTC / USD
$63,204+2.41%
Trend over the last 9 periods, rising 2.41 percent.
ETH / USD
$3,118+1.08%
Trend over the last 9 periods, rising 1.08 percent.
SOL / USD
$147.93-3.22%
Trend over the last 9 periods, falling 3.22 percent.
30-day volume
$4.1bn+8.6%
Trend over the last 9 periods, rising 8.6 percent.
BTC / USD, last 24 hours
Last trade on this venue, sampled every three hours, in UTC. Not a volume-weighted average across exchanges — see the notes below for why that matters.
BTC / USD
64,000
62,000
60,000
00:00
03:00
06:00
09:00
12:00
15:00
18:00
21:00
24:00
BTC / USD, last 24 hours
Month
BTC / USD
00:00
61,180
03:00
61,420
06:00
60,980
09:00
61,760
12:00
62,340
15:00
62,110
18:00
62,880
21:00
63,510
24:00
63,204
What each listing actually supports
Once the price is on the rail above, this is the question a listings page is really answering: which networks, what minimum, and can I stake it.
What each listing actually supports — features by plan
Feature
BTC
ETHPopular
SOL
USDC
Spot trading
Included
Included
Included
Included
Deposits and withdrawals
Included
Included
Included
Included
Networks supported
Bitcoin, Lightning
Ethereum, Base, Arbitrum
Solana
Ethereum, Solana, Base
Minimum withdrawal
0.0002 BTC
0.005 ETH
0.02 SOL
10 USDC
Staking
Not included
Included
Included
Not included
Used as trading collateral
Included
Included
Not included
Included
Listed since
2019
2019
2021
2020
What the numbers on this page mean
Four questions that come up every time somebody compares our price with somebody else’s and finds a difference.
How fresh are the prices on this page?
The rail at the top of the page is indicative and delayed by roughly fifteen minutes. Prices inside the trading screen are live from the order book and are the only ones an order is filled at. If the two disagree, the order book is right and this page is stale.
Why does your price differ from the one on a price-tracking site?
Those sites publish a volume-weighted average across dozens of venues. We publish the last trade on our own book. Neither is wrong; they are answers to different questions, and the one that matters for an order you are about to place is ours.
What does the 24-hour change actually compare?
The last trade now against the last trade at the same clock time yesterday, in UTC, on this venue. It is not a calendar-day figure and it does not reset at midnight in your own time zone — which is why two exchanges can honestly report different daily changes for the same asset.
An asset I hold is not listed here any more. What happened?
Delisting is announced at least 30 days in advance by email and on the status page, and withdrawals stay open for 12 months afterwards. Nothing is ever seized — if you miss the window, open a support ticket and we will process it manually.
The public price screen — sparklines instead of a percentage column, because two assets both up 4% got there differently, and that shape is what a trader is scanning for.
Marketing Pages7 blocks200 lines
Early bird€260 until 28 February — the price steps up to €340 at midnight CET, and there are 420 tickets in total.Book a ticket
Two days on the parts of building software nobody demos
Three tracks on platform, interface and practice, for people who ship and maintain the same system. No vendor pitches, no panels about the future of work, and every talk published free within a fortnight.
Eighteen talks across two days; six of them are here. Everyone speaking has shipped and maintained the thing they are describing — we do not take submissions about work somebody else did.
AM
Aisling Moreau
Principal engineer, Northwind
Opening keynote. Ten years of build tooling, told as the two times she was confidently wrong about it.
TR
Tobias Renner
Staff engineer, Contoso
On removing a caching layer and getting faster, with the profiler output and the argument that preceded it.
PR
Priya Ramanathan
Independent
Type-safe forms with no runtime library, and a workshop on accessible components from first principles.
MO
Marcus Oyelaran
Design director, Umbra
Design reviews people actually attend, and what changed when they stopped being a gate.
HL
Hana Lindqvist
Database engineer, Vandelay
Five years of one monorepo and the Postgres bill that came with it, assessed honestly.
DK
Dev Kaur
Accessibility lead, Aperture
Animation that survives prefers-reduced-motion, and why the fallback is usually the better design.
Funded by six sponsors, none of whom get a stage slot
Northwind
Contoso
Initech
Umbra
Lumon
Vandelay
Soylent
Aperture
Tyrell
Wayne
Cyberdyne
Stark
Sponsorship pays for the community tickets, the captions and the recordings. It does not buy a talk — every session on the programme went through the same review, and three sponsors submitted and were turned down this year.
Three tickets
One price, paid once, and the same two days in all three. The differences are lunch, the workshops and the dinner — there is no version of this event where you see fewer talks.
Three tickets — features by plan
Feature
Community
StandardPopular
Workshop
Price until 28 February
€180
€260
€420
Price from 1 March
€180
€340
€520
Both conference days
Included
Included
Included
Talk recordings, published within two weeks
Included
Included
Included
Lunch and the Thursday party
Not included
Included
Included
Hands-on workshops (limited to 24 seats each)
Not included
Not included
Included
Speakers’ dinner on the Wednesday
Not included
Not included
Included
Transferable to a colleague
Included
Included
Included
Refundable until 1 April
Included
Included
Included
Before you book
The logistics that decide whether a ticket is usable, answered properly rather than in a line each.
Something not covered?
Two of us read this inbox and we answer before you pay, not after. Access requirements especially — ask first.
It is the same two days at €180, for students, people between jobs, and anyone whose employer is not paying. Nobody is asked to prove any of that — you tick a box. We hold 80 of them and they are funded by the sponsor tiers, not by the other ticket types.
Are the talks recorded, and are they free afterwards?
All of them, published to the public within two weeks, no login and no paywall. Workshops are not recorded because the value is in the room and a camera changes how people ask questions.
Can I get a refund if I cannot come?
Full refund until 1 April, no reason needed. After that the ticket is transferable to anyone else right up to the morning of the event — change the name in your order and that is the whole process.
What does "no keynote clashes" mean?
Three tracks run in parallel, but the two keynotes and the closing panel run alone with nothing scheduled against them. Nobody should have to choose between the talk everybody will discuss and one they specifically came for.
How accessible is the venue?
Step-free throughout, including the stage. Live captions on every talk in the Great Hall and Room A, a quiet room open both days, and hearing loops in all three rooms. Email us before you book if you need something not listed here and we will answer before you pay.
Is there a code of conduct and is it enforced?
Yes, and yes — it is linked in the footer, it names the three people on the response team, and they are at the event both days with a phone number printed on every badge. It has been used twice in four years and both reports resulted in action.
420 tickets, and 190 have gone
The early-bird price holds until the end of February. After that it steps up once, and it does not step back down.
A conference home page built around a deadline: the price step-up above the hero, the programme extract above the speakers, and tickets as a comparison rather than a plan picker.
Both days in full. Eighteen talks, four workshops and an unconference track, across three rooms. Every scheduled session is recorded and published free within a fortnight — the workshops are not, deliberately.
Three tracks means a clash in almost every slot. Four questions about what that costs you.
What happens if two talks I want are at the same time?
Everything except the workshops is recorded and published free within two weeks, so a clash costs you the room and not the talk. The two keynotes and the closing panel deliberately run with nothing scheduled against them.
Do I need to sign up for the workshops in advance?
Yes — 24 seats each, booked from your order page, and they open two weeks before the event. A workshop ticket guarantees you a seat in one workshop per day, not in a specific one.
What is the unconference board?
A physical board in the foyer. Write a session and a room on it and it is on the programme; the Friday morning slots are filled this way. It opens at lunchtime on Thursday and is final at 09:30 on Friday.
Which rooms have live captions?
The Great Hall and Room A, both days, for every scheduled session. Room C is captioned on request with 24 hours’ notice — find any organiser or email us. Hearing loops are in all three rooms.
An extract. The full menu — three courses, the wine list and the cheese — is on the menu page, and it is the same document the kitchen is working from right now.
This week, to begin
The full menu changes when the produce does
Devilled eggs, brown crab, lovage(gf) (s)
9
Six halves. The crab is picked here on the morning it arrives.
Bread and cultured butter(v)
5
Sourdough from the Tuesday bake, salted butter churned in house.
Bitter, sweet, salt. The pears are from a single orchard in Herefordshire.
(gf)
Gluten free
(s)
Contains shellfish
(v)
Vegetarian
(n)
Contains nuts
Please tell us about allergies when you book rather than when you arrive. We cook in one kitchen and cannot promise any dish is free of a trace, but we can usually change one.
How it works
Four things worth knowing before you book
None of them are unusual in a good restaurant and most restaurant websites leave all four out, which is why people arrive expecting something else.
One menu, changed when the produce changesNot seasonally and not on a schedule — when the box that arrives on Tuesday is different, the menu is different on Wednesday. It is why there is no printed menu and why the website is the menu.
Everything from within about ninety milesExcept the salt, the pepper and the olive oil, and we are not going to pretend otherwise. The lamb is from one farm on the Mendips and the fish comes up from Brixham on the same van every morning.
Six people, and that is the whole businessTwo in the kitchen, two on the floor, and the two of us who own it working both. Service charge goes to them and is split evenly including the kitchen, which is not the industry norm.
One sitting per tableYour table is yours for the evening. We would rather do 38 covers properly than turn 70 and ask you to leave before pudding.
Rated 4.8 across Google, OpenTable and the Good Food Guide
Four of the 312. The four-star one is here on purpose — the room really is loud when it is full, and we would rather you knew that before you booked an anniversary.
“The hogget for two is the best thing I have eaten in this city. Carved at the table, gone in twenty minutes, and they were not precious about us ordering three puddings between two.”
FRFfion R.Booked for an anniversary
“Small room, so book. We turned up on a Saturday without one and were sent away kindly, which is fair enough. Came back Wednesday and it was worth the wait.”
DODaniel O.Local, now a regular
“Told them about a nut allergy when booking and they had already crossed two things off by the time we sat down. Nobody made it a performance. That is rarer than it should be.”
SKSameera K.Dinner for four
“Excellent food, and honestly quite loud when it is full. If you want a quiet conversation take the early sitting at six rather than eight.”
MHMartin H.Weeknight dinner
Book a table
Wednesday to Sunday, sittings from six. Tables for six or more are best done by phone so we can talk about the menu first.
Hours, address and phone as a first-class section directly under the hero, then the menu — the two jobs a restaurant site has, in the order visitors actually need them.
Wednesday to Sunday, six until ten, kitchen closes at half past nine. One menu, changed when the produce changes rather than on a schedule — which is why there is no printed copy and this page is the only one.
To begin
Served until 3pm on Sundays
Devilled eggs, brown crab, lovage(gf) (s)
9
Six halves. The crab is picked here on the morning it arrives.
Bread and cultured butter(v)
5
Sourdough from the Tuesday bake, salted butter churned in house.
Ninety minutes in a salt crust, cracked open in the dining room.
To finish
Cheese £4 a cut, £14 for four, from Bath Soft and Neal’s Yard
Burnt honey and thyme tart(v)
10
Crème fraîche. The honey is from the roof of the building next door.
Quince, brown sugar, oat cream(ve) (df)
9
Poached slowly until it goes the colour of a penny.
Salted caramel and malt ice cream(v) (gf)
5 / 8 / 10
One scoop, two scoops, or three if the table is sharing.
Chocolate, olive oil, sea salt(v) (gf)
9
Made in the morning, set by service. When it is gone it is gone.
(gf)
Gluten free
(s)
Contains shellfish
(v)
Vegetarian
(n)
Contains nuts
(ve)
Vegan
(df)
Dairy free
Please tell us about allergies before you order — we cook in one kitchen and cannot promise any dish is free of a trace. A discretionary 12.5% service charge is added to tables of six or more and goes to the people who served you.
To drink
A short list, mostly from within a day’s drive, and priced so the second bottle is not a decision. Corkage is £18 on Wednesdays and Thursdays.
By the glass
125ml / 175ml / bottle
Bacchus, Dunleavy Vineyards, Somerset 2024(ve)
7 / 9 / 34
Elderflower and green apple. Grown eleven miles from this room.
Gamay, Domaine Dupré, Beaujolais 2023(ve)
8 / 11 / 42
Chilled, light, and the answer to most of the food on the left.
Nebbiolo, Produttori del Barbaresco 2020
12 / 16 / 62
For the hogget, or the rib chop, or both.
Pét-nat, Offbeat Wines, Wiltshire 2024(ve)
9 / — / 44
Cloudy, dry, faintly of cider. The one the staff drink.
Beer, cider and no alcohol
The alcohol-free list is a real list and not one token bottle
Lost & Grounded Keller Pils, Bristol
6
330ml, 4.8%
Wilding Cider, Somerset
9
375ml bottle, 6.5%, bone dry
Small Beer Session Pale, 2.1%
5
Brewed to be low, not de-alcoholised afterwards.
Æcorn Aromatic, verjuice and gentian
7
Bitter, not sweet. Served with soda and a twist.
Ballymaloe apple and elderflower soda
4
Made in house, no added sugar.
(ve)
Vegan
Wines by the glass are poured to line from a measure at the pass, and we will always let you taste before the bottle is finished. The alcohol-free list is a proper list — we got tired of restaurants offering one sad bottle of grape juice.
Before you order
Allergies, diets and the practical things
Allergies
Can you cook around a severe allergy?
Usually, and we would rather know when you book than when you sit down. We cook in one small kitchen with shared equipment, so we cannot promise any dish is free of a trace of anything — we will tell you honestly which dishes we are confident about and which we are not.
What do the letters after each dish mean?
They are at the foot of the menu: (v) vegetarian, (ve) vegan, (gf) gluten free, (df) dairy free, (n) contains nuts, (s) contains shellfish. They describe the dish as written — several can be changed, so ask.
Is the kitchen nut free?
No. We use hazelnuts and walnuts most weeks and they are stored and prepared in the same room. If that is a problem we will say so when you book rather than let you find out on the night.
Dietary requirements
Is there always a vegan option?
At every course, and it is a dish rather than a substitution — the salt-baked celeriac is the one the kitchen is proudest of this month. We do not do a separate vegan menu because it always ends up being the shorter one.
Can you do a gluten-free version of the bread?
No, and we would rather say so than serve a bad one. Most of the rest of the menu is gluten free as written; the marks on the menu are accurate.
Practicalities
Is there a set lunch?
Sundays only — two courses £26, three for £32, from noon until half past three. It is drawn from the same menu, not a cheaper one, and the hogget is on it most weeks.
Can I bring my own wine?
Wednesdays and Thursdays, £18 corkage a bottle, two bottles a table. Not on Friday or Saturday, when we need the table turn and the list to pay for itself.
Do you add a service charge?
A discretionary 12.5% on tables of six or more. It goes to the people who served you and is split evenly with the kitchen, which is not the industry norm. Ask us to remove it and we will, without a conversation about it.
How often does the menu change?
When the produce does, which in practice is most Wednesdays. This page is the menu — there is no printed one — so what you are reading now is what the kitchen is working from tonight.
Book a table
Thirty-eight covers and one sitting a night, so weekends go about ten days ahead. Wednesdays are usually free at short notice and are the better meal.
The full bill of fare, typeset with leaders and dietary marks, split into food and drink because a diner reads the two differently. No photography, deliberately.
Thirty-eight covers, one sitting a night. Weekends go about ten days ahead; Wednesday is usually free at short notice and is the better meal.
Average wait for a first appointment: 2 days
Choose a sitting
Times are when your table is ready, not when the kitchen can take an order — the kitchen closes at half past nine, so the last sitting is 21:00.
150 minutes
Video call, link on confirmation
What happens next
Before you press the button
Four things about deposits, cancellations and how long the table is yours. All of them are on this page rather than in the confirmation email, which is where they usually turn up as a surprise.
No deposit for five or fewerGive us a card only for tables of six or more, where a no-show is a quarter of the room. Nothing is charged unless you do not arrive and do not tell us.
Cancel free up to 24 hours beforeOne click in the confirmation email, or ring us. Inside 24 hours we will always try to fill the table first and only charge if we cannot.
Your table is yours for the eveningOne sitting per table, so there is no second booking waiting behind you and nobody will ask you to leave. The 12:00 and 12:30 Sunday slots are the exception — those are lunch.
We hold the table for twenty minutesAfter that we may release it, because someone is usually waiting. Ring if you are running late and we will hold it as long as we can.
Booking questions
Large tables, waiting lists, children and access — the six that come up most on the phone.
Ring us instead
0117 946 2210, answered from 4pm on service days by somebody who will be in the room that evening.
I need a table for eight. Why can I not book it here?
Six and above goes through the phone, because we want to talk about the menu first — large tables eat differently and we would rather plan it than improvise on the night. Ring 0117 946 2210 from 4pm on a service day.
Nothing is available on the night I want. Is there a waiting list?
Yes, and it moves — roughly one table in six comes back to us on any given evening. Join it from the slot grid above and you will get a text the moment something opens, with twenty minutes to take it.
Can I book for tonight?
The grid shows real availability including today, so if a slot is there you can take it. Wednesdays and Thursdays very often have something at short notice; Fridays and Saturdays almost never do.
Is the dining room accessible?
Step-free from the street, no internal steps, and an accessible WC on the same floor. Two tables take a wheelchair comfortably — tell us when you book and we will hold one of those rather than seat you and shuffle.
Can I bring a baby or a young child?
Of course, at the six o’clock sitting, where there are usually two or three others. We have two high chairs and the kitchen will do a smaller plate of anything on the menu. Later sittings get loud and are not much fun for a small child.
Do you take walk-ins?
If there is a table, yes, and there sometimes is at six or after nine. It is worth ringing rather than walking up the hill on a Saturday — we would rather save you the trip.
Two booking blocks on purpose: four nights with free-slot counts to answer “is there any point”, then the real grid. The cancellation policy is stated before the button, not in the confirmation email.
From our own completed sales over the last twelve months, not from a national index. Any agent can quote the market; these are the four figures that separate one agent from another, and most will not print them.
Average time to sell
41 days
Instruction to agreed sale, our own sales in BS6 and BS8, last twelve months
Achieved against asking
98.4%
Median. We publish this because the agent who talks you into a high asking price is not doing you a favour
Sales that fell through
11%
Against a national average nearer a third. We check chains before we agree a sale, not after
Fee, sole agency
1.2% + VAT
No withdrawal fee, no marketing charge, no tie-in beyond eight weeks
Thinking of selling?
A valuation takes about forty minutes and comes with the three comparable sales it is based on, so you can check the reasoning rather than trust the number. There is no obligation and we will not ring you afterwards unless you ask.
Photography, floor plan, EPC, the listing on the two portals that matter, every viewing accompanied by one of us, and the negotiation. There is no separate marketing package and no charge if we do not sell it. The only thing you pay for separately is a conveyancer, and they are not us.
How long am I tied in for?
Eight weeks of sole agency, then it rolls month to month and you can leave with two weeks’ notice. Twelve- and sixteen-week tie-ins are common in this city and they exist to protect the agent, not you.
Will you tell me my house is worth more than it is?
No, and this is the main thing that loses us instructions. Over-valuing wins the listing and then costs the seller three months and a reduction. Our valuation comes with the three comparable sales it is based on, and you can check every one of them on the Land Registry yourself.
Who conducts the viewings?
One of the four of us, always, including evenings and Saturdays. We do not send a viewings assistant who has never been in the house and cannot answer a question about the boiler.
Do you charge for professional photography?
No. It is in the fee, it is done by a photographer rather than a phone, and it includes a floor plan with measurements. A listing without a floor plan gets materially fewer enquiries and we are not going to sell you one as an upgrade.
What happens if I take it off the market?
Nothing. No withdrawal fee and no invoice for work done. Circumstances change, and an agency that charges you for changing your mind has made your decision about them for you.
An estate agency home page where search owns the first screen and results are already populated, plus the achieved-against-asking figure most agents will not publish.
Freehold · 1,540 sq ft · walled garden · no chain above
Hampton Road, Redland
£6,150.00£120.00Save -£6,030.00
Quantity
Free delivery over £50.00
Free returns within 30 days
The legals
The four facts that decide a purchase
Tenure, council tax, EPC and chain position. Portal listings bury these under eleven photographs; they are the first thing a buyer's solicitor will ask and the first thing that ends a sale.
FreeholdNo lease, no ground rent, no service charge. The title is registered and we have the plan — ask and we will send it before you view rather than after you offer.
Council tax band D — £2,314 a yearBristol City Council, 2026/27 rate. Single-occupancy discount would take it to £1,735.
EPC rating D (64), potential B (84)Solid walls, so the gap is mostly internal insulation and the boiler, which is a 2011 Worcester and will want replacing within five years. The full certificate is linked below.
No chain aboveThe owners have already completed on a purchase in Wales. Realistically eight to ten weeks from offer if your side is ready.
The rooms
Four bedrooms across two floors. The main bedroom runs the full width at the front with the original shutters; the second is a good double overlooking the garden.
The third is a genuine single — about 2.4 by 2.6 metres — and the fourth on the top floor is the one with the view, reached by a steep staircase that will not suit everybody. Two bathrooms, one of them recent. The kitchen was done in 2019 and opens onto the garden.
Bedrooms
4 (2 double, 1 single, 1 attic)
Bathrooms
2 (one refitted 2022)
Reception rooms
2, through-lounge
Floor area
1,540 sq ft / 143 m²
The garden and the outbuilding
About eighteen metres, walled, and facing north-east — so it gets the morning and loses the sun by mid-afternoon in summer.
There is a brick outbuilding at the end currently used as a bike store, with power but no heating. Two of the neighbours have converted theirs into studios and the planning precedent is there.
The street and the area
Hampton Road is residential with permit parking, zone RD, currently with no waiting list.
Redland station is a seven-minute walk for the Severn Beach line and Gloucester Road with its shops is about ten. Catchment for Redland Green School, which is the reason most people on this street are on this street.
What we would want to know if we were buying it
There is a crack above the bay window that the owners had looked at in 2023. The engineer’s report says historic movement with no ongoing issue, and we will send you the report rather than wait to be asked.
The loft is boarded but not insulated to current standard, and the boiler is a 2011 Worcester that will want replacing within five years. Nothing else we are aware of, and we would tell you if there were.
Others at around this price
Six properties between £470,000 and £900,000, all within a mile
Viewings are conducted by one of the four partners, evenings and Saturdays included. We will send the engineer's report, the EPC and the title plan before you come rather than after you offer.
A product detail page with different stakes: tenure, council tax, EPC and chain position above the prose, and a description that names a flaw so the rest is believed.
1,340 live roles from 286 companies hiring directly. No agencies, no “competitive salary”, and no account needed to apply.
Popular
This week’s openings
Thirteen of 1,340, grouped by craft so you can read three rows instead of forty. Every one lists a real range, the countries the employer can hire in, and the number of stages.
They are why postings get rejected and why the board is smaller than the big ones. That is the trade, and it is deliberate.
A salary range, or it does not go up
Not "competitive", not "DOE", and not a range so wide it is meaningless. We reject about one posting in six on this rule alone, and we tell the employer why.
No agencies, ever
Every listing is posted by the company doing the hiring. You will never apply through a middleman who cannot answer a question about the team.
Remote means remote, with the countries named
"Remote" that turns out to mean one time zone and a visa you do not have wastes a fortnight. Employers list the countries they can actually employ in.
The process is published before you apply
Number of stages, whether there is a take-home, how long it is, and whether it is paid. On the listing, not in an email after the first call.
Hiring? £199 for thirty days
One price, one listing, shown the same way as everybody else’s. No subscription and nothing to cancel — and we will tell you before it goes live if the range needs work.
Yes, and there is no account required to browse or to apply — applications go straight to the employer’s own system. We make money from employers posting, which is the only model where our incentives and yours point the same way.
Why do some listings have a wide salary band?
Usually because the role spans two levels. We allow a band up to about 35% wide and reject anything broader, because past that the number stops being information. If a band looks wrong to you, the report link on every listing reaches a person.
Will my details be sold to recruiters?
No. There is no candidate database to sell — we do not have one. Applications are passed to the employer and nothing is retained beyond a count. This is the main reason the board exists.
How do I know a listing is still open?
Every posting expires after 30 days unless the employer confirms it is live, and the date it was last confirmed is on each listing. Roughly a fifth of postings lapse this way each month, which is the point.
Can I get new roles by email?
One email a week, filtered to the crafts and countries you pick, and unsubscribing is one click from any of them. No "we miss you" emails, and the list is never rented.
I am an employer. What does it cost?
£199 for a 30-day posting, or £1,490 for ten to use over a year. No subscription, no annual contract, and no upsell to a "featured" slot — every listing is shown the same way.
A two-sided marketplace where only one side is reading — candidates get the whole page, employers get one section. Every listing carries a real salary range, which is the entire differentiator.
Berlin or remote in six countries. €95k–€120k on a published ladder, four interview stages totalling about six hours, and the take-home is paid.
N
Northwind
Posting confirmed live 11 March · · 6 min read
The pull request was titled “remove stale flags, part 1 of 8” and it deleted more code than the previous quarter had added. Our flag service listed 312 active flags; production telemetry showed 41 of them had evaluated to the same value for every user since at least January. The rest were split roughly evenly between experiments nobody remembered starting and kill switches for services we had already decommissioned.
“A feature flag is a loan. The interest is every engineer who has to reason about both branches forever.”
Before you read any further
The four things you actually want to know
Salary, location, process and contract. They are here rather than under three paragraphs of mission statement, which is a rule of this board and not a favour from the employer.
€95,000 – €120,000, plus equityBand 4 on a published ladder. Where you land in it is decided at the offer stage from the interview, not negotiated — and the ladder is public on their engineering handbook.
Berlin, or remote from anywhere they can employGermany, Netherlands, Ireland, Portugal, Spain and the UK. They will not employ through a contractor-of-record, so if you are outside those six this role is not open to you.
Four stages, about six hours in totalOne of them is a take-home and it is paid at €600. No stage is a whiteboard algorithm, and the whole process is designed to fit in two weeks.
Permanent, full-time, 4-day week optional at 80% payTwelve of the thirty-one engineers take it. It is a standing offer rather than something to negotiate, and taking it does not affect the promotion ladder.
The whole process, published
Four stages, about six hours, designed to fit in two weeks. Nothing below is a surprise you will meet on the day.
Stage one · 30 minutes
A call with the hiring manager
Video, camera optional. Half of it is them describing the team honestly, including what is currently broken about it.
No CV walkthrough — they have read it
You will be told the salary band again before anything else
Outcome within two working days, either way
Stage two · take-home, paid €600
A small change to a real repository
A cut-down version of their payments service with one failing test and an ambiguous requirement. Timeboxed at four hours, and they mean it — they read what you did in four, not what you could do in twelve.
Paid whether or not you go further, invoiced or paid by transfer
You can decline it and do a 90-minute pairing session instead
The ambiguity is deliberate; asking about it is part of the answer
Stage three · 90 minutes
Pairing on your own take-home, with two engineers
You extend what you wrote, with the two people who will review your code every week. Your editor, your machine, your keybindings.
No new problem to understand under time pressure
They will push back on a decision to see how you argue, not to win
Break whenever you want; it is not a test of stamina
Stage four · 45 minutes
A conversation with two people you would work with daily
Not a culture-fit screen with a veto. One engineer from another team and one person from support, on how you work with people who are not engineers.
You get the last fifteen minutes for your own questions
Offer or rejection within three working days, with reasons
They will tell you who else was in the process and where you placed
What the job actually is
The payments service moves about €40m a month for 9,000 businesses and is the part of the product that cannot be down. You would be the fourth engineer on it, working mostly in Go with a Postgres ledger underneath.
The first six months are a specific project: splitting settlement out of the main service so that a slow bank connection stops holding up everything else. That work is scoped, funded and already agreed — it is not a "we will find you something" role.
Stack
Go, Postgres, Temporal, Terraform, AWS
Team
4 engineers, 1 PM, shared designer
On-call
1 week in 6, compensated, ~2 pages a week
Reports to
Engineering Manager, Payments
What they are looking for
Five or more years writing backend services that handle money, or something with the same consequences — ticketing, healthcare, logistics. The language matters much less than having been on the wrong end of a reconciliation.
They explicitly do not require a degree, Go experience, or prior fintech. Two of the four on the team came from other domains and the ramp is budgeted at three months.
What this role is not
Not a greenfield rewrite — the service is seven years old and most weeks you are working inside it rather than beside it.
Not a management track in disguise; there is a staff path and this is on it. And not a role with a nine-month notice period, a non-compete, or unpaid overtime, none of which they use.
About Northwind
The employer, in four numbers
Published by them, and checkable — the pay ladder and the annual attrition report are both on their public handbook.
Engineers
31
Of 140 people, across six countries
Founded
2018
Series B, 2024, profitable since Q3 2025
Median tenure
3.1 years
Published annually with the attrition rate
Pay bands
Public
The whole ladder is in their handbook, externally readable
One role, with the four facts a candidate needs before the mission statement and the whole interview process published — stages, hours, and whether the take-home is paid.
Postmortems with the numbers left in, migrations with the rollback described, and interview processes assessed against what they actually selected for. Free, and about 2,000 words.
One email a week. Unsubscribe in one click. Your address is never sold.
41,280 subscribers and a 62% open rate, which is the number that matters
A large list that nobody opens is a vanity metric and a rented audience. This one is small by newsletter standards and is read, which is why the sponsor slots are booked out to June and why there is only ever one of them.
Unedited, and picked to include the two that describe it as long — because it is, and somebody who wants a three-minute read should know before subscribing.
“The only newsletter I read the week it arrives rather than in a batch on a Sunday. It is long, which is unusual and correct — the short ones have nothing to say.”
TRTobias RennerStaff engineer, Contoso
“I have forwarded the estimates issue to three managers and it changed how one of them ran planning. That is a better hit rate than most books.”
PRPriya RamanathanEngineering manager
“It is one email a week and it is genuinely one email a week. No “quick note”, no webinar invitation, no course launch. I have been on it four years.”
MOMarcus OyelaranPrincipal engineer, Umbra
“Half the issues are about things that went wrong, with the numbers left in. I do not know anywhere else that publishes the rollback as well as the launch.”
DKDev KaurPlatform lead, Aperture
The terms
What subscribing actually signs you up for
The three worries everybody has about giving an address to a newsletter, answered before you are asked to give one a second time.
One email, Friday morning, that is allThere is no second email, no digest, no “we noticed you have not opened”. If a week has nothing worth 2,000 words, nothing is sent — that has happened nine times in three years.
Unsubscribe in one click, from any issueA link in the footer that works immediately and does not ask you to confirm, log in, or explain. There is no re-engagement sequence afterwards.
Your address is never sold, rented or sharedNot to sponsors, not to a partner, not as part of a "network". Sponsors get a slot in the email and a click count, and never a list.
Every issue is public a fortnight laterThe archive is free and unpaywalled, and always will be. Subscribing buys it two weeks early and in your inbox, which is worth something to some people and nothing to others.
The archive is the argument, so it sits above the testimonials, and the three worries about handing over an address are answered as content rather than as small print.
A migration runner that reads your application code before it drops a column, and blocks itself when something still needs it. Plain SQL, one static binary, no DSL.
bash
$ratchet up
ratchet 2.4.0 — schema migrations that refuse to go backwards
✓ 0001_initial.sql applied 2.4s
✓ 0002_add_ledger.sql applied 0.8s
✓ 0003_split_settlement.sql applied 14.1s
⚠ 0004_drop_legacy.sql BLOCKED
0004 drops column `orders.legacy_ref`, which 2 queries still read.
Found in: reports/monthly.sql:41, api/orders.go:212
Run with --force to override, or delete the readers first.
A config, and migrations that are plain SQL. If you already know how to write an ALTER TABLE you know how to use this.
Migrations are SQL files — nothing to learn, nothing to unlearn
The guard is the only unusual concept, and it is four lines
Irreversible migrations are declared, not inferred
1import { Ratchet } from 'ratchet'23// A migration is a file, not a class. The up is required; the down is4// optional and, if you leave it out, the migration is declared5// irreversible and the tool will say so rather than guess.6export const ratchet = new Ratchet({7 dir: './migrations',8 url: process.env.DATABASE_URL,910 // The whole point of the library. Before applying anything that drops11 // or narrows a column, parse the queries in these paths and refuse if12 // one of them still reads it.13 guard: {14 scan: ['api/**/*.go', 'reports/**/*.sql'],15 onConflict: 'block',16 },17})1819await ratchet.up()
Why this rather than the one you already have
Five differences. The first one is the reason the project exists; the others are consequences of keeping it small.
It reads your code before it drops a column
The guard parses the queries in the paths you name and blocks a destructive migration while anything still reads the column. Most outages caused by a migration are this exact shape.
Plain SQL, no DSL
Your database’s own documentation is the reference. Nothing to learn and nothing that stops working when Postgres adds a feature.
Irreversible is a thing you declare
A migration with no down is fine — lying about it is not. Say so in a comment and the plan output says so too.
No lock held while it thinks
Planning happens before the transaction opens, so a slow guard scan never holds a lock on a production table.
One binary, no runtime
6MB, static, no Node or Python needed in the image that runs it. The library and the CLI are the same code.
18.4k
GitHub stars
And 312 open issues, honestly
2.1M
Downloads a month
npm, last 30 days
184
Contributors
41 with commit access
MIT
Licence
Since 2021, and it will not change
Funding, since you are about to depend on it
Two maintainers are paid part-time; the rest is volunteered
Northwind funds one day a week and Contoso funds two, both on rolling twelve-month agreements, and neither gets any say over the roadmap — that is written into both. If both stopped tomorrow the project would keep going more slowly rather than stopping, because no single contributor holds more than 19% of commits. This paragraph is here because it is the question a team should ask before taking a dependency, and most projects do not answer it.
£61k
Funded in 2025
Two corporate sponsors, 340 individuals
3 days
Paid maintainer time a week
Across two people
19%
Largest share of commits
No single point of failure
0
Sponsor influence on the roadmap
Written into both agreements
Where to go next
The documentation is the place to start. The Discord is faster on weekdays, and every design decision is argued in a public RFC.
The install command above the hero, the API in twenty lines, and who funds it said plainly — because “what happens if the sponsors stop” is the question that decides whether a team takes the dependency.
1,028 developer tools, none of them paid to be here
Filter by pricing model, hosting and compliance rather than by category — you already know the category. Every entry says when it was last checked.
Popular
0 results for “chair”
Nothing matches all of those.
Remove a filter above — the counts show which one is doing it.
How the list is maintained
The four numbers a directory should publish and almost none do
Freshness and independence are the only things that separate a useful directory from a link farm, and both are claims that can be checked rather than adjectives.
Index last rechecked
4 days ago
Every entry’s pricing page and status are fetched fortnightly; the date is on each listing
Removed last month
23 entries
Dead sites, acquisitions and products that stopped shipping. A directory that only grows is not maintained
Paid placements
0
Nobody can buy a position, a badge, or a place in the results. Submissions are £40 and that is the whole business model
Entries with a verified price
94%
The other 6% are marked “contact for pricing”, which is information too
Browse by category
Six sections, 1,028 entries. The counts are live and include everything, not just the entries that paid — because none of them did.
Databases and storage
212 entries — managed Postgres, object storage, vector stores, and the migration tooling around them.
Orchestration
144 entries — workflow engines, schedulers, queues and the durable-execution category that grew out of them.
Observability
186 entries — tracing, logs, metrics, and the seven products that claim to be all three.
No, and there is no mechanism to. Results are sorted by the facet you choose and nothing else — there is no "featured" tier, no sponsored row and no badge for sale. Submission costs £40 once and that is the entire revenue of the site.
How do you keep 1,028 entries current?
A fortnightly crawl of every entry’s pricing and status page, flagged for a human when something changes materially. The date each entry was last confirmed is printed on it, so a stale one is visible rather than hidden. 23 were removed last month.
My product is listed and the details are wrong.
There is an edit link on every entry and it does not require an account or ownership proof for a factual correction — pricing, a dead link, a changed name. Changes to the description go through review, which takes about a day.
Can I have my product removed?
Yes, on request, no reason needed and no retention attempt. Email us and it is gone the same day. We think a directory nobody can leave is a hostage situation rather than a resource.
Where do the ratings come from?
Reviews left here, by accounts that have been on the site more than 30 days. They are not aggregated from elsewhere and they are not weighted — the score is the mean, the count is beside it, and a product with 27 reviews should be read differently from one with 214.
Is the data available as an API?
The whole index is downloadable as JSON under CC BY-SA, updated nightly, with no key and no rate limit worth mentioning. If you build something better with it, that is a good outcome.
Faceted by pricing model and hosting rather than by category, because the reader already knows the category. Publishes its own removal rate, which is a claim that can be checked.
An open-source schema migration runner that parses your application code before a destructive migration and blocks itself when something still reads the column. Plain SQL, one static binary, no hosted version.
IB
Indexed by Stackfinder
No affiliate link · nobody paid for this listing · · 4 min read
The pull request was titled “remove stale flags, part 1 of 8” and it deleted more code than the previous quarter had added. Our flag service listed 312 active flags; production telemetry showed 41 of them had evaluated to the same value for every user since at least January. The rest were split roughly evenly between experiments nobody remembered starting and kill switches for services we had already decommissioned.
“A feature flag is a loan. The interest is every engineer who has to reason about both branches forever.”
The facts
Licence, hosting, compliance, freshness
The four columns every entry in this directory carries, in the same order, so two entries can be read side by side without hunting.
Open source, MIT, since 2021No dual licence, no “open core” with the useful half held back, and no CLA that assigns your contributions. The licence has not changed in five years and the trademark policy is separate and permissive.
Self-hostable — it is a 6MB static binaryNo runtime to install alongside it, no control plane phoning home, and no licence key. There is no hosted version, which is a real limitation if you wanted one.
No compliance certifications, and it does not need themIt runs inside your infrastructure and holds no data of yours, so SOC 2 is not applicable rather than missing. Worth saying plainly because a blank compliance column usually means the opposite.
Last checked 4 days agoPricing page, release feed and repository activity. Latest release 2.4.0, eleven days ago; 312 open issues and a median first response of 2 days.
Against the two obvious alternatives
Chosen by what people actually search for next, not by who would like to be compared. Every row is checkable from public documentation and dated 4 days ago.
Against the two obvious alternatives — features by plan
Feature
RatchetPopular
Halyard Migrate
Vandelay Shift
Licence
MIT, open source
Proprietary
BSL, converts to Apache after 4 years
Price
Free
From $49/mo
Free under 5 seats, then $29/seat
Self-hostable
Included
Not included
Included
Hosted option
Not included
Included
Included
Plain SQL migrations
Included
Not included
Included
Blocks destructive changes by scanning app code
Included
Not included
Not included
Runtime required
None — static binary
Node 20+
JVM 17+
Postgres, MySQL, SQLite
All three
Postgres only
All three
Median issue first response
2 days
Support SLA, 4 hours
9 days
What it does
Ratchet is a schema migration runner. Migrations are plain SQL files applied in order, which is unremarkable — what is not is the guard: before applying anything destructive, it parses the queries in paths you nominate and refuses if one of them still reads the column being dropped.
In practice that turns the most common migration-caused outage into a blocked command with a file and a line number. It is the only tool in this category that does it, and it is why the entry exists.
Latest release
2.4.0, eleven days ago
Databases
Postgres, MySQL, SQLite
Binary size
6MB, static, no runtime
Downloads
2.1M/month on npm
Where it is weak
There is no hosted or managed version and the maintainers have said there will not be, so if you wanted somebody else to run it, this is not the tool.
The guard only understands SQL and Go query construction today — if your queries are built dynamically in Python or Ruby it will not see them, and it fails open rather than pretending. The Windows build lagged the others by two releases in 2025.
Who pays for it
Two corporate sponsors fund three maintainer-days a week between them on rolling twelve-month agreements, neither with any roadmap influence, plus about 340 individual sponsors.
No single contributor holds more than 19% of commits, so the bus factor is genuinely better than most projects this size. Total 2025 funding was £61k, which they publish.
214 reviews
The shape of the score, not just the mean
A 4.8 can mean consistently good or sharply divided, and those are different purchases. Here almost all the low scores are one issue from one year, which is worth knowing before you read them.
Mean score
4.8 / 5
From 214 reviews left on this site since 2022
Five stars
78%
167 reviews — almost all mention the guard specifically
Two stars or fewer
4%
9 reviews, seven of which are about the Windows build in 2025
Would use again
96%
Asked separately from the star rating
4 reviews
Tobias R.Verified purchase
It blocked a migration that would have taken us down
Two months in, it refused a DROP COLUMN and pointed at a reporting query nobody remembered writing. That one event paid for the entire migration off our previous tool. The output is unusually good — it names the file and the line rather than just saying no.
Using it for 14 months · Postgres, self-hosted
Anders L.Verified purchase
Windows support was an afterthought for most of last year
Two releases went by without a Windows binary and we pinned an old version for four months. It is fixed now and the maintainers were honest about it in the issue, but if your team is on Windows, check the release page before committing.
Using it for 2 years · Postgres, Windows
Priya R.Verified purchase
Plain SQL is the right call
We moved off a tool with its own DSL and immediately deleted a page of internal documentation explaining the DSL. Onboarding a new engineer to migrations is now "these are SQL files".
Using it for 8 months · MySQL
Sameera K.Verified purchase
The guard does not see our Python queries
Works exactly as documented — it only parses SQL and Go — but we are a Django shop so the headline feature is mostly inert for us. Still a good migration runner and we kept it. Would be five stars with a Python parser.
Using it for 5 months · Postgres, Django
No buy button, on purpose
This is a plain link to the project. Stackfinder takes no affiliate revenue and nobody can pay for placement, which is the only reason the comparison above is worth reading.
One entry, compared against the two obvious alternatives — against the vendor’s interest and exactly in the reader’s. No buy button and no affiliate link, which is what makes the comparison credible.
Long-form technical film-making with the profiler open the whole time. 240 hours in the catalogue, no ads on any plan, and about 40 hours of it free without an account.
We take a page that feels slow and find out what is actually slow about it — with a profiler open the whole time, and no guessing. The fix at the end is two lines; finding it is the other eleven minutes.
The four things people ask before subscribing
Downloads, ads, subtitles and sharing — in that order, because that is the order they come up. None of them is an upsell.
Download anything, keep it 30 days
Every episode, at full quality, on up to four devices. Nothing expires after 48 hours the way it does elsewhere, and a download you started stays valid if your subscription lapses mid-series.
No ads, ever, on any plan
There is one plan and it has never had an ad tier, a "with ads" discount, or a mid-roll. This is a product decision rather than a current promotion.
Subtitles and transcripts on everything
Human-written, not auto-generated, in six languages. Every episode also has a searchable transcript, which is how most people actually find the bit they wanted to re-watch.
Five profiles, and no household check
Watch on three screens at once from anywhere. We do not check IP addresses, ask for a verification code, or have an opinion about who is in your household.
One plan, and it is the best one
No ad tier, no 4K surcharge, no annual lock-in. The thing you can buy is the whole thing.
Yes, from the account page in two clicks, and it takes effect at the end of the period you have already paid for rather than immediately. No retention flow, no phone call, and no offer of two months free on the way out.
What happens to my downloads if I cancel?
Anything already downloaded stays playable for 30 days from when you downloaded it, including after the subscription ends. Most services revoke on cancellation; we think that is mean, given you paid for the month.
Is there a free trial?
No trial, and the first month is the same price as every other month — but roughly 40 hours of the catalogue is free to watch without an account at all, including the whole first series of Profiling. Watch that and decide.
How many people can watch at once?
Three streams, five profiles, and we do not check where they are. No household verification, no travel restrictions, and no "you seem to be away from home" email.
What quality does it stream at?
4K HDR where the source allows, adaptive down to about 1.5Mbps. There is no quality tier and no surcharge for 4K — the plan you can buy is the best one there is.
Will the price go up?
It has once in five years, from £7 to £9, announced two months ahead. If it changes again, existing subscribers keep their price for twelve months and are told before it happens rather than in the receipt.
The catalogue sells itself: rails second, features far down as objection handling, and a real watch screen on the marketing page instead of a device montage.
We take a page that feels slow and find out what is actually slow about it, with a profiler open the whole time and no guessing. The fix at the end is two lines; finding it is the other eleven minutes.
Chapters
Five chapters across twelve minutes. Selecting one seeks the player; the timecodes are also in the description of every download.
00:00
The page that feels slow
02:10
Measuring before guessing
05:32
The flame graph, read out loud
09:18
The quadratic query plan
11:26
Two lines, and what they cost to find
Transcript
Human-written, timestamped, and searchable with find-in-page once it is open. Six languages are available from the subtitles menu in the player.
00:00 — This page takes about two and a half seconds to become interactive, and the complaint that started this was not a number at all. It was a support message saying the checkout "hangs for a second". That is a better bug report than any score, because it tells you when it happens rather than how much.
00:41 — The first thing I am not going to do is open the profiler on my laptop. My laptop has a fast disk, a warm cache and eleven rows in the table. Everything I would learn here would be about my laptop.
02:10 — So this is a production trace, sampled, from a request that actually took 2.4 seconds. Nothing synthetic. The whole rest of this episode is reading it.
Languages
English, German, French, Spanish, Portuguese, Japanese
Written by
A person, not auto-generated
Runtime
12 minutes 4 seconds
Published
4 March 2026
Everything mentioned in this episode
The profiler is open source and the flame graph viewer is the one bundled with it — no paid tooling is used anywhere in this series.
The example service, the failing query and the trace shown at 02:10 are all in a public repository, so you can open the same trace and follow along rather than watch someone else do it.
Corrections
At 06:12 the narration says the plan "goes quadratic above 400 rows". It is 400 line items per order, not rows in the table — the distinction matters and the on-screen text is right where the voiceover is not.
Corrections are listed here rather than silently re-cut, and the episode is never replaced after publication.
More from Longform
Five other series. Everything is released complete — there is no weekly drip and nothing expires.
The one page in the catalog whose job is to get out of the way — player, chapters, a searchable transcript, and no comments section, because a thread is a moderation commitment rather than a component.
We are two years old and we are telling you that on purpose
Most about pages of companies our size are written to sound like companies four times our size. This one is not, because the thing we are actually selling — that a named person will answer when reconciliation breaks on the last Friday of the month — stops being true at four times our size.
Three things we decided early and have not revisited
Each of these costs us something measurable. That is how you can tell they are real commitments rather than values-page furniture.
First
The person who answers should be able to fix it
Support tiers exist to protect engineering time, and they work — at the cost of putting a translator between the problem and the person who can solve it. We have not hired a tier one, and the cost of that is real: our response times are slower than a scripted queue. We think the trade is worth it and we would rather say so than quietly rank badly on a metric we chose not to optimise.
Every engineer does one support day a fortnight
Median first reply: 4 hours, business days only
No chatbot, no deflection funnel, no ticket deflection target
Second
A finance tool should be boring on purpose
We ship on Tuesdays and we ship small. Nobody wants their reconciliation software to have a redesign the week of close, so the interface has moved very little in two years and most of the work has gone under it. This is the least exciting thing about the company and it is the reason customers stay.
No breaking API change since launch
Release notes published before the release, not after
Month-end freeze: nothing ships between the 28th and the 3rd
Third
We would rather lose the deal than win it by implying
We are not SOC 2 Type II yet. We are Type I, the audit window for Type II closes in March, and every enterprise deal we have lost this year we lost on that line. The alternative was to write "SOC 2 compliant" and let the reader assume, which is what most of this market does, and which would have made the sentence you are reading impossible to write.
Type I today, Type II expected Q2
Sub-processor list published, with change notice
Security questionnaire answered in full before a call, not after
“They were eighteen months old and pre-Type-II when we signed, which my CFO hated. What sold it was that their founder answered the security questionnaire herself, in full, including the three rows where the answer was no.”
PRPriya RamanFinancial Controller, Meridian Foods
From first call to signed
6 days
From first call to signed
Questions answered "no"
3
Questions answered "no"
Trusted by support teams at
Meridian
Coastline Health
Fieldstone
The roles open right now
Three of them, which is what a company of nineteen people can absorb in a quarter. If the list is empty by the time you read this, the speculative address below is read by a person.
Nothing that fits? We read every speculative application — hiring@acme.example.
…which is why the migration queues behind the reporting job rather than failing outright. The lock is held for as long as the report runs, and on a large table that can be several minutes.
The safe version is to set a lock timeout and accept that the migration may need a second pass, rather than letting it wait indefinitely and block every write behind it.
The founder’s letter instead of the evidence wall: a byline and a dateline, for a company whose best asset is still conviction rather than a six-year record — and it ends on the job board, because /team is linked from job posts more often than from sales decks.
Route before you write — three doors, each with the form its sender actually needs: a calendar for a buyer, a structured ticket for a broken import. One textarea costs a round trip.
Nineteen people, no managers, and a support day every fortnight
That last part is not a perk and we do not present it as one. Every engineer here spends roughly one day in ten answering customers, which is the single biggest reason our roadmap is any good and the single commonest reason someone turns us down.
Salary bands published on every role, no negotiation ladder
Four-day week, Fridays off, not a trial
No on-call except during month-end close, which is paid
Revenue
$48,120
+12.4%
Active
2,847
+3.1%
Churn
0.8%
-0.3%
ACAcme Corp$4,200
GLGlobex$3,300
INInitech$2,400
The shape of the company
The numbers a candidate actually asks in the third interview
A flat company of nineteen has no promotion path, and we would rather you learn that here than in your second year. What it has instead is scope: the person who takes the ledger role owns the ledger, including what it does not do. If you want a title that changes every eighteen months, this is a bad place to want that.
Small enough that this is the whole company, not a leadership page. If you join engineering, you will have worked directly with everyone on this list inside a month.
PR
Priya Raghavan
Co-founder & CEO
Previously led platform at a payments unicorn; still reviews PRs.
MO
Marcus Okafor
Co-founder & CTO
Wrote the first commit in March 2023 and the incident runbook the week after.
ES
Elena Sokolova
Head of Design
Believes every empty state deserves as much care as the dashboard.
TW
Tom Whitfield
Staff Engineer
Owns the sync engine; measures success in p99s, not features.
AD
Aisha Diallo
Product Manager
Turns forty support tickets a week into a roadmap the team believes in.
DK
Daniel Kim
Developer Advocate
If you found us through a conference talk in 2026, it was probably his.
Open roles
Four, with a band on every one. We do not negotiate up from the bottom of the band — the offer is made at the number the interviews supported, and it is the same number regardless of what you are paid now.
The team page that is really a recruiting page: it opens on the trade rather than the faces, and puts a salary band on every role — a board with three bands and one “competitive” teaches the reader which is the bad one.
Sorted by how uncomfortable they are, hardest first. Three of the five have answers that will lose us some readers, and those are the three worth reading.
Everything else
Short answers, because these are short questions. Eighteen of them in total, which is why this page has no search box.
Not here?
The chat below is a person during business hours and a form outside them. Either way it is answered by someone who can change the thing you are asking about.
Fourteen days, no card, full product including the integrations. The only thing gated during the trial is bulk export, for the obvious reason.
Is there a minimum contract?
No. Monthly billing cancels at the end of the period you have paid for. Annual saves seventeen percent and is genuinely refundable pro rata in the first sixty days.
Which accounting systems do you connect to?
Nine live, three in beta and marked as such in the directory. If yours is not listed, the API is documented and two of the nine were originally built by customers.
Do you support multi-entity consolidation?
Yes, up to twelve entities on the standard plan. Inter-company elimination is manual — it is on the roadmap and it is not built, so do not buy us for it today.
Can we self-host?
No, and we have no plan to. If self-hosting is a requirement rather than a preference, we are the wrong vendor and the shortlist you want has three other names on it.
What are your support hours?
Weekdays, 08:00 to 19:00 UTC, with a real person. During month-end close, the 28th to the 3rd, anything marked blocking pages an on-call engineer outside those hours too.
Do you offer a discount for non-profits?
Fifty percent, no paperwork beyond your registration number, and it applies to the annual plan as well.
Who owns the data we put in?
You do. We do not train anything on it, we do not sell aggregate views of it, and the sub-processor list that can see it is published with thirty days of change notice.
For your security reviewer
The same list we return on a questionnaire, including the two rows where the answer is not the one you want. Anchor-linkable — send this section, not the page.
Hi — Priya here. I can see order ORD-88410. What went wrong with it?
Priya · 14:02
The second chair arrived with a cracked base plate.
You · 14:03
Sorry about that. I can send a replacement base plate today, or swap the whole chair — the plate is a ten-minute job with the allen key in the box. Which suits you?
Objection-ordered and search-free: the questions that lose deals first, hardest at the top, because a search box over eighteen questions implies a list long enough to get lost in — and its empty state reads as “no refund policy”.
Eleven entities, three currencies, and a 340-tab workbook that one person understood. This is the whole story, including the six weeks where our software was worse than the spreadsheet it replaced.
I would not describe the first two months as a success. What saved it was that they gave me the rule editor instead of asking me to file tickets — I knew why the data was weird and they never could have.
PRPriya RamanFinancial Controller, Meridian Foods
What actually happened, in order
Three acts, and the second one is the reason the third is believable.
Before
Four people, two days, every month, forever
Meridian ran eleven entities across three currencies, and the close ran on a shared workbook with 340 tabs that one person understood. Nobody thought this was fine. It had simply never been the most broken thing in any given quarter, which is how a two-day manual process survives six years.
340-tab workbook, one owner, no tests
Close took 9 working days end to end
Two restatements in the prior 18 months
The middle, which did not go well
Six weeks in, the automated match was worse than the spreadsheet
The first rule set matched 71 percent of lines. The workbook, with a human applying judgement, was effectively matching 96. For about a month the finance team was doing their old job plus reviewing our exceptions, and the honest summary of week six is that they nearly stopped. What changed it was giving them the rule editor rather than filing tickets with us — the controller wrote the seventeen rules that took it to 94 percent herself, in an afternoon, because she was the only person who knew why a supplier sometimes invoiced under a trading name.
Week 6: 71% auto-match, and falling confidence
Week 9: rule editor handed over, 17 rules written in-house
Week 12: 94% auto-match, exceptions reviewed in 40 minutes
After
The close is boring now, and one person no longer holds the risk
The number that matters to the CFO is nine days down to four. The number that matters to the controller is that she took a fortnight off in November for the first time since 2021, because the rules are written down and three people can run them.
Close: 9 days to 4
Three people can now run it, up from one
No restatement since cutover
Twelve months on
Where it landed
Measured over eight consecutive closes rather than the best one, which is the only version of these numbers worth printing.
Close duration
4 days
From 9, measured over 8 consecutive closes
Auto-matched lines
94%
Up from 71% at week 6
Exception review
40 min
Was roughly 2 days of combined effort
People who can run close
3
Was 1
Against the category
Is four days good?
Compared against the 34 other 10-to-15-entity customers we have. One of these three rows does not flatter us and it is the one about time to first value.
Median close, 11-entity peers
6.5 days
Meridian: 4
Typical auto-match at 12 weeks
88%
Meridian: 94%
Typical time to first value
3 weeks
Meridian: 9 — the slow one
…which is why the migration queues behind the reporting job rather than failing outright. The lock is held for as long as the report runs, and on a large table that can be several minutes.
The safe version is to set a lock timeout and accept that the migration may need a second pass, rather than letting it wait indefinitely and block every write behind it.
The narrative take, for a study found by search rather than forwarded by a champion: the customer’s sentence first, the numbers last, and the six weeks in the middle where the software was losing to a spreadsheet.
Search the situation rather than the industry — most readers arrive with a problem shape (“eleven entities, three currencies”) rather than a category.
Popular
Active filters and sorting
5 of 34 projects
Status:Published
Entities:10–15
Ledger:NetSuite
0 results for “chair”
Nothing matches all of those.
Remove a filter above — the counts show which one is doing it.
Across the whole set
What the thirty-four add up to
Including the four where the rollout went badly. Those are published in the same directory rather than in a footnote, and they are filterable like everything else.
Median close improvement
−38%
Across all 34 published studies
Median time to first value
3 weeks
Slowest published: 9 weeks
Studies where we underperformed
4
All four are in this directory
None of these look like you?
Tell us the entity count, the ledger and the thing that currently takes longest. If we have no comparable customer we will say so rather than send you the closest logo.
A results directory rather than a reading list: search the situation, facet by entity count and ledger, and the aggregate claim sits at the bottom underneath the thirty-four rows it was computed from.
Six weeks, fixed price, 90% auto-match or week seven is free
One engagement, run forty-one times. We put the number in the first screen because a productised service that hides its price is just consulting with extra steps.
Six weeks, elapsed
Roughly 10 hours of your team, total
90% auto-match target, guaranteed
€24,000$82
Fixed. Not a starting point, not a range, and not subject to a scoping call.
Miss 90% and week seven costs nothing. Paid out 4 times in 41 engagements.
What the six weeks contain
Tabs rather than a list, because the three audiences for this page — controller, CFO, and the engineer who will inherit it — each need a different third of it.
Reviews that start themselves
Reviewers assigned by file ownership, not by whoever is online
Stale approvals dismissed automatically when the diff changes
Merge unblocks the moment the last required check goes green
The schedule
Week by week, including the bad one
Week 1
2workshops
Your close, mapped as it actually runs rather than as it is documented. Half a day of your controller, and it is the only week that needs meaningful time from you.
Weeks 2–3
1ledger connected
We build the connection and the first rule set against a full historic month. You do nothing this fortnight; we send a Friday note either way.
Week 4
60–75%auto-match, typically
The uncomfortable week. The number is below what your spreadsheet achieves and it is supposed to be — this is the week we hand over the rule editor.
Weeks 5–6
90%+auto-match, target
Your team writes the domain rules; we write the structural ones. Handover, runbook, and one live close with us watching. If we miss 90 percent, week seven is free.
The whole engagement, itemised
No implementation fee stacked on top, no per-entity charge, no separate line for the runbook.
50% on signature, 50% after the supervised close. A call first is available and not required.
What is included
Two discovery workshops and a written map of the close as it runs today
Ledger connection built and tested against a full historic month
Rule set to 90% auto-match, or week seven at no charge
Runbook written for three named people, not one
One supervised live close
Thirty days of direct Slack access afterwards
“We had two bespoke quotes at roughly the same number, both of which needed three more meetings to firm up. The fixed price was not cheaper. It was six weeks earlier, because there was nothing left to negotiate.”
TLTobias LundCFO, Northwind Logistics
Signature to supervised close
6 wks
Signature to supervised close
Scoping calls required
0
Scoping calls required
Trusted by support teams at
Meridian
Coastline Health
Fieldstone
Before you book it
Including the paragraph naming when this engagement is the wrong shape, which is the one worth reading if you are above twenty entities.
One productised engagement with the price in the first screen and no mandatory call — a fixed price behind a scoping call is consulting with extra steps. Includes the paragraph naming when it is the wrong shape.
Thirty-one live, seven in beta, five scoped and not started. Search the vendor name — nobody browses one of these.
Popular
43 products
Results
Status is on every card and it is the real one — beta means beta, and the planned rows carry the number of customers waiting rather than a quarter we would miss.
N
NetSuite
General ledger
Available
Two-way. Journals, subsidiaries and the chart of accounts. Conflict resolution is last-write-wins with a review queue.
X
Xero
General ledger
Available
Two-way, including tracking categories. The only connector that supports multi-currency revaluation on our side.
S
Sage Intacct
General ledger
Available
Two-way. Dimension mapping is manual on first setup and takes about an hour.
D
Dynamics 365 Finance
General ledger
Beta
Reads only for now. Writing journals is in the March release and the beta is open.
S
Stripe
Banking and cards
Available
Payouts, fees and disputes, reconciled to the penny including the FX leg.
P
Plaid
Banking and cards
Available
Bank feeds across 11,000 institutions. We do not store credentials; Plaid holds them.
R
Ramp
Banking and cards
Available
Card transactions and receipts, with the memo field mapped to your match key.
Q
QuickBooks Online
General ledger
Beta
Two-way. Known limitation: classes do not round-trip cleanly and we flag rather than guess.
W
Workday Financials
General ledger
Planned
Scoped, not started. Five customers waiting. Realistically second half of 2026.
Not on the list?
This form is genuinely how the order gets decided — the five planned connectors above are the five with the most requests. Tell us the vendor and roughly how many entities it covers.
Search-first, with facet counts including the zeroes — nobody browses an integration directory, and “Payroll (0)” answers the question inside the list the reader is already looking at.
Read this before the wizard. Two of the five rows below are the ones people are surprised by later — attachments do not sync, and the chart of accounts is read-only in both directions of the word.
Journal entries — both directionsWe read posted journals and write reconciliation adjustments back as a separate journal source, never by editing yours.
Chart of accounts — read onlyPulled hourly. We never create, rename or deactivate an account, which is the write nobody wants to discover after the fact.
Subsidiaries and currencies — read onlyAll eleven of your subsidiaries, with their functional currency. Revaluation stays in NetSuite.
Vendors and customers — read onlyNames, ids and trading names. The trading-name field is the one that makes supplier matching work, and it is the one most connectors skip.
Attachments — not syncedDeliberately. Receipts stay in NetSuite; we store the link, not the file.
The setup guide, not the pitch: what moves and which way, then a five-step wizard — written for the person turning the connector on rather than the one deciding to buy it.
If you need Type II today or you self-host, stay where you are
You already own Northwind. You know its weaknesses better than we do, so a feature table is not the argument — what switching costs is. This page leads with the three cases where the answer is don't, then spends the rest on what a migration actually involves.
Written in weeks of your controller's time rather than in a sales timeline. The last row is the thing you would lose, and it is the reason two customers went back.
Match history: we import it, all of itFour years of Northwind match decisions import as evidence, not as rules — so your auto-match starts around 80 percent rather than at zero. This is the single biggest reason a switch is survivable, and it is the question nobody thinks to ask until week two.
Rules: about 60 percent convert automaticallyStructural rules (account, amount, date window) convert cleanly. Anything using Northwind’s scripting does not, and we rewrite those by hand during the engagement. Typically eleven to twenty rules.
Run both for one close. We expect you to.One month of parallel running, both systems, both results compared line by line. It is a real cost — roughly two extra days for your controller — and anyone telling you to cut straight over has not migrated a close.
Realistic elapsed time: seven weeks, not threeSix for the build plus one parallel close. Northwind quotes three weeks for an inbound migration and, to be fair to them, they hit it — because they do not run the parallel month.
What you will loseNorthwind’s supplier-portal module has no equivalent here and is not on our roadmap. Two customers went back for exactly that reason.
“The parallel month was the part I resented and the part that made it work. We found nine rules that had been quietly wrong in Northwind for two years, and we would never have found them in a straight cutover.”
TLTobias LundCFO, Northwind Logistics
Signed to fully migrated
7 wks
Signed to fully migrated
Silently wrong rules found
9
Silently wrong rules found
Trusted by support teams at
Meridian
Coastline Health
Fieldstone
What a switcher asks that a new buyer never does
The first row is the one we would most like you to read, and it is the one that tells roughly a third of this page's readers to stay put.
Send us your Northwind rule export
We will tell you what fraction converts automatically and how many rules need rewriting, as a number, before you commit to anything. It takes us about a day and there is no call attached to it.
One rival, head to head, for a reader who already owns the competitor — so the argument is what a migration costs, and the page opens by telling roughly a third of its readers to stay where they are.
We tried a dated roadmap for a year and missed enough of it that the page became a liability — every slipped quarter spent credibility the roadmap existed to build. What follows instead is four problems we are working on, stated as problems, plus the four things we have decided not to build. Exactly one date appears below and it is the SOC 2 one.
Each with the constraint that makes it hard, because “in progress” with no constraint attached is how a card sits in a column for three quarters.
Being worked on now
Inter-company elimination without a spreadsheet
Twelve-entity customers currently drop out of the product at exactly this step and finish the consolidation by hand, which means the close we shortened by four days gets one of them back. The hard part is not the arithmetic — it is that every group nets differently and we have not found a rule shape that covers more than about seventy percent of them.
Blocking 31 customers, by far the largest single group
The constraint: no rule shape yet that covers enough groups
Two engineers, started November
Being worked on now
Match rules that explain themselves
A rule set at 94 percent is excellent until an auditor asks why line 4,181 matched, and the current answer is a rule id. We want a sentence. This is mostly a data-modelling problem and slightly a writing problem, and the writing half is the part that has stalled twice.
Requested by every customer who has been audited
The constraint: explanations that are true but not book-length
One engineer, restarted January
Next, probably
Dynamics 365 write support
The connector reads today. Writing journals back needs a different API surface with different governance limits, and the beta has four customers on it. This one has a real chance of moving ahead of the theme above it, because it is well understood and merely laborious.
4 customers in beta, 9 more waiting
The constraint: governance limits, not complexity
Unstaffed until elimination ships
We want to, and cannot yet
SOC 2 Type II
Not a feature, and the single most common reason we lose an enterprise deal. The observation window closes in March and the report follows it. Listed here because "on the roadmap" is how most vendors describe this and we would rather give you the actual month.
Type I today, report available under NDA
Observation window closes March 2026
Report expected Q2 — this is the one date on the page
What we have decided not to build
Four refusals with reasons. Two of them have cost us named customers, which is noted in the rows rather than left out.
Or hear about it when it ships
One email per release, written by whoever built the thing. No dates, no teasers, and nothing on the weeks we ship nothing.
Roughly two a month. Unsubscribe link in every one, and it works.
Themes and refusals, no quarters — four problems stated as problems, plus the four things we have decided never to build, which is the section that takes nerve and the one customers actually need.
Reconciliation that a finance team can actually maintain
Not open yet. The queue is ordered, it moves when you invite someone, and the position we show you is the real one — including the part where roughly a third of today's queue will not get in before general availability.
Three places per person who joins with your link, capped at thirty. Forty people are admitted every Tuesday, limited by how many we can support properly rather than by how many we could charge.
What you would be waiting for
Four sentences, so that an invitation forwarded to a colleague arrives with something to read. This is the whole product today, not a subset of a longer page.
Match rules your own team can write
A rule editor rather than a support ticket. The people who know why a supplier invoices under three different trading names are the people who should be encoding that, and they do not write SQL.
Up to twelve entities, three currencies
Consolidated without a workbook. Inter-company elimination is the one part that is still manual, and it will still be manual at launch.
Around 90% auto-matched by week twelve
Week six is usually in the sixties, which is below the spreadsheet you are replacing. That dip is normal, it is the hardest part, and we will warn you about it rather than let you discover it.
Exports that work on a cancelled account
Ninety days, self-serve, including the match history. Built early and on purpose, because we have been on the other end of a vendor who did not.
A referral queue with a real position: three places per invite, forty admitted a week, and the admission ceiling on the page rather than in the confirmation email — otherwise it is a dark pattern with a progress bar.
Forty-five minutes, twelve seats, screen sharing encouraged. An engineer who works on the matching engine is in every session, and most of them are spent on one person's actual ledger rather than on slides.
Average wait for a first appointment: 2 days
Everything else this month
Office hours weekly, a user group monthly, and a clinic during close week that exists because nobody wants to learn a new tool on the second of the month. Eight events, all free, none of them a product demo.
August 2026
Product
Design
Personal
MonTueWedThuFriSatSun
Who runs them
The same three people every week, which is the entire reason anyone comes back. If you have been to office hours twice you have already met all of them.
PR
Priya Raghavan
Co-founder & CEO
Previously led platform at a payments unicorn; still reviews PRs.
MO
Marcus Okafor
Co-founder & CTO
Wrote the first commit in March 2023 and the incident runbook the week after.
ES
Elena Sokolova
Head of Design
Believes every empty state deserves as much care as the dashboard.
TW
Tom Whitfield
Staff Engineer
Owns the sync engine; measures success in p99s, not features.
AD
Aisha Diallo
Product Manager
Turns forty support tickets a week into a roadmap the team believes in.
DK
Daniel Kim
Developer Advocate
If you found us through a conference talk in 2026, it was probably his.
The always-on doors
Still here, just not the pitch — an idle Slack is a worse first impression than a half-full calendar. Counts and reply times are current as of this month.
The calendar is the community: the next session bookable in the first screen, the month underneath, and the chat links demoted to a strip — an idle Slack is a worse first impression than a half-full calendar.
Thirty-one partners, and here is what they actually made
No calculator on this page. A slider shows what you could earn from numbers you picked yourself, which is arithmetic rather than evidence — these four figures are last quarter's, including the median rather than only the top.
Four partners, including one for whom this is not working
Sasha's row is here on purpose. Her audience is three-entity bookkeepers, where we are the expensive option, and no programme page that omits that case is telling you how the programme works.
“I write one newsletter a month for finance controllers. Two referrals a quarter, both of which stuck, and the twenty-four month tail means last year’s referrals are still paying this year. It is not a business. It is a good lunch every week.”
“Fractional CFO work. I recommend them to roughly one client in four, and only the multi-entity ones. The programme pays me either way, but the reason I stay is that I have never had to apologise for the recommendation.”
OBOwen BradyFractional CFO · €4,900/quarter
“Honestly below what I hoped. My audience is small-business bookkeepers and most of them have three entities, where Acme is the expensive option. That is my targeting problem, not theirs, and they told me it would happen on the application call.”
“The implementation partner tier is the one worth having. I get a lower commission and a much higher conversion rate, because I am the one doing the migration afterwards.”
Percentages rather than prices — the number under each name is the share of first-year revenue, not a monthly fee. Advocate is applied automatically; you do not have to ask.
MonthlyYearlySave 20%
Referral
The default tier. You send a link, we do everything else.
%20/month
20% of first-year revenue
24-month cookie window
Paid monthly, €50 minimum
Dashboard with per-link attribution
No exclusivity, no minimum volume
Most popular
Advocate
For partners past €5,000 in lifetime commission. Applied automatically.
%30/month
30% of first-year revenue
Plus 10% of year two
Co-written case study if you want one
Direct line to a named person here
Early access to the roadmap themes
Implementation
For consultants who run the migration themselves. Lower rate, much higher conversion.
%15/month
15% of first-year revenue
Plus the implementation fee, which you keep in full
Sandbox workspaces for your clients
Named in the partner directory
Certification, two days, free
What gets you removed, before you apply
Four behaviours and two payment questions. The first two are the ones that end partnerships, and both are stated as absolutes because they are.
Bidding on our brand name in paid search
Immediate removal and forfeited commission. This is the single commonest reason a partnership ends, and it is not a grey area — if you bid on "Acme" or any close variant, the account closes. We would rather say this before you apply than after a payout.
Coupon and deal-aggregator sites
Not accepted. The traffic converts but it converts people who were already buying, and every one of those is a commission we pay for nothing. There is no version of this where we say yes.
Claiming things we do not do
If a referral arrives believing we are SOC 2 Type II or that we self-host, they churn in month two and we both lose. Say what we actually do. The comparison page is deliberately honest so that you can point at it.
Undisclosed affiliate relationships
Disclose it. Legally required in most of the markets our partners operate in, and separately it is the thing that makes the recommendation worth anything.
What if a referral cancels?
Commission is clawed back within the first sixty days and not after. Around one in nine does, which is the same rate as our direct signups.
When do you actually pay?
Monthly, on the 15th, for the month before, once the balance is over €50. Bank transfer or PayPal. We have never missed one and if we do, say so publicly.
Apply
A person reads this, usually within two days, and the reply either says yes or says which part of your audience we think is a poor fit. Thirty-one partners out of about ninety applications, and we tell the other fifty-nine why.
Proof before arithmetic — what four named partners actually earned last quarter, including the one for whom it is not working, and no calculator anywhere. A slider shows what you could earn from numbers you picked yourself.
A wall of forty quotes is uniformly impressive and uniformly irrelevant — a CFO does not care what a bookkeeper liked. Pick the row that is you and read the nine or eleven that were written by people in your job.
“Week six was the week I nearly stopped. The software was matching 71 percent and my spreadsheet was matching 96. What changed it was being handed the rule editor instead of a support queue — I knew why our suppliers invoice under three trading names and nobody at Acme ever could.”
PRPriya RamanFinancial Controller, Meridian Foods
5 out of 5
“The parallel month found nine rules that had been quietly wrong for two years. I resented every day of it and I would insist on it again.”
TLTobias LundCFO, Northwind Logistics
3 out of 5
“Our rollout took six months and should have taken two. Two of those months were ours — we changed our chart of accounts mid-migration, which was a stupid thing to do. The other two were theirs, and they have said so publicly, which is more than I expected.”
“What I actually bought was that three people can now run the close instead of one. The four-days-instead-of-nine is what I put in the board pack; the key-person thing is what kept me awake.”
MFMarcus FeldCFO, Kestrel Software
4 out of 5
“Their retry policy took our NetSuite integration down for forty minutes in November, along with everyone else’s. The post-mortem was published in five days and named the actual cause rather than "an upstream provider". I have been on the other side of that conversation and it usually goes differently.”
“Two auditors in a row have accepted the match evidence without a follow-up question. That is the entire review.”
HCHelen CrossFinancial Controller, Lantern Trust
All 185 reviews
The whole distribution, including the four ones
Pulled from G2 and Capterra rather than collected by us. The four one-star reviews are three about pricing and one about the November outage, and all four are readable at source.
5 star
118
64% — mostly controllers
4 star
41
22% — the commonest complaint is week six
3 star
17
9% — rollouts that overran
2 star
5
3% — all five predate the rule editor
1 star
4
2% — three about pricing, one about the Nov outage
Who these people work for
Grouped by segment, because the logo strip is the least informative
A single row of logos tells you how many. Grouping tells you whether anyone like you is on it, which is the only question a logo wall is ever really asked.
Multi-entity groups87 customers
Meridian Foods
Northwind Logistics
Harbourside Retail
Kestrel Software
Non-profits and trusts23 customers
Lantern Trust
Bridgewater Foundation
Orrell Charity
Accounting practices31 practices
Vos & Partners
Brady Fractional
Nowak Advisory
…which is why the migration queues behind the reporting job rather than failing outright. The lock is held for as long as the report runs, and on a large table that can be several minutes.
The safe version is to set a lock timeout and accept that the migration may need a second pass, rather than letting it wait indefinitely and block every write behind it.
Segmented by who is talking rather than sorted by score, because a wall of forty quotes is uniformly impressive and uniformly irrelevant — with the full rating spread underneath, ones included.
Everything the studio currently has, including what is sold out and what is made to order. Past about ninety pieces the curation is gone whether we admit it or not, so this is a catalogue with filters rather than a sequence with a story.
What a detail page holds, using the piece at the top of the grid. The third point is the one people email about six months later.
Twelve were made and eleven were keptThe twelfth cracked in the second firing of the patina, which is a roughly one-in-ten outcome on this shape and the reason the run is small rather than the reason it is expensive.
The brass is reclaimed, and it showsSourced from decommissioned marine fittings, so the colour varies between pieces more than a mill-stock sconce would. If you want two that match, say so and we will pick from the same batch.
It will go dark, and that is not a faultUnlacquered brass patinates to a deep brown over about eighteen months. We do not lacquer it because lacquer eventually fails in patches, which looks considerably worse than an even patina.
Six weeks, not six daysEach one is spun, not cast, and the patina takes a fortnight on its own. The lead time is on every product page rather than discovered at checkout.
…which is why the migration queues behind the reporting job rather than failing outright. The lock is held for as long as the report runs, and on a large table that can be several minutes.
The safe version is to set a lock timeout and accept that the migration may need a second pass, rather than letting it wait indefinitely and block every write behind it.
The whole catalogue at once, filterable, with the total stated up front — the opposite trade to the switcher, and it honestly costs ninety images on load rather than one.
A booking flow rebuilt around a step we were not allowed to change
Twelve weeks, four people, and a payment provider that could not be touched during peak season. Completed bookings up 22% on flat traffic — and a seat-selection interaction we spent three weeks on that nobody uses.
Three points, and the third is the one that should tell you most about how we work.
The constraint: we could not touch the payment providerMigrating it would have put the client through a PCI re-certification in the same quarter as their peak season. So the redesign had to work around a checkout step we were not allowed to change, and roughly a third of the design work went into making that step feel like it belonged.
What actually movedCompleted bookings up 22% year on year, on flat traffic. The larger number is that support tickets about the booking flow fell by two-thirds, which is what the client noticed first.
What we would do differentlyWe spent three weeks on a seat-selection interaction that testing later showed nobody used. It shipped anyway because removing it was politically awkward by then, and it is still there.
Three more
Four projects in total rather than eleven. A portfolio that scrolls past the fourth is optimising for a reader who left at the second.
Lantern Trust · 2025 · Identity and site
A charity that needed to look smaller, not bigger
Lantern had grown to forty staff and their brand had grown with it — into something that read like a government department. Donations from individuals had been falling for three years while institutional grants rose, and the board had attributed it to the market. The work was mostly subtraction: a warmer palette, photography of four named people instead of nine hundred beneficiaries, and a donation flow that stopped asking for a title.
The constraint: no rebrand budget, so the wordmark stayed exactly as it was
Individual donations up 31% in the first year
What we got wrong: the first photography round was too casual and had to be reshot
Kestrel Software · 2025 · Product design
Making an admin panel that three people use feel worth building
An internal tool with a total user base of three, which is the kind of project that normally gets a template and a shrug. It was worth doing properly because those three people spent six hours a day in it, and the existing version was costing roughly ninety minutes of that to navigation alone. We rebuilt around keyboard-first navigation and a single command palette.
The constraint: no new backend endpoints, at all, for six months
Measured task time down 40% across the four commonest jobs
What we got wrong: we shipped without a mouse-only path and had to add one
Harbourside Retail · 2024 · Design system
The system that replaced four systems and nearly became a fifth
Four teams, four component libraries, and a genuine question about whether consolidating them was worth a quarter of everyone’s time. We argued it was not, initially, and were overruled. Six months later the honest assessment is that it was worth it for three of the four teams and a waste for the fourth, whose product is different enough that they now maintain a documented fork.
The constraint: no team could stop shipping during the migration
3 of 4 teams migrated fully; the fourth runs a documented fork
What we got wrong: we should have scoped the fourth team out on day one
11 yrs
Studio age
Same two founders
4
People
Deliberately, and we turn work away
6–14 wks
Typical engagement
Shorter than that is usually a bad fit
2 of 3
Clients who come back
The number we watch
Start a brief
Two sentences is enough to begin. We reply within two days either with questions or with the name of a studio we think fits better — we turn down roughly half of what comes in, usually on timing rather than on fit.
One project per screen, four in total, each naming the constraint it worked around — nobody reads four case studies, and the constraint is the only sentence a competitor cannot copy.