Staff Machine Learning Engineer
AppFolio · Santa Barbara, CA · 1 mo ago
Information Technology$200k–$275k/yrFull-time
We need to output HTML fragment with sections for headings: About the role, Responsibilities, Requirements, Qualifications, Skills, Benefits, Pay, Schedule. Only include sections that have real specific content. We must not repeat job title. Must not include Job ID etc. Must preserve all substantive info. Remove boilerplate.
We need to parse the description.
The posting includes:
- Intro: "Hi, We're AppFolio ..." description of company, Realm-X, etc. This is about the role? Probably "About the role" section.
- "Who We Are Looking For": description of role: Staff Machine Learning Engineer to help move forward the ML platform... This could be responsibilities.
- "Your Impact": bullet list of responsibilities: ML Platform, Drive AI Cost Discipline, Multi-Provider Reliability, Training & Fine-Tuning Stack, Productionize Research, AI Safety & Guardrails.
- "Qualifications": list of attributes (Systems thinker, Production builder, Ambiguity, Owner-operator, Pace, Collaboration, Sustainability, Reliability mindset). These are more like competencies/qualifications.
- "Must Have": list of required qualifications: ML infra at scale, Inference platforms, Provider breadth, Training capability, Cloud-native engineering, RAG & agents, Cost optimization, AI safety & authorization.
- "Nice to Have": list of nice-to-have.
- "Location": mention location info but not specific; says "Find out more about our locations by visiting our site." No specific location given, so we should not create a Schedule or Benefits unless present. There's a "Compensation & Benefits" section: includes pay range $200,000 - $275,000 base pay. Also mentions benefits: "Regular full-time employees are eligible for benefits - see here." So we have Pay (compensation range) and Benefits (mention of benefits). Should we include Benefits section? The posting mentions benefits generically but not specifics. The rule: include a section ONLY when the posting has real, specific content for it — never emit a heading followed by filler/placeholder text (e.g. "commensurate with experience", "not specified", "N/A", "varies", "TBD") and never create Pay/Schedule/Benefits sections unless the posting actually states them. For Benefits, the posting says "Regular full-time employees are eligible for benefits - see here." That's not specific benefits; it's a placeholder. Might be considered not specific enough. However, they do mention benefits exist. The rule says never create Benefits sections unless the posting actually states them. It does state that benefits exist, but not details. Is that considered "real, specific content"? Likely not; it's vague. Safer to omit Benefits section. Pay: they give a range $200,000 - $275,000 base pay. That's specific. So include Pay section.
Schedule: not mentioned. So omit.
Now we need sections: About the role, Responsibilities, Requirements, Qualifications, Skills, Benefits, Pay, Schedule. We'll include About the role (company description), Responsibilities (Your Impact bullet list), Requirements (maybe combine Must Have and Nice to Have? Or separate? The instruction: Use headings for section headings e.g. About the role, Responsibilities, Requirements, Qualifications, Skills, Benefits, Pay, Schedule. So we need to map content to these headings. We have:
- About the role: company overview, description of Realm-X, role context.
- Responsibilities: the "Your Impact" bullet list.
- Requirements: maybe the "Must Have" list.
- Qualifications: the list of attributes (Systems thinker, etc.) could go under Qualifications.
- Skills: maybe the "Nice to Have" list? Or we could put Nice to Have under Skills. But we need to decide. The posting has "Nice to Have" which could be considered Skills. We'll put under Skills.
- Pay: compensation range.
- Benefits: we might omit.
- Schedule: omit.
We must not include empty sections.
Thus output HTML with sections:
About the role
...
etc. For lists use- .
We need to preserve all substantive information; do not invent or summarize away detail. So we need to include all points from each bullet.
Let's extract details.
About the role: The initial paragraphs:
"Hi, We're AppFolio We're innovators, changemakers, and collaborators. We're more than just a software company — we're building the AI-native platform where the real estate industry comes to do business. We're transforming Property Management; how property managers operate, how residents live, and how intelligence flows across an entire industry. Realm-X is AppFolio's AI-native platform powering this transformation. It enables a new generation of intelligent capabilities across our products, including Realm-X Assistant (copilot), Flows (AI Agentic workflows) and Performers (autonomous AI Agents). Realm-X serves as both a foundation for internal teams to build and scale AI-powered products, and a core layer delivering intelligent, high-impact experiences directly to our customers. At its core, Realm-X is built on a structured domain ontology and a set of shared business primitives—such as transactions, actions, reports, metrics, and skills—that enable AI systems to deeply understand and operate across the full context of property management workflows. This foundation allows us to build context-aware, action-oriented AI systems that go beyond simple assistance to power real automation and decision-making."
That's the About the role content.
Responsibilities (Your Impact):
- ML Platform: Design and operate AppFolio's ML infrastructure on AWS — ECS, SageMaker, GPU fleets, model serving, autoscaling, and cost controls.
- Drive AI Cost Discipline: Optimize cost across all AI applications — provider routing, caching, batch vs. real-time, model size selection, and inference economics.
- Multi-Provider Reliability: Maintain reliable, multi-provider LLM access across Google, OpenAI, and Anthropic with sensible fallbacks and abstractions.
- Training & Fine-Tuning Stack: Build the training and fine-tuning stack for Small Language Models, including data pipelines, GPU orchestration, and evaluation.
- Productionize Research: Partner with Voice & Agents and Research ML engineers to harden their prototypes into production systems with SLOs, on-call rotations, and observability.
- AI Safety & Guardrails: Operate AppFolio's AI safety and authorization layer — guardrails on AWS, scoped tool permissions, and human-in-the-loop gates for autonomous agent actions.
We need to keep each as list items.
Requirements (Must Have):
- ML infra at scale: Has built and operated production ML infrastructure on AWS — ECS, SageMaker, GPUs, autoscaling, and cost controls.
- Inference platforms: Production experience with model serving for both LLMs and custom models; understands quantization, batching, and routing.
- Provider breadth: Direct experience integrating with Google (Vertex / Gemini), OpenAI, and Anthropic APIs in production.
- Training capability: Has trained or fine-tuned language models end-to-end; comfortable with deep learning, evaluation, and inference.
- Cloud-native engineering: Strong Python, Docker, dependency management, and CI/CD for AI workloads.
- RAG & agents: Working knowledge of LangChain / LangGraph and modern RAG patterns over structured and unstructured data.
- Cost optimization: Demonstrated experience reducing unit cost of AI workloads without regressing quality or latency.
- AI safety & authorization: Hands-on experience operating AI guardrails, scoped tool permissions, and authorization layers for production AI systems.
Qualifications (the attributes):
- Systems thinker: You think in terms of platforms and long-term leverage, not just features.
- Production builder: You've built and scaled ML infrastructure in production with meaningful business impact.
- Ambiguity: You operate effectively in high ambiguity, turning unclear infra problems into clear direction.
- Owner-operator: You take ownership with a founder/owner-operator mindset, act with urgency, and focus on outcomes.
- Pace: You have a strong desire to move fast and deliver impact, while maintaining sound engineering judgment.
- Collaboration: You are humble, collaborative, and low-ego, and you elevate those around you.
- Sustainability: You value work-life balance as a foundation for sustained high performance.
- Reliability mindset: You treat ML infra like any other production system — SLOs, on-call, observability, postmortems.
Skills (Nice to Have):
- Experience training Small Language Models for production use.
- GPU performance tuning (vLLM, TensorRT, Triton, or similar).
- Prior Staff-level role at a company with a significant AI infra footprint.
- Experience with ontology-driven systems or knowledge graphs supporting AI applications.
- Contributions to open-source ML infrastructure or LLM tooling.
Pay: $200,000 - $275,000 base pay. Also note that compensation is just one aspect of a comprehensive Total Rewards package. The compensation range listed here does not include additional benefits or any discretionary bonuses you may be eligible for based on your role and/or employment type. Regular full-time employees are eligible for benefits - see here.
We should include the pay range and maybe note that it's base pay. The instruction: preserve ALL substantive information; do not invent or summarize away detail. So we should include the full compensation description.
Thus Pay section:
The compensation that we reasonably expect to pay for this role is: $200,000 - $275,000 base pay. The actual compensation for this role will be determined by a variety of factors, including but not limited to the candidate’s skills, education, experience, and internal equity. Please note that compensation is just one aspect of a comprehensive Total Rewards package. The compensation range listed here does not include additional benefits or any discretionary bonuses you may be eligible for based on your role and/or employment type. Regular full-time employees are eligible for benefits - see here.
We should not include Benefits section because it's not specific. Now produce HTML fragment. We need to ensure we don't include any markdown fences. Just raw HTML. Let's craft. We'll start withAbout the role
...
ThenResponsibilities
- ...
Requirements
- ...
Qualifications
- ...
Skills
- ...
Pay
...
Make sure to preserve line breaks? Not needed. Let's write the content exactly as in posting, preserving punctuation. About the role paragraph: We'll copy the text exactly as given, but ensure we don't include extra spaces. "Hi, We're AppFolio We're innovators, changemakers, and collaborators. We're more than just a software company — we're building the AI-native platform where the real estate industry comes to do business. We're transforming Property Management; how property managers operate, how residents live, and how intelligence flows across an entire industry. Realm-X is AppFolio's AI-native platform powering this transformation. It enables a new generation of intelligent capabilities across our products, including Realm-X Assistant (copilot), Flows (AI Agentic workflows) and Performers (autonomous AI Agents). Realm-X serves as both a foundation for internal teams to build and scale AI-powered products, and a core layer delivering intelligent, high-impact experiences directly to our customers. At its core, Realm-X is built on a structured domain ontology and a set of shared business primitives—such as transactions, actions, reports, metrics, and skills—that enable AI systems to deeply understand and operate across the full context of property management workflows. This foundation allows us to build context-aware, action-oriented AI systems that go beyond simple assistance to power real automation and decision-making." Note there is a missing space after "Hi, We're AppFolio We're". It's as in source. We'll keep. Now Responsibilities list items: each bullet. We'll copy exactly: - ML Platform: Design and operate AppFolio's ML infrastructure