small-shop-ledger / UI_DESIGN.md
keshan's picture
Submit Small Shop Ledger to Build Small Hackathon
3e02e4b verified
|
Raw
History Blame Contribute Delete
4.02 kB
# UI Design And Layout System
Small Shop Ledger is organized as a small-shop operating cockpit, not a
generic Gradio demo. The layout is designed for a shopkeeper who wants to move
from messy capture to concrete action without hunting through many equal tabs.
Product tagline: Messy notes in. Clear books by closing time.
## Product Shape
The screen is split into four operating zones:
```text
Status strip
Model status, row count, and session health
Shop OS Cockpit
Capture rail | Shop Pulse center | Ledger Assistant rail
Action Inbox
Follow-ups, review items, and anomaly signals
Workbenches
People memory and ledger archive
```
This keeps the most common loop visible:
1. Capture a note, voice clip, or document.
2. Watch the ledger pulse update.
3. Ask the assistant what matters.
4. Clear actions before exporting.
## Cockpit Layout
### Capture Rail
The left rail owns all intake:
- written note
- voice note
- document upload
- input conflict selector
- currency
- add and clear controls
- example notes
The rail stays sticky on desktop because the user should always be able to add
the next note without scrolling back to the top. On mobile it becomes a normal
stack.
### Shop Pulse Center
The center column is the primary attention area:
- live KPI dashboard
- chart composer
- chart director
- main Plotly graph
- supporting signal graphs
- shop pulse timeline
- field intelligence
This is where the app turns ledger rows into a story. The chart composer lets
Gemma or the deterministic fallback pick a safe chart spec from a plain-language
question, while the timeline makes the day feel visible.
### Ledger Assistant Rail
The right rail is a persistent co-pilot:
- running totals and reminders
- LLM Daily Brief
- full Ask My Ledger chat
- voice question mode
- prompt suggestions
- command palette
- daily closing ritual
The assistant rail is sticky on desktop because questions and actions should be
available while the user scans charts, reminders, or the archive.
## Action Inbox
The Action Inbox merges three previously separate areas:
- follow-up automation
- review desk
- anomaly lantern
The user-facing cards appear first. The heavier operational tables are tucked
inside an accordion for demos and deeper inspection. This avoids making the app
look like a spreadsheet while preserving the export/review detail.
## Workbenches
The remaining tabs are intentionally few:
| Workbench | Purpose |
| --- | --- |
| People | Counterparty memory, trust pulse, and party totals. |
| Ledger Archive | Raw ledger rows, CSV export, categories, closing checklist, and event table. |
This replaces the older one-tab-per-feature structure. Features now live where
the user expects them rather than competing as top-level destinations.
## Styling Rules
- Dark theme is the default.
- Cards use an 8px radius and thin ledger-colored borders.
- The app avoids a single-hue palette: green means money/healthy, gold means
attention, red means risk, and blue means insight.
- Plotly figures inherit the same background, grid, and hover label treatment.
- Raw data tables are secondary surfaces, not the first thing the user sees.
- Desktop uses a three-zone cockpit; mobile collapses into one column.
## Demo Flow
For the hackathon video, the recommended flow is:
1. Add a messy text note.
2. Upload a bill or receipt.
3. Point to the Shop Pulse center: KPIs, graph, and timeline update.
4. Ask "Who owes me most?" in the assistant rail.
5. Generate the daily brief.
6. Show the Action Inbox with follow-up/review/anomaly cards.
7. Open People to show memory cards.
8. Open Ledger Archive and export CSV.
## Implementation Map
The layout lives in `shop_ledger/ui.py`.
Important CSS hooks:
- `#cockpit-shell`
- `#input-dock`
- `#pulse-core`
- `#assistant-rail`
- `#action-inbox`
- `#action-grid`
- `#workbench-tabs`
- `#people-workbench`
- `#ledger-archive`
The insight content still comes from `shop_ledger/insights.py`, which keeps
layout and business logic separated.