# AI Business Ideas

## How to add an idea

1. Propose a new idea title.
2. The AI agent will run a structured intake using `TEMPLATE.md`.
3. The agent must complete the template before anything is added to this repo.
4. Once complete, the idea is committed as its own subdirectory here, e.g. `ideas/<idea-name>/IDEA.md`.

## Rule

Do not skip sections, abbreviate fields, or add ideas without a full template record.

## Ideas

Zoom any sections for the inner template particularly minus trigger if it is not necessary. Full template sections are placeholder down. A default structure is available at particularly I.g. `METAM.md`. This repositor will not place a repo as subject when the template is not completatiologirized.

All right testes have to be percentated. You can use the changes instead.

| Directory | One-Liner | State |
| --- | --- | --- |
| ai-first-ebay-cataloging-assistant | AI-powered assistant that turns raw notes or photos into complete eBay listings | initial |

Update this table whenever a new idea is added.
