Jet

Packs

A pack is a single .pack.json file that shapes Jet for a specific business. The engine never learns about verticals — packs carry the opinions. Install marketing-agency and your tenant becomes an agency. Install law-firm and the same engine runs a firm.

Packs are how Jet stays generic without being useless. One install configures six layers: entity type, institutional context, role profiles, skills, workflows, and automations. Every layer is editable after install.

What a pack bundles

Layer What it carries Tenant table
Entity type The business's "thing" — client, matter, patient, engagement, property, account, plus its field schema workspace_entity_types
Institutional context Voice, SOPs, standards, case studies — seeded only if absent (won't overwrite customization) context_institutional
Role profiles Pane layout, skill palette, tool types, default context, daily open-routine per role workspace_profiles
Skills System prompt + required tools + model preference per skill, versioned skills, skill_versions
Workflows Sequential skill chains with {{input}} and {{prev.output}} templates workflows, workflow_steps
Automations Cron-scheduled + event-triggered agent runs automations

File format

A pack is a JSON document validated against the JetPack type in @jet/shared. The top-level shape:

{
  "spec": "jet-pack/v1",
  "slug": "marketing-agency",
  "name": "Marketing Agency",
  "description": "AI-native ops for marketing agencies.",
  "author": "Jet",
  "version": "1.0.0",

  "entity": {
    "slug": "client",
    "labelSingular": "Client",
    "labelPlural": "Clients",
    "icon": "briefcase",
    "schema": {
      "industry": { "label": "Industry", "type": "text" },
      "monthlyAdSpend": { "label": "Monthly ad spend (USD)", "type": "number" }
    }
  },

  "institutional": {
    "identity": "## Agency identity\n...",
    "voice": "## Voice\n...",
    "standards": "## Delivery standards\n...",
    "sops": "## SOPs (excerpt)\n...",
    "caseStudies": "## Case studies\n..."
  },

  "profiles": [ /* role profiles */ ],
  "skills":   [ /* skill definitions */ ],
  "workflows":[ /* sequential chains referencing skill slugs */ ],
  "automations":[ /* cron + trigger configs */ ],

  "recommendedTools": ["slack", "gmail", "google-drive", "notion"]
}

Installing a pack

Packs install via POST /packs/install with the pack JSON as the request body. The caller must be authenticated and have a resolved tenant (admin middleware gates it).

curl -X POST https://api.jet.do/packs/install \
  -H "Authorization: Bearer $JET_API_KEY" \
  -H "Content-Type: application/json" \
  --data @marketing-agency.pack.json

The response reports what got created:

{
  "data": {
    "tenantId": "tn_0f91...",
    "packSlug": "marketing-agency",
    "created": {
      "entityType": true,
      "institutional": true,
      "profiles": 5,
      "skills": 17,
      "workflows": 1,
      "automations": 2
    },
    "warnings": []
  }
}

Idempotency

Re-installing the same pack upgrades it in place. The installer matches by slug, updates existing rows, and adds a new skill_versions row for each skill so history is preserved. Institutional context is not overwritten if the tenant has already set it.

This means you can safely:

  • Publish a marketing-agency@1.1.0 and have existing tenants re-install to upgrade
  • Fork a pack, edit it, and re-install without duplicating rows
  • Iterate locally during pack authoring — every install merges cleanly

Reference pack

marketing-agency.pack.json is shipped in the Jet repo as the canonical reference. It's distilled from the 8 Figure Agency Blueprint and exercises every subsystem:

  • Entity: client with industry, monthly ad spend, target ROAS, retainer
  • Profiles: Account Manager, Media Buyer, SEO Lead, Sales, Operations — pre-configured pane layouts + skill palettes
  • Skills (17): Client Report Generator, Creative Fatigue Detector, Full Campaign Audit, Call Summary, Weekly Pulse Email, Content Calendar Builder, Ad Copy Variations, Lead Qualification Scorer, Proposal Generator, Cold Outreach Sequencer, SEO Content Brief, Competitor Intel, Budget Pacing Monitor, QBR Prep, Scope Creep Detector, Team Capacity Planner, Agency Margin Analyzer
  • Workflow: Monthly Client Report (Full Campaign Audit → Client Report Generator)
  • Automations: Morning Performance Pulse (7:30am weekdays), Weekly Pulse Email Queue (Friday 4pm)
  • Recommended tools: Slack, Gmail, Google Drive, Notion

Authoring your own pack

  1. Copy packs/marketing-agency.pack.json as your starting point
  2. Change slug, name, entity, and institutional to match your business
  3. Rewrite the skills array to match your SOPs — each skill is a system prompt + required tools
  4. Update profiles to match your team's roles and which skills belong in each role's palette
  5. Define any workflows and automations the business runs repeatedly
  6. POST /packs/install — iterate, re-install, refine

Packs are just JSON. You can author one in any editor, commit it to source control, and deploy it as part of your own infrastructure. A public pack marketplace at marketplace.jet.do is on the roadmap.

Next steps