> For the complete documentation index, see [llms.txt](https://docs.otherplanet.dev/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.otherplanet.dev/scripts/op-mechanic-v2/tutorials/how-to-setup-the-first-shop.md).

# How to setup the first shop

Shops are stored in the database and managed from Mechanic Admin. There is no static Config.Jobs list - jobs sync from shops you create.

{% stepper %}
{% step %}

#### Open Mechanic Admin

After you have permission, run:

```
/mechanicadmin
```

{% endstep %}

{% step %}

#### Create shop

Set at least:

* **Label** - display name
* **Job** - must match a real framework job name (example: `mechanic`)
* **Society account** - optional; defaults to `society_<job>`
* **Min grade** - lowest grade that counts as employed at this shop
* **Blip** - optional map blip
* **Zones** - tuning / workshop areas used to open the menu and claim work
* **Tablet apps** - min grade per app (finances, parts, maintenance, garage, …)
* **Commission** - % of invoice total deposited into the society tablet bank
  {% endstep %}

{% step %}

#### Framework job

Create the job in your framework (ESX jobs / QB shared jobs) with the same name as the shop `job` field. Grades should match tablet app min grades.
{% endstep %}

{% step %}

#### Duty / access

Players need the shop job (and grade) to use tablet apps and, depending on `Config.Tuning.requireJob`, to open / confirm tuning.
{% endstep %}
{% endstepper %}

{% hint style="warning" %}
If the shop job name does not exist on the framework, tablet and dispatch routing will not work correctly.
{% endhint %}
