hi, it's
Cornel.
Accountant by day, builder by stubbornness. I got tired of tools that couldn't count, so I started writing my own: the kind that's either right, or it tells you it doesn't know.
p.s. my idea of a good night is when the numbers finally agree with each other.
a bit about me
The short version: I keep aiming for right.
I'm an accountant. That means I spend a lot of time on the unglamorous end of numbers (cost layers, journals, reconciliations), the parts that have to be exact because someone's decision rides on them. The discipline stuck.
The curiosity didn't come from wanting to be a developer. It came from annoyance. Tools kept giving me answers that didn't hold up, so I started poking at how they worked. Turns out I could build them better. So I did.
Costlayer handles costing that actually matches what stock is worth, wired to Xero. PSAK RAG searches Indonesian accounting standards and won't claim something it can't verify. Two different problems, same instinct: when in doubt, prove it.
I can't leave a wrong number alone. It's not a virtue, it's a tic. It's also the reason the tools exist.
the toolkit
Comfortable with, annoyed by, still learning.
the day job
Month-end close, end to end
accruals, reconciliations, balance sheet reviews, GL adjustments. accurate and on time, every time.
Inventory costing
financial data structured so recognition, classification and disclosure are simply right.
Investor reporting
monthly statements curated for people who skim: key metrics up front, noise where it belongs.
JE 004 · 005 · 006three more entries, tap to view
AP & AR
invoice processing, payment scheduling, reconciliation. cash flow stays visible and under control.
Tax & audit liaison
VAT, corporate income tax, withholding. the external auditor's first phone call.
Controls & risk
found the inconsistencies, implemented the fix, tightened the process.
standards respected: PSAK, Bank of Indonesia, the tax authority, and deadlines.
the build side
- Node / TypeScriptdaily driver
- SQL / Postgresdaily driver
- Xero APIfluent
- Python / FastAPIfluent
- RAG / retrievaldangerous enough
- Modal / vLLMdangerous enough
levels are self-assessed, so treat them as a starting point.
the actual builds
Two tools, two different kinds of annoyed.
$ npm run dev
costlayer · xero link
› push --cogs
✓ posted · balanced
Costlayer
costlayer.jeancornel.com"the one where I stopped trusting the tool"
Stock priced the way it actually costs, not the way a default assumes. Receives, tracks cost layers, and posts COGS journals to Xero: math in decimal, no float drift.
$ ask --std=psak-102
retrieve · rerank · verify
› prove --cite
✓ §102.15 sourced
PSAK RAG
psak-rag.jeancornel.com"the one that answers with receipts"
Bilingual search over Indonesian accounting standards. Hybrid retrieval, reranking, then a judge that checks a claim against the source before it's allowed to say anything.
the writeups
Briefs from the back of the ledger.
FIFO: a case study in refusing a default
A tool told me my stock was worth what it wasn't. I built the one that's right.
Engineering noteIf an answer can't be proven, it doesn't get said
The anti-hallucination rule: no source, no answer. No matter how confident it sounds.
Sciences noteMoney is not a float
0.1 + 0.2 is 0.30000000000000004. That's a rounding footnote, until it's a bug.