Alexander Urquico

Software Engineer · Technical Profile

Offline-first mobile systems and the ERP integrations behind them. Sole developer of three internal systems in daily production use.

Document
AU-2026-01
Revision
3
Issued
2026-09
Status
Open to offers

Purpose

This document describes the working experience of a software engineer who builds Android and Flutter applications for warehouse, retail and finance operations, and connects them to an ERP system.

Three systems are covered. All three are in daily use across 120 branches of a retail and distribution company in the Philippines, by roughly 240 to 360 staff, and all three were built by one engineer — database schema, application, integration and production release.

Section 3 shows the interfaces themselves. Section 5 sets out how the work is approached.

1.0
NoteAll three systems described in §2 were designed, built and released by a single engineer.

General description

Software engineer working on offline-first mobile applications and the integrations that connect them to an enterprise resource planning system.

The operating environment is the deciding constraint. These applications run in warehouse aisles, retail counters and delivery bays, where network coverage is intermittent and the operator cannot wait for it. Every entry is therefore written to an on-device database first; transmission to the ERP is a separate, deliberate action taken by the operator, and every submission is designed to be safe if repeated.

Responsibility on each system spans database schema, API contract, application architecture, security review and production release, together with the architecture and hand-over documentation held in the repository.

Table 1.1 — Deployment summary
SystemPlatformVersionStateSitesUsers/day
Inventory managementFlutter / Android1.4.6Production120240–360
Deposit slip uploaderKotlin / Android1.2.2Production120~120
Warehouse transferKotlin / Android0.1Prototype
Table 1.2 — Measured change
MeasureBeforeAfter
Count-to-posted cycleAbout one week, counted and tallied by handWithin two days, counted and posted to the ERP
Deposit verificationHead office waited for the physical slips to arriveCaptured and submitted from the branch, same day
Deposit slips handledNo system in placeAbout 240 per day (120 branches, 2 each)
2.0

Systems

Each subsection states the operating problem, the design decisions taken, and the reasoning behind them. Endpoint names, host addresses and credentials are withheld; the systems are internal company property.

2.1Inventory management

An offline-first inventory platform deployed to 120 branches and used across warehouse, distribution, audit and retail operations. It reduced the full count-to-posted cycle — counting through to posting in the ERP — from about one week of manual tallying to within two days. Operators scan barcodes to count stock, move it between locations and approve transfers between stores. The role returned at sign-in determines which home screen loads and which workflows exist at all, so a branch clerk and a warehouse picker never encounter each other's tools.

  • Barcode counting, with a manual-search fallback that is written to a log. Barcodes are damaged in ordinary use; recording each fallback makes the pattern of unscannable stock visible rather than invisible.
  • Receiving, store-to-store transfer, batch picking and transfer approval, with batch and expiry tracking throughout.
  • Reporting to PDF and Excel, including variance against configured inventory limits.
  • Layering enforced by rule: presentation code never reaches the database directly.
Screens Cubits Repositories SQLite OPERATOR CONFIRMS NETWORK BOUNDARY BELOW — REQUIRES CONNECTIVITY SAP B1
Fig. 2.1Data path. Counting completes entirely above the network boundary; transmission is a separate operator action.
Notice

Because transmission is a distinct act rather than an automatic one, a connection lost mid-aisle costs no operator their count.

2.2Deposit slip uploader

Closes the interval between a branch depositing cash and the finance department seeing evidence of it. The operator photographs the deposit slip; on-device text recognition reads the bank, reference number, amount and date; the operator confirms the fields rather than typing them. No system preceded it: head office could not verify a deposit until the physical slips reached them. Capture and submission now happen at the branch on the day of deposit, across roughly 240 slips a day.

Table 2.2 — Field extraction
FieldSourceConfirmed byFailure mode guarded
BankOn-device recognitionOperatorLayout differs per bank
Reference no.On-device recognitionOperatorCharacter confusion
AmountStrict per-bank patternOperatorReference number read as an amount
Deposit dateOn-device recognitionOperatorAmbiguous date order
Caution

Amount is the hazardous field. A permissive pattern will read a reference number as a small currency value and corrupt a finance record silently. Patterns are strict and written per bank, and every extracted field remains editable before submission — recognition proposes, a person confirms.

  • Recognition runs wholly on the handset; the photograph is not transmitted anywhere to be interpreted.
  • Up to three slips per submission, as a day's takings are frequently banked more than once.
  • Images are downscaled and compressed before upload, for branches on constrained connections.
  • Server address is configured per device, so branches on differing hosts run one build.

2.3Warehouse transfer

A ground-up replacement for the transfer module of a legacy desktop application, intended for pickers who are on foot in the aisles while the workstation is not. Discovery was carried out before any replacement was proposed: the existing system was audited, its actual behaviour documented, and two defects identified.

  1. Over-transfer. A quantity check validated against the requested quantity rather than the remaining quantity. A partially picked line could therefore be picked again, beyond its total.
  2. Duplicate documents. The submission path could post twice for one physical movement. On a slow connection, a second tap produced a second stock document.
Handset SUBMIT Staging outbox UNIQUE SUBMISSION KEY 7f3a··c19 Worker ERP REPEATED SUBMIT — SAME KEY WRITING AN EXISTING KEY AGAIN CHANGES NOTHING POSTS EXACTLY ONCE
Fig. 2.3Submission path. Duplicate posting is prevented by structure rather than by discipline.

2.3.1Design decisions

  • Writes are made through the ERP's supported service layer, never by direct SQL, so business rules and vendor support remain intact.
  • Submissions are written to a staging outbox bearing a submission key; a worker posts each key onward exactly once.
  • Reads are served by stored procedures, so listing stock does not consume an ERP licence seat.
  • The operator scans once to establish position, then enters the quantity. Scanning every unit is defensible on paper and abandoned by the second hour of a shift.
Recommendation as recorded

A full rewrite was documented as not yet formally justified. Several of the defects were correctable within the existing application, and the recommendation was recorded as such.

Authentication is complete end to end against live company data: picker directory, first-use PIN enrolment, sign-in, lockout on repeated failure, and supervisor-gated administration. Picking and submission are implemented against a mock repository behind the same interface, ready for changeover.

3.0
NotePlates are reconstructions drawn in HTML. Item names, branches, amounts and reference numbers are invented.

Operator interface plates

Screen sequences for each system, reconstructed from the shipping interfaces. Advance through a sequence with the controls beneath the description.

PLATE 3.1.11080×2340
9:41▮▮▮
IM
Inventory Management
v1.4.6
🌐 Domain Link
👤 a.urquico
🔒 ••••••••
Login
9:42▮▮▮
Warehouse
Branch
MAIN — Warehouse
Synced
SCAN
🔍SEARCH
📥Receiving
🔁Transfer
📦Batch Picking
Approvals
Pending uploads
Held until confirmed
12
9:42▮▮▮
Scan item
Align the barcode inside the frame
Search by PLU or name
9:44▮▮▮
Adding Details
Quantity
144
PACK · base qty 1
BatchB-240712
Expiry12/07/2026
R4
C2
L1
Saved locally. Upload when ready.
Save
9:45▮▮▮
New Deposit
Sales Date18/08/2026
Encoded ByA. Urquico
📷
Take Picture 1 *
Take Picture 2
Optional
Take Picture 3
Optional
9:46▮▮▮
Reading slip…
BDO · DEPOSIT SLIP
Detected fields
BankBDO
Reference0093-441207
Amount48,250.00
Deposit Date18/08/2026
9:47▮▮▮
Review
Header
Sales Date: 18/08/2026
Encoded By: A. Urquico
Slip 1Image attached
BDO · 0093-441207
Amount: ₱48,250.00
Slip 2 Not attached
Go Back
Submit
9:41▮▮▮
Who is picking?
Marvin dela Cruz
MAIN · PIN set
Joan Ramirez
MAIN · PIN set
Elmer Bautista
DISTRI · Set PIN
Rico Santos
MAIN
Locked
Supervisor access
9:41▮▮▮
Enter your PIN
Marvin dela Cruz
1
2
3
4
5
6
7
8
9
·
0
4 attempts remaining
9:49▮▮▮
Gummy Bears 100g
Requested
240
Allocated
96
Still open
144
Scan an item
Or type a barcode
Batches · oldest expiry first
B-240712
Exp 12/07/2026 · 180 on hand
Use
B-241130
Exp 30/11/2026 · 300 on hand
Use
9:50▮▮▮
Outbox
Sent from this device
Re-sending the same key changes nothing.
TR-2026-0818-041
Key 7f3a··c19 · 3 lines
Posted
TR-2026-0818-042
Key 91be··2d7 · 5 lines
Queued
TR-2026-0818-040
Key 20cc··8a1 · 2 lines
Posted
3.1.1Sign-in and role resolution

1 of 4
4.0

Capability matrix

Ordered by depth of production use rather than by familiarity.

Table 4.1 — Capabilities
GroupItemsApplied at
LanguagesKotlin, Dart, Python, C#, SQL (T-SQL)2.1 2.2 2.3
MobileAndroid SDK, Jetpack Compose, Flutter, ML Kit text recognition, barcode capture2.1 2.2 2.3
ArchitectureOffline-first synchronisation, MVVM, BLoC / Cubit, repository pattern, outbox and idempotent writes2.1 2.3
DataSQLite / sqflite, SQL Server, stored procedures, schema design2.1 2.3
IntegrationREST (Retrofit, OkHttp, http), SAP Business One Service Layer, n8n workflow automation, webhooks2.1 2.2 2.3
PracticeGit, Gradle, release management, secure credential handling, technical documentation2.1 2.2 2.3
5.0
RefThe audit at §2.3 is the clearest instance of 5.1 in practice.

Engineering practice

5.1Read the system before rewriting it

What already exists is audited, and its actual behaviour written down, before any replacement is proposed. On occasion the honest finding is that a small number of targeted corrections is preferable to a new codebase, and recording that finding is worth more than winning a larger project.

5.2Design for the failure case

Intermittent networks, repeated taps and half-finished work are the ordinary condition in the field, not the exception. Local-first writes, staging outboxes and idempotent submission cost considerably less than reconciling corrupted data afterwards.

5.3Leave it serviceable

Each system carries an architecture document, an endpoint contract and a current status file in its repository, sufficient for another engineer to continue the work without a briefing.

6.0

Service information

Open to software engineering positions across mobile and backend work. Available to discuss any system in this document in detail, including the parts that did not work at the first attempt.

Table 6.1 — Contact and background
Electronic mailalexurquico@gmail.com
LinkedInlinkedin.com/in/alexurquico
Repositoriesgithub.com/AlexanderUrquico
LocationCalamba, Laguna, Philippines
EducationPolytechnic University of the Philippines — BSIT, September 2023. General weighted average 1.38; consistent President's Lister.
Notice

The repositories for the systems at §2 are private company property. Architecture, trade-offs and defects may be discussed freely; source code may not be distributed.

A

Appendix A — Revision history

RevDateChange
32026-09Warehouse transfer added at §2.3; capability matrix revised.
22026-05Deposit slip uploader promoted to production; extraction table added at §2.2.
12024-03First issue.