Skip to content

Asset Generation

Asset generation is the phase where the abstract blueprint becomes concrete HubSpot assets. Every property, pipeline, workflow, list, form, email, dashboard, report, and other asset type the blueprint calls for is produced here, ready to deploy.

When you approve a blueprint, Jetty starts producing assets in dependency order:

  1. Data model first — custom objects, property groups, and properties, because every other asset depends on them.
  2. Structural next — pipelines, lifecycle stages, association labels.
  3. Behaviour after that — workflows, lists, forms, marketing emails, sequences.
  4. Reporting last — dashboards, reports, CRM cards, snippets, goal templates, lead scores.

The ordering matters because later assets reference earlier ones. A workflow that uses the Lead Source property reads the property’s planned name and wires the correct reference before deployment. By the time generation completes, every asset has its dependencies resolved.

The Assets tab activates with a live progress strip and an asset list that grows as Jetty finishes each item.

  • Progress strip — shows the current generation phase and an asset count per phase
  • Asset list — grouped by type, with a status indicator per asset
  • Detail panel — opens any asset you click and renders its spec in the visual format appropriate to its type

Status indicators:

StatusMeaning
DraftJetty is still composing this asset
ReadyThe asset is complete and ready to deploy
GeneratingA regeneration triggered by an edit is running
ErrorJetty hit an issue it could not resolve — see the asset detail panel for the reason
DeployedThe asset has been pushed to the destination portal

Generation runs entirely in the background. You can leave the workspace, close the browser, switch organisations, or open another project — when you come back, the list reflects current progress in real time.

Generation time scales roughly with the asset count and the complexity of each asset. Realistic ranges from real projects:

  • Small projects (10–30 assets): 8–15 minutes
  • Medium projects (30–60 assets): 15–25 minutes
  • Large projects (60+ assets with custom objects and complex workflows): 25–40 minutes

The longest single step is usually a complex multi-branch workflow; the shortest are simple properties. Generation is asynchronous — leave the workspace and come back; the UI updates as assets land. You’ll get a notification when it’s done.

Jetty draws on patterns from a large corpus of real HubSpot configurations, so the assets it produces use field types, enum sets, and structures that match real-world conventions rather than idealised samples.

Asset TypeWhat’s in the generated spec
PropertyName, internal name, field type, group, options, description, required flag
Property GroupName, display order, scope
PipelineName, scope (deal / ticket), ordered stages with probabilities
Lifecycle StageFor Contacts / Deals / custom objects: stage list with transition rules
Association LabelSource object, target object, label name, cardinality
Custom ObjectObject name, label, primary display property, properties, associations
Asset TypeWhat’s in the generated spec
WorkflowTrigger criteria, action sequence, branches, re-enrollment, goal criteria
Static ListName, member object, manually-added members (none at generation; populated post-deploy)
Dynamic ListName, member object, filter logic (branches, groups, operators)
FormField layout, field types, options, follow-up behaviour, redirect target
Marketing EmailSubject, preview text, body content, sender, smart content tokens
Asset TypeWhat’s in the generated spec
DashboardLayout, contained reports, filters, refresh interval
ReportType (single object / cross-object / funnel / attribution), dimensions, metrics, filters, visualisation
CRM CardObject scope, layout, surfaced properties, pinned position
SnippetTrigger phrase, body content, scope
PlaybookSections, prompts, embedded properties
Goal TemplateGoal type, period, member criteria, target calculation
Lead ScoreScore buckets, criteria per bucket, owner notification rules
Preview ViewObject scope, primary properties, secondary properties, related-record cards

If an asset type your blueprint requires is not in the table above, Jetty will flag it during blueprint design — there is no surprise “we can’t generate that” mid-pipeline.

Once an asset is in the Ready state, you have three ways to change it.

Click an asset in the list. The detail panel renders the spec visually. You can edit any field directly — rename the asset, change a stage probability, adjust filter logic, swap a workflow action. Inline edits save immediately.

This is the fastest path for small adjustments.

For larger or cross-asset changes, type a chat instruction:

“Replace the Lead Source enum with a fresh set scoped to inbound channels only, and update every workflow that uses it.”

Jetty edits the affected assets and confirms what changed. You can keep iterating in chat or accept the changes and move on.

If an asset is fundamentally wrong — wrong trigger logic on a workflow, wrong dimensions on a report — open its detail panel and click Regenerate. Jetty re-drafts only that asset using the current blueprint and project context. Other assets are not affected.

This is useful when a single asset needs to be re-drafted rather than nudged.

Individual assets can fail to generate for several reasons:

  • Ambiguous specification. The blueprint did not give Jetty enough to produce a concrete asset (e.g., a report with no dimensions specified).
  • Conflicting dependencies. Two upstream assets disagree about a field name or property type.
  • Transient AI service issue. A temporary glitch in the underlying model produced an unusable response.

Failed assets appear with the Error status and a short reason in the detail panel.

To recover:

  1. Read the error. Often the fix is a tiny blueprint change (e.g., “add a description to this property so the workflow has something to key off”).
  2. Adjust the blueprint or sibling assets. If the error points to an upstream dependency, fix that first.
  3. Regenerate the failed asset. Click Regenerate in its detail panel and Jetty re-runs against the updated state.

If a single asset keeps failing across multiple regeneration attempts, it usually indicates a blueprint-level issue. Step back to the Blueprint tab and inspect the part of the design that defines this asset; a small clarification (a description, a renamed property, a removed conflicting outcome) typically resolves it.

When you edit an asset that other assets depend on, the dependent assets are flagged as needs regeneration and the Assets tab surfaces a banner. You can:

  • Regenerate all dependents at once — click Regenerate Affected to re-run only the dependents that need updating
  • Regenerate individually — open each flagged dependent and regenerate it manually
  • Ignore the flag — if you know the dependents are fine despite the upstream change, you can dismiss the banner

This is also why data-model assets are generated first: if their names or stages change later, every downstream asset that references them gets re-evaluated.

A few habits keep iteration fast and predictable:

  • Edit, don’t regenerate. Most small changes — renaming, tweaking a stage probability, adjusting a filter — can be made directly in the asset’s detail panel without re-running anything.
  • Regenerate a single asset rather than the whole project. The Regenerate button on an asset’s detail panel only re-drafts that one item.
  • Avoid blueprint rewrites in mid-stream. Large blueprint changes cascade into many asset regenerations. If you know a major rewrite is coming, finish it before approving rather than approving partial state and iterating.