# Recipe: build a coded function

> Build, test, and publish a coded function that normalizes an order payload, using a coding agent.

This recipe builds a coded function that normalizes an order payload — trimming whitespace, standardizing IDs, and converting dates to a consistent format. It shows the full loop from your prompt to a function you can call from an automation.

## Prerequisites

- The `uip` CLI and skills installed, and an authenticated session (see [Install and set up](install-and-set-up.md)).
- An empty working folder, or an existing project you want to add the function to.

## Build the function

1. Open your coding agent in your working folder.
2. Describe the transform:

   "Create a coded function that normalizes this order payload: trim whitespace from every string field, uppercase the order ID, and convert the order date to ISO 8601. Here's a sample payload: [paste sample JSON]."

3. Review the function the agent scaffolds — the input and output contract, and the transform logic.
4. Ask the agent to run the function locally against your sample payload and a second, malformed one, to see how it handles bad input.
5. Ask the agent to publish the function once it behaves as expected.

## Result

A published coded function that normalizes an order payload, ready to be called from a Maestro service task, an agent, or a workflow.

## Next steps

Wire the function into the automation that needs it — for example, a Maestro Flow that calls it before routing the order for approval. See [Coded functions](build-functions.md).

:::note
The generated contract and file layout depend on your agent, your prompt, and whether you chose Python or TypeScript/JavaScript. Use the transform's correctness against your sample payloads, not the exact files, as your signal of success.
:::
