For end users
Apps
An app is a folder under pectusai/apps/ with an APP.md that declares its type (inbound or outbound) and how it plugs into Pectus. Apps are activated per workspace from the CMS Apps surface (/apps).
Inbound apps pull data into your Supabase. Some hit a vendor API (GA4, Search Console, Google Ads, Meta, LinkedIn); some accept user-typed data (seed-keywords). The runner calls the app’s fetch.ts directly; the model is not invoked. After the fetch, an interpretation skill (apps/<app>/insights/SKILL.md) turns the raw rows into Insights that downstream skills consume.
Outbound apps publish content somewhere. The bundled content-insights is the only outbound app today; it builds a static Astro site from your articles and pages rows and commits the output to a GitHub repo your deploy target watches.
Bundled apps
- content-insights — outbound. The bundled public site.
- seed-keywords — inbound, manual. User-typed keywords as a starting signal.
- ga4 — inbound. Google Analytics 4 metrics.
- gsc — inbound. Google Search Console performance.
- google-ads — inbound. Paid search performance.
- meta — inbound. Paid social (Facebook + Instagram).
- linkedin — inbound. Paid social (LinkedIn).
Adding your own
The apps spec is the contract. Inbound apps need fetch.ts, provision.ts, schema.ts, and an insights/SKILL.md. Outbound apps need build.ts and a cms_surfaces declaration in their APP.md if they contribute UI.