{"id":3068275,"url":"https://alion.io/job/ruby-labs-senior-ai-engineer","title":"Senior AI Engineer","company":{"id":6377,"name":"Ruby Labs","domain":"rubylabs.com","url":"https://alion.io/company/rubylabs","size_band":null,"is_staffing_agency":false,"employer_type":"direct","is_intermediary":false,"listed_via":null,"ats_vendor":"Ashby","truth_index":{"grade":"B","score":81,"open_postings":6,"ghost_share":0,"stale_share":0.667,"repost_share":0.167,"time_to_fill_p50_days":30,"computed_at":"2026-10-23T05:54:15Z"}},"role":"AI/ML","role_family":"AI/ML","seniority":"senior","employment_type":"full_time","work_mode":"remote","remote_scope":"stated_countries","remote_scope_basis":"board_field","remote_working_hours":{"label":"CET","utc_offset_min":1,"utc_offset_max":1},"hiring_geo_confidence":"inferred","locations":[],"countries":[],"hiring_countries":["BA","RS","TR","UA","GE","MK"],"hiring_countries_total":6,"salary":null,"salary_estimate":{"min_usd":31000,"max_usd":81000,"period":"year","method":"global_role_cell_scaled_by_country","sample_n":2216},"experience_years_min":5,"visa_sponsorship":false,"relocation_package":false,"has_equity":false,"technologies":[{"name":"Cloudflare","optional":false},{"name":"Function Calling","optional":false},{"name":"LangChain","optional":false},{"name":"Langfuse","optional":false},{"name":"LlamaIndex","optional":false},{"name":"LLM","optional":false},{"name":"Next.js","optional":false},{"name":"Node JS","optional":false},{"name":"OpenRouter","optional":false},{"name":"Playwright","optional":false},{"name":"PostgreSQL","optional":false},{"name":"Ruby","optional":false},{"name":"Structured Outputs","optional":false},{"name":"Supabase","optional":false},{"name":"TypeScript","optional":false},{"name":"Vercel","optional":false},{"name":"Zod","optional":false},{"name":"JavaScript","optional":true},{"name":"React.js","optional":true}],"status":"live","first_seen_at":"2026-10-22T06:56:52Z","employer_posted_date":"2026-10-22","last_verified_at":"2026-10-23T18:31:54Z","board_verified":true,"closed_at":null,"days_open":1,"trust":{"level":"ok","repost_count":null,"flags":[],"days_open":1},"description":"About us\nRuby Labs is a leading tech company that creates and operates innovative consumer products. We offer a diverse range of opportunities across the health, education, and entertainment industries. Our innovative teams are driving the future of consumer-led products, and we're always looking for passionate individuals to join us. Learn more about our story at: https://rubylabs.com/about-us/\nAbout the role\nWe are looking for a Senior AI Engineer to own and scale the AI layer of one of our core D2C subscription products. You will be fully responsible for production LLM features and the browser automation built around them end to end - prompt systems, structured outputs, evaluation, observability, and model selection - from first experiment to live release, with quality, reliability, and cost as your accountability.\nThis is a high-impact role suited for someone who decides with data, not intuition. Unmeasured prompt changes, untraced failures, and model swaps without benchmarks are not acceptable. You work in a modern TypeScript stack - Next.js, Cloudflare Workers and Containers with Hono, Hatchet task queues, Drizzle on Supabase Postgres, Vercel Blob. Browser automation on Browserbase and Playwright is roughly half of the job.\nKey Responsibilities\nPrompt Systems & Structured Outputs\nDesign dynamic prompt templates with conditional logic and context injection that maximise generation quality\n\nEnforce predictable outputs with JSON mode, function calling, Zod/JSON schemas, validators, and repair loops\n\nOwn complex LLM workflows (LangChain, LlamaIndex, or custom) that integrate cleanly into application logic\n\nBrowser Automation\nBuild and maintain browser automation on Browserbase Functions and Playwright that traverses web flows reliably\n\nClassify screens with a model inside each traversal, and decide what the model handles versus deterministic code\n\nShip automations as frozen, published workers - versioned, reproducible, and safe to roll back\n\nOrchestrate runs through Hatchet with retries, timeouts, and failure traces that explain every broken run\n\nEvaluation & Experimentation\nBuild evaluation pipelines - test datasets, LLM-as-a-judge, RAGAS-style metrics - and score responses and screen classifications in Langfuse\n\nTrace complex LLM chains to find bottlenecks in cost, latency, and context-window usage\n\nRun A/B experiments across models and prompts through an AI gateway (OpenRouter, Cloudflare AI Gateway); release only on quantitative benchmarks\n\nRe-evaluate models as new architectures emerge; fine-tune when domain requirements demand it\n\nProduction Ownership\nTake AI features from experiment to live production on Cloudflare Workers and Containers, and stay accountable after release\n\nManage rate limits, fallbacks, and model cost so features stay reliable at scale\n\nResolve production incidents in owned AI and automation systems with documented root-cause analysis\n\nQualifications\nMust-Have Experience\n5+ years of software engineering with Node.js, TypeScript, Next.js, and Postgres, including edge or serverless runtimes such as Cloudflare Workers\n\nProduction browser automation with Playwright (Browserbase or similar): resilient selectors, retries, failure handling at scale\n\nProduction experience with dynamic prompting - content that depends on input variables and injected context\n\nStructured outputs in production: JSON mode, function calling, Zod/JSON schemas\n\nExperience with unified LLM APIs or AI gateways (OpenRouter, Cloudflare AI Gateway): rate limits, fallbacks, cost-effective model selection\n\nLLM observability with Langfuse or similar: tracing, test datasets, scoring integration\n\nEvaluation methodology: RAGAS or custom LLM-as-a-judge systems\n\nLeadership Attributes\nDecides on benchmarks and trace data, not intuition\n\nAnalytical - converts generation logs into metrics a business can act on\n\nIterative - builds feedback loops and improves continuously\n\nOwns the outcome from experiment to production, and after\n\nVerifies before trusting - treats LLM output as unproven until validated\n\nLocation\nRuby Labs operates within the CET (Central European Time) zone. Applicants from any country are welcome to apply for the position as long as they are located within approximately ± 4 hours of CET. This ensures optimal collaboration and communication during working hours.\nBenefits\nDiscover the perks of being part of our vibrant team! We offer:\nRemote Work Environment: Embrace the freedom to work from anywhere, anytime, promoting a healthy work-life balance.\n\nUnlimited PTO: Enjoy unlimited paid time off to recharge and prioritize your well-being, without counting days.\n\nPaid National Holidays: Celebrate and relax on national holidays with paid time off to unwind and recharge.\n\nCompany-provided MacBook: Experience seamless productivity with top-notch Apple MacBooks provided to all employees who need them.\n\nFlexible Independent Contractor Agreement: Unlock the benefits of flexibility, autonomy, and entrepreneurial opportunities. Benefit from tax advantages, networking opportunities, reduced employment obligations, and the freedom to work from anywhere. Read more about it here: https://docs.google.com/document/d/1nkrN76JlZkbKj9WSOhlT1_mni_CZeDkHdwfIjPXVwvk/preview?tab=t.0#heading=h.ndsdl4wapxtt\n\nBe part of our fast-growing team and seize this excellent opportunity for personal and professional growth!\nInterview Process\nAfter submitting your application, we conduct a thorough review which typically takes 3 to 5 days, but may occasionally take longer due to the volume of applications received. If we see a potential fit, we proceed with the following steps:\nRecruiter Screening (40 minutes)\n\nTechnical Interview (60 minutes)\n\nFinal Interview (30 minutes)\n\nLife at Ruby Labs\nAt Ruby Labs, we move fast, aim high, and expect the same from our team. We’re not here to play small-we’re here to build, grow, and win. That means we look for people who are ambitious, driven, and ready to give their best every single day.\nThis is a place for individuals who thrive under pressure, embrace challenges, and see opportunity in every obstacle. If you’re hungry to achieve, motivated by impact, and want to grow at the speed of your own ambition, Ruby Labs offers the platform to make it happen.\nHere, effort is matched with reward. We recognize those who go all in and deliver results, and we create space for people who want more-more responsibility, more growth, and more success.","description_format":"text","description_chars":6454,"description_truncated":false,"requirements":{"experience_years_min":5,"management_years_min":null,"team_size_min":null,"manages_managers":false,"education":null,"security_clearance":false,"languages":[]},"benefits":["Apple Macbook","Unlimited PTO"],"hiring_locations":[{"name":"Bosnia and Herzegovina","iso":"BA","kind":"country"},{"name":"Serbia","iso":"RS","kind":"country"},{"name":"Turkey","iso":"TR","kind":"country"},{"name":"Ukraine","iso":"UA","kind":"country"},{"name":"Georgia","iso":"GE","kind":"country"},{"name":"North Macedonia","iso":"MK","kind":"country"}],"hiring_excludes":[],"relocation_offered":false,"industries":["Consumer Goods","Data & Analytics","Consumer Health Apps","Consumer & Utility Software"],"lifecycle":[{"event":"open","at":"2026-10-22T08:39:10Z"}],"visa":[],"liveness":{"score":90,"band":"hot","label":"Hiring now","p_open":1,"p_active":0.903,"p_room":1,"age_days":0,"expected_fill_days":30,"reasons":["conf:1","velocity","win:early"],"computed_at":"2026-10-23T05:54:15Z"},"pay":null,"html_url":"https://alion.io/job/ruby-labs-senior-ai-engineer","json_url":"https://alion.io/job/ruby-labs-senior-ai-engineer.json","meta":{"generated_at":"2026-10-23T21:47:49Z","cache_seconds":300,"methodology":"https://alion.io/methodology","terms":"https://alion.io/terms","contact":"https://alion.io/contact","api":"https://alion.io/developers","about":"Alion is a live layer of people, companies and AI agents: who they are, whether they are real and active right now, what they do and how to work with them, readable by people and by agents and paid per call.","catalog":"https://alion.io/catalog.json","usage":{"tier":"crawler_verified","counted_by":"address","units_charged":1,"used_today":4112,"day_limit":null,"remaining_today":null,"minute_limit":300,"resets_at":"2026-10-24T00:00:00Z"}},"offers":[{"id":"company.slices","title":"One company in depth, by slice","status":"live","price":{"credits":0.02,"usd":0.002,"plus_per_slice":{"credits":0.05,"usd":0.005}},"unit":"per company, plus each slice with data","note":"the employer in depth","call":{"mcp_tool":"get_company","arguments":{"id":6377},"rest":"https://alion.io/mcp/rest/get_company?id=6377"},"human":"https://alion.io/catalog?offer=company.slices&for=job%2Fruby-labs-senior-ai-engineer"},{"id":"market.stats","title":"A market slice: pay, demand and time to fill","status":"live","price":{"credits":1,"usd":0.1},"unit":"per slice","note":"pay, demand and time to fill for this role and place","call":{"mcp_tool":"market_stats"},"human":"https://alion.io/catalog?offer=market.stats&for=job%2Fruby-labs-senior-ai-engineer"},{"id":"job.search","title":"Open jobs by role, technology, place, pay and visa","status":"live","price":{"credits":0.02,"usd":0.002},"unit":"per posting in a list","note":"similar open postings","call":{"mcp_tool":"search_jobs"},"human":"https://alion.io/catalog?offer=job.search&for=job%2Fruby-labs-senior-ai-engineer"},{"id":"company.verify","title":"Is this company real and active right now","status":"pilot","price":null,"unit":"per company","request":{"url":"https://alion.io/catalog/request","method":"POST","body":"{\"offer\": \"company.verify\", \"for\": \"job/ruby-labs-senior-ai-engineer\", \"note\": \"what you need it for\"}"},"human":"https://alion.io/catalog?offer=company.verify&for=job%2Fruby-labs-senior-ai-engineer"}]}