# Introduction

## What is AutoMan? <a href="#overview" id="overview"></a>

AutoMan is the first fully automatic **crowdprogramming** system. With AutoMan, you declaratively define **human functions** and use them just as you would ordinary functions. Focus on your application logic instead of MTurk code.

AutoMan is currently available as a library for [Scala](https://www.scala-lang.org/).

## Example

```scala
  def which_one() = radio (
    budget = 5.00,
    text = "Which one of these does not belong?",
    options = (
      choice('oscar, "Oscar the Grouch", "https://tinyurl.com/y2nf2h76"),
      choice('kermit, "Kermit the Frog", "https://tinyurl.com/yxh2emmr"),
      choice('spongebob, "Spongebob Squarepants", "https://tinyurl.com/y3uv2oew"),
      choice('cookiemonster, "Cookie Monster", "https://tinyurl.com/y68x9zvx"),
      choice('thecount, "The Count", "https://tinyurl.com/y6na5a8a")
    )
  )

```

This function produces an MTurk task that looks like this:

![A "radio button" question with 5 options, including images.](https://4139267154-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MKQ7zHwDtbhybf6LYpN%2F-MKQBQEwIsL-VjE_nHV2%2F-MKQCudxlPj-svLUBlSw%2Fspongebob.png?alt=media\&token=78fb2a38-e12b-4c6d-96e2-99c9ff06e733)

The function can be called like any other function in Scala:

```scala
which_one()
```

Notice in the above declaration and function call, there was no need to specify task wages, the number of workers, how to handle network errors or other system failures, or how to determine whether answers are good.  AutoMan *automatically* handles pricing, quality control, and task management.

## Learn More

To get started, check out our **Getting Started** guide.  See the navbar to the left, or click on the link below.

## Acknowledgements <a href="#acknowledgements" id="acknowledgements"></a>

This material is based on work supported by National Science Foundation Grant Nos. CCF-1144520 and CCF-0953754 and DARPA Award N10AP2026. Microsoft Research also generously supported research and development by funding experiments on Mechanical Turk.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.automanlang.org/master.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
