→ openings --list
no positions currently published
speculative_applications: not_collected
✓ but the bar below is real, and the form is open
// careers
A small studio with a real bar.
There are no openings listed here today, and we would rather say that plainly than run a permanent hiring pipeline. The work, the bar and how to apply are below.
Open positions: none right now
We do not post roles we cannot justify, and we do not run a speculative pipeline to have options later.
Nothing listed means nothing listed
There is no open role at the moment. Not a hidden one, and not a two-step process where the real vacancy appears after an interview. If this list is empty, the studio is not currently hiring.
Small studios hire in bursts
Capacity here changes with client work, so the studio grows and shrinks with the pipeline. When there is a genuine fit we describe the actual work in detail, because a vague role description produces the wrong applicants.
Send it anyway
If you read this and think you would be good here, apply without a vacancy. Tell us what you have built and what you want to build next. We keep a handful of genuinely interesting conversations and no database of résumés.
No automated screening
A person reads what you send. There is no keyword filter deciding whether you are worth a reply, and no automated rejection. If it is not a fit, you will get told, usually with a reason.
The kind of work
What actually lands on the desk here, described as categories rather than as a wish list.
Client product work
SaaS products, internal tools, e-commerce and marketing sites, APIs and integrations, and the occasional AI feature inside a real product rather than a demo about one.
Whole-project ownership
Small teams taking a project from a fuzzy brief to something launched and maintained. You will see the whole thing, not one ticket in the middle of it.
Long-lived systems
Work that will still be running, and still be readable, in several years. Boring reliability beats exciting fragility. We are not in the business of prototypes that get thrown away.
Iteration and growth
After launch, the unglamorous half: performance, conversion, technical debt paid down, and the slow compounding of search and content work.
The studio's own tooling
This website, internal delivery tools, and the small scripts that make the work possible. Small surface, high leverage.
The bar
Senior is the baseline, not the aspiration. If a task in this list feels obvious to you, you will probably find the work here repetitive.
You can own a piece of a system
Not waiting for instruction on every decision. You make the call, you write it down, and you are comfortable being the person accountable for it.
You write code you would want to inherit
Readable in two years by someone who has never met you, including the parts you were not proud of at the time.
You can change your mind
You defend a decision with reasoning rather than volume, and you drop it when the evidence turns up. Stubbornness is not a virtue here.
You can tell a client something they do not want to hear
The scope will not fit the budget. The deadline is unrealistic. That idea is not ready. Saying it early is the job, not a failure of nerve.
You review other people's code properly
Not to tick a box, but because you would want the same treatment on your own pull requests.
You show evidence rather than adjectives
A repository, a system you ran, a thing you shipped and can explain. Not a list of technologies you have read about.
What the studio values
Not aspirations on a wall. These are the things that get argued about in reviews and planning, and that shape how work is judged.
Clarity over cleverness
The code, the scope and the status update should all be understandable by the next person without a briefing.
Finishing things
A shipped, maintained system is worth more than three exciting starts. We are assessed on what completes.
Truth told early
Bad news travels fast and cheap. A slipped date costs far less when it arrives in week two rather than week nine.
Fixed-fee thinking
Our model only works if the estimate was honest and the scope was respected. That shapes how we write and review code.
Documentation as delivery
Writing it down is part of building it, not a chore scheduled after the deadline has passed.
And what we do not
The half of culture that is easier to write down than the aspirational half, and considerably more useful.
Framework churn for its own sake
Rewriting something because the current version feels old is not progress. It is unpaid work for everyone including you.
Heroics as a badge
Late nights are a scheduling failure to be fixed, not a badge to be worn. We are not interested in them as a culture.
Estimates that are really wishes
An estimate we do not believe is worse than no estimate, because everyone plans around it.
Meetings instead of decisions
If a decision can be written down, it should be written down. The calendar is for genuine disagreement.
An uninspectable portfolio
Logo walls are not evidence. We would rather look at something you built than something you were on a team for.
How to apply
One route: the contact form at the bottom of this page. It is the same form clients use, and it reaches a person.
Send it through the contact form
First line should say what you are applying for. If there is no open role, say that you are applying without one and what you think you would be good at.
Include something inspectable
A repository, a live system, a shipped thing you can explain the decisions behind. A conventional CV is welcome but not required, and it will not be read more closely than the work.
Say what you want to build next
And why this studio specifically. A generic letter that would fit any company tells us nothing, and we would rather have a short, specific one than a polished generic one.
You will get a reply either way
If there is a fit, we will suggest a conversation about the actual work. If there is not, you will hear that and roughly why. There is no keep-in-touch database, and no ghosting.
→ unpaid_work: never requested
→ take_home_test: never, unless you want one and we discuss it openly
→ automated_screening: none
→ data_handling: we do not ask for private keys, production credentials or customer data at any stage
→ compensation: discussed openly and in writing before any offer, not negotiated against you
Apply, or just ask
Use the form below. Tell us what you have built, what you want to build next, and why here. A person will read it.