The problem is not another budgeting personality. The problem is payday math and biller trends
sitting in PDFs while a chatbot invents a calendar. FinAdvisor is Melvin’s personal finance desk:
ingest PNC and Cash App statements, W-2s, hourly stubs, and printed bills (BGE, Xfinity, Washington
Gas, WSSC) — upload only. No biller APIs. No bank OAuth. The pay calculator learns rate and deduction
patterns from stubs and uses stored pay-cycle settings (9th/24th with weekend rollback; deposit the
night before official payday). Q&A is rule-based and grounded in ingested rows — not a generic
chatbot, not an LLM in this blueprint. Demo data is a separate namespace (is_demo) and
never mixed with live finances. Proof: live transaction / bill / stub counts on this page come from
landing_stats; the rows themselves stay behind login.
Upload remains the contract even when a PDF parse is ugly: you still own the file; the app does not
hold a bank session. That is the proof line — paper in, rows out, questions only the rows can answer.
Phase 1 is upload + calculator + dashboard + ask. Advisor recommendations are a stub hook.
Voice/chat via OGB is a later path. Do not set FINADVISOR_DEMO=1 on the systemd unit —
production default is live; demo is a session/UI choice. PDF text extract is heuristic; photos need
biller + period fields. Use the service period printed on the statement, not the day you uploaded it.
Cash App is treated as paycheck plus savings when the rows say so — not as a second checking product
we invented. Recurring bills CSV is the structured path; printed statements are the messy path; both
write history you can trend if the period dates are real.
CSS mock of /finadvisor/app. Aggregate counts on this public page come from landing_stats. The rest of the app stays behind login. Household billers on Upload and Bills: BGE (power/gas), Xfinity (internet/cable), Washington Gas, WSSC (water). No consumer API for those four in Phase 1.
Hourly rate and deduction percentages come from the latest stub (or the pay profile those stubs update). Enter hours you actually worked. This mock is CSS chrome of /finadvisor/app/calculator — not a bank app.
Ask is natural language over the active dataset. Demo banner: DEMO DATA — not your finances. Clear demo deletes WHERE is_demo = true only. First real upload writes is_demo=false, deletes that user’s demo rows, and switches the session to live.
Every table has is_demo BOOLEAN NOT NULL DEFAULT false. Reads use exactly one side. Load demo preview seeds is_demo=true and switches the session. UI banner is mandatory: DEMO DATA — not your finances. Optional file copies live in FINADVISOR_DATA_DIR outside both git trees.
This page may show aggregate landing_stats. Upload, calculator, bills, ask, and settings are @login_required. Health endpoints stay public and must not touch the database. Shared landing is not a statement viewer.
Phase 1 will not log into PNC, Cash App, BGE, Xfinity, Washington Gas, or WSSC for you. Email-forward and portal aggregators are Phase 2 ideas, not required to start. Advisor recommendations are a stub hook, not a scored feed. There is no LLM in this blueprint. If an answer is not in ingested rows, the desk should fail honestly rather than invent a payday.
Supported parsers are heuristic. Photos still need biller + period. That limitation is the product, not a footnote.
FinAdvisor is for the operator who already has PNC CSVs, Cash App exports, hourly stubs, a W-2, and four utility PDFs on the counter — BGE, Xfinity, Washington Gas, WSSC — and who needs payday and “is power going up?” answered from those files. It is not for connecting a bank password to meltuc.tech. It is not for a consumer biller API that those four companies do not offer in any practical form. It is not for an LLM that invents a 9th/24th cycle you did not store. Heuristic PDF extract will miss columns; photos will demand period start/end and amount; that is annoying and honest. Backdated periods exist because uploading a January statement in March must not timestamp the trend as March. Demo preview exists so the UI can be shown without mixing sample dollars into live tables — first real upload is the ceremony that kills demo for that user. Settings exist because holidays and not-worked days are unpaid, and the calculator should not pretend otherwise. If you need Mint, Plaid, or a chatbot CFO, this is the wrong desk. If you need the stub rate × hours and the night-before deposit date, upload the stub and open the calculator.
How you verify: public /finadvisor/ and health; login for upload, calculator, bills, ask, settings. First live upload clears demo. Q&A about BGE uses printed service periods. Calculator shows both official payday and deposit-the-night-before. If an answer is not in rows, it should not sound like a confident CFO. Stub hook recommendations must not be marketed as a live advisor feed on this page.
Requires a MelTuc account. Demo preview is optional and isolated.
Open FinAdvisorPersonal financial advisor dashboard — upload statements and get organized views. Health stays cheap. If this page disagrees with the signed-in app, trust the app — the product contract and tests enforce that rule.