How it works
Snap a receipt, check what the AI read, approve it, and code does the books. Your data stays in your OneDrive throughout.
Last checked against main on 4 Nov 2026.
Step-by-step guides
Short guides with a screenshot for every step, taken from the demo's fictional sample books, and the Android app where it differs. They open on GitHub.
- Try the demo or connect your books
Opening Accnomos for the first time
- Review and approve
Clearing the Review queue
- Do a VAT return
VAT-registered and filing through MTD
- Talk to Accnomos, by voice or chat
Asking in plain words, typed or spoken
- Set goals and track progress
Anyone with a target for the business or the household
- Calendar and deadlines
Keeping VAT, payroll and Income Tax dates in view
- Notes, to-dos and events by voice
Capturing jobs and reminders on the go
- Personal finances
A household, or an owner keeping personal money apart
- Import contacts
Setting up customers and suppliers
- Collect receipts by email
Collecting supplier receipts by email
- Reconcile bank lines
Matching a statement against the books
- Income Tax quarterly update
Sole traders and landlords sending MTD updates
- Run payroll and file with Basic PAYE Tools
Employers running a pay run
- Invite your accountant
Giving your accountant access
- Export for your accountant
Sending a period's records away
Receipts: snap, check, approve
Photograph or upload a receipt, or drop it in 00 Inbox. It is read, checked against plain rules, and held on the Review page until you tap Approve or Reject. Approval writes one balanced ledger event that is never edited or deleted; Undo adds a reversing event.
- The AI: The AI reads the document into a strict list: supplier, VAT number, date, lines, net, VAT and total. It also guesses the category.
- The code: Code checks the reading: lines and totals add up, VAT maths and rates are right, the VAT number has the right shape, it is not a duplicate, it is in pounds, the date is valid and confidence is high enough. A purchase over £250 with no VAT and no VAT number from a supplier the books do not know yet also waits, asking “Is <supplier> VAT-registered?” — the tick teaches “not registered”, a VAT number seen on an approved receipt teaches “registered”, undoing the approval takes the tick back, and Contacts can change the stored answer. Anything that fails waits in Needs a look.
- Not verified yet: Not verified yet: reading by Muse Spark 1.3 is measured on made-up documents only (every field right on 95 % clean and 96 % messy); a HEIC photo is converted and read, but only files made by the tests have been tried; evals use made-up receipts, so real phone photos will score lower.
Books.xlsx: a copy you can read
After every approval, rejection, undo, bank match, invoice, payroll, mileage or job change, the app rebuilds Books.xlsx from the event files. It has 12 sheets (Summary, Ledger, Accounts, VAT, Customers, Suppliers, Bank, Proposals, Jobs, Vehicles, Payroll and a README). It is a read-only copy: do not edit it, it is overwritten.
- The AI: No AI. The file is built by code from the ledger events.
- The code: Code reads every event file, works out each sheet, and writes the whole workbook again. If one rebuild fails it is logged and your action still stands.
- Not verified yet: Not verified yet: the file has never been opened in Excel from a real OneDrive.
VAT periods and deadlines
The VAT page shows a period picker (the current period and the 8 before it) based on the stagger saved in Settings, and works out the nine boxes for the picked period. Home shows the next return date, the payment date and Box 5 so far.
- The AI: No AI. Dates and boxes are worked out by code.
- The code: Code picks the period from your stagger (1, 2, 3, a custom start month, or monthly), counts only approved sales and purchases, and truncates boxes 6 to 9 to whole pounds.
- Not verified yet: Not verified yet: annual accounting and flat-rate schemes are not covered; “submitted” only means our own submission saved a receipt, so a return filed elsewhere still shows as open.
HMRC sandbox submission
On the VAT page you connect to HMRC (sandbox), see open obligations, confirm the nine boxes, tick the legal declaration and press Submit. The receipt is saved to 06 VAT returns in your OneDrive. That tap is always yours.
- The AI: No AI anywhere in this flow.
- The code: Code sends the nine boxes through the relay, which holds the HMRC client secret and adds the fraud-prevention headers. The relay checks the boxes before forwarding.
- Not verified yet: Not verified yet: the sandbox flow was run end to end once, on 4 Nov 2026, with the demo's calls through our relay and HMRC's own sandbox sign-in (docs/HMRC_SANDBOX_DEMO.md); a signed-in user's own return has not been filed to the sandbox by hand; production filing is not built.
Ask, typed and spoken
Ask answers questions about your books (“how much did I spend with Screwfix?”) and can plan a day (“plan my Thursday”). The web streams the answer: key figures first, then the wording. On the mic button you can speak the question instead of typing it.
- The AI: The model only writes the words. Key figures and quotes come from a facts pack that code builds from your ledger, and code checks every figure the model writes.
- The code: Code routes the question to the right books and period, checks each figure against the facts, and replaces any invented or wrong-period figure with the quoted facts.
- Not verified yet: Not verified yet: voice (Muse Voice Transcribe, with a local fallback model if it fails) has been used live from the Android app on one phone and in our live checks with synthetic speech (4 Nov 2026), not from a browser microphone in our checks; CI fakes it. Bank, payroll, jobs and deadlines are not in the facts pack.
Actions: words become a card you approve
Say or type “send a £100 invoice to JM Trading” or “log 7.5 hours for Sam on Elm Road” and Ask shows a card saying what will happen, to whom, the amount and VAT. Nothing is created, logged or sent until you tap Approve. Change puts the question back; Reject is logged.
- The AI: The model returns only a structured intent: names as said, amounts as said, dates as said. It never prices a line.
- The code: Code finds each name in your own lists (fuzzy match, asks “which Hartley?” when unsure), refuses any figure you did not say, sets the VAT code, prices every line in pence, signs the card (15-minute expiry) and runs it exactly once.
- Not verified yet: Not verified yet: never run against a real model or a real mailbox; without a signing key set, a restart can make a card fail.
Autopilot L1 and L2
Level L1 (the default) only proposes: matching cards say they match your rule and you can approve them together. At L2 a receipt from a saved supplier posts without a tap, only when every check passes with no warnings. Every post is logged and has Undo for 30 days.
- The AI: No AI. The decision is a list of plain checks.
- The code: Code teaches the rule from your ticked approval (one per supplier), then on each scan requires: same supplier, same VAT number and treatment, total above zero and at most twice the usual, and every check passing with no warning.
- Not verified yet: Not verified yet: no end-to-end run on real data; the phone never sends the “off” flag, so scans from the phone always run Autopilot when a rule exists.
Verifier: a second reading
When the first reading passes every code check, a second model reads the same image again with a different prompt, without seeing the first answer. Code compares six fields (supplier, VAT number, date, net, VAT, total). If all six agree the card says so; any disagreement sends the proposal to Needs a look with both readings side by side.
- The AI: The second model only reads the image again. It never sees the first answer and it never decides.
- The code: Code compares the six fields (names ignoring case and Ltd/Limited, dates by value, money to the penny, VAT numbers by digits). Nobody picks or merges values: you approve the first reading or reject.
- Not verified yet: Not verified yet: local mode verifies with Glimmer and key mode with Muse Spark unless the server owner sets up Muse Spark Open (off on the live server since 2 Nov 2026, so the second reading there is Muse Spark checking itself: less independent). Measured on 400 synthetic documents, Muse Spark Open caught 1 wrong reading, missed 6 and raised 11 false alarms (see Meta models used).
Outlook intake: emailed bills
Switch on Outlook intake in Settings, then tap Check my inbox now. Likely receipts and invoices from the last 14 days are copied into 00 Inbox, deduplicated, with a log in _System/Intake. Mail is never sent, moved, marked read or deleted.
- The AI: No AI. Plain code filters decide what looks like a receipt.
- The code: Code reads message dates, senders, subjects and attachments (PDF, JPEG, PNG, HEIC between 10 KB and 25 MB; HEIC saved as JPEG), keeps senders outside your domain with receipt-like words, and skips what was already copied. An email with no attachment is kept as text when a total or VAT line shows an amount.
- Not verified yet: Not verified yet: never run against a real mailbox or a real phone HEIC; receipts in email text tested on fictional emails only; photos forwarded by a colleague on your own domain are dropped.
Inbox triage and to-dos
Home’s Inbox card lists the last 7 days of business email (customers, suppliers, HMRC, your accountant), each thread with a one-line summary, a suggested reply and the to-dos in it. Draft in Outlook saves a reply to your Drafts; Add puts a to-do in _System/Todos. Nothing is ever sent.
- The AI: Your own AI (your key or your local model) suggests the category, summary, reply and to-dos. Email text is passed as untrusted data and the model is told never to follow instructions inside emails.
- The code: Code reads only the Inbox folder’s sender, subject, date and 255-character preview (never full bodies), drops newsletters, no-reply senders and your own domain, then checks everything the model returns: one of five categories, one line, no links, no figures the emails did not contain, real dates only.
- Not verified yet: Not verified yet: never run against a real mailbox or model; a failed second Graph call can leave an empty draft; a thread you already answered can still say Reply because Sent Items are not read.
Bank statements
Drop a CSV on the Bank page (Barclays, Starling, Tide, Monzo-style and HSBC/Lloyds paid-in/paid-out layouts are sniffed). The file is saved, the same file twice is a no-op, and each line gets a suggested match to a posted entry. Confirm records which entry the line pays for; unmatched lines can become an expense proposal, a transfer, or be ignored, each undoable.
- The AI: No AI. Matching is amount (±1p), date (±5 days) and counterparty name.
- The code: Code parses the CSV, files it by last date and bank, suggests matches, and records your Confirm without posting anything new.
- Not verified yet: Not verified yet: layouts follow public formats and have not been checked against real exports; part payments are never suggested (one entry paid by two lines finds no match).
Contacts
Customers and suppliers are built from your ledger (one contact per VAT number, else per name). Each has a statement with a running balance and an Aged balances tab (0–30/31–60/61–90/90+ days from the document date). Edit keeps your changes across Refresh; Import contacts brings in Outlook contacts or the people who email you, all or the ones you tick (the Android app adds the phone’s address book); a contact already here only gains a missing email or phone.
- The AI: No AI.
- The code: Code rebuilds contacts from the event files on each call; only names and details are saved, in _System/Contacts/contacts.json. Money is always worked out again from the events.
- Not verified yet: Not verified yet: never run against a real OneDrive or Outlook; admin consent on work accounts is untested; a matched bank line counts as full payment, so part payments drop out of Aged balances.
Sales invoicing
New invoice → draft saved with the next number → preview renders an A4 PDF (your details, logo, VAT summary by rate, bank details) → Send via Outlook only after you tick the confirmation → the sale is posted once, with the sent PDF kept. Reminder drafts, Mark paid and Void (a reversal, never a delete) are on each invoice.
- The AI: The model only drafts the reminder wording from facts code gives it (never your bank details); code checks every figure. Everything else is code.
- The code: Code prices each line (net = qty × price, VAT per line, half up to the penny), numbers drafts in order, emails first then marks sent then posts, so a retry never emails twice or posts twice.
- Not verified yet: Not verified yet: never sent from a real mailbox; applying a customer's credit to another invoice or refunding it is on the web only, not the phone.
Jobs, staff and timesheets
The Jobs page lists jobs with hours, labour, materials and what is still to invoice. Staff and their cost/charge rates live in Settings. Each job has a timesheet (staff, date, hours in quarter steps, note, billable). Review can tag a purchase to a job on Approve; Invoice these hours prefills an invoice draft.
- The AI: No AI.
- The code: Code stores jobs, staff and timesheet entries in _System/Jobs, _System/Staff and _System/Timesheets, tags purchase nets as job materials, and proposes one invoice line per person (hours × charge rate).
- Not verified yet: Not verified yet: never run against a real OneDrive; “invoiced” value and margin use each person’s current charge rate, so changing a rate restates past jobs.
Vehicles and mileage
The Vehicles page lists personal and business-owned vehicles and a mileage log (vehicle, date, from, to, miles in 0.1 steps, purpose). Business miles build up the HMRC approved allowance (cars and vans 45p to 10,000 miles then 25p; motorbikes 24p; bikes 20p). Claim this quarter’s mileage makes one expense proposal per quarter for you to approve in Review.
- The AI: No AI.
- The code: Code holds the rate table in one place, works out the allowance per tax year (6 April to 5 April), locks claimed journeys until the claim is undone, and tags fuel receipts to your only active business vehicle at scan time.
- Not verified yet: Not verified yet: never run against a real OneDrive; the fuel scale charge is shown as “ask your accountant” text and is not calculated.
Pay runs (estimates only)
Payroll prepares a month’s pay run from timesheets (hours × each person’s rate), shows estimated PAYE, employee NI, net pay and employer NI, exports a CSV for your payroll provider to 05 Payroll, and on Confirm posts the provider’s actual gross and employer NI as two balanced adjustments. Accnomos does not run payroll, file RTI or pay HMRC.
- The AI: No AI.
- The code: Code works out the estimates from one 2026–27 rate table, saves the run in _System/Payroll/runs, labels every figure an estimate, and only posts the actuals you type in.
- Not verified yet: Not verified yet: the quick estimate is monthly pay only, tax code 1257L month-1 basis, England/NI rates, NI category A; no loans, pensions, statutory pay, benefits or salary sacrifice. The full PAYE payroll's 2026-27 rates were checked against GOV.UK on 28 Oct 2026 and are pinned by tests; re-check each April. Nothing is filed to HMRC.
Day planner
Plan today on Home, Plan a day with these jobs on Jobs, or “plan my Thursday” in Ask proposes a working day from your Outlook calendar, open jobs and any VAT return due within 7 days. Apply writes the new items as [Accnomos] events. Nothing is written before Apply.
- The AI: The model only writes the plain-English rationale from the finished plan. Code rejects any rationale quoting a time or figure not in the plan and writes its own instead.
- The code: Code groups open jobs by postcode district, orders districts so the route sweeps, allows 2 h visits (or the job’s visit length), 30/60 min travel, lunch and an admin hour, never overlapping existing events, in Europe/London on the quarter hour.
- Not verified yet: Not verified yet: never run against a real calendar; travel times are rules of thumb, not routing; only the default calendar; first-time calendar consent loses the plan (plan again and tap Apply again).
Files: your folder, shown as is
The Files page lists the real books folder from OneDrive (00 to 07 with file counts, plus _System collapsed), with Open links and Rebuild Books.xlsx on demand. Signed out it shows the sample tree.
- The AI: No AI.
- The code: Code lists the folder through Graph and rebuilds the spreadsheet from the events when asked.
- Not verified yet: Not verified yet: never checked against a real OneDrive; a folder’s file count can include nested folders.
Android app
The phone app signs in, captures receipts, and covers Review (approve, edit, reject, Autopilot undo), Ask with mic and action cards, Home, VAT with a period picker, and Files, Contacts, Invoices, Jobs, Vehicles, Bank and read-only Payroll under More. There is no HMRC filing on the phone.
- The AI: Same split as the web: the AI reads documents and writes words; code checks and posts.
- The code: The phone calls the same runtime routes as the web.
- Not verified yet: Not verified yet: the app has run on one real phone (the owner's, 4 Nov 2026) and on the emulator, not on other phones; sign-in from a Google Play install is untried (the Play signing hash is registered); the Meta key is not in secure storage.
Where your data lives
There is no Accnomos database. Your books are files in your own OneDrive folder, readable whether or not our services are running. Accnomos has no copy — delete the folder and it is gone.
- OneDrive › Apps › Accnomos
- Work accounts use /Accnomos instead.
- ├── 00 Inbox — new uploads and Outlook copies wait here
- ├── 01 Receipts — filed purchase documents, by month
- ├── 02 Needs a look — flagged files, nothing posted
- ├── 03 Sales/ — scanned sales documents; invoices/ holds the invoices you raise, invoices/sent/ what was emailed
- ├── 04 Bank statements — imported CSV statements
- ├── 05 Payroll — pay run exports for your payroll provider
- ├── 06 VAT returns/<periodKey>/ — return.json and receipt.json per submitted period
- ├── 07 Reports — generated reports
- ├── Books.xlsx — read-only projection, rebuilt after every approval — do not edit
- ├── README.txt — says what the folder is
- ├── _System/ — app data — rules, audit trail and the books themselves
- Ledger/events/<yyyy-mm>/ — the books: one balanced journal file per approval
- proposals/ and docs/ — proposals with their decisions, one record per document
- audit/ and audit/autopilot/ — append-only trail of who did what
- Rules/rules.json — the Autopilot rules you saved, one per supplier
- Contacts, Jobs, Staff, Timesheets, Vehicles, Mileage, bank, Intake — working data — money is always recomputed from the events
Which model does what
There is no separate LLM reviewer in the pipeline: the “Why” line on each proposal card is composed by code (“Checker, code”), and a model only writes words in Ask.
Muse Glimmer 30B
Reads receipts and invoices, categorises them, and answers Ask in local mode. Also does the second reading (Verifier) in local mode, so the document never leaves your machine.
Muse Spark
Same reading and answering jobs when you bring your own Meta API key (key mode). Stands in as the Verifier when Muse Spark Open is not set up.
Muse Spark Open (optional)
Independent second reading in key mode, only if the server owner set it up (hosted open weights). Measured on 400 synthetic documents: every field right 91 % clean and 93 % messy.
Muse Voice Transcribe
Turns a spoken Ask question or instruction into text, which then goes through the normal grounded Ask. Uses your Meta key or the server's; a local fallback model takes over if it fails, and each answer says which one heard it. Audio is not kept.
SAM 3.1
Finds and crops the receipt inside a messy phone photo — only when switched on. Off by default; plain code crop is the default.
Muse Image
Made the brand artwork at build time. It is not part of the running product.
What is never automatic
- Posting to your books — every entry waits for your Approve, except Autopilot L2 postings that match a rule you saved.
- Creating an Autopilot rule — only your ticked approval writes one, one per supplier.
- Sending a VAT return to HMRC — nothing is sent until you tick the legal declaration and press Submit.
- Sending or chasing an invoice email — drafts only; you read, edit and confirm each one.
- Deleting or editing a ledger event — corrections are new reversing events, never edits.
- Auto-approving sales, mileage claims, or anything with a failed or warned check — these always wait for you.
- Inventing numbers — Ask answers are computed by code from your ledger; the model only writes the words, and every figure is checked against the facts.
FAQ
Where is my data?
In your own OneDrive, in a folder called Accnomos (Apps/Accnomos on a personal account, /Accnomos on a work account). There is no Accnomos database and we keep no copy. Open the folder any time: receipts by month, invoices, bank statements, VAT returns, Books.xlsx and the _System ledger underneath.
Can it file my VAT by itself?
No. The nine boxes are worked out by code, but nothing is sent until you tick the legal declaration and press Submit. Filing is sandbox only: no production filing is built. HMRC has closed production access for new Income Tax quarterly-update products for the 2026-27 tax year, so live Income Tax filing from Accnomos cannot start before the 2027-28 year; live VAT filing needs a separate HMRC production application.
What if the AI is wrong?
Three things stand between a wrong reading and your books: plain code checks (maths, VAT, duplicates, currency, dates, confidence), a second independent reading that code compares field by field, and your Approve tap. Anything unsure waits in Needs a look with the reason shown.
When is a missing VAT number questioned?
When your business is VAT-registered and a purchase over £250 shows no VAT and no VAT number from a supplier the books do not know yet. The card asks “Is <supplier> VAT-registered? Over £250 they should give a VAT invoice”, with a tick for “isn't VAT-registered”. The tick teaches “not registered”; a VAT number seen on an approved receipt teaches “registered”; undoing the approval takes the tick back; you can change the stored answer any time on Contacts.
What does the verifier do?
It reads the same photo again with a different prompt, without seeing the first answer. Code compares supplier, VAT number, date, net, VAT and total. All six must agree or the proposal waits for you with both readings side by side. It never picks or merges values.
Why do I need a Meta key or a local model?
The reading and answering models run either on a machine you control (Muse Glimmer, local mode) or through a Meta API key you paste in (key mode). In local mode documents go only to that machine. In key mode with no key header, the server’s own key is used as a fallback.
Can I delete everything?
Yes. Delete the Accnomos folder in your OneDrive and sign out. Because we hold no copy, that removes everything. Undo inside the app never deletes: it adds a reversing entry so the trail stays complete.
What does Autopilot post on its own?
Only a receipt matching a rule you saved (same supplier, VAT number and treatment, total at most twice the usual) with every code check passing and no warnings, verifier agreeing, at level L2. L1 (the default) only proposes. It never invents rules and never posts sales, mileage or anything unsure.
Does it ever send email by itself?
No. Invoices, reminders and inbox replies are drafts until you confirm each one in turn: invoice sending needs your ticked confirmation, replies wait in Outlook Drafts for you to press Send, and triage never sends at all.
What does “estimate” mean on Payroll?
The tax and NI figures are a rough guide for monthly pay under tax code 1257L (month-1 basis, England/NI rates, NI category A). Your payroll provider works out the real amounts; Confirm posts the actuals you type in, not the estimate. Accnomos never files RTI or pays HMRC.
What can it see in my mailbox and calendar?
Only what each feature asks for, when you first use it: Outlook intake and triage read the Inbox list (triage sees sender, subject, date and a 255-character preview, never full bodies); drafts need Mail.ReadWrite; sending invoices needs Mail.Send; planning reads the calendar first and only writes on Apply. Details are in the privacy policy’s data map.
What has not been tested on real services?
Most features beyond the Meta paths: the live server's models, voice, the SAM crop, the demo's HMRC sandbox return and TrueLayer sandbox bank feed have run for real (4 Nov 2026, with records in the repo); a real OneDrive, mailbox and calendar, and phones other than the owner's, are tested on fakes or not yet run. The full list is in docs/HONESTY.md and each section above says what is not verified yet.
How do I check this page against the code?
Each section names the behaviour; the contracts live in docs/ARCHITECTURE.md, AUTOPILOT.md, ACTIONS.md, INBOX.md, PLANNER.md and HONESTY.md, tested by the runtime tests (services/runtime/tests) and the browser tests (apps/web/e2e). This page was last checked against main on 4 Nov 2026.