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. SAKbible 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
SAKbible
sakbible.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.
CostLayer: a case study in refusing a default
A tool priced my stock wrong and felt nothing about it. I built the one that defends every cent.
Engineering noteSAKbible: no citation, no answer
It would rather say nothing than be confidently wrong. Rude, and the most trustworthy thing I've built.
Sciences noteMoney is not a float
0.1 + 0.2 is 0.30000000000000004. An auditor will find that four. Eventually.