👋 hello world

We are Prefect

We help data engineers and AI engineers deploy code that's easy to trust.


We build software that makes complex systems easy to trust


We are Prefectionists: craftspeople, data engineers, and first-movers


Our distributed team is empowered to do the best work of their careers

Our products

We build lightweight developer experiences for interacting with complex systems like data and AI stacks.

Prefect OSS
Prefect Cloud
Marvin AI

Natural language interfaces for LLMs

Are you a Prefectionist?


Medical, Vision, Dental

Your health is important - choose from a host of insurance options that suit your needs


Own what you build with regular refreshes and early exercise


Generous parental leave and support for growing families

401(k) with 5% match

Roth or pre-tax 401 (k) employee contributions, multiple investment options, and no vesting period

Flexible Spending

Pre-tax benefit to pay for healthcare and dependent care expenses

Life & Disability Insurance

$100k life insurance policy with options for more, plus short-term and long-term disability covered


Remote-First Culture

A flexible working environment enables you to do the best work of your career

Flexible Time Off

Unlimited PTO and 11 company holidays

Remote Work Stipend

$800/month for whatever you need to work comfortably: equipment, bills, your gym membership, that amazing latte on the corner

Home Office

$1,000 to set up your home office

Internet & Utilities Stipend

Pre-tax stipend to help cover your internet and other utility bills

Professional Development

$2,000/year for professional development and education

Give Back

Donate to your favorite 501(c)(3), and Prefect will match up to $500

get together

Many opportunities to attend in-person gatherings



Every Prefectionist is empowered to both independently and collaboratively advance Prefect’s strategic goals


We embrace new technologies to build innovative products that deliver value to our users


We care deeply about supporting our colleagues, users, and our customers

Fail Successfully

We embrace an iterative process of constant improvement because failure, caught early, is learning

Are you a Prefectionist?

Stay in the flow

Chris White
Sarah Moses
Jennifer Grange
Open Positions

No current openings


No current openings


No current openings


No current openings

With Prefect, the workflow schematic is dynamic defined by your code.
1from prefect import flow
3@flow(name="Hello Flow")
4def hello_world(name="world"):
5  print(f"Hello {name}!")
6  hello_world("Marvin")
$ python hello.py
15:11:23.594 | INFO | prefect.engine - Created flow run 'benevolent-donkey' for flow 'hello-world'
15:11:23.594 | INFO | Flow run 'benevolent-donkey' - Using task runner 'ConcurrentTaskRunner'
Hello Marvin!
15:11:24.447 | INFO | Flow run 'benevolent-donkey' - Finished in state Completed()
With Airflow, you must define the DAG object to represent your workflow schematic no matter what.
1import datetime
3from airflow import DAG
4from airflow.operators.empty import EmptyOperator
6with DAG(
7   dag_id="my_dag_name",
8   start_date=datetime.datetime(2021, 1, 1),
9   schedule="@daily",
11   EmptyOperator(task_id="task")