Mobilní
skener účtenek

Enterprise mobilní aplikace · Hlavní vývojářka
Home screen aplikace — Expense Scanner, CTA Scan Receipt a list posledních účtenek

Mobilní aplikace pro proplácení firemních výdajů, vyvinutá interně pro KPCS. Nahrazuje běžný firemní proces, který dosud znamenal: sběr papírových účtenek, ruční přepis do účetního systému, upload přílohy.

Zaměstnanec vyfotí účtenku telefonem, AI z ní vytáhne údaje (částka, DPH, dodavatel, IČO, položky). V editoru už jen doplní Internal Order (interní zakázka v Dynamics 365). Odesláním se za pár sekund v systému založí pokladní doklad včetně snímku uloženého jako PDF v Azure Blob Storage. Žádný ruční přepis z papíru.

Role Hlavní vývojářka · Full-stack
Typ Mobilní aplikace · KPCS interní
Období Od listopadu 2025 · v produkci od dubna 2026
Technologie
React Native · Expo · TypeScript Node.js · Express Azure OpenAI (GPT-4.1 mini Vision) Dynamics 365 Azure Blob Storage Microsoft Entra ID jsPDF ARES API

Zpracování účtenek je ve firmách univerzálně nepopulární: doklady se ztrácí, částky se přepisují chybně, přílohy zapomínají. Účetní pak dohledávají, zaměstnanci opravují, celý měsíc se táhne.

Zadání znělo jednoznačně: zpracovat účtenku hned po zaplacení, sám a za pár vteřin. Bez uschovávání papírů, bez pozdějšího dohledávání, bez ručního přepisu do systému.

Klíčové architektonické rozhodnutí: mobilní klient komunikuje přímo pouze s Entra ID pro získání přihlašovacího tokenu. Všechna volání do Dynamics 365 a Azure OpenAI jdou přes vlastní Node.js backend, který token validuje a překládá requesty.

Modal na Home obrazovce s výběrem Take Photo nebo Library
1 Snímek Foto z fotoaparátu nebo výběr z galerie. Detekce iOS HEIC.
Editor Receipt Details — snímek účtenky, Internal Order, Payment Method
2 Kontrola Předvyplněný editor po AI extrakci. Jen doplnit Internal Order.
Receipt Information s dodavatelem, IČO, DIČ, částkou a CTA Save to Dynamics 365
3 Odeslání Save to Dynamics 365 založí purchase invoice včetně PDF.

Detaily, které bylo potřeba vyladit

Výstup z GPT modelu někdy přichází zabalený v markdown code blocích, backend to čistí před parsingem JSONu. Měnové symboly mapuje na ISO kódy (Kč → CZK, € → EUR). Pokud model vrátí měnu, kterou platforma nepodporuje, vynuluje i částku. Raději prázdné pole, které uživatel doplní, než vymyšlené číslo.

Fiscal year v Dynamics 365 se neřídí kalendářem, pro nákupy od července dál se posouvá na další rok. Backend to počítá u každé účtenky podle data nákupu.

Aplikace je v produkci od dubna 2026 a běží na firemním Dynamics 365 KPCS. Aktivně ji používají zaměstnanci, iteruje se podle jejich feedbacku (např. úpravy typů plateb, autofill Internal Order).

Dřív
~7 min
Přinést účtenku, naskenovat na PDF, otevřít Dynamics 365, ručně přepsat dodavatele, částku, DPH, IČO a položky, uploadnout přílohu.
S aplikací
~30 s
Vyfotit účtenku, AI vytáhne údaje, doplnit Internal Order, odeslat. Pokladní doklad se sám vytvoří v Dynamics 365 včetně PDF přílohy.

Výzvy během vývoje

  • Rozpoznávání měn. Účtenky přichází v různých zápisech (Kč, CZK, €, EUR). Hotelové doklady mají EUR v konverzní sekci, ale skutečná platba je v CZK. Prompt AI obsahuje explicitní pravidla, výstup ještě validuje backend.
  • Dva typy přihlašovacích tokenů. Kromě vlastních tokenů z Entra ID přijímá backend i tokeny z Microsoft Graph (pro dotazy na uživatelský profil). Každý typ potřebuje jiný způsob ověření, backend rozpoznává, který přišel, a validuje ho odpovídajícím způsobem.
  • Upload PDF do Dynamics 365. Systém nepřijímá soubory přímo. PDF se dostane dovnitř přes tříkrokovou cestu: vyžádání upload URL, upload do Azure Blob Storage, propojení souboru se záznamem faktury.
  • Vydání firemní iOS aplikace na App Store. Publikace pod firemním Apple Developer účtem se protáhla. Ověřovací proces trval výrazně déle než u běžných apps, komunikace s Applem vázla a čekání se počítalo v týdnech. Kvůli tomu se posunul release termín aplikace.