ensayo
Generator for educational company simulation sites.
Ensayo scaffolds realistic, AI-generated content for simulated companies and builds vanilla HTML sites that deploy to GitHub Pages with zero build step.
Architecture
ensayo init --brief brief.yaml --output ./my-simulation
Three concerns, one tool:
-
Content generation (
ensayo content) — Uses AI to create rich employee backstories, support documents, and policies from a brief + archetypes + industry templates. Writes markdown with frontmatter intocontent/. -
Site building (
ensayo build) — Readssite.yaml+content/folder, applies a CSS theme, and produces a deployable vanilla HTML site. Picks up whatever content exists — AI-generated, hand-written, or a mix. -
Orchestration (
ensayo init) — Runs both: generates content from a brief, then builds the site. One command to get a draft simulation running.
Install
pip install ensayo
# With AI content generation support
pip install ensayo[content]
Quick start
# Generate a full draft simulation from a brief
ensayo init --brief brief.yaml --output ./pinnacle-events
# Or step by step:
ensayo content generate --brief brief.yaml --output ./pinnacle-events/content/
# ... review and edit content/ ...
ensayo build --config site.yaml --content ./pinnacle-events/content/ --output ./pinnacle-events/dist/
Content workflow
# Add one employee to an existing simulation
ensayo content add-employee --name "Maria Santos" --role "Marketing Manager" --archetype marketing_manager
# Add a support document
ensayo content add-doc --type support --title "Emergency Procedures"
# Regenerate chatbot prompts after editing backstories
ensayo content prompts
Site workflow
# Build the site (picks up whatever's in content/)
ensayo build
# Export booking API config from the built site
ensayo export-booking-config --output booking-employees.json
Project structure
A simulation project looks like this:
my-simulation/
├── brief.yaml # Content generation instructions (company, employees, scenario)
├── site.yaml # Site build config (theme, branding, chatbot mode)
├── content/
│ ├── employees/ # Markdown with frontmatter — one file per employee
│ │ ├── sophie-anderson.md
│ │ └── rachel-martinez.md
│ ├── docs/
│ │ ├── support/ # Internal support documents
│ │ └── policies/ # Policy documents
│ ├── pages/ # Optional page overrides (about.md, services.md)
│ └── data/ # CSV data files (passed through as-is)
└── dist/ # Built site (push this to GitHub Pages)
License
MIT
Metadata
Release files for ensayo 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ensayo-0.2.0.tar.gz | 129.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ensayo-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 182.4 kB
Release files / ensayo-0.2.0.tar.gz
| Download URL | ensayo-0.2.0.tar.gz |
|---|---|
| Size | 129.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1a22e2532d14ec7e9614d114591e99ebe375219ab8e66e3208350283c871f8be
|
|
BLAKE2b-256 checksum How to use checksums |
0d33f03f5ce55d7d5106dcd9545dc467e0c185190deb1439ddf72dadb9226d6b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.9
|
Release files / ensayo-0.2.0-py3-none-any.whl
| Download URL | ensayo-0.2.0-py3-none-any.whl |
|---|---|
| Size | 52.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7770d0dad4c6c3d2a5c70fd40f00fa8ffb3684130ff363ecc26a15c56f4860f4
|
|
BLAKE2b-256 checksum How to use checksums |
05a94395ae55a0a98e59d41d8c2e7882345a173b5e0cdbdc27cdc35605c88c11
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.9
|