Extract provider, description and price automatically; light invoice ledger view
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 10/100
- Issue type
- Feature
- Clarity
- Clearly specified
- Activity status
- Stale
- Tech stack
- typescript
- Domain
- backend-api-design, frontend
Research direction
The issue says the work shipped the same day, so first check whether any follow-up remains. Read backend/src/invoices/extract.ts and backend/src/routes/emailDocuments.ts for extraction and intake behavior, then inspect the portal invoice ledger described in the issue. Done means the requested provider, description, and price extraction and dense ledger view are in place without overwriting operator-corrected drafts.
Written by the indexing model from the issue text.
Description
Request (user intake, 2026-10-04)
Review all invoices and the intake process. Two complaints:
- Provider extraction is poor — rows show "Unidentified provider" or raw
identifiers like "VAT/GST Number DE…". The operator wants name, title and
price extracted from a forwarded invoice automatically. - The invoice review table is too heavy. Wanted: a dense ledger view like the
published expense sheet (Date sent, Date paid, Provider, What, Price $,
Price EUR, Statement, Count) — not the current 4-column review queue.
../dapier may be updated if processing needs it.
Findings
- The dapier intake contract already carries the email
subjectandfrom,
andbackend/src/routes/emailDocuments.tsalready auto-processes invoice
intakes on arrival — the gap is thatextractInvoiceTextignored those
signals and only parsed two PDF layouts (AWS, Stripe), with an issuer
heuristic that happily returned "VAT/GST Number …" lines. - No dapier change is required; normalization lives dataops-side.
Shipped (same day)
- Extraction (
backend/src/invoices/extract.ts): email subject/sender hints
with a canonical provider catalog; "receipt/invoice from X" anchor; issuer
plausibility + credibility filters (field-label lines and payment-processor
noise rejected); generic labeled total/date/currency/invoice-number parsing
incl. European comma decimals; subject-derived description. Governance kept:
extraction never invents amountEur/paymentEvidence. - Untouched pending drafts are re-extracted automatically when a duplicate
arrives; new POST /invoices/{id}/reextract action (portal + CLI) upgrades
old bad rows on demand. Operator-corrected drafts are never overwritten. - Portal: the heavy table is replaced by a dense invoice ledger (sheet columns,
pending first, negative prices, row-click review, compact reprocess form,
re-extract button on eligible drafts); 44px mobile row floor kept.
Refs #232
- Dominant language
- TypeScript
- Stars
- 3
- Forks
- 0
- Avg merge
- 22m
- Merged PRs (30d)
- 94
Getting set up
- Ships a Dockerfile or Docker Compose file
- No pull request template
- No contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from DataTalksClub/dataops
-
design enhancement migration P2 podcast portal
Difficulty 5/5 Over a week Newbie friendliness 35/100
DataTalksClub/dataops#251 · 1 comment ·
Maintainers usually reply within 1 day
-
design enhancement needs grooming P2 research
Difficulty 4/5 3-5 days Newbie friendliness 45/100
DataTalksClub/dataops#250 ·
Maintainers usually reply within 1 day
-
backend bug data frontend human P1 portal
Difficulty 5/5 Over a week Newbie friendliness 25/100
DataTalksClub/dataops#244 · 7 comments ·
Maintainers usually reply within 1 day
-
infra needs grooming P1
Difficulty 4/5 3-5 days Newbie friendliness 35/100
DataTalksClub/dataops#235 ·
Maintainers usually reply within 1 day
-
backend data enhancement frontend P1
Difficulty 5/5 Over a week Newbie friendliness 25/100
DataTalksClub/dataops#232 · 10 comments ·
Maintainers usually reply within 1 day
All issues in DataTalksClub/dataops
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
zapcooking/frontend#946 ·
Maintainers usually reply within 1 day
-
enhancement good first issue
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
WiliamRosa/cosmos-semantic-platform#40 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 77/100
liberation-data/drivine#733 · 1 comment ·
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 64/100
makecindy/cindy#10062 · 1 comment ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day