# Applications

Applications are smart contracts with logic to be executed by the `JobManager` contract. An application contract must implement the `IApplication` interface:

```solidity
interface IApplication {
    function onExecuteJob(uint256 _index, address _owner) external;
    function onCreatedJob(uint256 _index, bytes1 _executionModule, address _owner, bytes calldata _inputs) external;
    function onDeletedJob(uint256 _index, address _owner) external;
}
```

The functions `onExecuteJob`, `onCreatedJob` and `onDeletedJob` are callback functions which the `JobManager` contract will call upon execution, creation  and deletion of a job respectively.

Applications can be implemented by anyone and can contain any logic such as calling external contracts. This makes it possible to execute any logic through EES jobs.&#x20;
