# Get on YEA

You are an agent. Someone sent you here to get their business on **YEA, Your Everything App**. Follow this file top to bottom. Talk to the person in plain words, one question at a time.

**Start now:** say in one line that you will ask six short questions and then show them their app's left nav. Then ask question 1. Do not write code until step 4.

---

## What YEA is

One app that runs a business: a customer side, an admin side, one left nav, six user types, and an agent in a chat panel on every screen that can see what the user sees and act on it.

- **Not a product you buy.** No license, no seat price, no vendor. YEA is non-proprietary on purpose. You write the code from a clear spec, for this one business.
- **A spec, not a codebase.** The full PRDs live at https://github.com/postscarcityai/yea. If you cannot open it, this file is enough to run the interview, pick modules and start the build.
- **The business owns it.** Its own repo, its own hosting account, its own database, in its own name from day one.
- **Configured, not forked.** Every business gets the same shell and components. One config object changes: modules on, their labels, roles, brand colors.

---

## 1. Interview the owner

Ask these one at a time. Wait for each answer. Write the answers to `docs/interview.md` in the business's repo.

1. **What do you do?** One sentence.
2. **What industry are you in?** Their word, not yours.
3. **Tell me about the business in two sentences.** Who buys, how they find you, what a good month looks like.
4. **What is your website URL?** Read it. Pull services, locations, voice, colors and logo. No site? Move on.
5. **Who will use the app?** The owner, the office, the crew, outside reps or partners, and which customers should sign in.
6. **What do you pay for today?** Every app and subscription, with the monthly cost if they know it.

Then one follow-up: **"What is the job nobody has time for?"** That is the agent's first job once the app is live.

---

## 2. Pick modules

Three tiers, 37 modules. Every module has a fixed home in the left nav. Groups can be reordered and modules relabeled, but a module never moves to another group.

```
Admin side (signed in: Owner, Admin, Staff, Contractor)
  Home, Inbox                      top of the nav, no group
  Grow   Leads, Pipeline, People, Prospects, Outreach, Campaigns, Reviews, Programs, Reps
  Sell   Orders, Catalog, Bookings, Jobs, Marketplace, Documents, Money
  Make   Content, Social, Library, Studio
  Know   Insights, Search, Views, Goals, Costs, Playbook
  Run    Team, Agents, Board, Log, Settings

Customer side
  Public  Site, Shop, Intake (top nav, no login)
  Portal  Home, Orders, Reorder, Bookings, Documents, Invoices, Rewards, Leads, Listing, Posts, Kit, Account
          (each portal page shows only if its admin module is on; Home and Account always show)
```

A group with nothing switched on disappears.

| Tier | Rule | Modules |
|---|---|---|
| **core** | Always on. Relabel, never remove. | Home, Inbox, Leads, People, Views, Goals, Team, Agents, Board, Log, Settings, Site, Intake, Portal |
| **common** | On if they do that work or pay for that SaaS today. | Pipeline, Outreach, Campaigns, Reviews, Orders, Catalog, Bookings, Documents, Money, Content, Social, Library, Studio, Insights, Search, Costs, Playbook, Shop |
| **industry** | One business model. Two at most. | Prospects (B2B at volume), Programs (loyalty), Reps (field sales), Jobs (work delivered after the sale), Marketplace (routing or reselling leads or work) |

1. Turn on every core module.
2. Map each tool from question 6 to the module that replaces it. Turn that module on.
3. Turn on any common module the interview describes, even if no tool covers it today.
4. Relabel in their words. A law firm's Jobs is "Matters". A clinic's Bookings is "Appointments". Keys never change, only labels.
5. Order the groups the way their day runs.

**Show the owner the left nav, top to bottom, as a plain list.** Cut anything they do not recognize. Save the result as `yea.config.json`: company, industry, URL, brand colors, groups, modules, labels, roles.

---

## 3. Set roles

- **Six user types:** Owner, Admin, Staff, Contractor, Customer, Agent. A type is a ceiling. Named roles only trim it.
- **Eight verbs per module:** View, Create, Edit, Approve, Send/Publish, Delete, Export, Configure. Scope is `all` or `own`. Contractors and Customers are always `own`.
- **The agent is a user, never a superuser.** In chat it acts as the person who opened the chat. It never approves and never configures. Every write is logged with Undo. Every send, publish, spend and delete waits for a human yes.
- **One check, `can(user, module, verb, record?)`,** on the nav, the route guard, every server action and every agent tool.

Map each person from question 5 to a type.

---

## 4. Build

**Default stack:** Next.js (App Router, TypeScript), Postgres on Neon, Vercel, SendGrid, Stripe, magic-link auth. Twilio only if a module needs it. Any capable model with tool use and streaming; open-weight models work. Any other stack works too, if it has a relational database with row-level rules, server-side permission checks on every write, and streaming from the agent to the chat panel.

**Build order.** Do not start a step until the one before it works.

1. Shell: auth, `yea.config.json` loader, left nav from config and `can()`, list views, record views.
2. Log and roles: a change log with before, after and Undo. Every later write goes through it.
3. Chat panel on the right. Click a row or record to pin it as a chip, up to 12. Pins survive navigation.
4. Run: Settings, Team, Agents, Board.
5. Core data: People, Leads, Inbox, then Home.
6. Customer side: Site, Intake (lands in Leads), Portal.
7. Know: Views, Goals, then the rest that are on.
8. Everything else, in the order the owner will cancel their subscriptions, easiest first.

For each module: read its PRD in the repo (`admin/<group>/<page>/PRD.md`, `admin/home/PRD.md`, `admin/inbox/PRD.md`, `customer/<page>/PRD.md` or `customer/portal/<page>/PRD.md`), write the migration, build the pages, add the agent tools through `can()` and the log, seed it with fictional data, check it as every user type, show the owner on phone and laptop, ship it. Then the next one.

---

## 5. Keep the rails

YEA replaces the apps. It does not replace the rails: infrastructure, licenses and regulated services that move money, mail, messages or filings. Plug into them and keep them.

Hosting. Database. DNS and security. Email delivery. SMS and voice. Payments (YEA never touches a card number). Domains. Banking. Payroll tax. Passwords.

---

## 6. Move off SaaS safely

Lowest risk first.

| Label | At stake | How |
|---|---|---|
| **No brainer** | Nothing | Build the module, switch, cancel this week. |
| **Easy** | Data that exports cleanly | Export, import, match counts, cancel after one billing cycle. |
| **Plan it** | Live revenue, contracts, consent, history | Written plan. Run both side by side for a full cycle. Redirect every old URL. |
| **Careful** | Books, email, deliverability, compliance | Move last. One full month-end close or mail cycle in parallel. Owner signs off in writing. Or keep it. |

Always: export before you cancel, carry unsubscribes and consent with their timestamps, archive signed documents with their audit trail, count then cut, and keep a running list of what was cancelled and its monthly price. That number is the owner's proof.

---

## Want people to do it?

postscarcity.ai, book a call.

Good on YEA.
