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.
How Generation Runs
Section titled “How Generation Runs”When you approve a blueprint, Jetty starts producing assets in dependency order:
- Data model first — custom objects, property groups, and properties, because every other asset depends on them.
- Structural next — pipelines, lifecycle stages, association labels.
- Behaviour after that — workflows, lists, forms, marketing emails, sequences.
- 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.
What You See During Generation
Section titled “What You See During Generation”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:
| Status | Meaning |
|---|---|
| Draft | Jetty is still composing this asset |
| Ready | The asset is complete and ready to deploy |
| Generating | A regeneration triggered by an edit is running |
| Error | Jetty hit an issue it could not resolve — see the asset detail panel for the reason |
| Deployed | The 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.
How Long Does It Take?
Section titled “How Long Does It Take?”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.
What Gets Generated
Section titled “What Gets Generated”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.
CRM Assets
Section titled “CRM Assets”| Asset Type | What’s in the generated spec |
|---|---|
| Property | Name, internal name, field type, group, options, description, required flag |
| Property Group | Name, display order, scope |
| Pipeline | Name, scope (deal / ticket), ordered stages with probabilities |
| Lifecycle Stage | For Contacts / Deals / custom objects: stage list with transition rules |
| Association Label | Source object, target object, label name, cardinality |
| Custom Object | Object name, label, primary display property, properties, associations |
Automation Assets
Section titled “Automation Assets”| Asset Type | What’s in the generated spec |
|---|---|
| Workflow | Trigger criteria, action sequence, branches, re-enrollment, goal criteria |
| Static List | Name, member object, manually-added members (none at generation; populated post-deploy) |
| Dynamic List | Name, member object, filter logic (branches, groups, operators) |
| Form | Field layout, field types, options, follow-up behaviour, redirect target |
| Marketing Email | Subject, preview text, body content, sender, smart content tokens |
Reporting Assets
Section titled “Reporting Assets”| Asset Type | What’s in the generated spec |
|---|---|
| Dashboard | Layout, contained reports, filters, refresh interval |
| Report | Type (single object / cross-object / funnel / attribution), dimensions, metrics, filters, visualisation |
| CRM Card | Object scope, layout, surfaced properties, pinned position |
| Snippet | Trigger phrase, body content, scope |
| Playbook | Sections, prompts, embedded properties |
| Goal Template | Goal type, period, member criteria, target calculation |
| Lead Score | Score buckets, criteria per bucket, owner notification rules |
| Preview View | Object 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.
Editing Generated Assets
Section titled “Editing Generated Assets”Once an asset is in the Ready state, you have three ways to change it.
Inline Spec Editing
Section titled “Inline Spec Editing”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.
Chat Instructions
Section titled “Chat Instructions”For larger or cross-asset changes, type a chat instruction:
“Replace the
Lead Sourceenum 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.
Regenerate a Single Asset
Section titled “Regenerate a Single Asset”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.
Recovering from Generation Errors
Section titled “Recovering from Generation Errors”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:
- 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”).
- Adjust the blueprint or sibling assets. If the error points to an upstream dependency, fix that first.
- 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.
Cascade Behaviour
Section titled “Cascade Behaviour”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.
Iterating Efficiently
Section titled “Iterating Efficiently”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.
Next Steps
Section titled “Next Steps”- Deployment Phase — Pushing the generated assets to HubSpot
- Blueprint Phase — Recap of how the blueprint feeds generation
- Troubleshooting & Gotchas — Known limits and recovery flows