⟨ MANIFESTO ⟩

Marketing software should be a dependency. Dependencies should behave.

AstroFabric exists because marketing tooling kept shipping as dashboards while the people building products and running growth needed functions - capability that executes, under rules, with receipts. These are the positions the platform is built on. Every one of them is checkable in the product.

01 /

The API is the product

We built a full marketing-intelligence dashboard first. It was pretty, and it sat between the data and the people who wanted to act on it. So we deleted it: tens of thousands of lines of UI, gone in one commit. What survived is the part that did the work, exposed as endpoints. Your product, your cron jobs and your AI agents are better front-ends than any dashboard we could ship, because they can act.

02 /

Agents are first-class callers

Half the requests hitting this platform will come from software that reasons. That changes the contract: every tool carries a machine-readable schema, every error is structured enough for a model to recover from, and the MCP server exposes the same catalog under the same scopes and meters as REST. An assistant with your key can do real work and can never outspend your workspace.

03 /

Credentials are our problem

Ad platforms guard their APIs with developer tokens, partner reviews and app audits that take weeks. We hold those approvals so you do not have to: connect an ad account with an OAuth click and the platform acts through managed partner credentials. The same goes for analytics and search data. You bring the account. We bring the access.

04 /

Budgets are enforced, never advised

Every workspace runs under a credit grant the ledger treats as law. Paid work reserves budget before it executes and settles after. Under pressure the platform degrades freshness first, fidelity second, coverage last, and at the ceiling it stops with a 402 you can catch in code. A platform that cannot stop spending is a liability with a nice logo.

05 /

Isolation is structural

Tenant scoping is not a code-review convention here. The data layer exports no unscoped query path, every read and write is bound to a workspace resolved against the database, and row-level security stands behind that as a second line. Careless code returns zero rows instead of someone else’s data.

06 /

Worst cases are priced in cents

When an agent pushes a campaign, it lands paused. On platforms that cannot guarantee a paused create, it is created at the platform floor, paused, read back to confirm, and only then restored to the intended budget. If the pause cannot be confirmed, the push is cancelled. The worst case is about a cent, by construction.

⟨ WHAT WE REFUSE TO BUILD ⟩POSITIONS HAVE COSTS · WE PAY THESE GLADLY
Dashboards that describe work instead of doing itAutonomy without approval policiesSoft quotas that become surprise invoicesAI claims without evidence attachedBlack-box runs you cannot replayFeatures gated out of trials

If a feature request asks us to cross one of these lines, the answer is a better design on our side of the line.

⟨ HOLD US TO IT ⟩

Positions are cheap. Products are proof.

Open a workspace, read the docs, run a mission - every claim on this page is live in the platform.