Careers · 4 open roles · remote, US

Come build the agency that runs on software it wrote.

We're a marketing agency that wrote its own ads platform and its own CMS, and runs both with AI agents that a person signs for. It's a small team, early, with the room that implies.

Remote (US)
Early team
Full-time
How we work · Before the roles

A startup, said out loud.

Small team, real clients, real money moving through accounts we're accountable for. That's the appeal and it's also the warning. Four things we actually select for:

01

Teamwork

Three services, one team, one record. Nobody here gets to optimise their own number at another person's expense — the whole point of the company is that the handoffs do not leak.

02

Initiative

Nobody will hand you a ticket queue. You will find the problem, write up what you would do, and go. Asking permission for everything is slower than we can afford.

03

Discipline

Agents propose, a named person approves, the software enforces the limits. That only works if the person signing is genuinely careful. Accuracy, follow-through, and saying no to a plausible-looking bad idea.

04

Room to grow

Early team, flat structure, no layer to wait behind. The people who join now define how their function works and then lead it. Compensation is expected to move with that, and we would rather talk about it honestly than post a band we would outgrow.

01 · Product engineering · Remote, US

Full-stack engineer

Build the two platforms the whole agency runs on.

We built our own ads platform and our own CMS, and every client engagement runs through them. You would work across both: the agent layer that drafts the work, the approval gates that stop anything shipping on its own, and the ad-platform and publishing integrations underneath.

  • Rails 8.1
  • React 19
  • Inertia
  • SQLite
  • Solid Queue
  • Kamal
  • LLM agents

What you'd own

  • Features across Lumin Ads and Lumin CMS, end to end — schema, jobs, API, UI
  • The agent layer: tool definitions, prompt templates, evals, budgets and run lifecycle
  • The approval gates and guardrails — the code that makes it impossible to overspend
  • Integrations with Google Ads, Meta, Microsoft Advertising, ChatGPT Ads and Search Console
  • Making the thing fast and keeping it boring to operate

What you'd work with

Ruby 4 and Rails 8.1
Both products. Conventional Rails, no microservices, no clever architecture for its own sake.
Inertia.js and React 19
Server-driven routing, React views. The CMS is TypeScript with the React compiler on; the ads app is still JavaScript.
Tailwind 4 with design tokens
CSS-first config, OKLCH token layer, shadcn primitives aliased onto our own tokens. Per-tenant branding flows through CSS custom properties.
SQLite, one database per tenant
activerecord-tenanted. Each client's data is a separate file, not a WHERE clause. No Postgres, and we are not looking to add it.
Solid Queue, Cache and Cable
All async work, caching and websockets on the database. No Redis and no Sidekiq anywhere.
RubyLLM, plus a Claude Code harness
Inference goes through one door — a single service class, enforced by a test that fails the build if anyone calls around it. A second executor runs Claude Code on worker boxes over MCP.
Kamal and Docker
Self-hosted on our own boxes, deployed with Kamal. No Heroku, no Vercel, no managed platform between you and the machine.
Minitest, RSpec and architecture tests
Including tests that assert the shape of the codebase, not just its behaviour — that every agent template is valid, that inference has one door.

What we need

  • Real production Rails experience — you have owned a schema, a background job system and a deploy
  • Comfortable in React, or clearly able to get there fast
  • You write tests because you want the thing to keep working, not because someone asked
  • You can read a codebase you did not write and change it without breaking it
  • You explain a technical trade-off in plain language to someone non-technical

Helps, never required

  • You have worked with an ad platform API — Google Ads, Meta Marketing, or similar
  • You have shipped something with an LLM in the loop and learned where it fails
  • You have run your own infrastructure and have opinions about it
  • You have built multi-tenant software and know where the sharp edges are
The honest part

Both codebases are young and moving. The ads app is mid-migration from ERB to Inertia. The CMS has RSpec but no continuous integration yet, and Capybara installed with no browser specs written. None of that is hidden from you on day one — and all of it is work somebody gets to own.

Where it goes

There is no engineering layer above you to wait behind. The first engineer here shapes how we build, and grows into leading the product engineering team as it grows under them.

04 · Paid media · Remote, US

Meta Ads manager

Own paid social as part of one portfolio, not a silo with its own scoreboard.

Meta is where the demand that has not started searching yet lives. You own it for a book of clients — creative strategy, audience structure, lead quality — inside the same approvals queue and the same feedback loop as everything else we run.

  • Meta Ads
  • Paid social
  • Creative testing
  • Lead quality
  • CAPI

What you'd own

  • A book of Meta accounts and what they produce in qualified leads
  • Creative strategy and the testing cadence behind it
  • Lead ad quality — the difference between a form fill and someone who answers the phone
  • Approving or rejecting what the agents propose on your accounts
  • Working with the Google Ads manager as one portfolio, sized against each other

What you'd work with

Lumin Ads
Meta sits in the same platform, the same approvals queue and the same reporting as search. One place, one record.
Creative refresh agents
They surface fatigue and draft variants. You own the brief, the judgement and the brand.
Lead outcomes fed back
Sold and lost go back to Meta as offline conversions, so optimisation learns what a customer looks like instead of what a form fill looks like.
Client-owned accounts
Every account stays in the client's name. You work inside their asset, with access they can revoke.

What we need

  • You have run Meta lead generation for local businesses and know how bad a cheap lead can be
  • You have a real point of view on creative — what to test, and how to tell what won
  • You are comfortable with audience structure, exclusions and the current state of tracking
  • You can write a brief someone else could execute
  • You care what happened after the lead came in

Helps, never required

  • You can produce or direct creative yourself
  • Local or multi-location business experience
  • You have worked with the Conversions API or offline event uploads
  • Any experience running paid social alongside search rather than separately
The honest part

Paid social in a lead-gen business is judged on lead quality, and lead quality data is always messier than the dashboard suggests. We would rather argue about the messy number than celebrate the clean one.

Where it goes

Grows into owning paid social across the book, and into the paid media leadership the practice will need as it scales.

Hiring process · four steps, no surprises

We'll give you an answer either way.

  1. 01

    You apply

    The form below, or an email. Tell us what you have built or run. A link beats a résumé; a real example beats both.

  2. 02

    A conversation

    45 minutes with a person who does the work, not a recruiter. What you would own, what we are actually like, and your questions.

  3. 03

    Something real

    A paid exercise or a working session on an actual problem — an account, a codebase, a market. No take-home that takes your weekend.

  4. 04

    Decision

    An answer either way, with a reason. Compensation is discussed openly at this point, against what you would own.

On pay: we'd rather talk about it openly against what you'd actually own than post a band we'd outgrow in a year. Bring your number to the first call and we'll be straight with you.

Apply · Start here

Tell us about one thing you built.

Not your whole career — one specific thing you owned and what happened to it. That tells us more than a résumé does, and it's what we'll want to talk about anyway.

  • A person reads every application
  • Links beat attachments — GitHub, a site you run, an account you turned around
  • No role that fits? Say so in the message and pick 'Something else'

Prefer email with a CV attached?marketing@golumin.io

Or email marketing@golumin.io with a CV attached. Privacy