ColPortMillHallInnCommons

Capabilities · 24 named mechanisms

Every capability, named with its mechanism.

Grouped by the questions real buyers ask. Every item names the exact internal mechanism that powers it, a technical evaluator can verify rather than trust.

Generation

The architect + writer + translator pipeline that turns a brief into a course.

Architect reviewable before any content is written

A reasoning-capable LLM proposes chapter + section structure + learning objectives. You approve or regenerate before the expensive content-writer pass fires. No wasted credits on a draft you'd reject. The architect model is configurable per organisation, bring your own LLM or use the Mill default.

33+ section types, not just slides

Welcome, bullets, tabs, accordion, flashcards, MCQ, true/false, fill-in-the-blank, split-content, stat-cards, quote, image-showcase, hotspots, before-after, comparison-table, checklist, timeline, process-flow, decision-table, case-study, drag-drop, ranking, sortable, branching-scenario, reflection, numbered-steps, testimonial-carousel, key-takeaways, matching-pairs, word-cloud, video, image gallery, callout, definition, summary, and more. Every section has its own render template tuned for learning.

Document → course (strict-source mode)

.docx, .pptx, legacy SCORM .zip, upload and Mill reads the text, extracts structure, and generates against it. Strict-source forbids claims not anchored in your source document. Defensible procurement-grade by default.

Multilingual in one pass

33+ languages, one generation pass. Translation runs through the configured translation engine with your per-org glossary (DO_NOT_TRANSLATE + PREFERRED_TERM). Narration renders through the configured TTS engine. Both are per-organisation: bring your own providers, or keep the Mill defaults. Generation cost for 10 languages is not 10×, it's ~1.3×.

AI images where they help, not everywhere

The configured image model (per-organisation: hosted vendor, self-hosted diffusion, or the one your design team already uses) generates an image per section that asks for one. Capped (4-10 per course depending on complexity) so the course doesn't feel like a stock-photo collage.

Compliance + audit

Everything a procurement team asks about.

Immutable publish-version ledger

Every publish writes a `PublishVersion` row with SHA-256 manifest hash + model hashes. Years later the regulator can ask 'what did learner Y see on date X?' and we answer in one query, with content-addressable proof.

Two-person e-signature

SME_REVIEW + COMPLIANCE_SIGNOFF signatures required before a course is 'fully signed'. Same user can't hold both roles. Reason codes (REVIEWED / APPROVED / AUTHORED / RESPONSIBILITY) + ipHash captured. Modelled on 21 CFR Part 11 §11.50/§11.70.

Per-field drift classifier on every translation

Translator output runs back-through-translation. Fields classified numeric / unit / regulatoryId / prose. Any divergent token on numeric/unit/regulatoryId = hard fail, regardless of semantic score. Stops the '5 mg → 5 ml' class of translation disaster.

EU AI Act Article 50 transparency

AI-assistance banner renders on the authoring + learner surface. Model card drawer lists every AI provider + model + purpose. Flag-gated so legal can flip it off during a policy review without a redeploy.

EU data residency + BYO providers

All infra (app + DB + default AI provider calls) hosted in the EU. Each organisation can override per-role: pin to a specific LLM, route TTS through a contracted vendor, run image generation in your own VPC. Lock the model and skip the risk review.

Team collaboration

What makes team plans actually productive, not just a seat count.

Shared credit pool

Team Starter: 3,000/month across 5 seats. Team Standard: 5,500 / 10. Team Pro: 9,000 / 25. No per-user quota; let the person who writes the most courses do it.

Per-course sharing toggle

New team courses default private. The author flips 'Share with team' to expose it to their org. No accidental leaks to teammates who weren't in scope.

Org-wide glossary

Your product names, brand terms, regulatory references, set them once, apply them to every generation + translation across every member.

Reviewer-assignment workflow

Assign named reviewers per language. Status chips gate publish. Publishes block until the required reviewers approve.

Hall integration (per-org Bearer token)

Team Pro + Hall subscribers: Mill pushes published courses directly into the LMS. ORG_ADMIN pastes a token once; every future publish auto-imports.

Edit, republish, improve

Mill isn't fire-and-forget. The editor is where 90 %-good becomes ship-ready.

Section-level editor

Every field of every section editable independently. Regenerate a single cue without touching the rest of the course. Per-language tabs for multilingual editing.

Drift red-line on every translated field

Inline OK / warn / fail pill next to each translated cue. Click to check; tooltip shows back-translation + divergence. Catches translator glitches before learners see them.

Republish rewrites the course atomically

Edit → save → click Republish → a new SCORM/xAPI package is written + a new PublishVersion row is recorded. The learner opens the exact same URL and sees the new version next session.

Preview is never stale

Cache-Control: no-store on the preview response. Edit → republish → refresh preview. You always see the latest built bytes, never a browser-cached stale copy.

Under the hood

For the engineers who ask before procurement does.

Next.js 16 + Prisma 6 + Postgres

Modern, maintained stack. EU-region hosting on Hetzner / Supabase or equivalent. Standard open-source tooling throughout, no proprietary lock-in.

Bring-your-own AI providers

Every AI role in the pipeline (architect LLM, content writer, translator + drift-check, TTS, images) is provider-agnostic. Mill ships with sensible defaults, but each organisation plugs in its own stack: a hosted frontier LLM, a self-hosted open-weights model, the TTS engine your voice team already licenses, a diffusion image model behind your VPC. Switch per-org or per-group without a code change. Audit log captures which provider + model served each call.

Feature-flag everything

AI kill switches per provider, budget circuit breakers per-course + per-user-daily, Art. 50 banner toggle, SCORM storage backend toggle. Ops can flip any of these without a redeploy.

Structured logging + correlation IDs

Every request carries an async-local correlation ID; logger emits JSON to stdout (picked up by Axiom / Better Stack / Datadog, your choice). One query pulls every AI call + DB write for a given course.

Per-org API keys for integrations

Mill org owner issues Bearer tokens scoped to their org. Hall + Zapier + custom scripts authenticate with Authorization: Bearer. Token hash stored; prefix kept plaintext for admin UI; revoke any time.

Seen enough?

Generate a real course, not a demo.

130 free credits. No card. First course in the next quarter-hour.

Features, Every capability, named with its mechanism — Mill