Staff AI Engineer
for section headings (e.g. About the role, Responsibilities, Requirements, Qualifications, Skills, Benefits, Pay, Schedule). So we need to decide which sections to include based on content.
- About the role: Could include the company description "About Pulley" and maybe the role overview? The posting includes "About Pulley" then "What You’ll Do". The "About the role" could be the company description plus maybe a brief role summary? But we must not invent. We can put the "About Pulley" paragraph under About the role. That's substantive.
- Responsibilities: from "What You’ll Do" bullet points.
- Requirements: from "NEED TO HAVE" list.
- Qualifications: maybe from "Who You Are" (traits) or could be considered qualifications. The instruction includes Qualifications as a possible section. We have "Who You Are" describing traits. That could go under Qualifications.
- Skills: maybe from "NICE TO HAVES" (nice-to-haves) could be considered Skills. Or we could put nice-to-haves under Skills. The instruction says we should include a section only when posting has real specific content for it. Nice-to-haves are present, so we can include Skills section for those.
- Benefits: none mentioned, so omit.
- Pay: none mentioned, omit.
- Schedule: we have location and in-person 4 days a week. That's schedule info. So include Schedule section.
We must not repeat job title. No markdown.
We need to use - for any list of duties/requirements/benefits. For prose use
.
We need to preserve all substantive information; do not invent or summarize away detail. So we need to keep the bullet points exactly as given, but we can rephrase? The instruction says preserve ALL substantive information; do NOT invent or summarize away detail. It doesn't forbid rephrasing, but better to keep the original wording. We'll copy the bullet points as they appear, maybe preserving line breaks.
We need to strip boilerplate: cookie/navigation/legal/EEO/equal-opportunity/scam-warning boilerplate, duplicated lines, and application instructions. The posting didn't have those except maybe at end? Not present.
We need to ensure we don't include headings with empty content.
Let's extract content:
About Pulley paragraph(s):
"Pulley helps the country’s top architects, builders, and retailers speed up every project in their portfolio. With AI-powered permitting intelligence and expert guidance, we eliminate costly delays and bring predictability across the full lifecycle of commercial projects. Today, permitting is the slowest, most uncertain part of building, spread across 19,000+ jurisdictions with different rules, timelines, and surprises. Pulley gives project teams the clarity and predictability they need to move from planning to opening without delays. We support rollout programs for brands like J.Crew, Solidcore, and Hibbett Sports, as well as major data center buildouts, EV charging networks, and other commercial projects. Our platform dramatically reduces approval timelines, improves forecasting accuracy, and removes thousands of hours of manual work from design and construction teams. Founded in 2021, Pulley combines deep permitting expertise with purpose-built AI from people who have created products used by millions. We’re backed by CRV, Susa Ventures, Fifth Wall, and leaders from Plaid, Segment, ServiceTitan, and Procore."
That's the About Pulley.
What You’ll Do (responsibilities) bullet list:
- Own the AI problem space, not just features—define the technical direction for how Pulley applies LLMs across multiple product surfaces, and carry it from ambiguity through architecture to shipped, iterated-on product
- Turn unstructured permitting documents, city regulations, and jurisdiction workflows into structured, reliable outputs—extraction, classification, retrieval, and agentic workflows over documents that were never designed to be machine-readable
- Set the evaluation and observability standard for the company: decide how we define ground truth, measure quality and regressions, and know when a model change is actually an improvement—and build the systems that make that the default for every team shipping LLM features
- Build with AI agents as a daily practice—directing, reviewing, and shipping agent-driven work at high velocity while owning the quality bar
- Make the technical bets that determine what Pulley can build next year, not just this quarter—which models, which architectures, what we build versus buy—and own the consequences of those bets in production
- Multiply the engineers around you: set the patterns others build LLM features within, mentor senior engineers toward larger scope, and make the whole team faster through the systems, standards, and abstractions you create
Who You Are (traits) bullet list:
- You thrive in ambiguity—you’d rather define the right problem than execute a spec, and you’re energized rather than paralyzed when the path isn’t laid out
- You’re product-minded: you care whether the thing you built actually solved the customer’s problem, and you’ll talk to users to find out
- You’re rigorous about what “working” means—you don’t trust a demo, you trust an eval, and you build the measurement before you build the feature
- You have strong opinions about quality and velocity and don’t treat them as a tradeoff—you look for the tools, abstractions, and processes that buy both
- You default to ownership at organizational scale: when something is broken or missing—a system, a process, a gap between teams—your instinct is to fix it, and you don’t need permission or a mandate to start
NEED TO HAVE (requirements) bullet list:
- 8+ years of software engineering experience, with a substantial portion building production LLM or ML systems
- Track record of owning a significant AI domain end-to-end: from “this is somebody’s problem” through architecture, delivery, and production ownership, including the unglamorous parts—data quality, eval design, cost and latency, failure handling
- Deep hands-on experience with large language models in production—prompting, retrieval-augmented generation, structured extraction, tool use and agentic workflows, and knowing when each is the wrong tool
- Experience designing evals and otherwise making LLM-powered features reliable in production
- Real experience building with AI coding agents—not just autocomplete; you’ve shipped work where agents did substantial implementation under your direction
- Ability to architect durable systems while making pragmatic tradeoffs
- Experience mentoring engineers or setting technical direction that other engineers built within
- Based in the San Francisco Bay Area and willing to work in person 4 days a week
NICE TO HAVES (nice-to-haves) bullet list:
- Experience with document understanding at scale—OCR, layout-aware parsing, or vision-language models over scanned PDFs, drawings, or forms
- Experience fine-tuning models or building data pipelines to produce training and eval sets from real-world usage
- Experience in construction tech, govtech, proptech, or another domain where the hard part is messy real-world documents and processes
- Experience with modern full-stack development—we use TypeScript, React, and Google Cloud—and an appetite for working in the application code that puts AI features in front of users
- Experience as the most senior AI engineer in a domain—being the person others escalated to when nobody knew the answer
- Startup experience at the stage where you helped build the team, not just the product
We need to decide sections:
- About the role: include About Pulley paragraph(s). Could also include a brief role overview? But we have responsibilities separate. So About the role will be the company description.
- Responsibilities: the "What You’ll Do" bullets.
- Qualifications: the "Who You Are" bullets (traits). Could also be considered "Qualifications". We'll put under Qualifications.
- Requirements: the "NEED TO HAVE" bullets.
- Skills: the "NICE TO HAVES" bullets.
- Schedule: the location and in-person 4 days a week is already in NEED TO HAVE list (the last bullet). But we might want to separate schedule. However the instruction says include a section only when posting has real specific content for it. The schedule info is present within NEED TO HAVE. We could either keep it under Requirements (as part of that bullet) or extract to Schedule section. The instruction says we should not repeat content? It didn't forbid duplication but better to avoid duplication. Since the schedule info is part of NEED TO HAVE, we could keep it there and not create a separate Schedule section. However the instruction says we should include a Schedule section only if posting actually states them. It does state schedule (based in SF Bay Area and willing to work in person 4 days a week). So we could create a Schedule section with that detail, but then we would be duplicating that bullet if we also keep it under Requirements. To avoid duplication, we could move that bullet out of Requirements and into Schedule, leaving Requirements without that bullet. But then we would be removing content from Requirements (the bullet). The instruction says preserve ALL substantive information; do NOT invent or summarize away detail. If we remove that bullet from Requirements, we are not preserving it there, but we preserve it elsewhere (Schedule). That's still preserving all info, just relocated. That's acceptable as long as we don't lose info. However the instruction about sections: "Prefer a few substantive sections over many thin ones." Having a separate Schedule section for just one bullet might be thin. But we could still include it; it's not thin if it's a real specific content. But we could also keep it under Requirements and not create Schedule section, because schedule is part of requirements. The instruction says include a section ONLY when the posting has real, specific content for it — never emit a heading followed by filler/placeholder text. It doesn't forbid having a section that contains multiple items, including schedule. So we could keep schedule inside Requirements and not create a separate Schedule section. That would avoid a thin section. The instruction also says "Prefer a few substantive sections over many thin ones." So better to not create a Schedule section unless needed. Since schedule is just one line, we could incorporate it into Requirements. However the instruction also says "Use
for section headings (e.g. About the role, Responsibilities, Requirements, Qualifications, Skills, Benefits, Pay, Schedule)." It lists Schedule as an example but not mandatory. So we can omit Schedule if not needed.
Thus we will have sections: About the role, Responsibilities, Qualifications, Requirements, Skills. No Benefits, Pay, Schedule.
Check if we need to include "About the role" heading. Yes.
Now we need to output HTML fragment only, no markdown fences.
We'll produce:
About the role
... (the About Pulley paragraph(s) as prose). Could be multiple paragraphs; we can wrap each paragraph in
. The original is multiple sentences; we can keep as one
or split. Safer to keep as one
containing the whole block.
Then
Res
. We need to preserve all substantive information; do not invent or summarize away detail. So we need to keep the bullet points exactly as given, but we can rephrase? The instruction says preserve ALL substantive information; do NOT invent or summarize away detail. It doesn't forbid rephrasing, but better to keep the original wording. We'll copy the bullet points as they appear, maybe preserving line breaks. We need to strip boilerplate: cookie/navigation/legal/EEO/equal-opportunity/scam-warning boilerplate, duplicated lines, and application instructions. The posting didn't have those except maybe at end? Not present. We need to ensure we don't include headings with empty content. Let's extract content: About Pulley paragraph(s): "Pulley helps the country’s top architects, builders, and retailers speed up every project in their portfolio. With AI-powered permitting intelligence and expert guidance, we eliminate costly delays and bring predictability across the full lifecycle of commercial projects. Today, permitting is the slowest, most uncertain part of building, spread across 19,000+ jurisdictions with different rules, timelines, and surprises. Pulley gives project teams the clarity and predictability they need to move from planning to opening without delays. We support rollout programs for brands like J.Crew, Solidcore, and Hibbett Sports, as well as major data center buildouts, EV charging networks, and other commercial projects. Our platform dramatically reduces approval timelines, improves forecasting accuracy, and removes thousands of hours of manual work from design and construction teams. Founded in 2021, Pulley combines deep permitting expertise with purpose-built AI from people who have created products used by millions. We’re backed by CRV, Susa Ventures, Fifth Wall, and leaders from Plaid, Segment, ServiceTitan, and Procore." That's the About Pulley. What You’ll Do (responsibilities) bullet list: - Own the AI problem space, not just features—define the technical direction for how Pulley applies LLMs across multiple product surfaces, and carry it from ambiguity through architecture to shipped, iterated-on product - Turn unstructured permitting documents, city regulations, and jurisdiction workflows into structured, reliable outputs—extraction, classification, retrieval, and agentic workflows over documents that were never designed to be machine-readable - Set the evaluation and observability standard for the company: decide how we define ground truth, measure quality and regressions, and know when a model change is actually an improvement—and build the systems that make that the default for every team shipping LLM features - Build with AI agents as a daily practice—directing, reviewing, and shipping agent-driven work at high velocity while owning the quality bar - Make the technical bets that determine what Pulley can build next year, not just this quarter—which models, which architectures, what we build versus buy—and own the consequences of those bets in production - Multiply the engineers around you: set the patterns others build LLM features within, mentor senior engineers toward larger scope, and make the whole team faster through the systems, standards, and abstractions you create Who You Are (traits) bullet list: - You thrive in ambiguity—you’d rather define the right problem than execute a spec, and you’re energized rather than paralyzed when the path isn’t laid out - You’re product-minded: you care whether the thing you built actually solved the customer’s problem, and you’ll talk to users to find out - You’re rigorous about what “working” means—you don’t trust a demo, you trust an eval, and you build the measurement before you build the feature - You have strong opinions about quality and velocity and don’t treat them as a tradeoff—you look for the tools, abstractions, and processes that buy both - You default to ownership at organizational scale: when something is broken or missing—a system, a process, a gap between teams—your instinct is to fix it, and you don’t need permission or a mandate to start NEED TO HAVE (requirements) bullet list: - 8+ years of software engineering experience, with a substantial portion building production LLM or ML systems - Track record of owning a significant AI domain end-to-end: from “this is somebody’s problem” through architecture, delivery, and production ownership, including the unglamorous parts—data quality, eval design, cost and latency, failure handling - Deep hands-on experience with large language models in production—prompting, retrieval-augmented generation, structured extraction, tool use and agentic workflows, and knowing when each is the wrong tool - Experience designing evals and otherwise making LLM-powered features reliable in production - Real experience building with AI coding agents—not just autocomplete; you’ve shipped work where agents did substantial implementation under your direction - Ability to architect durable systems while making pragmatic tradeoffs - Experience mentoring engineers or setting technical direction that other engineers built within - Based in the San Francisco Bay Area and willing to work in person 4 days a week NICE TO HAVES (nice-to-haves) bullet list: - Experience with document understanding at scale—OCR, layout-aware parsing, or vision-language models over scanned PDFs, drawings, or forms - Experience fine-tuning models or building data pipelines to produce training and eval sets from real-world usage - Experience in construction tech, govtech, proptech, or another domain where the hard part is messy real-world documents and processes - Experience with modern full-stack development—we use TypeScript, React, and Google Cloud—and an appetite for working in the application code that puts AI features in front of users - Experience as the most senior AI engineer in a domain—being the person others escalated to when nobody knew the answer - Startup experience at the stage where you helped build the team, not just the product We need to decide sections: - About the role: include About Pulley paragraph(s). Could also include a brief role overview? But we have responsibilities separate. So About the role will be the company description. - Responsibilities: the "What You’ll Do" bullets. - Qualifications: the "Who You Are" bullets (traits). Could also be considered "Qualifications". We'll put under Qualifications. - Requirements: the "NEED TO HAVE" bullets. - Skills: the "NICE TO HAVES" bullets. - Schedule: the location and in-person 4 days a week is already in NEED TO HAVE list (the last bullet). But we might want to separate schedule. However the instruction says include a section only when posting has real specific content for it. The schedule info is present within NEED TO HAVE. We could either keep it under Requirements (as part of that bullet) or extract to Schedule section. The instruction says we should not repeat content? It didn't forbid duplication but better to avoid duplication. Since the schedule info is part of NEED TO HAVE, we could keep it there and not create a separate Schedule section. However the instruction says we should include a Schedule section only if posting actually states them. It does state schedule (based in SF Bay Area and willing to work in person 4 days a week). So we could create a Schedule section with that detail, but then we would be duplicating that bullet if we also keep it under Requirements. To avoid duplication, we could move that bullet out of Requirements and into Schedule, leaving Requirements without that bullet. But then we would be removing content from Requirements (the bullet). The instruction says preserve ALL substantive information; do NOT invent or summarize away detail. If we remove that bullet from Requirements, we are not preserving it there, but we preserve it elsewhere (Schedule). That's still preserving all info, just relocated. That's acceptable as long as we don't lose info. However the instruction about sections: "Prefer a few substantive sections over many thin ones." Having a separate Schedule section for just one bullet might be thin. But we could still include it; it's not thin if it's a real specific content. But we could also keep it under Requirements and not create Schedule section, because schedule is part of requirements. The instruction says include a section ONLY when the posting has real, specific content for it — never emit a heading followed by filler/placeholder text. It doesn't forbid having a section that contains multiple items, including schedule. So we could keep schedule inside Requirements and not create a separate Schedule section. That would avoid a thin section. The instruction also says "Prefer a few substantive sections over many thin ones." So better to not create a Schedule section unless needed. Since schedule is just one line, we could incorporate it into Requirements. However the instruction also says "Use
for section headings (e.g. About the role, Responsibilities, Requirements, Qualifications, Skills, Benefits, Pay, Schedule)." It lists Schedule as an example but not mandatory. So we can omit Schedule if not needed.
Thus we will have sections: About the role, Responsibilities, Qualifications, Requirements, Skills. No Benefits, Pay, Schedule.
Check if we need to include "About the role" heading. Yes.
Now we need to output HTML fragment only, no markdown fences.
We'll produce:
About the role
... (the About Pulley paragraph(s) as prose). Could be multiple paragraphs; we can wrap each paragraph in
. The original is multiple sentences; we can keep as one
or split. Safer to keep as one
containing the whole block. Then