diff --git a/layout-review/01_deduplicator.html b/layout-review/01_deduplicator.html index e396728..16246fa 100644 --- a/layout-review/01_deduplicator.html +++ b/layout-review/01_deduplicator.html @@ -19,27 +19,27 @@

Find Duplicates

- +
+ + + + + + Runs 100% locally + + +

Find rows that repeat, then keep one and remove the extras.

- - -
-
- upload_file Drag and drop file here - Up to 1.5 GB · CSV, TSV, XLSX, XLS · encoding & delimiter auto-detected -
- -
-
- - customers_export.csv - 2.1 MB - + +
+ description + Using customers_export.csv from the upload screen.
+ @@ -181,6 +181,8 @@
+
arrow_forwardDuplicates handled — your file is cleaned. Review the result or Back to Start here →
+ diff --git a/layout-review/02_text_cleaner.html b/layout-review/02_text_cleaner.html index 3473806..188b6fe 100644 --- a/layout-review/02_text_cleaner.html +++ b/layout-review/02_text_cleaner.html @@ -27,27 +27,27 @@

Clean Text

- +
+ + + + + + Runs 100% locally + + +

Trim extra spaces and strip out odd characters.

- - -
-
- upload_file Drag and drop file here - Up to 1.5 GB · CSV, TSV, XLSX, XLS · encoding auto-detected -
- -
-
- - contacts_messy.csv - 684 KB - + +
+ description + Using contacts_messy.csv from the upload screen.
+
@@ -89,8 +89,8 @@
minimal: trim and collapse whitespace only — no character substitutions.
- excel-hygiene: trim, collapse whitespace, fold smart quotes, strip invisible chars, normalize line endings, NFC.
- paranoid: everything in excel-hygiene plus strip control characters, strip BOM, and NFKC compatibility fold (lossy). + excel-hygiene: trim, collapse whitespace, fold smart quotes, strip invisible chars, normalize line endings, and normalize accented characters.
+ paranoid: everything in excel-hygiene plus strip control characters, strip BOM, and normalize accented and look-alike characters (lossy).
@@ -108,8 +108,8 @@
check Fold smart characters (curly quotes, em-dash, NBSP)
check Strip zero-width / invisible characters
-
check Unicode NFC normalization
-
Unicode NFKC compat fold (lossy: ① → 1, fi → fi)
+
check Normalize accented characters (NFC)
+
Normalize accented and look-alike characters (lossy: ① → 1, fi → fi)
@@ -211,6 +211,9 @@ + +
arrow_forwardText cleaned. Next, most files need: Standardize Formats →
+ diff --git a/layout-review/03_format_standardizer.html b/layout-review/03_format_standardizer.html index 8faacb3..ed6ffb5 100644 --- a/layout-review/03_format_standardizer.html +++ b/layout-review/03_format_standardizer.html @@ -19,7 +19,16 @@

Standardize Formats

- +
+ + + + + + Runs 100% locally + + +

Make dates, phones, currency, and names look the same throughout.

@@ -81,7 +90,7 @@
- US (default) — ISO 8601 dates · E.164 phones · USD + US (default) — ISO 8601 dates · international-format phones (+1…) · USD European — DMY input · INTL phones · EUR comma decimal base UK — DD/MM/YYYY · GB phones · Yes/No booleans ISO Strict — ISO 8601 · bare-number currency · true/false @@ -111,7 +120,7 @@

Phones

-
E.164 (+15551234567)
+
Standard international format (+15551234567)
US
@@ -244,6 +253,9 @@
+ +
arrow_forwardFormats standardized. Next, most files need: Fix Missing Values →
+
diff --git a/layout-review/04_missing_handler.html b/layout-review/04_missing_handler.html index 53aca8e..9d47537 100644 --- a/layout-review/04_missing_handler.html +++ b/layout-review/04_missing_handler.html @@ -19,28 +19,27 @@

Fix Missing Values

- +
+ + + + + + Runs 100% locally + + +

Find blank cells (even hidden ones) and fill them in or remove them.

- -

Tip: files imported on the Home screen are picked up here automatically.

- -
-
- upload_file Drag and drop file here - Up to 1.5 GB · CSV, TSV, XLSX, XLS -
- -
-
- - survey_responses.csv - 684 KB - + +
+ description + Using survey_responses.csv from the upload screen.
+
@@ -117,9 +116,9 @@

Detection

check Standardize disguised nulls to NaN
- +
N/A, n/a, NA, NULL, null, None, -, --, ?, #N/A
-
Matched case-insensitively after stripping whitespace.
+
Text that really means “empty.” Matched case-insensitively after stripping whitespace.
@@ -253,6 +252,8 @@
+
arrow_forwardMissing values handled. Next, most files need: Find Duplicates →
+ diff --git a/layout-review/05_column_mapper.html b/layout-review/05_column_mapper.html index 89bbcbe..2656b55 100644 --- a/layout-review/05_column_mapper.html +++ b/layout-review/05_column_mapper.html @@ -19,7 +19,16 @@

Map Columns

- +
+ + + + + + Runs 100% locally + + +

Rename columns, change their order, and set each one as text, number, or date.

@@ -65,9 +74,9 @@
Build interactively (start from current columns) Import schema JSON - Skip (rename / coerce only — no schema) + Skip (rename / convert types only — no schema)
-
An interactive build is fastest for one-off cleanup. Import a JSON when you have a fixed contract (a CRM import format, db schema). Skip when you only want to rename or coerce specific columns.
+
An interactive build is fastest for one-off cleanup. Import a JSON when you have a fixed contract (a CRM import format, db schema). Skip when you only want to rename or convert the type of specific columns.

Edit the table to define your target schema. Add rows for fields the input doesn't have yet (with a default), or remove rows for columns you want to drop.

@@ -119,8 +128,8 @@
rename-only (just rename, leave types alone, keep extras) - lenient-schema (rename + coerce + reorder, keep extras) - strict-schema (rename + coerce + reorder, drop extras) base + lenient-schema (rename + convert types + reorder, keep extras) + strict-schema (rename + convert types + reorder, drop extras) base Custom — based on strict-schema, 1 control changed modified
@@ -141,7 +150,7 @@
keep
Winning value: keep. Overrides the strict-schema base (drop) — so Notes survives into the output.
-
check Coerce types per schema
+
check Convert each column to the right type
check Reorder to schema order
@@ -200,6 +209,9 @@
+ +
arrow_forwardColumns mapped. Run the recommended clean →
+ diff --git a/layout-review/06_outlier_detector.html b/layout-review/06_outlier_detector.html index 4d73b4c..3f9e164 100644 --- a/layout-review/06_outlier_detector.html +++ b/layout-review/06_outlier_detector.html @@ -12,7 +12,7 @@
visibility - Static layout preview of Find Unusual Values — a Coming Soon tool. The page is a stub/teaser: an "under development" notice and disabled placeholder controls. All pages → + Static layout preview of Find Unusual Values — a Coming Soon tool. The page is a stub: a "coming soon" notice, a plain-English list of what the tool will do, and a single "Notify me" action. All pages →
@@ -25,36 +25,26 @@
- +
info - This tool is under development. + This tool is coming soon.
+ +

What it will do:

+ +
- -

Detection Method

- -
- -
IQR (interquartile range)
-
- -
- -
1.5
-
- -

Handling

- -
- -
Flag only (add column)
-
- -
- +
diff --git a/layout-review/07_multi_file_merger.html b/layout-review/07_multi_file_merger.html index c25a344..aa42434 100644 --- a/layout-review/07_multi_file_merger.html +++ b/layout-review/07_multi_file_merger.html @@ -12,7 +12,7 @@
visibility - Static layout preview of Combine Files — a Coming-Soon tool. The page is a stub: an "under development" notice, a planned-features list, a working multi-file uploader, and disabled placeholder options. All pages → + Static layout preview of Combine Files — a Coming Soon tool. The page is a stub: a "coming soon" notice, a plain-English list of what the tool will do, and a single "Notify me" action. All pages →
@@ -23,56 +23,28 @@

Combine several CSV or Excel files into one — even if columns differ.

- +
+ +
info - This tool is under development. + This tool is coming soon.
- -

Features:

-
diff --git a/layout-review/08_validator_reporter.html b/layout-review/08_validator_reporter.html index ab70f04..4dafd96 100644 --- a/layout-review/08_validator_reporter.html +++ b/layout-review/08_validator_reporter.html @@ -12,7 +12,7 @@
visibility - Static layout preview of Quality Check, a Coming-Soon tool. The page is a stub: an "under development" notice, a feature list, a working file uploader, and disabled placeholder controls. All pages → + Static layout preview of Quality Check — a Coming Soon tool. The page is a stub: a "coming soon" notice, a plain-English list of what the tool will do, and a single "Notify me" action. All pages →
@@ -25,55 +25,26 @@
- +
info - This tool is under development. + This tool is coming soon.
- -

Features:

+ +

What it will do:


- - -
-
- upload_file Drag and drop file here - Import a file to preview. Processing is not yet available. -
- -
- - -

Validation Rules

- -
- -
- Choose options -
-
- -

Report Format

- -
- -
Excel (flagged rows)
-
- -
- - +
diff --git a/layout-review/09_pipeline_runner.html b/layout-review/09_pipeline_runner.html index f7aedf1..4c3de7e 100644 --- a/layout-review/09_pipeline_runner.html +++ b/layout-review/09_pipeline_runner.html @@ -19,7 +19,16 @@

Automated Workflows

- +
+ + + + + + Runs 100% locally + + +

Run several tools in a row — save the steps once, reuse them anytime.

@@ -74,7 +83,7 @@
- Use the recommended default (text-clean → format → missing → dedup) · modified + Use the recommended default (Clean Text → Standardize → Fix Missing → Find Duplicates) · modified Build interactively Import a saved pipeline JSON
@@ -108,7 +117,7 @@ ≡ 0 - text_clean +
Clean Text
Trim spaces, collapse repeats, leave case as-is
check tune Configure expand_more @@ -117,7 +126,7 @@
- Configure: text_clean + Configure: Clean Text
check Trim leading & trailing whitespace
check Collapse repeated spaces to one
@@ -134,7 +143,7 @@ ≡ 1 - format_standardize +
Standardize Formats
Format phone as phone, signup_date as a date
check tune Configure chevron_right @@ -143,7 +152,7 @@
- Configure: format_standardize + Configure: Standardize Formats

Choose a target format for each column. Columns left as “Leave as-is” are untouched.

@@ -165,7 +174,7 @@ ≡ 2 - missing +
Fix Missing Values
Flag blank cells (treat “N/A” and “—” as blank)
check tune Configure chevron_right @@ -174,7 +183,7 @@
- Configure: missing + Configure: Fix Missing Values
@@ -197,7 +206,7 @@ ≡ 3 - dedup +
Find Duplicates
Match on email & phone; keep the most complete row, merge in missing fields
check tune Configure chevron_right @@ -210,7 +219,7 @@
- Configure: dedup + Configure: Find Duplicates
diff --git a/layout-review/10_pdf_extractor.html b/layout-review/10_pdf_extractor.html index 1dbf5ae..5e68f6c 100644 --- a/layout-review/10_pdf_extractor.html +++ b/layout-review/10_pdf_extractor.html @@ -19,7 +19,16 @@

PDF to CSV

- +
+ + + + + + Runs 100% locally + + +

Pull transactions out of bank-statement PDFs into a clean CSV file.

diff --git a/layout-review/11_reconciler.html b/layout-review/11_reconciler.html index a867b3e..dcd323f 100644 --- a/layout-review/11_reconciler.html +++ b/layout-review/11_reconciler.html @@ -19,7 +19,16 @@

Reconcile Two Files

- +
+ + + + + + Runs 100% locally + + +

Compare two lists of transactions (e.g. bank vs. ledger) and flag what doesn't match.

@@ -30,18 +39,11 @@

Left (e.g. bank feed)

-
-
- upload_file Drag and drop file here - CSV, TSV, XLSX, XLS -
- -
-
- - bank_feed_may.csv - 214 KB +
+ description + Using bank_feed_may.csv from the upload screen.
+

bank_feed_may.csv — 1,204 rows, 4 columns

Preview left (e.g. bank feed) @@ -63,18 +65,11 @@

Right (e.g. ledger)

-
-
- upload_file Drag and drop file here - CSV, TSV, XLSX, XLS -
- -
-
- - ledger_may.xlsx - 96 KB +
+ description + Using ledger_may.xlsx from the upload screen.
+

ledger_may.xlsx — 1,198 rows, 5 columns

Preview right (e.g. ledger) diff --git a/layout-review/app.css b/layout-review/app.css index 9ce8263..d853e7b 100644 --- a/layout-review/app.css +++ b/layout-review/app.css @@ -122,6 +122,19 @@ code, .dt-mono { font-family: var(--font-mono); font-size: 0.92em; font-feature- .dt-nav-link .dt-mi { font-family: "Material Symbols Outlined"; font-size: 18px; color: var(--ink-secondary); line-height: 1; } .dt-nav-link.is-active .dt-mi { color: var(--ink); } .dt-nav-link.is-soon { opacity: 0.55; } + +/* "Start here" front-door item — weightier than ordinary nav links so the + obvious entry point reads at a glance. Accent-fill ground + accent-hover ink, + slightly larger hit area, with bottom margin to part it from the groups below. + Layers on .dt-nav-link, so the .is-active treatment still overrides cleanly. */ +.dt-nav-start { + background: var(--accent-fill); color: var(--accent-hover); font-weight: 600; + padding: 8px 10px; margin-bottom: 12px; +} +.dt-nav-start:hover { background: var(--accent-fill-strong); color: var(--accent-hover); } +.dt-nav-start .dt-mi { color: var(--accent); } +.dt-nav-start.is-active { background: var(--accent-fill-strong); color: var(--accent-hover); } +.dt-nav-start.is-active .dt-mi { color: var(--accent); } .dt-nav-soon-tag { margin-left: auto; font-size: 9px; font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase; color: var(--ink-tertiary); @@ -288,6 +301,24 @@ code, .dt-mono { font-family: var(--font-mono); font-size: 0.92em; font-feature- .dt-alert.error { background: var(--danger-fill); color: var(--danger); } .dt-alert code { background: rgba(0,0,0,0.05); padding: 1px 5px; border-radius: 4px; } +/* Next-step strip — slim single-line "what to do next" suggestion shown at the + end of a tool's results. Subtle accent ground + left accent rule so it nudges + without competing with alerts; the trailing dismiss control is unobtrusive. */ +.dt-next-step { + display: flex; align-items: center; gap: 10px; + background: var(--accent-fill); border-left: 3px solid var(--accent); + border-radius: var(--r-md); padding: 10px 14px; margin: 16px 0; + font-size: 13.5px; line-height: 1.4; color: var(--ink); +} +.dt-next-step .dt-mi { font-family: "Material Symbols Outlined"; font-size: 18px; color: var(--accent); flex-shrink: 0; } +.dt-next-step a { color: var(--accent); font-weight: 500; } +.dt-next-step a:hover { color: var(--accent-hover); } +.dt-next-step-dismiss { + margin-left: auto; background: transparent; border: none; cursor: pointer; + color: var(--ink-tertiary); font-size: 13px; line-height: 1; padding: 2px 4px; +} +.dt-next-step-dismiss:hover { color: var(--ink-secondary); } + /* =========================================================================== Inputs (static representations of Streamlit widgets) =========================================================================== */ diff --git a/layout-review/home.html b/layout-review/home.html index 38557da..6f2d8cb 100644 --- a/layout-review/home.html +++ b/layout-review/home.html @@ -96,6 +96,44 @@
+ +
+
+ + auto_awesome + +
+

Recommended

+

Runs the recommended clean — fix text, standardize formats, fill blanks, remove duplicates — in the right order, then hands you the cleaned file.

+
+ +
+ +
+ 1 · Clean Text + arrow_forward + 2 · Standardize + arrow_forward + 3 · Fix Missing + arrow_forward + 4 · Find Duplicates + Result downloads when finished +
+
+ + +

Or fix issues one at a time

+

Prefer to handle things yourself? Open any finding to jump straight to the right tool.

+
diff --git a/layout-review/shell.js b/layout-review/shell.js index 68aecc9..94c55f7 100644 --- a/layout-review/shell.js +++ b/layout-review/shell.js @@ -3,28 +3,32 @@ src/gui/components/_legacy.py:render_sticky_footer(). Each page sets to mark the active nav item. */ (function () { - // Sections + entries in the same order app.py registers them. + // Front-door entry — rendered standalone above the section groups. + var START = { id: "home", icon: "insert_chart_outlined", name: "Start here", href: "home.html" }; + + // Sections + entries in pipeline / job order. var NAV = [ - { label: "Analysis", items: [ - { id: "home", icon: "insert_chart_outlined", name: "File Analysis", href: "home.html" }, - { id: "11_reconciler", icon: "compare_arrows", name: "Reconcile Two Files", href: "11_reconciler.html" }, - ]}, { label: "Data Cleaners", items: [ - { id: "04_missing_handler", icon: "help_outline", name: "Fix Missing Values", href: "04_missing_handler.html" }, - { id: "06_outlier_detector", icon: "insights", name: "Find Unusual Values", href: "06_outlier_detector.html", soon: true }, { id: "02_text_cleaner", icon: "text_format", name: "Clean Text", href: "02_text_cleaner.html" }, { id: "03_format_standardizer", icon: "format_list_bulleted", name: "Standardize Formats", href: "03_format_standardizer.html" }, + { id: "04_missing_handler", icon: "help_outline", name: "Fix Missing Values", href: "04_missing_handler.html" }, { id: "01_deduplicator", icon: "search", name: "Find Duplicates", href: "01_deduplicator.html" }, - { id: "08_validator_reporter", icon: "check_circle", name: "Quality Check", href: "08_validator_reporter.html", soon: true }, ]}, { label: "Transformations", items: [ { id: "05_column_mapper", icon: "view_column", name: "Map Columns", href: "05_column_mapper.html" }, - { id: "07_multi_file_merger", icon: "account_tree", name: "Combine Files", href: "07_multi_file_merger.html", soon: true }, - { id: "10_pdf_extractor", icon: "picture_as_pdf", name: "PDF to CSV", href: "10_pdf_extractor.html" }, ]}, { label: "Automations", items: [ { id: "09_pipeline_runner", icon: "auto_awesome", name: "Automated Workflows", href: "09_pipeline_runner.html" }, ]}, + { label: "Finance", items: [ + { id: "11_reconciler", icon: "compare_arrows", name: "Reconcile Two Files", href: "11_reconciler.html" }, + { id: "10_pdf_extractor", icon: "picture_as_pdf", name: "PDF to CSV", href: "10_pdf_extractor.html" }, + ]}, + { label: "Coming soon", items: [ + { id: "06_outlier_detector", icon: "insights", name: "Find Unusual Values", href: "06_outlier_detector.html", soon: true }, + { id: "08_validator_reporter", icon: "check_circle", name: "Quality Check", href: "08_validator_reporter.html", soon: true }, + { id: "07_multi_file_merger", icon: "account_tree", name: "Combine Files", href: "07_multi_file_merger.html", soon: true }, + ]}, ]; var active = document.body.getAttribute("data-page") || ""; @@ -41,8 +45,13 @@ '' + '' + '