RekapFlow
Solo product builder
A live, privacy-first React prototype that turns recurring finance or admin spreadsheets into a normalized control report, correction queue, and reviewed local exports—without uploading the file to a server.
Solo product builder
Live Vercel demonstrator with a synthetic safe-to-inspect sample. It accepts one CSV/XLS/XLSX first worksheet up to 2,000 rows or 5 MB, processes it only in the active browser tab, and produces local review outputs.

01 / 02 A live, privacy-first React prototype that turns recurring finance or admin spreadsheets into a normalized control report, correction queue, and reviewed local exports—without uploading the file to a server.
The problem to solve.
RekapFlow is a deliberately narrow service demonstrator, not a general accounting SaaS. It turns one recurring finance or admin spreadsheet into an in-browser control report, correction queue, and reviewed exports. Imported data stays in React memory and never travels to an application server; the public demo uses synthetic data only.
Problem
Recurring spreadsheets are difficult to review when column names, dates, amount formats, and payment statuses vary. Operators need to surface structural issues, correct rows transparently, and hand off review-ready outputs without creating a new data-exposure path.
People
Finance and admin operators working from recurring CSV or Excel exports
The choices behind the interface.
Designed the fixed-scope workflow, built the React/Vite prototype, implemented in-browser parsing, bilingual header mapping, normalization, validation, correction/undo, and local export flows; defined its privacy and Vercel security posture.
RekapFlow intentionally has no authentication, database, analytics, cloud persistence, API, OCR, bank feed, or accounting-advice claim. A structural review is not bookkeeping, audit assurance, or proof that source data is correct.
- Handling English and Indonesian spreadsheet conventions without silently guessing away ambiguity
- Keeping corrections reversible while ensuring every downstream finding and total recalculates
- Making the strongest privacy control the absence of a data receiver, while still supporting useful local exports

What I built.
Designed the fixed-scope workflow, built the React/Vite prototype, implemented in-browser parsing, bilingual header mapping, normalization, validation, correction/undo, and local export flows; defined its privacy and Vercel security posture.
- Built the deterministic pipeline from file or manual row through parsing, bilingual header mapping, normalization, validation, reporting, and local export.
- Implemented corrections as in-memory record overrides, with immediate revalidation and undo back to the normalized imported row.
- Added structural checks for duplicate references, missing or invalid fields, unknown statuses, negative amounts, and simple outliers.
- Defined browser-only privacy constraints and Vercel headers, including a Content Security Policy with connect-src 'none'.
System architecture +
File or manual row → import policy → first-sheet parse → column map → normalize → in-memory correction patches → validate → control report, review queue, and local exports. The SheetJS parser is lazy-loaded only for Excel files.
Results, with context.
Live Vercel demonstrator with a synthetic safe-to-inspect sample. It accepts one CSV/XLS/XLSX first worksheet up to 2,000 rows or 5 MB, processes it only in the active browser tab, and produces local review outputs.
The Vercel prototype is live with synthetic demo data. Repository release evidence records passing logic, UI/security-contract, production-build, and audit gates; browser acceptance covered imports, corrections, undo, exports, responsive behavior, and the absence of local persistence.
Data-row limit
Bounded import policy for one first worksheet.
File-size limit
Rejected before parsing when the selected file exceeds this boundary.
Data receivers
No backend, analytics, cookies, account system, or client-data transmission.
Lessons & next steps +
- For sensitive operational data, a simpler architecture can be a stronger product decision when it removes unnecessary data transfer and retention risk.
- A correction queue is more trustworthy when it distinguishes normalized output from fully reviewed output and keeps unresolved findings explicit.
Under the hood.
Technologies & features +
React / Vite / JavaScript / SheetJS (XLSX) / Vercel / CSP
- CSV, XLS, and XLSX import with first-worksheet-only handling
- English and Indonesian header detection plus manual mapping confirmation
- Date, currency, status, and negative-value normalization
- Issue queue with immediate correction, revalidation, and undo
- Normalized records, unresolved queue, JSON handoff, and manager-summary exports
- Synthetic demo data and no browser persistence after reload or Clear data
Feature status & limitations +
Browser-only spreadsheet workflow
workingThe live prototype processes its synthetic sample locally and exposes no data-upload backend.
Correction and local export flow
workingCorrections revalidate in memory; normalized CSV, review queue, JSON, and summary exports are supported.
Buyer-specific workflow configuration
prototypeThe public product is a scoped demonstrator; any custom schema, rules, and handoff are a separate fixed-scope delivery.


