# TallyFlow Scout **Status:** Active product (app **v0.6.2+14** as of 2026-07-30 review; master `0e37633`) **Repo:** `tallyflow-assets-iot` (package `tallyflow_scout`) **Pairs with:** **TallyFlow Edge** (repo `tallyflow-iot`) — optional; can run fully offline **Does not replace:** **TallyFlow Assets** (`tallyflow_mobile`) — the Core-connected mobile app for enrollment, inventory, zone moves, seek-and-find, and scan-and-print ## Overview **TallyFlow Scout** is a Flutter handheld (and desktop demo) app for barcode and RFID work on the floor **with TallyFlow Edge**. Operators use three destinations: | Section | What it does | |---------|----------------| | **Collect** | Scan barcode/RFID; submit reads to Edge as a **remote reader**, or **export CSV** when Edge is offline / disabled / not configured | | **Verify** | Scan a GS1 barcode, then RFID tags; show whether each EPC encodes the **same GS1 identity key** (SGTIN / SSCC / GRAI / GIAI interoperability). Optional auto-confirm countdown when all match | | **Locate** | Seek-and-find by EPC hex, GTIN/GS1, or Internal part number with RSSI / geiger feedback — **works fully offline** (no Edge required). Hit indicator lights whenever tags are in the field | Scout is the mobile companion for **Edge site deployments** (docks, tunnels, on-prem readers). It is **not** the full asset system of record app: enrollment, zones, Core sync, and scan-and-print remain **TallyFlow Assets**. ## Positioning (marketing truth) - **Edge path, not Core path** — Scout talks to Edge remote-reader REST (`/api/v1/reader/barcode`, `/api/v1/reader/rfid`, `/health`). Assets talks to Core. - **Edge optional** — Settings **Use TallyFlow Edge** can be turned off for pure CSV / demo / floor work without health checks or submits. - **Complementary** — Sell Scout with Edge for handheld collect / verify / locate at the reader edge. Sell Assets with Core for asset lifecycle and inventory programs. - **Offline-capable floor tool** — Collect list + CSV export + Locate work without a live Edge server; submit when online. - **Hardware-real** — Android industrial scanners via `flutter_hardware_scanner` (e.g. Janam XR2, ATID, SEUIC, URFID stacks); camera barcode fallback on phones; desktop always in simulator mode for demos. ## Target use cases - Handheld remote reader into a multi-reader Edge site (same feed as fixed Impinj/Zebra readers) - GS1 barcode↔RFID **Verify** at encode/pack/ship (catch wrong EPC encoding before product leaves) - Offline **Locate** / seek-and-find on the floor without Core - CSV collect for demos, audits, or sites not yet wired to Edge submit - SI / partner demos with desktop simulator (JSON tag groups, optional automation) - On-device **tag decode** (GS1 EPC-96, GS1 barcode AIs, SDG RAIN CIN) without leaving the floor tool ## Core features (from product review) - Material 3 shell: **Collect / Verify / Locate** bottom navigation (l10n key `navUpdate` = “Collect”) - Collect: pending/sent/failed status, manual batch submit or auto-send, CSV share/save (including GS1 type-filter rollup mode); list menu for **clear** and **sort** (value / RSSI) - Verify: lists all RFID tags (no EPC soft-filter hiding mismatches); Confirm / Reset; swipe to Locate or delete - Locate: EPC mask filters (GS1 / SDG RAIN / hex / part); power slider; geiger audio; hit lamp while any tags are in field; handoff from Collect/Verify/decode sheet - **Tag decode sheet** — tap a Collect/Locate row for decoded GS1 / SDG RAIN / barcode AI fields; RFID can jump to Locate - Internal `part_serial` RFID settings aligned with **TallyFlow Print** (group Collect by part; Locate by part) - Edge health banner when Edge is enabled; **disable Edge** for CSV-only mode - Stronger RFID beep gate so Locate geiger does not fight inventory beeps - EN + ES localization - Settings: Use Edge, base URL, remote reader name, optional API key, RFID power/session, scan beep, symbology filters, verify auto-confirm seconds, Internal part_serial layout ## Technical notes - Android applicationId / namespace: `com.tallyflow.scout` - Vendor AARs for some handheld stacks live under `android/app/lib/` (see repo README); SEUIC uses on-device system libraries - ATID + URFID ship incompatible `libserial_port.so` — separate build variants or prune AARs per device (conflict fix landed post-0.5.x) - Desktop (macOS / Linux / Windows): simulation only — load JSON tag groups, send to Edge, add to list, or export CSV - Service client still named `tallyflow_iot_client`; **product name is TallyFlow Edge** - SDG RAIN CIN filter uses EPC prefix `D3C4C753` (AFI in Gen2 PC word, not EPC body) - README feature list lags app (still under-describes Verify / decode / Edge toggle); trust code + this note for marketing ## Related components - `tallyflow-iot` — **TallyFlow Edge** backend (remote reader + fixed readers + CSV/REST/AMQP egress) - `tallyflow_mobile` — **TallyFlow Assets** (Core mobile; not replaced by Scout) - `tallyflow-print` / Print UI — Internal EPC encodings Scout can decode/group - `flutter_hardware_scanner` (+ XR2 / SEUIC / ATID device plugins) - `sgtin` / flutter-sgtin — GS1 EPC-96 and element-string decode used by Verify + decode sheet ## Open / watch - Website and datasheets should say **Scout + Edge**, not “Assets for IoT” - Distribution channel (Play / sideload / SI bundle) not fixed in vault - Do not market Scout as Core enrollment or scan-and-print — those stay on Assets - README version footer still stale (`0.1.0+1`); app version is pubspec `0.6.2+14` - Symbology checklist is not full OEM set — soft-filter vs device scan tool ownership still a cross-app story