Skip to content

Operations & Efficiency

Automation designed from your event log, not from a workshop diagram

We build back-office automation for finance, purchasing and order intake — document intake with confidence routing, validated writes through released ERP interfaces, and long-running cases held in a durable orchestrator instead of a cron job and a status column. The constraint we respect is that nothing gets built before the event log says what the process actually does: below roughly 80% of cases carrying complete timestamps and resolvable IDs, we fix the measurement before we touch the process. End to end that is 9 to 15 weeks from signature to a first process live in production, and 13 to 21 including handover — if someone quotes you six, ask what they are skipping.

30 minutes with the engineer who would do the work — not a salesperson. No obligation, and you keep whatever we work out on the call.

Back-office staff reviewing an automated document workflow against the event log

What we design against

65–85%
Touchless rate reachable on PO-backed invoicesNot a published benchmark and not a Palamed result — the band we design a PO-backed AP automation against, measured on your own invoice mix before and after. Non-PO invoices sit lower, around 30–50%, and a manual baseline is typically 15–35%. Anyone quoting 95% is quoting a demo.
15–30%
Residual exception rate we contract onThe band we write into the statement of work, not an average across a Palamed portfolio — we have not run enough AP programmes to have one. Vendors quote the automation rate; the number that decides your staffing is the one left over, so it goes in the contract and gets re-measured every quarter.
p50 under 2 days
Target invoice cycle time, clean PO-backed casesAgainst a typical manual p50 of 8–15 days. We report p90 next to it every time, because the average is the number that hides the queue your team actually lives in.
EUR 12.0/hr
Bulgarian labour cost vs the EU average of EUR 34.9Eurostat, 2025 hourly labour cost. A saved hour is worth about a third of the Western figure, so we build the case on cycle time, control and volume headroom rather than headcount.

What we build

Two analysts reviewing a data table together on a monitor

Process mining before anything gets built

We reconstruct the event log from system truth — SAP change documents (CDHDR/CDPOS) joined to EKKO/EKPO/EKBE and BKPF/BSEG/RSEG, or the audit tables in Dynamics 365, NetSuite and Odoo. Where one order fans out to three deliveries and two invoices we use OCEL 2.0 rather than forcing a single case ID and reporting rework that never happened. Discovery, conformance checking and variant analysis run in Celonis, Signavio, Apromore or PM4Py.

  • An IEEE 1849 XES or OCEL 2.0 event log extracted from your own systems, portable between tools and yours to keep
  • Variant concentration, rework rate per activity, and the automation ceiling the variant tail actually implies
  • A re-ranked backlog that names at least one candidate we recommend not automating, with the volume evidence
  • A master-data readiness read alongside the log — duplicate vendor rate on normalised name and EIK/VAT number, share of records missing a resolvable identifier, and article cross-reference coverage for order intake. This is usually what caps your touchless rate, not the extraction model, and it is cheaper to fix.
Workshop session around printed process diagrams on a table

Document intake with confidence routing

Invoices, orders and certificates arrive as attachments and scans. We classify, then extract with Azure AI Document Intelligence prebuilt models plus a custom neural model for line items, or ABBYY where degraded Cyrillic forces it. Amazon Textract has no Bulgarian and no Cyrillic support at all, which we say in week one rather than week six. Validation is deterministic policy — VIES, vendor master, IBAN change detection — never model output. Matching is three-way — purchase order, goods receipt, invoice — with price and quantity tolerance rules held as version-controlled policy rather than a setting someone changed in 2021. Non-PO invoices are a separate lane, because maverick buying means there is nothing to match against; we report what share of your spend arrives that way in week two, since it caps your touchless rate more than any model does. And we report GR/IR ageing before and after, because unmatched goods-received-not-invoiced is where the month-end hours actually go.

  • Per-field F1 measured on a sample of your own documents, header fields reported separately from line items
  • A confidence threshold stated with the auto-acceptance rate it produces and the measured error rate of what clears
  • A typed exception queue showing the reviewer the source image, the extracted value, the confidence and the exact rule that failed
  • A named owner for that queue on your side before go-live, with the daily volume it is expected to carry and the ageing SLA it is held to
Engineer annotating a system integration diagram on paper

API-first integration and durable orchestration

We write through released interfaces — OData V2/V4, BAPI, IDoc and Business Events in SAP, DMF and Business Events in Dynamics 365, SuiteTalk and RESTlets in NetSuite, XML-RPC in Odoo — and refuse direct table writes, because SAP's clean-core doctrine exists and the next upgrade enforces it silently. Long-running cases sit in Temporal, Camunda 8 or Step Functions, with Continue-As-New before Temporal's history ceiling — 51,200 events or 50 MB per execution, with warnings from 10,240 events, and it is the 50 MB that arrives first if you carry invoice payloads in workflow state rather than a reference to them.

  • Idempotency keys derived from business identity, so an at-least-once retry cannot post the same invoice twice
  • Compensating transactions, dead-letter queues and SLA timers for the days a case waits on a goods receipt
  • Business logic kept portable in BPMN or plain code, so the runtime stays a choice rather than becoming a rewrite
Engineer reviewing a monitoring dashboard at a desk at night

Retiring a brittle RPA estate

Record-and-playback binds automation to a UI that changes without notice, and unattended logins die at the next MFA rollout. We inventory by execution telemetry rather than by the bot register, because most estates contain bots that have not succeeded in months. Anything with a real interface becomes a typed integration behind an orchestrator; what genuinely has none is rebuilt as versioned Playwright code in source control.

  • An estate inventory built from run telemetry, with the bots that report success while posting nothing named explicitly
  • A decommissioning plan as a contracted deliverable, with the unattended runtime licences it releases
  • Nightly contract tests against the target UI, so vendor drift is caught before it costs a business day
Engineer walking a client through documentation on a laptop

E-invoicing and statutory reporting that survives the next mandate

We build once against the EN 16931 semantic model and emit UBL 2.1 or UN/CEFACT CII, treating XRechnung, ZUGFeRD 2.1, Peppol BIS Billing 3.0 and RO e-Factura as CIUS layers on top rather than four separate integrations. In Bulgaria that means EN 16931 today for CAIS EPP counterparties under Art. 115a of the Public Procurement Act, and an export layer for НАП SAF-T built to be regenerated rather than produced once — because the phase-in runs by taxpayer size with monthly, annual and on-demand sections, and the thresholds and dates have already moved. We check the current cohort schedule with НАП against your turnover before we commit to a date, and we build the export so a schedule change costs you a rerun rather than a project.

  • Schematron validation running in CI, so a malformed invoice fails a build instead of a tax authority
  • Peppol Access Point connectivity for four-corner exchange, plus a direct lane for clearance-model markets
  • Structured originals archived with their qualified seal for the statutory retention period, never a rendered PDF
Client meeting with numbers presented on a screen

What we have shipped, and what we have not

The closest project we have to this service is an end-to-end email-marketing automation for a beauty brand — segmentation, trigger campaigns, integrated across the outreach process — which cut the time their team spent on outreach by about 60% on their own measurement. We have not yet run a production SAP three-way-match programme. The architecture above is what we design and contract against rather than a case study in disguise, and the first client to do it with us gets the pricing that reflects that. Ask us on the call which parts are pattern and which parts are portfolio.

  • The four projects we can talk through in detail: a European car marketplace carrying over 300,000 listings, the Bulgarian Ministry of Education and Science dictionary at beron.mon.bg, an NLP module that answers trading questions arriving by email and Instagram with a person approving every reply, and the beauty-brand email automation
  • No ERP integration, no process-mining engagement and no e-invoicing build in that list — you are hearing that from us rather than finding it in month two
  • What transfers is data plumbing, integration discipline and honest measurement; what does not transfer is having sat through your month-end close, which is why stage one is deliberately cheap and reversible

Systems we work with

We integrate with what you already run. If a platform below is missing, tell us — the pattern usually transfers.

ERP and finance systems of record

  • SAP S/4HANAOData V2/V4, BAPI, IDoc, CDS views
  • SAP Business Technology PlatformIntegration Suite, Event Mesh
  • SAP Business OneService Layer, DI API
  • Microsoft Dynamics 365 Finance & OperationsDMF, Business Events
  • Dynamics 365 Business CentralAL extensions, API pages
  • Oracle NetSuiteSuiteTalk REST, RESTlets, SuiteScript 2.x
  • OdooXML-RPC / JSON-RPC and the newer JSON REST endpoints, version-dependent
  • Microinvest Delta Pro
  • Ажур L
  • Плюс Минус

Orchestration, integration and eventing

  • Temporaldurable execution, Continue-As-New
  • Camunda 8 / ZeebeBPMN 2.0, DMN 1.3
  • AWS Step Functions
  • Azure Durable Functions
  • Apache Airflow 3.x
  • Dagster
  • Prefect
  • n8n (queue mode
  • Postgres execution store)
  • Apache Kafka
  • Kafka Connect
  • Debezium CDC
  • MuleSoft Anypoint
  • Boomi
  • Workato
  • Azure Logic Apps Standard
  • Service Bus
  • API Management

Document processing and process mining

  • Azure AI Document Intelligenceprebuilt, custom neural, classifiers
  • Google Document AIForm Parser, Custom Extractor
  • ABBYY Vantage / FlexiCaptureCyrillic-grade OCR
  • Rossum
  • Hyperscience
  • Klippa
  • CelonisPQL, SAP and Oracle extractors
  • SAP Signavio Process Intelligence
  • Apromore
  • PM4Py
  • Disco
  • UiPath Process Mining and Task Mining

Standards, compliance and Bulgarian interfaces

  • EN 16931UBL 2.1 and UN/CEFACT CII bindings
  • Peppol eDeliveryBIS Billing 3.0, AS4, SMP/SML
  • XRechnung
  • ZUGFeRD 2.1
  • KSeF
  • RO e-Factura
  • IEEE 1849 XES and OCEL 2.0 event log formats
  • CAIS EPP (ЦАИС ЕОП)Art. 115a, Public Procurement Act
  • НАП e-services
  • RegiX
  • Търговски регистър API
  • Наредба Н-18 / СУПТО regime
  • VIES VAT validation and the EU consolidated sanctions list
  • КЕП via B-Trust
  • StampIT
  • InfoNotary
  • Evrotrust

How the work runs

  1. 01

    Event log and baseline

    2–3 weeks

    What you keep

    An XES or OCEL 2.0 event log extracted from your own change-document tables, a data-readiness score, and p50/p90 throughput, rework rate per activity and variant concentration for each process in scope.

    The decision it forces

    Which processes are worth automating at all, in what order, and which items currently on the shortlist get removed from it.

    When we stop

    If fewer than roughly 80% of cases carry complete timestamps and resolvable IDs, the mining result is not safe to build on. We stop, report the gap, and quote a data-repair scope instead of an automation.

  2. 02

    Benefit definition and target architecture

    1–2 weeks

    What you keep

    A benefit definition signed with Finance that separates capacity released from cash-visible saving, a total cost of ownership model at three times current volume, and a named write path for every system we will touch.

    The decision it forces

    Whether the payback survives a Bulgarian cost base, and which runtime carries the workflow logic.

    When we stop

    If the benefit will not consolidate into whole FTE-equivalents inside one team, or show up as cash — headcount not backfilled, BPO spend cut, discounts captured, DSO moved — we say so and do not build. Six minutes across forty people is noise, not a saving.

  3. 03

    First process into production

    6–10 weeks

    What you keep

    One end-to-end process live against your production ERP through a released interface, with idempotency keys, a typed exception queue, OpenTelemetry traces landing in your existing monitoring, and a runbook per automation. Preconditions confirmed before this stage starts: a non-production ERP client with representative master data, a service account with the specific write authorisations named, and one person authorised to approve exceptions. The slow part is never the extraction — it is those three, and we would rather stall in week one than at cutover.

    The decision it forces

    Whether the measured touchless rate and residual exception rate sit inside the range we contracted, and whether the next process is a copy or a rebuild.

    When we stop

    If per-field F1 on your own document sample cannot reach the threshold the business case assumed, we narrow the scope or stop. We do not lower the threshold to make the number work.

  4. 04

    Handover and hypercare

    4–6 weeks

    What you keep

    Change-control process, service accounts scoped to named operations, secrets rotation and a data-flow map ready for your NIS2 supply-chain review, a decommissioning list, and a stated MTTR.

    The decision it forces

    Whether your team owns the automation outright or keeps a support retainer, and what that retainer costs.

    When we stop

    If your own engineers cannot ship a change to the automation while we watch, we have built a dependency rather than an automation. We extend hypercare at our cost instead of handing over.

  5. 05

    Steady state

    Month 3 and month 12

    What you keep

    A quarterly re-mined event log against the same baseline, the measured touchless and residual exception rates, and the exception-queue ageing curve.

    The decision it forces

    Whether the automation is still earning its run cost, or should be narrowed or retired.

    When we stop

    A 15–30% residual exception rate on 2,000 invoices a month is roughly one full-time reviewer. If that person is not named and staffed before go-live, we do not go live. If the exception queue ages past its SLA for two consecutive weeks after handover, we stop adding processes and fix the ownership problem first.

Your event log already knows where the hours go. Ask it before the workshop.

What you are probably thinking

We tried RPA. Now we have forty bots nobody can maintain.

Correct, and that outcome was structural rather than bad luck: record-and-playback binds a bot to a UI that changes without notice, and unattended logins break at the next MFA rollout. We inventory by execution telemetry, not the register — most estates find bots that have not succeeded in months, and 20–40% get decommissioned outright. Anything with a real interface becomes a typed integration with retries, dead-letter queues and idempotency; what has none is rebuilt as versioned code with nightly contract tests. The decommissioning plan is a deliverable from day one, not a later conversation.

Our data is a mess and the ERP has been customised beyond recognition.

That is the normal starting condition, and it is the reason we mine the log before proposing anything. Customisation is visible in the change-document tables; data quality is measurable as the share of cases with complete timestamps and resolvable IDs. Below roughly 80% we tell you the mining result is unsafe and quote the measurement fix instead of a build — which is a smaller invoice and a worse-looking proposal, and still the right call. What we will not do is write to unreleased tables or the database directly: that violates clean core and the next S/4HANA upgrade breaks it silently.

Vendors promise 90%+ accuracy. Our invoices are Bulgarian, scanned crooked, half of them handwritten.

Then most of the market benchmarks do not apply to you, and one vendor is disqualified before the demo: Amazon Textract supports text detection in English, French, German, Italian, Portuguese and Spanish only, with handwriting in English only. No Cyrillic. Azure AI Document Intelligence, Google Document AI and ABBYY are the shortlist, and each carries a caveat we test rather than assume: the prebuilt invoice models and custom-neural training carry their own supported-locale lists, which are narrower than the underlying OCR’s Cyrillic coverage — so for Bulgarian we bench Read/Layout plus a custom model against the prebuilt path on your documents before we commit to either. On handwriting, be sceptical of all three: handwritten Cyrillic line items are not an OCR problem you can buy your way out of. That is a supplier problem, and we would rather move those twenty suppliers to a portal, a template or a Peppol lane than promise you a model that reads them — we will tell you which twenty they are in week two. Header fields — invoice number, date, total, VAT and EIK — commonly run 95–99% on clean digital PDFs; line items run 75–90% and fall further on degraded scans. We contract on per-field F1 measured on your own sample, with a confidence threshold and the auto-acceptance rate it yields. A single document-level accuracy figure means nobody looked at your mail.

Hours saved never show up in the P&L.

Usually true, and it is a measurement design failure rather than a technology one. Six minutes saved across forty people is absorbed into the working day and never reaches the ledger. We count only benefit that consolidates into whole FTE-equivalents inside one team, or that is cash-visible: headcount not backfilled, contractor and BPO spend reduced, early-payment discounts captured, late-payment penalties avoided, DSO or DPO days moved, audit and rework cost removed. That definition is agreed and signed with Finance before build, and the baseline comes from system timestamps rather than a survey of how long people think a task takes.

We are mid-S/4HANA migration. Everything is frozen.

Usually the right call, and the real constraint is not the code freeze — it is that your Basis team, your functional consultants and your change board have no spare hours until cutover. So the honest answer is that most of this waits. What does not have to wait is read-only: extracting the event log costs your team a database grant and about half a day, and it tells the migration programme which of the processes it is about to rebuild are ones nobody actually uses. If you want to build during the freeze, it can only be the layer outside the core — ingestion, validation, master-data screening, exception queues, orchestration — against released APIs and side-by-side on BTP, and we would still want your migration lead to say yes in writing before we start.

Our IT security review will take six months.

It should be scoped as a supply-chain review, because under NIS2 Art. 21 that is what it is — we hold production ERP credentials, so we sit inside your regulated supply chain, with a 24-hour early-warning and 72-hour notification clock on incidents under Art. 23. We arrive with the pack already built: service accounts scoped to named operations rather than a person’s login, secrets in a managed vault with rotation, documented network paths, logging into your SIEM, a signed DPA with a current subprocessor list, and a data-flow map naming every place personal data lands. That turns your review from an investigation into a checklist.

The people who understand the process are the ones this replaces.

They will not cooperate if that is the deal, and they are right not to. At EUR 12.0 an hour headcount removal is a weak case anyway — the return is cycle time, error rate and volume headroom. Practically: the process expert sits on the build team as the person who defines the exception rules, and the first thing we automate is the task they hate, not the one that demos best.

When we are the wrong choice

  • You want something demo-ready in three weeks. Our first month buys an event log and a baseline, not a working bot — if you already know exactly what to automate and only need hands, an RPA delivery shop will be faster and cheaper than us.
  • The business case rests entirely on removing headcount. At a Bulgarian labour cost of EUR 12.0 an hour that arithmetic is weak, and we will tell you before you sign rather than after the benefit review.
  • The target system has no released interface and you will not accept UI automation with the break rate it carries. We would rather decline than ship something that reports success while posting nothing.
  • You process fewer than roughly 1,500–2,000 supplier invoices a month. At EUR 12.0 an hour the labour saving will not cover the licence, the IDP page charges and the maintenance FTE-fraction, and we would be selling you control and cycle time dressed up as ROI. Tell us your monthly volume on the first call and we will do that arithmetic in front of you.

Questions we get asked

How do we know a process is worth automating before we commit budget to it?

From the log, not the workshop. Variant analysis routinely shows the candidate everyone wants automated is 3% of volume, while an unglamorous rework loop — a price change, a payment-term edit, a re-approval after a master-data change — carries more cost than the headline. The output that earns its fee is the ranking and the automation ceiling implied by the variant tail, not the process map.

What happens when it breaks at 02:00 and you are not here?

It goes in the contract rather than in a reassurance. Failures are typed rather than a screenshot in a log folder, OpenTelemetry traces land in your existing monitoring, alerts route to a named on-call, every automation has a runbook, and we state an MTTR — four business hours is a reasonable back-office target. If we cannot hand over the change-control process, we have built a dependency, and that is our problem to fix, not yours.

Can we legally automate a decision, given GDPR Article 22 and the AI Act?

Some of them, with conditions, and the boundary is worth drawing precisely instead of letting it freeze everything. Article 22 bars decisions based solely on automated processing with legal or similarly significant effects unless contract-necessary, law-authorised or explicitly consented — and then still requires human intervention and a right to contest. Annex III of the AI Act makes recruitment screening, promotion and termination, behaviour-based task allocation, performance monitoring and creditworthiness scoring high-risk. Those Annex III obligations have applied since 2 August 2026; the Art. 6(1) classification route follows on 2 August 2027, and amendments to this timeline have been actively proposed, so we re-check it against the current consolidated text rather than a slide. Matching an invoice to a purchase order is not a decision about a person and carries none of this.

Do we need a Celonis licence, or can we start smaller?

Start smaller. An extracted log run through PM4Py or Apromore costs a fraction of a platform licence and answers the only question that matters at that stage: whether continuous mining is warranted at all. If it is, you go into the Celonis or Signavio conversation with your own event log, your own case-ID decision already made, and a much better negotiating position than a vendor-led proof of value gives you.

How do we stop the licence bill exploding when volume triples?

By doing the arithmetic before choosing the platform. Power Automate entitles 10,000 Power Platform requests per 24 hours at the lowest licence tier, 200,000 and 500,000 at the higher ones, pooled across the tenant — so the ceiling you actually get depends on which licences you bought, which is the arithmetic vendors skip. It caps flows at 500 actions, keeps run history for 30 days, and switches a flow off after 14 days of consistent errors. n8n prunes execution data at 14 days and 10,000 executions by default. iPaaS vendors meter per task or per recipe. We model total cost of ownership at three times current volume, including IDP page charges and the maintenance FTE-fraction, and keep the logic portable so the runtime can change without a rewrite.

We sell into Germany and Poland — when do we actually have to be e-invoicing?

Germany has required the ability to receive EN 16931 invoices since 1 January 2025; issuance becomes mandatory for firms over EUR 800,000 turnover on 1 January 2027 and for everyone on 1 January 2028. Poland KSeF applies from 1 February 2026 above PLN 200 million of revenue and to all B2B from 1 April 2026. ViDA brings intra-EU B2B digital reporting on 1 July 2030. Build to the semantic model once and each market becomes a mapping exercise measured in days.

When does SAF-T actually hit us?

That depends on your turnover cohort, and it is the one date we will not quote you from a slide. НАП is phasing SAF-T in by taxpayer size, with monthly, annual and on-demand sections and a test-and-grace period per cohort, and both the thresholds and the start dates have already moved more than once. So we do not print a cohort table here that would go stale between you reading it and you signing anything: we check the current schedule directly with НАП against your turnover, in writing, before it goes into a plan. What we do commit to is the shape of the build — the accounting-data export is regenerable, so a schedule change costs you a rerun rather than a project. Regulatory dates on this page, Bulgarian and EU, were last verified on 29 August 2026; if you are reading this much later, ask us to re-verify before you rely on any of them.

Warm light ribbons on a dark field

Where does our back office actually lose the time?

Give us a read-only extract of the change-document tables for one process. We come back with the event log, the variant concentration, p50 and p90 throughput, and at least one thing we would tell you not to automate.

Scoped first step: a 2–3 week Event Log Baseline on a single process, fixed fee of EUR 6,000–14,000, credited in full against a build that starts within three months. The log and the analysis are yours whether or not we build anything after it.