City Schools of Decatur — General Ledger Demo Storyboard

Mapping the CSD Demo Script pain points to Missio GL engine pages, structured as a video narrative. Generated 2026-04-21.

Contents: 1. Pain Points 2. Coverage Matrix 3. Video Storyboard (7 scenes) 4. All GL Pages Inventory 5. Gaps / Talking-Point Risks

1. Pain Points Pulled from the CSD Demo Script

These are the 35 explicit "demonstrate the ability to…" requirements from the General Ledger section of the Demo Script, grouped by theme. CSD wants one system that does all of them without bolt-ons.

Chart of Accounts & Master Data

JE Processing

Governmental Basis & Compliance

Period Close & Reporting

Pre-Close / Close

Scenario-Specific Test Cases CSD Will Run During the Demo

A. Out-of-balance JE: Georgia Power accurate $63,000 DR/CR; actual posted $68,000 DR / $63,000 CR. CSD will watch Missio's validator catch this.
B. Grant revenue flipped: Local Share Costs & Grant Reimbursement columns are swapped. CSD expects a prior-period adjustment workflow to fix it.
C. HVAC JE draft: Create the $51,850 JE but don't post — CSD wants to see a draft that sits safely in the inbox, editable + duplicable.
D. Period-close of 03/01/2025–03/31/2025: CSD wants to see the 11-task closing calendar, a payroll-discrepancy-in-task-2 workflow resolution, and depreciation post for the two buses in task 2.

2. Coverage Matrix — Pain Point → Missio Page

Every GL demo-script requirement mapped to the page / route that demonstrates it.

Covered & polished Covered — needs reheasal Gap / narrate around
#Pain pointMissio pageStatus
1COA structure, change tracking, historyChart of Accounts + CoA Change Requests🟢 Covered
2Block account for postingCOA → Toggle Freeze🟢 Covered
3Unlimited user-defined categoriesMaster Data Categories🟢 Covered
4Auto-post JEs from sub-ledgersFrappe Posters (auto, per observer) — JE list shows origin🟢 Covered
5Auto-reversalsRecurring JEs → auto-reverse offset days🟢 Covered
6User-written validation rulesAccount Dimension Rules (gl-dimensions.requirements)🟢 Covered
7Approval workflow for new COA segmentsCoA Change Requests (submit → approve/reject)🟢 Covered
8Governmental basis (cash/accrual/modified)JE basis field + filter on JE list (GAAP / Modified Accrual)🟢 Covered
9GASB complianceFinancial Reports: Trial Balance, Balance Sheet, Income Statement🟡 Demonstrate narrative
10Flexible closing rulesPeriod Close🟢 Covered
11BAI bank e-file + lockboxBank Imports (BAI) + BAI Code Map + AR Suspense + Cash Position🟢 Covered
12Ad-hoc queries scoped by securitySaved Queries (Finance → Other → Saved Queries)🟢 Covered
13Subtotals, grouping, function-level reportsTrial Balance + Account Detail (group by dimension)🟢 Covered
14Full financial statement setTrial Balance, Balance Sheet, Income Statement, Cash Flow, Account Detail🟢 Covered
15JE inquiry + drill-downJE list → JE show → line drill to account🟢 Covered
16Close calendar with tasks, dependencies, escalationPeriod Close → Checklist (11 tasks, marked per step)🟢 Covered
17Driven dates on dashboard + email + change logPeriod Close index (due-date dashboard) + activity log🟡 Demonstrate narrative
18GL summary → detail drill-down for OOBGeneral Ledger index → Account Detail (per-account drill)🟢 Covered
19Close AP before GL + manual JE to open periodPeriod Close (independent module close) + Prior-Period Adjustments🟢 Covered
20Balancing JE auto by business unit + auditJE create — Operating Unit required, dimension requirements enforced🟢 Covered
21Validate JE as entered (no one-sided)JE store()/update() validators — balance + debit-XOR-credit🟢 Covered
22Reverse posted JE / delete unpostedJE list → Reverse Entry (posted); Edit + Duplicate (drafts — new today)🟢 Covered
23Notifications for pending JEsJE Approvals Inbox🟢 Covered
24Attachments, notes, copy JE from prior periodJE Attachments (per-JE drawer) + Duplicate + Copy-attachments-from-prior🟢 Covered
25Upload JEs from ExcelJE Upload Excel (template download + preview + commit)🟢 Covered
26Attachments visible before approvalApprovals Inbox shows attachment previews🟢 Covered
27JE reference # cross-reference for grantsJE reference field + SEFA Report cross-reference🟢 Covered
28All JE types: manual, recurring, allocations, reversals, templatesJE + Recurring JE Templates + auto-reverse offset🟢 Covered
29Which JEs haven't been interfacedGL index — filter by status (draft / posted) + source_type🟢 Covered
30Available balance inquiryCOA → Account Balance (YTD, encumbered, posted)🟢 Covered
31Sub-ledger → GL OOB reportAccount Detail report + reconciliation drill🟡 Demonstrate narrative
32Validate COA stringAccount Dimension Rules (enforced on JE, AP, AR, Budget)🟢 Covered
33Audit trail on JE changesActivity log on JE show page🟡 Demonstrate narrative
34Prior period/year adjustmentsPrior Period Adjustments page + Period Close Reopen🟢 Covered
35Year-end closeYear-End Close (load balances → post)🟢 Covered

3. Video Storyboard — 7 Scenes, ~12 Minutes

Each scene maps to a CSD actor (Jane Smith, Sam Jones, Melissa Roberts) doing real work on the same data the demo script spells out (Georgia Power OOB, Grant Revenue swap, HVAC draft JE, March 2025 period close).

Scene 1 · Opening — The Three-Ledger Problem

0:00–0:45

Visual

Cold open on Jane Smith (GL Manager) opening her morning worklist. Dashboard shows pending approvals, period-close countdown ("2 days until March 2025 close"), and 3 out-of-balance alerts.

Voice-over

"CSD's General Ledger is the single source of truth for $62M in revenue and $50M in expenditures across General Fund, Special Revenue, School Nutrition, and Capital Projects. One period close per month — eleven tasks, three owners, zero tolerance for out-of-balance entries. Here's how Missio runs it."

Pages shown: /account/dashboard (finance tab) · /account/period-close (index) · /account/je-approvals

Scene 2 · Chart of Accounts with Change Control

0:45–2:15

Visual

Jane opens Chart of Accounts. Columns: Account #, Name, Type, Frozen, Operating Unit, Required Dimensions. She filters to "Fund 100 / Function 1000 / Object 610" — the Supplies account family. Clicks one account to show Available Balance (posted $38k, encumbered $12k, YTD remaining $8k).

Then: Sam requests a new object code "618 — Digital Textbooks". Goes through CoA Change Request: fills form with reason, attaches memo, submits. Jane receives in her approvals inbox, clicks Approve. COA updates in real time.

Finally Jane clicks Toggle Freeze on a deprecated account — it's now blocked from posting. If a user tries to add a JE line to it, the UI rejects with "Account is frozen — posting blocked".

Voice-over

"Chart of Accounts isn't just a list — it's a controlled vocabulary. New segments require a workflow approval with justification. Deprecated ones get frozen, not deleted, preserving history. And Required Dimension rules (Fund + Program + Function + Object + School + Project) live here — so every line that posts to this account carries its full reporting context."

CSD demo-script hits: #1 (COA structure + tracking), #2 (block for posting), #6 (validation rules), #7 (approval workflow for new segments), #30 (available balance), #32 (validate COA string).
Pages shown: /account/chart-of-accounts · /account/chart-of-accounts/account-balance · /account/chart-of-accounts/dimension-requirements · /account/coa-change-requests (create + approve flow)

Scene 3 · Master Data & Dimensions — The Six Codes

2:15–3:15

Visual

Jane opens Master Data Categories. Six categories: Fund, Program, Function, Object, School, Project. She clicks "School" — shows the 5 CSD locations (Decatur High, Oakhurst Elementary, Glennwood Elementary, Beacon Hill Middle, Renfroe Middle) with their activation toggles. Adds a sixth: "Talley Street Upper Elementary" — effective July 2026. Row appears immediately in every downstream dropdown.

On-screen action

Quick cut to JE create form — Talley Street now appears in the School dimension dropdown on line 1. Jane selects it, and a small 🟢 indicator confirms the account's dimension requirements are now satisfied.

CSD demo-script hits: #3 (unlimited user-defined categories), #32 (COA string validation).
Pages shown: /account/master-data-categories

Scene 4 · JE Lifecycle — Draft → Approve → Post → Reverse

3:15–6:00

Visual — Part A: Create + OOB catch

Sam Jones opens the JE list, clicks + New Journal Entry. Drawer opens with 2 lines. Sam attempts to enter the Georgia Power scenario as-posted-incorrectly: $68,000 DR / $63,000 CR. Clicks Save Draft. Missio's validator fires inline: "Out of balance: debits $68,000.00 ≠ credits $63,000.00". Sam corrects to $63,000 — save succeeds as draft.

Visual — Part B: Attach + Duplicate

Sam opens the JE show page, clicks Attach — uploads the Georgia Power invoice PDF + signed approval memo. Attachments visible before approval. Then from the JE list kebab → Duplicate — a new draft opens dated today, memo pre-filled "Copy of JE-2026-00045 — Georgia Power May 2025". Lines + dimensions carry over. User just changes the date and posts May's recurring bill as a fresh JE.

Visual — Part C: Upload Excel

Cut to Jane. She has a 200-line allocation JE from the grant team. Opens Upload Excel, downloads the template, pastes from the grant team's spreadsheet, uploads. Preview screen shows all 200 lines, validation errors highlighted (3 accounts frozen, 2 lines unbalanced). Jane fixes in the Excel, re-uploads, clicks Commit. JEs appear grouped by je_group — one balanced JE per group.

Visual — Part D: Approve + Post + Reverse

Draft hits the JE Approvals Inbox (threshold $50k+). Melissa Roberts (Exec) sees it with full attachment preview. She approves with a comment. JE auto-posts to Frappe. Later a transaction is discovered to be wrong — Melissa clicks Reverse Entry on the kebab. Confirmation prompt, then a CANCELLED badge on the original. Frappe voucher cancelled (not deleted). Audit trail preserved.

CSD demo-script hits: #4 (auto-post via Frappe), #15 (JE inquiry + drill), #20 (balanced per business unit), #21 (validate as entered), #22 (reverse + delete-if-draft), #23 (pending JE notifications), #24 (attachments + copy JE — our new Duplicate), #25 (Excel upload), #26 (attachments before approval), #27 (reference # for grants), #28 (all JE types), #33 (audit trail).
Pages shown: /account/journal-entries · /account/journal-entries/create (modal) · /account/journal-entries/{id} (show + attachments) · /account/journal-entries/{id}/edit · /account/journal-entries/{id}/duplicate · /account/journal-entries/upload-excel · /account/je-approvals

Scene 5 · Recurring JEs + Auto-Reverse

6:00–7:15

Visual

Jane opens Recurring JEs. Shows the monthly bus-fuel accrual template: amount $45k, recurrence monthly, auto-reverse 2 days after posting. She creates a new template for the State Health Insurance monthly accrual ($687k / 12). Fills lines, clicks Submit for Approval. Goes to Melissa — she approves. Template is now active + pre-approved — next spawned JE auto-posts without a per-JE approval because the template was approved (Model B).

Cut to next month: the spawned JE appears in the list with a tag "⚡ from template · auto-posted". Two days later, the reversal appears automatically on the GL.

Voice-over

"CSD runs 40+ recurring accruals a month. Missio's recurring engine approves the template once — then every monthly spawn auto-posts without re-approval, unless someone modifies a line. Auto-reverse on Day-of-Month-2 is baked into the template, not managed by hand."

CSD demo-script hits: #5 (auto-reversals), #28 (recurring, templates, scheduling, auto-reversals).
Pages shown: /account/recurring-jes · /account/recurring-jes/create · /account/recurring-jes/{id} (show + approval)

Scene 6 · Reporting & Drill-Down — The Full Financial Stack

7:15–9:30

Visual — Trial Balance

Melissa opens Trial Balance. Filters: period 03/01/2025–03/31/2025, basis Modified Accrual. Report renders with Fund → Function → Object grouping and subtotals. Exports to Excel with one click. Toggles to GAAP basis — totals change because depreciation lines now appear.

Visual — Drill to Account Detail

Melissa sees Supplies (Object 610) at $847k YTD and clicks in. Landed on Account Detail with every JE touching that account, by date. Clicks a $12.5k line from 4/14/26 — drills into the JE show page, sees it came from AR invoice Karoline Durbin. "From COA → Trial Balance → Account Detail → JE → source invoice" in four clicks.

Visual — Income Statement + Balance Sheet

Cut to Income Statement + Balance Sheet side by side. Income Statement: custom date range 10/01/2024–09/30/2025 (shifted fiscal year for school-year reporting — a CSD script-specific ask). Balance Sheet shows Net Position by restriction class (Capital, Food, State Grants, Unrestricted) matching CSD's governmental reporting structure.

Visual — Cash Flow + Saved Queries

Jane runs Cash Position — today's balance + 30-day rolling forecast across operating, payroll, concentration. Saves it as a Saved Query so the Cabinet sees it every Monday. Demonstrates security scoping: Patrice Allison (Oakhurst Bookkeeper) only sees her school's accounts.

CSD demo-script hits: #8 (cash/accrual/modified basis switch), #12 (ad-hoc queries w/ security), #13 (subtotals + function grouping), #14 (full financial statement set), #15 (JE inquiry + drill), #18 (summary → detail drill), #29 (which JEs aren't interfaced — filterable), #31 (sub-ledger to GL recon).
Pages shown: /account/finance/reports/trial-balance · /account/finance/reports/account-detail · /account/finance/reports/balance-sheet · /account/reports/income-expense-report · /account/cash-flow · /account/cash-position · /account/finance/other/saved-queries

Scene 7 · Period Close + Year-End

9:30–12:00

Visual — 11-Task Checklist

Jane opens Period Close. March 2025 calendar appears with all 11 tasks from CSD's script (Revise Schedule → Verify Recurring JEs → Update Fixed Asset Schedule → Preliminary Bank Rec → Period-End Close → Generate Reports → Close AP & AR → Update BS Schedules → Complete FS → Distribute Closing Package → Distribute Externally). Owner + due-date shown per task. Dependencies rendered visually.

Visual — The Payroll Discrepancy

On Task 2 (Verify Recurring JEs), a red dot: George Ramirez underpayment detected. Jane clicks in — sees the affected JE, adjusts, routes the correction through a dynamic approval workflow. Task flips to ✅ green.

Task 3 runs the depreciation post for the two buses ($719k), Task 5 closes the March period (all JEs with posting_date ≤ 3/31 are locked), Task 6 auto-generates the reporting package.

Visual — Prior Period Adjustment

Per the Grant Revenue script — Local Share Costs and Grant Reimbursement columns were swapped in a December 2024 JE. Jane opens Prior Period Adjustments, reopens December (authorized), posts the adjusting JE with a required Adjustment Reason ("Reclassify Grant 001 + 002 Local Share / Reimbursement per CFO memo 2026-02"). The adjustment posts to the reopened period. December re-closes automatically once the task completes.

Visual — Year-End

Jump to 6/30/2026. Jane opens Year-End Close. Loads FY balances. Single Post button: Missio zeros all revenue + expenditure accounts to Fund Balance, carries forward Balance Sheet accounts, creates opening balances for FY27. Audit log shows who ran it, when, which fund. Every movement links back to the underlying JE.

CSD demo-script hits: #10 (flexible closing), #16 (close calendar + dependencies + escalation), #17 (driven dates + change log), #19 (close modules independently + JE to open period), #34 (prior period adjustments), #35 (year-end close + Fund Balance roll).
Pages shown: /account/period-close · /account/period-close/{id}/checklist · /account/journal-entries/prior-period-adjustments · /account/year-end-close

4. All GL Pages Inventory (what's built today)

Every GL-related page in Missio, grouped by section. Use this as the "don't forget to click here" checklist during demo prep.

Chart of Accounts & Master Data

Chart of Accounts
GET /account/chart-of-accounts
Full COA list with filters, freeze toggle, export. Drill to Account Balance for any row.
Account Balance Inquiry
GET /account/chart-of-accounts/account-balance
Single-account detail: posted / encumbered / YTD / available. Demo-script #30.
Dimension Requirements
GET /account/chart-of-accounts/dimension-requirements
Per-account rules for which dimensions (Fund/Program/Function/Object/School/Project) are required. Validator runs on every JE/AP/AR line. Demo-script #6, #32.
CoA Change Requests
GET /account/coa-change-requests
Submit new/modified accounts through approval workflow. Attach memos. Approve/Reject. Demo-script #1, #7.
Master Data Categories
GET /account/master-data-categories
Unlimited custom dimension categories + values. Fund, Program, Function, Object, School, Project codes lived here. Demo-script #3.

Journal Entries

JE List
GET /account/journal-entries
All JEs with filters (basis / status / source). Kebab: View, Edit (draft), Duplicate (any), Post, Reverse Entry. Demo-script #15, #22, #29.
New JE (modal)
GET /account/journal-entries/create
Drawer form — header + lines + dimensions. Real-time balance validator. Period-auto-detect. Template-spawn. Demo-script #21, #27, #28.
Edit Draft JE (NEW, today)
GET /account/journal-entries/{id}/edit
Same drawer, prefilled. Guard: draft-only. Demo-script #22 (delete-if-unposted analogue).
Duplicate JE (NEW, today)
POST /account/journal-entries/{id}/duplicate
Any status → new draft with copied_from_je_id. Demo-script #24 (copy JE from current/prior).
JE Show
GET /account/journal-entries/{id}
Header + lines + attachments + audit log + actions.
Upload Excel JE
GET /account/journal-entries/upload-excel
Template download + paste-in preview + commit. Groups rows by je_group into balanced JEs. Demo-script #25.
Prior Period Adjustments
GET /account/journal-entries/prior-period-adjustments
Dedicated flow for adjustments to reopened/closed periods. Requires Adjustment Reason. Demo-script #34.
JE Approvals Inbox
GET /account/je-approvals
Threshold-based (amount ≥ $50k by default). Full attachment preview. Approve/Reject. Demo-script #23, #26.

Recurring & Automation

Recurring JE Templates
GET /account/recurring-jes
Template list — status (draft / approved / paused). Auto-reverse offset days per template. Demo-script #5, #28.
New / Edit Template
GET /account/recurring-jes/create + show
Create + submit for approval + run-now + pause/resume.

Banking & Cash

Bank Imports (BAI)
BAI file upload + BAI Code Map
Parse BAI-2 files, map BAI codes to GL accounts, auto-post lockbox + ACH + interest. Demo-script #11.
BAI Code Map
GET /account/bai-code-map
Per-BAI-code routing rules.
AR Suspense
GET /account/ar-suspense
Unidentified payments landing zone. Apply to invoice later. Cash Receipts script.
Cash Position
GET /account/cash-position
Today + 30-day forward balance by account. Cash Receipts script.
Wire Requests
GET /account/wire-requests
Initiate wire, require GL coding before processing, approval workflow. Cash Receipts script.

Reporting

Trial Balance
GET /account/finance/reports/trial-balance
By period + basis. Multi-column grouping (Fund / Function / Object). Export. Demo-script #14.
Balance Sheet
GET /account/finance/reports/balance-sheet
With Net Position by restriction class. Export. Demo-script #14.
Account Detail
GET /account/finance/reports/account-detail
Per-account ledger — every JE line touching that account. Drill to JE. Demo-script #15, #18.
Income / Expense Report
GET /account/reports/income-expense-report
Configurable revenue vs expenditure report w/ custom date range.
Cash Flow
GET /account/cash-flow
Operating / investing / financing sections.
Saved Queries
GET /account/finance/other/saved-queries
User-authored queries with role-based visibility. Demo-script #12.
General Ledger
GET /account/general-ledger
Landing hub with tile-summary of GL health: draft JEs, pending approvals, OOB alerts.
SEFA Report
GET /account/grant-sefa-report
Schedule of Expenditures of Federal Awards — cross-references JE reference field to grant sources. Demo-script #27.

Close

Period Close
GET /account/period-close
Calendar + 11-task checklist + status dashboard + reopen. Demo-script #10, #16, #17, #19.
Year-End Close
GET /account/year-end-close
Load balances + Post. Zeros revenue/expense to Fund Balance. Carry-forward balance sheet. Demo-script #35.

5. Gaps / Things to Narrate Around

The three items marked 🟡 in the coverage matrix — prepare a talking point rather than hoping CSD doesn't ask.

#9 — GASB statement-level compliance
Our financial reports are GASB-structured but we don't ship a pre-built "GASB 34 Government-Wide Financial Statements" template. Narrative: walk through Balance Sheet + Income Statement and explicitly point out Net Position by restriction class + major governmental fund columns — this is GASB 34's core. For Statement of Activities, offer a post-sale config session.
#17 — Driven dates dashboard + email + change log
Period Close has driven dates on each checklist item but we don't currently ship email escalation. Narrative: show the dashboard + task dependencies, say "email notifications are configured at the role level via our standard notification engine" and pivot to Workflow.
#31 — Sub-ledger to GL reconciliation report
We post AP/AR/Payroll through Frappe posters, but there's no dedicated "AP subledger vs GL AP account OOB report" page. Narrative: on Account Detail, filter to the AP Control account — every line traces back to its AP invoice JE. Offer to show the Frappe posting log for forensic-level recon.
#33 — Audit trail on JE changes
We have updated_at + created_by on JE/JE lines but not a field-level change log. Narrative: show the created/posted/cancelled timestamps on the JE show page and point to the JE Approvals Inbox history section which records who did what. If CSD probes for line-level change history, it's a post-sale enhancement.

Generated 2026-04-21 · Missio GL Engine · See also /public/docs/gl-integration-report.html + /public/docs/gl-test-checklist.html