Senior / Staff AI-First Fullstack Engineer
Summary
Build and ship full-stack features in a Rails 8 + Vue 3 app while using AI agents daily to write, review, and refactor code, and extend internal AI tooling.
About TFX
We help Americans living abroad file their US taxes — a niche we've been refining for over a decade. Today we serve thousands of expats in 190+ countries and we're scaling fast: double-digit % growth in 2025 and 2026, and a goal to double the business in the next 3–4 years.Our software is a primary driver of an excellent client experience, and enables growth and efficiency in marketing, sales, and operations. We invest heavily in modern tooling, including AI: the team uses Claude Code, and custom agents as part of the daily workflow, not as a curiosity.
The Role
We're hiring a Senior or Staff fullstack engineer who treats AI as a daily productivity multiplier. You'll ship product features on a mature Rails 8 + Vue 3 codebase, raise the bar of an experienced dev team, and help us extend our internal AI agent infrastructure.This is an Individual Contributor role — no formal team management, but high technical influence.
What you'll do
- Ship product features end-to-end on Rails + Vue — from data model to UI — at a weekly release cadence.
- Use AI as your primary way of writing code: decompose tasks so an agent closes them in one or two passes, review AI-generated diffs critically, parallelize across sessions deliberately.
- Raise the team's bar through code reviews, agent design patterns, and internal documentation — by example, not by mandate.
- Modernize legacy areas of a large codebase — refactor outdated patterns, retire dead code, contribute to ongoing Rails version upgrades.
- Extend our internal AI tooling: contribute to the team's library of agents, MCP integrations, and custom workflows.
You're a strong fit if you have
- 5+ years of commercial fullstack experience (Senior) or 8+ years (Staff).
- 2+ years of production Ruby on Rails as a primary stack — not side experiments.
- Confidence in Vue 3 (Composition API, single-file components) — you can be productive without a long ramp-up.
- AI integrated into your daily workflow. You use Claude Code, Cursor, Aider, or Copilot as your primary way of writing code, not as an occasional helper.
- Hands-on experience building LLM agents — tool use / function calling, multi-step workflows, output validation, guardrails. Not as a research project — as something you've shipped.
- Experience code-reviewing AI-generated pull requests in a team setting — you can tell a good AI-authored diff from a bad one, and give constructive feedback on a colleague's AI output.
- A shipping mindset. You can name the last few things you put into production and the impact they had.
- High agency and parallel-pathing instincts. You keep multiple threads moving, surface blockers early, and don't wait for a detailed spec to start.
- Right to work in your country of residence. We don't sponsor visas.
Nice to have
- TypeScript experience in a Vue 3 codebase.
- Domain experience in fintech, accounting, or tax.
- MCP servers, custom Claude/Cursor skills, or open-source agentic projects — anything that demonstrates you've gone past "user" into "builder" with AI.
- Experience modernizing legacy Rails codebases — major version upgrades, large refactors without breaking production.
- Observability experience with Sentry, AppSignal, or similar.
What we offer
- Fully remote work, any timezone with reasonable overlap with EU and US East.
- Competitive USD compensation (discussed on the recruiter screen) — band depends on level.
- A mature codebase with real domain depth.
- A team that takes AI tooling seriously — not as a gimmick, not as a fad.
- A growing, profitable company with a clear runway and a real product market fit.
Hiring process
- Recruiter screen (30 min)
- Technical conversation with the CTO (90–120 min) — your background, AI workflow, recent shipped work.
- Live AI coding session (60–90 min) — a realistic task on a sample repo, using your AI tools of choice.
We appreciate your interest and advise that only those selected for an interview will be contacted