Single Role Detail

Open role

Senior engineer, scheduling

You would own the part of the product that cannot be down at eight in the morning. It is the most consequential code we have and the least glamorous.

Scheduling is where a practice either works or does not. When a receptionist opens the clinic list at ten to eight, it has to be right, and it has to be fast enough that she never thinks about it. That is the whole job.

You would be the third engineer on this area and the first senior one. The existing code is reasonable rather than beautiful, has good test coverage, and has been rewritten once already when multi-site turned out to be a different product rather than a bigger one.

What you would actually do

  • Own the scheduling and capacity model end to end, including its failures
  • Take support shifts like everyone else, roughly one week in six
  • Sit in on migration calls, because that is where the real requirements are
  • Say no to features in writing, with the reasoning published

What we are looking for

  • Serious experience with a system where correctness beats throughput
  • Comfort with TypeScript and Postgres, or the confidence to pick them up quickly
  • A track record of deleting more than you added at least once
  • Willingness to talk to the people using what you built

The honest part

We are eighteen people and profitable, which means no equity refresh cycle and no big-company career ladder. If you want to manage a team of eight in two years, this is the wrong job and we would rather say so now.

Salary
£92,000 – £108,000
Level
Senior, no negotiation on band
Location
Bristol or remote in UK and Ireland
Contract
Permanent, four-day week
Reports to
Priya Nandan, engineering
Closing
Rolling, we hire when we meet the right person
Apply for this role

Send whatever tells us most, a CV or otherwise. Every application gets read by an engineer and answered within a week, including the no.

About this block

Single Role DetailPRO

A job description laid out as a reading column with checked responsibility lists and a candid caveat panel, against a sticky rail carrying the published salary band, level, and location alongside the apply action.

Careers52: Single Role Detail

A job description laid out as a reading column with checked responsibility lists and a candid caveat panel, against a sticky rail carrying the published salary band, level and location alongside the apply action.

Upgrade to Pro

Pro blocks install through the shadcn CLI with your license key and ship their full source. Docs and live previews stay open to everyone, so you can read every block's details first.

Upgrade Now

Installation

Swap YOUR_EMAIL and YOUR_KEY for the email and license key on your account. Find your license key on your account page.

Radix flavor

bash
npx shadcn add "https://ui.beste.co/r/careers52?email=YOUR_EMAIL&license_key=YOUR_KEY"

Base UI flavor

bash
npx shadcn add "https://ui.beste.co/r-base/careers52?email=YOUR_EMAIL&license_key=YOUR_KEY"

This installs the block to components/beste/block/careers52.tsx plus the badge23 and button21 components it uses for the eyebrow and the apply action.

Quick start

The installed file exports careers52Demo alongside the block: the exact props behind the preview above. Spread it to get a working role page in one line.

tsx
import { Careers52, careers52Demo } from "@/components/beste/block/careers52";

export default function RolePage() {
  return <Careers52 {...careers52Demo} />;
}

Then replace the demo with your own props. Written out, a trimmed setup looks like this:

tsx
import { Careers52 } from "@/components/beste/block/careers52";

export default function RolePage() {
  return (
    <Careers52
      badge={{ label: "Open role" }}
      heading="Senior engineer, scheduling"
      standfirst="You would own the part of the product that cannot be down at eight in the morning."
      facts={[
        { label: "Salary", value: "£92,000 to £108,000" },
        { label: "Level", value: "Senior, no negotiation on band" },
        { label: "Location", value: "Bristol or remote in UK and Ireland" },
      ]}
      intro={[
        "Scheduling is where a practice either works or does not.",
        "You would be the third engineer on this area and the first senior one.",
      ]}
      sections={[
        {
          title: "What you would actually do",
          items: [
            "Own the scheduling and capacity model end to end",
            "Take support shifts like everyone else",
          ],
        },
      ]}
      honestyTitle="The honest part"
      honestyBody="We are eighteen people and profitable, which means no big-company career ladder."
      button={{ label: "Apply for this role", href: "/careers/apply" }}
      applyNote="Every application gets read by an engineer and answered within a week."
    />
  );
}

Props

PropTypeDefaultDescription
badge{ label: string }Eyebrow above the heading, rendered through Badge23
headingstringRole title
standfirststringOpening summary, capped at max-w-2xl
factsFact[][]Band, level and location in the sticky rail
introstring[][]Body paragraphs before the lists
sectionsSection[][]Titled lists of responsibilities and requirements
honestyTitlestringHeading in the caveat panel
honestyBodystringThe candid paragraph about what the job is not
button{ label: string; href: string }Apply action in the sticky rail
applyNotestringWhat happens after applying
classNamestringExtra classes for the outer section
ts
type ActionLink = {
  label: string;
  href: string;
};

type Fact = {
  label: string;
  value: string;
};

type Section = {
  title: string;
  items: string[];
};

Behavior notes

  • The salary band sits in facts, not in the body, so it is visible without scrolling and stays visible while the description scrolls. That placement is the point of the sticky rail.
  • The rail is lg:sticky lg:top-24 lg:self-start. The self-start is required, otherwise the column stretches to the full row height and sticky has nothing to travel within. Adjust top-24 to match your own fixed header.
  • Sticky is lg and above only. Below that the rail scrolls normally and lands after the description, so the apply action is the last thing on the page.
  • sections is an array rather than fixed responsibility and requirement props, so a role can have one list or four without editing the block.
  • Intro paragraphs are plain strings rendered as separate p elements, with no markdown parsing, so links or emphasis need the block edited rather than passed in.
  • The check icons are aria-hidden and the text carries the meaning, so a screen reader hears a plain list.
  • The caveat panel is a bg-muted block rather than a bordered card, which keeps it reading as an aside inside the description rather than as a competing section.
  • Facts carry border-t with no closing rule, so the rail stays open at the bottom and flows into the apply action.

More Careers blocks

View all Careers
PRO

careers8

Job Detail Page

Single job posting detail with responsibilities, requirements, nice-to-haves, and apply CTA. Full position description layout.

PRO

careers57

Open Roles With Published Bands

A short roles list where the pay band sits on the row rather than behind an application, with a written empty state for when nothing is open and a speculative line underneath.

PRO

careers46

Role Spotlight

A full featured-role posting with responsibilities, requirements and a sticky apply card.

PRO

careers35

Salary Bands Table

Transparent salary bands with level, role, visual range bars, and equity details. Pay transparency table with responsive card fallback.

PRO

careers58

Fourth Chair Roles

A careers section: a serif heading that settles in word by word, an intro, a pill action and a photograph drifting inside its frame on the left, beside ruled open roles with serif titles and small-caps type and place that lift an arrow on hover, and a note on how applications are answered.

FREE

careers56

Role Fit Finder

A hiring section that answers three questions instead of listing a job board: the answers land on one open role with its team, its location, and its published pay band, and the photograph beside it changes to the part of the studio that role sits in.