From bcf2ebd81d720b045b2cc2aae96395540ee58ef5 Mon Sep 17 00:00:00 2001
From: DemchaAV
Date: Thu, 1 Oct 2026 15:52:05 +0100
Subject: [PATCH 1/2] test(qa): hold every template's DOCX export to its corpus
baseline, line by line, in LibreOffice
---
CHANGELOG.md | 12 +
CONTRIBUTING.md | 10 +
.../presets/CoverLetterDocxCorpus.java | 29 +
.../templates/cv/presets/CvDocxCorpus.java | 45 +
.../fidelity/DocxCorpusDocument.java | 29 +
.../fidelity/DocxFidelityCorpusTest.java | 121 +
.../fidelity/DocxFidelityGateTest.java | 170 +
.../templates/fidelity/FidelityBaseline.java | 136 +
.../fidelity/FidelityMeasurement.java | 147 +
.../fidelity/LibreOfficeConverter.java | 77 +
.../document/templates/fidelity/PdfLines.java | 125 +
.../invoice/presets/InvoiceDocxCorpus.java | 45 +
.../proposal/presets/ProposalDocxCorpus.java | 59 +
.../receipt/presets/ReceiptDocxCorpus.java | 21 +
.../rota/presets/RotaDocxCorpus.java | 17 +
.../libreoffice-windows-lines.tsv | 3611 +++++++++++++++++
.../docx-fidelity/libreoffice-windows.tsv | 64 +
17 files changed, 4718 insertions(+)
create mode 100644 qa/src/test/java/com/demcha/compose/document/templates/coverletter/presets/CoverLetterDocxCorpus.java
create mode 100644 qa/src/test/java/com/demcha/compose/document/templates/cv/presets/CvDocxCorpus.java
create mode 100644 qa/src/test/java/com/demcha/compose/document/templates/fidelity/DocxCorpusDocument.java
create mode 100644 qa/src/test/java/com/demcha/compose/document/templates/fidelity/DocxFidelityCorpusTest.java
create mode 100644 qa/src/test/java/com/demcha/compose/document/templates/fidelity/DocxFidelityGateTest.java
create mode 100644 qa/src/test/java/com/demcha/compose/document/templates/fidelity/FidelityBaseline.java
create mode 100644 qa/src/test/java/com/demcha/compose/document/templates/fidelity/FidelityMeasurement.java
create mode 100644 qa/src/test/java/com/demcha/compose/document/templates/fidelity/LibreOfficeConverter.java
create mode 100644 qa/src/test/java/com/demcha/compose/document/templates/fidelity/PdfLines.java
create mode 100644 qa/src/test/java/com/demcha/compose/document/templates/invoice/presets/InvoiceDocxCorpus.java
create mode 100644 qa/src/test/java/com/demcha/compose/document/templates/proposal/presets/ProposalDocxCorpus.java
create mode 100644 qa/src/test/java/com/demcha/compose/document/templates/receipt/presets/ReceiptDocxCorpus.java
create mode 100644 qa/src/test/java/com/demcha/compose/document/templates/rota/presets/RotaDocxCorpus.java
create mode 100644 qa/src/test/resources/docx-fidelity/libreoffice-windows-lines.tsv
create mode 100644 qa/src/test/resources/docx-fidelity/libreoffice-windows.tsv
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 435b3fbb0..eba95581f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1475,6 +1475,18 @@ follow semantic versioning; release dates are ISO 8601.
### Tests
+- **The DOCX export is held to its corpus, line by line.** `DocxFidelityCorpusTest` exports
+ every template preset — 62 documents across CVs, cover letters, invoices, proposals, a
+ receipt and a rota — to DOCX, has LibreOffice set each one, and finds each of the page's
+ lines in it by its letters. Against the committed baseline a document fails when a line is
+ no longer found (set at other words or on another page), when a line drifts half a point
+ further from the page, or when it takes a page more. Counts per document would not do: a
+ sidebar CV that LibreOffice sets about 3pt off throughout lost an indented list without
+ its counts moving, and the line check names the two lines lost and the six set 12pt
+ higher. It runs on request, `-Dgraphcompose.docxFidelity=libreoffice`; a change that moves
+ documents nearer the page rewrites the baseline, whose diff shows which. `DocxFidelityGateTest`
+ holds the gate itself to lines set lower, a line lost and a page more.
+
- **One DOCX export's state stays in that export — now pinned.** The backend keeps what an
export is in the middle of in its own fields, and starts each export from nothing.
`DocxExportIsolationTest` holds that to the byte on deterministic output: a backend used
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 1156937d5..71779a89e 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -345,6 +345,16 @@ Choose the smallest tests that match the change:
[CvV2VisualParityTest.java (CV)](qa/src/test/java/com/demcha/compose/document/templates/cv/presets/CvV2VisualParityTest.java)
[CoverLetterV2VisualParityTest.java (cover letter)](qa/src/test/java/com/demcha/compose/document/templates/coverletter/presets/CoverLetterV2VisualParityTest.java)
and the [per-preset smoke tests](qa/src/test/java/com/demcha/compose/document/templates/cv/presets)
+- For DOCX export (`render-docx`) changes:
+ [DocxFidelityCorpusTest.java](qa/src/test/java/com/demcha/compose/document/templates/fidelity/DocxFidelityCorpusTest.java).
+ It exports every template preset to DOCX, has LibreOffice set each one, and holds every
+ line of every document to the drift its baseline records: a line set further from the page,
+ a line set at other words, or a page more fails it. It needs LibreOffice and runs only when
+ asked for — install first, as for any standalone `qa` run:
+ `./mvnw -B -ntp test -f qa/pom.xml -Dtest=DocxFidelityCorpusTest -Dgraphcompose.docxFidelity=libreoffice`.
+ A change that moves documents nearer the page rewrites the baseline with
+ `-Dgraphcompose.docxFidelity.update=true`, and commits it with the change: its diff shows
+ which documents moved. A new preset joins the corpus in its family's `*DocxCorpus` class.
If a change affects public docs, examples, or screenshots, update those assets in the same PR so the repository stays internally consistent.
diff --git a/qa/src/test/java/com/demcha/compose/document/templates/coverletter/presets/CoverLetterDocxCorpus.java b/qa/src/test/java/com/demcha/compose/document/templates/coverletter/presets/CoverLetterDocxCorpus.java
new file mode 100644
index 000000000..759b9e096
--- /dev/null
+++ b/qa/src/test/java/com/demcha/compose/document/templates/coverletter/presets/CoverLetterDocxCorpus.java
@@ -0,0 +1,29 @@
+package com.demcha.compose.document.templates.coverletter.presets;
+
+import com.demcha.compose.document.templates.api.DocumentTemplate;
+import com.demcha.compose.document.templates.coverletter.data.CoverLetterDocument;
+import com.demcha.compose.document.templates.fidelity.DocxCorpusDocument;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.function.Supplier;
+
+/** The cover-letter presets of the DOCX fidelity corpus, each on the canonical letter. */
+public final class CoverLetterDocxCorpus {
+
+ private CoverLetterDocxCorpus() {
+ }
+
+ public static List documents() {
+ List documents = new ArrayList<>();
+ CoverLetterPresetFixtures.presets().forEach(arguments -> {
+ Object[] preset = arguments.get();
+ @SuppressWarnings("unchecked")
+ Supplier> template =
+ (Supplier>) preset[2];
+ documents.add(new DocxCorpusDocument("letter", (String) preset[0], (Double) preset[1],
+ session -> template.get().compose(session, CoverLetterPresetFixtures.canonicalLetter())));
+ });
+ return documents;
+ }
+}
diff --git a/qa/src/test/java/com/demcha/compose/document/templates/cv/presets/CvDocxCorpus.java b/qa/src/test/java/com/demcha/compose/document/templates/cv/presets/CvDocxCorpus.java
new file mode 100644
index 000000000..10d3ebfa2
--- /dev/null
+++ b/qa/src/test/java/com/demcha/compose/document/templates/cv/presets/CvDocxCorpus.java
@@ -0,0 +1,45 @@
+package com.demcha.compose.document.templates.cv.presets;
+
+import com.demcha.compose.document.templates.api.DocumentTemplate;
+import com.demcha.compose.document.templates.cv.data.CvDocument;
+import com.demcha.compose.document.templates.fidelity.DocxCorpusDocument;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.function.Supplier;
+
+/** The CV presets of the DOCX fidelity corpus, each on the fixture its own tests render. */
+public final class CvDocxCorpus {
+
+ private CvDocxCorpus() {
+ }
+
+ public static List documents() {
+ List documents = new ArrayList<>();
+ CvPresetFixtures.presets().forEach(arguments -> {
+ Object[] preset = arguments.get();
+ @SuppressWarnings("unchecked")
+ Supplier> template = (Supplier>) preset[2];
+ documents.add(cv((String) preset[0], (Double) preset[1], template, CvPresetFixtures.canonicalDocument()));
+ });
+ documents.add(cv("charcoal_gold", 0, CharcoalGold::create, CharcoalGoldFixtures.canonicalCv()));
+ documents.add(cv("navy_sidebar", 0, NavySidebar::create, NavySidebarFixtures.canonicalCv()));
+ documents.add(cv("slate_orange", -1, SlateOrange::create, SlateOrangeFixtures.canonicalCv()));
+ documents.add(cv("midnight_navy", -1, MidnightNavy::create, MidnightNavyFixtures.canonicalCv()));
+ documents.add(cv("orange_ops", -1, OrangeOps::create, OrangeOpsFixtures.canonicalCv()));
+ documents.add(cv("professional_sidebar", -1, ProfessionalSidebar::create, ProfessionalSidebarFixtures.canonicalCv()));
+ documents.add(cv("serif_headline", -1, SerifHeadline::create, SerifHeadlineFixtures.canonicalCv()));
+ documents.add(cv("teal_pulse", -1, TealPulse::create, TealPulseFixtures.canonicalCv()));
+ documents.add(cv("terracotta_rail", -1, TerracottaRail::create, TerracottaRailFixtures.canonicalCv()));
+ documents.add(cv("violet_grid", -1, VioletGrid::create, VioletGridFixtures.canonicalCv()));
+ return documents;
+ }
+
+ private static DocxCorpusDocument cv(String name, double margin,
+ Supplier> template, CvDocument cv) {
+ return new DocxCorpusDocument("cv", name, margin, session -> {
+ OrangeOpsTestFont.register(session);
+ template.get().compose(session, cv);
+ });
+ }
+}
diff --git a/qa/src/test/java/com/demcha/compose/document/templates/fidelity/DocxCorpusDocument.java b/qa/src/test/java/com/demcha/compose/document/templates/fidelity/DocxCorpusDocument.java
new file mode 100644
index 000000000..1f9ca92ee
--- /dev/null
+++ b/qa/src/test/java/com/demcha/compose/document/templates/fidelity/DocxCorpusDocument.java
@@ -0,0 +1,29 @@
+package com.demcha.compose.document.templates.fidelity;
+
+import com.demcha.compose.document.api.DocumentSession;
+
+import java.util.Objects;
+import java.util.function.Consumer;
+
+/**
+ * One document of the DOCX fidelity corpus: a template preset composed on its fixture.
+ *
+ * @param family the template family, such as {@code cv} or {@code invoice}
+ * @param name the preset, unique within its family
+ * @param margin the page margin on A4, in points, or a negative value for the session's own
+ * page and margins
+ * @param compose composes the document into a fresh session
+ */
+public record DocxCorpusDocument(String family, String name, double margin, Consumer compose) {
+
+ public DocxCorpusDocument {
+ Objects.requireNonNull(family, "family");
+ Objects.requireNonNull(name, "name");
+ Objects.requireNonNull(compose, "compose");
+ }
+
+ /** The file stem the document's PDF and DOCX are written under. */
+ public String stem() {
+ return family + "-" + name;
+ }
+}
diff --git a/qa/src/test/java/com/demcha/compose/document/templates/fidelity/DocxFidelityCorpusTest.java b/qa/src/test/java/com/demcha/compose/document/templates/fidelity/DocxFidelityCorpusTest.java
new file mode 100644
index 000000000..4fcd02651
--- /dev/null
+++ b/qa/src/test/java/com/demcha/compose/document/templates/fidelity/DocxFidelityCorpusTest.java
@@ -0,0 +1,121 @@
+package com.demcha.compose.document.templates.fidelity;
+
+import com.demcha.compose.GraphCompose;
+import com.demcha.compose.document.api.DocumentPageSize;
+import com.demcha.compose.document.api.DocumentSession;
+import com.demcha.compose.document.backend.semantic.docx.DocxSemanticBackend;
+import com.demcha.compose.document.templates.coverletter.presets.CoverLetterDocxCorpus;
+import com.demcha.compose.document.templates.cv.presets.CvDocxCorpus;
+import com.demcha.compose.document.templates.invoice.presets.InvoiceDocxCorpus;
+import com.demcha.compose.document.templates.proposal.presets.ProposalDocxCorpus;
+import com.demcha.compose.document.templates.receipt.presets.ReceiptDocxCorpus;
+import com.demcha.compose.document.templates.rota.presets.RotaDocxCorpus;
+import org.junit.jupiter.api.Assumptions;
+import org.junit.jupiter.api.Test;
+
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+/**
+ * Every template preset's DOCX, set by an editor, stands no further from the engine's PDF than
+ * its baseline holds it.
+ *
+ * The engine draws each corpus document to PDF and exports it to DOCX; LibreOffice converts
+ * the DOCX to PDF; each document is measured line by line against the page
+ * ({@link FidelityMeasurement}) and held to the baseline for this editor and operating system
+ * ({@link FidelityBaseline}). A change to the export that sets any document further from the
+ * page fails here, wherever the document is.
+ *
+ * It runs only when asked for, with {@code -Dgraphcompose.docxFidelity=libreoffice}: it
+ * needs LibreOffice and takes a few minutes. Asked for and without LibreOffice, it fails rather
+ * than passing unrun. {@code -Dgraphcompose.docxFidelity.update=true} writes what it measured as
+ * the baseline, for a change that moves documents nearer the page; the baseline's diff then
+ * shows the reviewer which documents moved. The documents, their PDFs and the report are left
+ * in {@code target/docx-fidelity}.
+ */
+class DocxFidelityCorpusTest {
+
+ private static final String EDITOR = "libreoffice";
+
+ @Test
+ void everyDocumentStandsNoFurtherFromThePageThanItsBaseline() throws Exception {
+ Assumptions.assumeTrue(EDITOR.equals(System.getProperty("graphcompose.docxFidelity")),
+ "NOT_RUN: the DOCX fidelity corpus runs with -Dgraphcompose.docxFidelity=libreoffice");
+ LibreOfficeConverter converter = LibreOfficeConverter.find().orElseThrow(() -> new IllegalStateException(
+ "the DOCX fidelity corpus was asked for, and no LibreOffice was found: set -Dgraphcompose.soffice"));
+
+ Path work = Path.of("target", "docx-fidelity").toAbsolutePath();
+ Path engine = Files.createDirectories(work.resolve("engine"));
+ Path editor = work.resolve(EDITOR);
+ List corpus = corpus();
+ List docx = new ArrayList<>();
+ for (DocxCorpusDocument document : corpus) {
+ docx.add(export(document, engine));
+ }
+ converter.convert(docx, editor, work);
+
+ List measurements = new ArrayList<>();
+ for (DocxCorpusDocument document : corpus) {
+ Path converted = editor.resolve(document.stem() + ".pdf");
+ assertThat(converted).as("LibreOffice's PDF of %s", document.stem()).exists();
+ measurements.add(FidelityMeasurement.of(document.stem(),
+ engine.resolve(document.stem() + ".pdf"), converted));
+ }
+ String note = EDITOR + " on " + LibreOfficeConverter.platform();
+ FidelityBaseline.write(work.resolve("measured-" + EDITOR + ".tsv"), note, measurements);
+
+ Path baseline = Path.of("src", "test", "resources", "docx-fidelity",
+ EDITOR + "-" + LibreOfficeConverter.platform() + ".tsv");
+ if (Boolean.getBoolean("graphcompose.docxFidelity.update")) {
+ FidelityBaseline.write(baseline, note, measurements);
+ return;
+ }
+ assertThat(FidelityBaseline.read(baseline).regressions(measurements))
+ .as("documents set further from the page than %s holds them (measured: %s)",
+ baseline, work.resolve("measured-" + EDITOR + ".tsv"))
+ .isEmpty();
+ }
+
+ @Test
+ void everyCorpusDocumentHasAStemOfItsOwn() {
+ Set stems = new HashSet<>();
+ for (DocxCorpusDocument document : corpus()) {
+ assertThat(stems.add(document.stem())).as("%s named once", document.stem()).isTrue();
+ }
+ assertThat(stems).hasSizeGreaterThanOrEqualTo(60);
+ }
+
+ /** Every family's presets. */
+ static List corpus() {
+ List corpus = new ArrayList<>();
+ corpus.addAll(CvDocxCorpus.documents());
+ corpus.addAll(CoverLetterDocxCorpus.documents());
+ corpus.addAll(InvoiceDocxCorpus.documents());
+ corpus.addAll(ProposalDocxCorpus.documents());
+ corpus.addAll(ReceiptDocxCorpus.documents());
+ corpus.addAll(RotaDocxCorpus.documents());
+ return corpus;
+ }
+
+ /** Writes a document's PDF and its DOCX; returns the DOCX. */
+ private static Path export(DocxCorpusDocument document, Path dir) throws Exception {
+ var builder = GraphCompose.document();
+ if (document.margin() >= 0) {
+ float margin = (float) document.margin();
+ builder.pageSize(DocumentPageSize.A4).margin(margin, margin, margin, margin);
+ }
+ try (DocumentSession session = builder.create()) {
+ document.compose().accept(session);
+ Files.write(dir.resolve(document.stem() + ".pdf"), session.toPdfBytes());
+ Path docx = dir.resolve(document.stem() + ".docx");
+ Files.write(docx, session.export(DocxSemanticBackend.builder().deterministic(true).build()));
+ return docx;
+ }
+ }
+}
diff --git a/qa/src/test/java/com/demcha/compose/document/templates/fidelity/DocxFidelityGateTest.java b/qa/src/test/java/com/demcha/compose/document/templates/fidelity/DocxFidelityGateTest.java
new file mode 100644
index 000000000..1bb05c968
--- /dev/null
+++ b/qa/src/test/java/com/demcha/compose/document/templates/fidelity/DocxFidelityGateTest.java
@@ -0,0 +1,170 @@
+package com.demcha.compose.document.templates.fidelity;
+
+import com.demcha.compose.GraphCompose;
+import com.demcha.compose.document.api.DocumentSession;
+import com.demcha.compose.document.dsl.PageFlowBuilder;
+import com.demcha.compose.document.style.DocumentInsets;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.io.TempDir;
+
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.function.Consumer;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+import static org.assertj.core.api.Assertions.within;
+
+/**
+ * The fidelity gate catches what it is there to catch: lines set lower, a line lost, a page
+ * more — measured on PDFs drawn to differ in just that way, and held line by line against a
+ * baseline — and lets a document that moved nearer the page through.
+ */
+class DocxFidelityGateTest {
+
+ private static final List LINES = List.of(
+ "The first paragraph of the probe document.",
+ "A second paragraph, set under the first.",
+ "A third paragraph closes the page.");
+
+ @TempDir
+ Path dir;
+
+ @Test
+ void aDocumentMeasuredAgainstItselfDoesNotDrift() throws Exception {
+ Path page = pdf("page", flow -> LINES.forEach(flow::addParagraph));
+
+ FidelityMeasurement measured = FidelityMeasurement.of("probe", page, page);
+
+ assertThat(measured.lines()).isEqualTo(3);
+ assertThat(measured.matched()).isEqualTo(3);
+ assertThat(measured.median()).isZero();
+ assertThat(measured.over2()).isZero();
+ }
+
+ @Test
+ void linesSetLowerDriftByAsMuch() throws Exception {
+ Path page = pdf("page", flow -> LINES.forEach(flow::addParagraph));
+ Path lower = pdf("lower", flow -> {
+ flow.addSpacer(spacer -> spacer.height(6));
+ LINES.forEach(flow::addParagraph);
+ });
+
+ FidelityMeasurement measured = FidelityMeasurement.of("probe", page, lower);
+
+ assertThat(measured.matched()).isEqualTo(3);
+ assertThat(measured.median()).isCloseTo(6, within(0.5));
+ assertThat(measured.over2()).isEqualTo(3);
+ }
+
+ @Test
+ void aLostLineIsNotFound() throws Exception {
+ Path page = pdf("page", flow -> LINES.forEach(flow::addParagraph));
+ Path lost = pdf("lost", flow -> LINES.subList(0, 2).forEach(flow::addParagraph));
+
+ assertThat(FidelityMeasurement.of("probe", page, lost).matched()).isEqualTo(2);
+ }
+
+ @Test
+ void aPageMoreIsCounted() throws Exception {
+ Path page = pdf("page", flow -> LINES.forEach(flow::addParagraph));
+ Path longer = pdf("longer", flow -> {
+ LINES.forEach(flow::addParagraph);
+ flow.addPageBreak(pageBreak -> { });
+ flow.addParagraph("Spilled onto a page of its own.");
+ });
+
+ FidelityMeasurement measured = FidelityMeasurement.of("probe", page, longer);
+
+ assertThat(measured.enginePages()).isEqualTo(1);
+ assertThat(measured.editorPages()).isEqualTo(2);
+ }
+
+ @Test
+ void theBaselineFailsALineSetFurtherFromThePage() {
+ FidelityBaseline baseline = FidelityBaseline.of(List.of(doc("cv-probe", 1, 1, line(1, "aa", 0.4), line(1, "bb", -2.8))));
+
+ assertThat(baseline.regressions(List.of(doc("cv-probe", 1, 1, line(1, "aa", 1.0), line(1, "bb", -2.8)))))
+ .as("a line 0.6pt further").singleElement().asString().contains("1 lines further").contains("+1.00");
+ assertThat(baseline.regressions(List.of(doc("cv-probe", 1, 1, line(1, "aa", 0.4), line(1, "bb", -3.4)))))
+ .as("a line already 2.8pt off, set 0.6pt further").singleElement().asString().contains("further");
+ }
+
+ @Test
+ void theBaselineFailsALineNoLongerFound() {
+ FidelityBaseline baseline = FidelityBaseline.of(List.of(doc("cv-probe", 1, 1, line(1, "aa", 0.4), line(1, "bb", 2.8))));
+
+ assertThat(baseline.regressions(List.of(doc("cv-probe", 1, 1, line(1, "aa", 0.4)))))
+ .singleElement().asString().contains("1 lines no longer found").contains("\"bb\"");
+ }
+
+ @Test
+ void theBaselineFailsAPageFurtherFromTheEnginesCountAndADocumentItDoesNotHold() {
+ FidelityBaseline baseline = FidelityBaseline.of(List.of(doc("cv-probe", 1, 1, line(1, "aa", 0.4))));
+
+ assertThat(baseline.regressions(List.of(doc("cv-probe", 1, 2, line(1, "aa", 0.4)))))
+ .singleElement().asString().contains("2 pages");
+ assertThat(baseline.regressions(List.of(doc("cv-other", 1, 1, line(1, "aa", 0.4)))))
+ .singleElement().asString().contains("not in the baseline");
+ }
+
+ @Test
+ void theBaselineLetsThroughALineWithinRoundingOrNearerThePage() {
+ FidelityBaseline baseline = FidelityBaseline.of(List.of(doc("cv-probe", 1, 2, line(1, "aa", 0.4), line(1, "bb", 2.8))));
+
+ assertThat(baseline.regressions(List.of(doc("cv-probe", 1, 2, line(1, "aa", 0.8), line(1, "bb", 3.2)))))
+ .as("within half a point").isEmpty();
+ assertThat(baseline.regressions(List.of(doc("cv-probe", 1, 1, line(1, "aa", 0), line(1, "bb", 0.1),
+ line(1, "cc", 0.2))))).as("nearer the page, a page fewer and a line more found").isEmpty();
+ }
+
+ @Test
+ void aBaselineIsReadAsItWasWritten() throws Exception {
+ Path file = dir.resolve("baseline.tsv");
+ List rows = List.of(doc("cv-a", 1, 1, line(1, "aa", 0.25)),
+ doc("cv-b", 2, 3, line(1, "aa", -1.5), line(2, "cc", 3)));
+
+ FidelityBaseline.write(file, "probe", rows);
+
+ assertThat(FidelityBaseline.read(file).regressions(rows)).isEmpty();
+ assertThat(FidelityBaseline.read(file).regressions(List.of(doc("cv-b", 2, 3, line(1, "aa", -1.5)))))
+ .as("the line file read back with the document file").singleElement().asString().contains("no longer found");
+ assertThat(Files.readAllLines(file)).first().isEqualTo("# probe");
+ }
+
+ @Test
+ void aMalformedBaselineRowIsRefusedByName() {
+ assertThatThrownBy(() -> FidelityMeasurement.parse("cv-a\t1\tone\t40\t39\t0.25\t0.5\t1", Map.of()))
+ .isInstanceOf(IllegalArgumentException.class)
+ .hasMessageContaining("cv-a");
+ }
+
+ @SafeVarargs
+ private static FidelityMeasurement doc(String stem, int enginePages, int editorPages,
+ Map.Entry... lines) {
+ Map found = new LinkedHashMap<>();
+ for (Map.Entry line : lines) {
+ found.put(line.getKey(), line.getValue());
+ }
+ return new FidelityMeasurement(stem, enginePages, editorPages, lines.length, lines.length, 0, 0, 0, found);
+ }
+
+ private static Map.Entry line(int page, String letters, double drift) {
+ return Map.entry(page + ":" + letters, new FidelityMeasurement.Found(page, letters, drift));
+ }
+
+ private Path pdf(String name, Consumer content) throws Exception {
+ Path file = dir.resolve(name + ".pdf");
+ try (DocumentSession session = GraphCompose.document()
+ .pageSize(400, 300)
+ .margin(DocumentInsets.of(20))
+ .create()) {
+ session.pageFlow(content::accept);
+ Files.write(file, session.toPdfBytes());
+ }
+ return file;
+ }
+}
diff --git a/qa/src/test/java/com/demcha/compose/document/templates/fidelity/FidelityBaseline.java b/qa/src/test/java/com/demcha/compose/document/templates/fidelity/FidelityBaseline.java
new file mode 100644
index 000000000..bbfe2c712
--- /dev/null
+++ b/qa/src/test/java/com/demcha/compose/document/templates/fidelity/FidelityBaseline.java
@@ -0,0 +1,136 @@
+package com.demcha.compose.document.templates.fidelity;
+
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Comparator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+/**
+ * The measurements a DOCX export is held to: one per corpus document, and the drift of each of
+ * its lines the editor set where the page does, as last accepted.
+ *
+ * A change may move the export nearer the page, never further. Against its baseline a
+ * document fails when the editor sets it on a page count further from the engine's, when a
+ * line the baseline found is no longer found — the editor breaks it at another word, or puts it
+ * on another page — or when a found line drifts {@value #LINE_SLACK}pt further from the page
+ * than it did. Line by line, because a document already set a few points off throughout hides a
+ * new defect in its counts. A document the baseline does not hold fails until the baseline is
+ * written with it.
+ *
+ * The baseline is two files: {@code .tsv}, a row per document, and
+ * {@code -lines.tsv}, a row per found line, named by its page and a digest of its
+ * letters, with a few of them to read it by.
+ */
+final class FidelityBaseline {
+
+ /** How much further a line may drift, in points: rounding, not room for a change to spend. */
+ static final double LINE_SLACK = 0.5;
+
+ /** How many of a document's failing lines a failure names. */
+ private static final int NAMED = 4;
+
+ private final Map rows;
+
+ private FidelityBaseline(Map rows) {
+ this.rows = rows;
+ }
+
+ static FidelityBaseline read(Path documents) throws IOException {
+ Map> lines = new LinkedHashMap<>();
+ Path lineFile = linesOf(documents);
+ if (Files.exists(lineFile)) {
+ for (String row : Files.readAllLines(lineFile, StandardCharsets.UTF_8)) {
+ if (!row.isBlank() && !row.startsWith("#")) {
+ FidelityMeasurement.parseLine(row, lines);
+ }
+ }
+ }
+ Map rows = new LinkedHashMap<>();
+ if (Files.exists(documents)) {
+ for (String row : Files.readAllLines(documents, StandardCharsets.UTF_8)) {
+ if (row.isBlank() || row.startsWith("#") || row.equals(FidelityMeasurement.HEADER)) {
+ continue;
+ }
+ String stem = row.substring(0, Math.max(0, row.indexOf('\t')));
+ FidelityMeasurement measured = FidelityMeasurement.parse(row, lines.getOrDefault(stem, Map.of()));
+ rows.put(measured.stem(), measured);
+ }
+ }
+ return new FidelityBaseline(rows);
+ }
+
+ static FidelityBaseline of(Collection measurements) {
+ Map rows = new LinkedHashMap<>();
+ measurements.forEach(row -> rows.put(row.stem(), row));
+ return new FidelityBaseline(rows);
+ }
+
+ /** Writes the measurements as a baseline, under a note of where they were taken. */
+ static void write(Path documents, String note, Collection measurements) throws IOException {
+ List sorted = measurements.stream()
+ .sorted(Comparator.comparing(FidelityMeasurement::stem)).toList();
+ List rows = new ArrayList<>(List.of("# " + note, FidelityMeasurement.HEADER));
+ List lines = new ArrayList<>(List.of("# " + note + " — document, line, drift below the page (pt), letters"));
+ for (FidelityMeasurement measured : sorted) {
+ rows.add(measured.row());
+ lines.addAll(measured.lineRows());
+ }
+ Files.createDirectories(documents.toAbsolutePath().getParent());
+ Files.write(documents, rows, StandardCharsets.UTF_8);
+ Files.write(linesOf(documents), lines, StandardCharsets.UTF_8);
+ }
+
+ /** What each measurement does worse than its baseline; empty when none does. */
+ List regressions(Collection measurements) {
+ List found = new ArrayList<>();
+ for (FidelityMeasurement now : measurements) {
+ FidelityMeasurement was = rows.get(now.stem());
+ if (was == null) {
+ found.add(now.stem() + ": not in the baseline; measured " + now.row());
+ continue;
+ }
+ int pagesOffWas = Math.abs(was.editorPages() - was.enginePages());
+ int pagesOffNow = Math.abs(now.editorPages() - now.enginePages());
+ if (pagesOffNow > pagesOffWas) {
+ found.add(now.stem() + ": set on " + now.editorPages() + " pages against the page's "
+ + now.enginePages() + " (baseline " + was.editorPages() + ")");
+ }
+ List lost = new ArrayList<>();
+ List further = new ArrayList<>();
+ was.found().forEach((id, line) -> {
+ FidelityMeasurement.Found there = now.found().get(id);
+ if (there == null) {
+ lost.add("\"" + line.preview() + "\"");
+ } else if (Math.abs(there.drift()) > Math.abs(line.drift()) + LINE_SLACK) {
+ further.add(String.format(Locale.ROOT, "\"%s\" %+.2f -> %+.2fpt",
+ line.preview(), line.drift(), there.drift()));
+ }
+ });
+ if (!lost.isEmpty()) {
+ found.add(now.stem() + ": " + lost.size() + " lines no longer found, set at other words or "
+ + "on another page: " + named(lost));
+ }
+ if (!further.isEmpty()) {
+ found.add(now.stem() + ": " + further.size() + " lines further from the page: " + named(further));
+ }
+ }
+ return found;
+ }
+
+ private static String named(List lines) {
+ return String.join(", ", lines.subList(0, Math.min(NAMED, lines.size())))
+ + (lines.size() > NAMED ? ", and " + (lines.size() - NAMED) + " more" : "");
+ }
+
+ private static Path linesOf(Path documents) {
+ String name = documents.getFileName().toString();
+ return documents.resolveSibling(name.replaceFirst("\\.tsv$", "") + "-lines.tsv");
+ }
+}
diff --git a/qa/src/test/java/com/demcha/compose/document/templates/fidelity/FidelityMeasurement.java b/qa/src/test/java/com/demcha/compose/document/templates/fidelity/FidelityMeasurement.java
new file mode 100644
index 000000000..f76a9acec
--- /dev/null
+++ b/qa/src/test/java/com/demcha/compose/document/templates/fidelity/FidelityMeasurement.java
@@ -0,0 +1,147 @@
+package com.demcha.compose.document.templates.fidelity;
+
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Path;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HexFormat;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+/**
+ * How far an editor's rendering of a document's DOCX stands from the engine's PDF of it.
+ *
+ * Each line of the page is looked for, by its letters, on the same page of the editor's
+ * PDF; a line the editor breaks at another word, or puts on another page, is not found. A found
+ * line's drift is how far its baseline stands below the page's, above when negative.
+ *
+ * @param stem the document
+ * @param enginePages the pages the engine draws
+ * @param editorPages the pages the editor sets the DOCX on
+ * @param lines the page's lines
+ * @param matched the page's lines found in the editor's
+ * @param median the median of the found lines' drift either way, in points
+ * @param p90 the drift either way nine in ten found lines stay within, in points
+ * @param over2 the found lines drifting more than 2pt either way
+ * @param found each found line's drift, by its {@link #lineId line id}; empty when read
+ * from a baseline row
+ */
+record FidelityMeasurement(String stem, int enginePages, int editorPages, int lines, int matched,
+ double median, double p90, int over2, Map found) {
+
+ /** A found line: where it is, a few of its letters to name it by, and its drift. */
+ record Found(int page, String preview, double drift) {
+ }
+
+ static final String HEADER = "document\tengine_pages\teditor_pages\tlines\tmatched\tmedian\tp90\tover2";
+
+ FidelityMeasurement {
+ found = Collections.unmodifiableMap(new LinkedHashMap<>(found));
+ }
+
+ /** The share of the page's lines found in the editor's, from 0 to 1. */
+ double matchedShare() {
+ return lines == 0 ? 1 : (double) matched / lines;
+ }
+
+ /** Measures the editor's PDF of a document against the engine's. */
+ static FidelityMeasurement of(String stem, Path enginePdf, Path editorPdf) throws IOException {
+ return of(stem, PdfLines.of(enginePdf), PdfLines.of(editorPdf));
+ }
+
+ static FidelityMeasurement of(String stem, PdfLines engine, PdfLines editor) {
+ Map page = engine.byKey();
+ Map set = editor.byKey();
+ Map found = new LinkedHashMap<>();
+ List drifts = new ArrayList<>();
+ for (Map.Entry line : page.entrySet()) {
+ PdfLines.Line there = set.get(line.getKey());
+ if (there != null) {
+ double drift = round(there.baseline() - line.getValue().baseline());
+ found.put(lineId(line.getValue()), new Found(line.getValue().page(), preview(line.getValue().key()), drift));
+ drifts.add(Math.abs(drift));
+ }
+ }
+ Collections.sort(drifts);
+ int over2 = (int) drifts.stream().filter(drift -> drift > 2).count();
+ return new FidelityMeasurement(stem, engine.pages(), editor.pages(), page.size(), drifts.size(),
+ quantile(drifts, 0.5), quantile(drifts, 0.9), over2, found);
+ }
+
+ /** A line's identity across runs: its page and a digest of its letters. */
+ static String lineId(PdfLines.Line line) {
+ try {
+ byte[] digest = MessageDigest.getInstance("SHA-256").digest(line.key().getBytes(StandardCharsets.UTF_8));
+ return line.page() + ":" + HexFormat.of().formatHex(digest, 0, 6);
+ } catch (NoSuchAlgorithmException missing) {
+ throw new IllegalStateException(missing);
+ }
+ }
+
+ private static String preview(String key) {
+ String letters = key.replaceAll("[\\t\\r\\n]", "");
+ return letters.length() <= 32 ? letters : letters.substring(0, 32);
+ }
+
+ private static double round(double points) {
+ return Math.round(points * 100) / 100.0;
+ }
+
+ private static double quantile(List sorted, double share) {
+ if (sorted.isEmpty()) {
+ return 0;
+ }
+ return round(sorted.get((int) Math.round(share * (sorted.size() - 1))));
+ }
+
+ /** The measurement as a row of the baseline's document file. */
+ String row() {
+ return String.join("\t", stem, Integer.toString(enginePages), Integer.toString(editorPages),
+ Integer.toString(lines), Integer.toString(matched),
+ String.format(Locale.ROOT, "%.2f", median), String.format(Locale.ROOT, "%.2f", p90),
+ Integer.toString(over2));
+ }
+
+ /** The measurement's found lines as rows of the baseline's line file. */
+ List lineRows() {
+ List rows = new ArrayList<>();
+ found.forEach((id, line) -> rows.add(String.join("\t", stem, id,
+ String.format(Locale.ROOT, "%.2f", line.drift()), line.preview())));
+ return rows;
+ }
+
+ /** Reads a row of the baseline's document file, with the lines the line file holds for it. */
+ static FidelityMeasurement parse(String row, Map found) {
+ String[] cells = row.split("\t");
+ if (cells.length != 8) {
+ throw new IllegalArgumentException("a baseline row has 8 cells, not " + cells.length + ": " + row);
+ }
+ try {
+ return new FidelityMeasurement(cells[0], Integer.parseInt(cells[1]), Integer.parseInt(cells[2]),
+ Integer.parseInt(cells[3]), Integer.parseInt(cells[4]), Double.parseDouble(cells[5]),
+ Double.parseDouble(cells[6]), Integer.parseInt(cells[7]), found);
+ } catch (NumberFormatException malformed) {
+ throw new IllegalArgumentException("a baseline row holds a cell that is not a number: " + row, malformed);
+ }
+ }
+
+ /** Reads a row of the baseline's line file into its document's lines. */
+ static void parseLine(String row, Map> byDocument) {
+ String[] cells = row.split("\t", 4);
+ if (cells.length < 3) {
+ throw new IllegalArgumentException("a baseline line row has at least 3 cells: " + row);
+ }
+ try {
+ int page = Integer.parseInt(cells[1].substring(0, cells[1].indexOf(':')));
+ byDocument.computeIfAbsent(cells[0], stem -> new LinkedHashMap<>())
+ .put(cells[1], new Found(page, cells.length > 3 ? cells[3] : "", Double.parseDouble(cells[2])));
+ } catch (NumberFormatException | StringIndexOutOfBoundsException malformed) {
+ throw new IllegalArgumentException("a baseline line row is malformed: " + row, malformed);
+ }
+ }
+}
diff --git a/qa/src/test/java/com/demcha/compose/document/templates/fidelity/LibreOfficeConverter.java b/qa/src/test/java/com/demcha/compose/document/templates/fidelity/LibreOfficeConverter.java
new file mode 100644
index 000000000..178d11cef
--- /dev/null
+++ b/qa/src/test/java/com/demcha/compose/document/templates/fidelity/LibreOfficeConverter.java
@@ -0,0 +1,77 @@
+package com.demcha.compose.document.templates.fidelity;
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Locale;
+import java.util.Optional;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Converts DOCX files to PDF with LibreOffice, headless, in one process for the whole corpus.
+ *
+ * The process runs under a profile of its own, so a LibreOffice the user has open neither
+ * blocks it nor is changed by it.
+ */
+final class LibreOfficeConverter {
+
+ private static final long TIMEOUT_MINUTES = 15;
+
+ private final Path soffice;
+
+ private LibreOfficeConverter(Path soffice) {
+ this.soffice = soffice;
+ }
+
+ /**
+ * The LibreOffice to convert with: {@code -Dgraphcompose.soffice}, then {@code SOFFICE}, then
+ * {@code soffice} on the path, then the Windows default installation.
+ */
+ static Optional find() {
+ List candidates = new ArrayList<>();
+ String property = System.getProperty("graphcompose.soffice");
+ if (property != null && !property.isBlank()) {
+ candidates.add(property);
+ }
+ String environment = System.getenv("SOFFICE");
+ if (environment != null && !environment.isBlank()) {
+ candidates.add(environment);
+ }
+ String path = System.getenv("PATH");
+ if (path != null) {
+ for (String directory : path.split(java.io.File.pathSeparator)) {
+ candidates.add(Path.of(directory, "soffice").toString());
+ candidates.add(Path.of(directory, "soffice.exe").toString());
+ }
+ }
+ candidates.add("C:/Program Files/LibreOffice/program/soffice.exe");
+ return candidates.stream().map(Path::of).filter(Files::isRegularFile).findFirst().map(LibreOfficeConverter::new);
+ }
+
+ /** Converts each DOCX into a PDF of the same stem in {@code outDir}. */
+ void convert(List docxFiles, Path outDir, Path workDir) throws IOException, InterruptedException {
+ Files.createDirectories(outDir);
+ Path profile = Files.createDirectories(workDir.resolve("libreoffice-profile"));
+ List command = new ArrayList<>(List.of(soffice.toString(), "--headless", "--norestore",
+ "-env:UserInstallation=" + profile.toUri(), "--convert-to", "pdf", "--outdir", outDir.toString()));
+ docxFiles.forEach(file -> command.add(file.toString()));
+ Path log = workDir.resolve("libreoffice.log");
+ Process process = new ProcessBuilder(command).redirectErrorStream(true).redirectOutput(log.toFile()).start();
+ if (!process.waitFor(TIMEOUT_MINUTES, TimeUnit.MINUTES)) {
+ process.destroyForcibly();
+ throw new IllegalStateException("LibreOffice did not convert the corpus within "
+ + TIMEOUT_MINUTES + " minutes; see " + log);
+ }
+ if (process.exitValue() != 0) {
+ throw new IllegalStateException("LibreOffice exited with " + process.exitValue() + "; see " + log);
+ }
+ }
+
+ /** The operating system the baseline of a LibreOffice run belongs to. */
+ static String platform() {
+ String os = System.getProperty("os.name", "").toLowerCase(Locale.ROOT);
+ return os.contains("win") ? "windows" : os.contains("mac") ? "mac" : "linux";
+ }
+}
diff --git a/qa/src/test/java/com/demcha/compose/document/templates/fidelity/PdfLines.java b/qa/src/test/java/com/demcha/compose/document/templates/fidelity/PdfLines.java
new file mode 100644
index 000000000..7cb94b3bb
--- /dev/null
+++ b/qa/src/test/java/com/demcha/compose/document/templates/fidelity/PdfLines.java
@@ -0,0 +1,125 @@
+package com.demcha.compose.document.templates.fidelity;
+
+import org.apache.pdfbox.Loader;
+import org.apache.pdfbox.pdmodel.PDDocument;
+import org.apache.pdfbox.text.PDFTextStripper;
+import org.apache.pdfbox.text.TextPosition;
+
+import java.io.IOException;
+import java.nio.file.Path;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+/**
+ * The lines of text a PDF draws, each keyed by its page and its letters, with the baseline its
+ * first letter stands on.
+ *
+ * Glyphs are read in the order the page draws them. A line ends where the next glyph stands
+ * on another baseline, steps back to the left, or stands further off than one and a half of its
+ * size: two columns on one baseline are two lines, as they are two runs of text. The key is the
+ * line's letters without white space, lower-cased, so text an editor sets with spaces between
+ * tracked letters, or with a trailing space, keys as the page's does. Lines of fewer than three
+ * letters are left out, and only the first line of each key on a page is kept.
+ */
+final class PdfLines {
+
+ /** A line: its page, its letters, and the baseline of its first letter from the page's top. */
+ record Line(int page, String key, double baseline) {
+ }
+
+ private final List lines;
+ private final int pages;
+
+ private PdfLines(List lines, int pages) {
+ this.lines = lines;
+ this.pages = pages;
+ }
+
+ /** Reads a PDF's lines. */
+ static PdfLines of(Path pdf) throws IOException {
+ try (PDDocument document = Loader.loadPDF(pdf.toFile())) {
+ Collector collector = new Collector();
+ collector.setSortByPosition(false);
+ collector.getText(document);
+ collector.endLine();
+ return new PdfLines(collector.lines, document.getNumberOfPages());
+ }
+ }
+
+ int pages() {
+ return pages;
+ }
+
+ List lines() {
+ return lines;
+ }
+
+ /** The lines by page and key, the first of each kept. */
+ Map byKey() {
+ Map keyed = new LinkedHashMap<>();
+ for (Line line : lines) {
+ keyed.putIfAbsent(line.page() + "/" + line.key(), line);
+ }
+ return keyed;
+ }
+
+ private static final class Collector extends PDFTextStripper {
+
+ private final List lines = new ArrayList<>();
+ private final StringBuilder key = new StringBuilder();
+ private int page;
+ private double baseline = Double.NaN;
+ private double lastEnd = Double.NaN;
+ private double lastX = Double.NaN;
+
+ private Collector() throws IOException {
+ }
+
+ @Override
+ protected void startPage(org.apache.pdfbox.pdmodel.PDPage pdPage) throws IOException {
+ endLine();
+ page = getCurrentPageNo() - 1;
+ super.startPage(pdPage);
+ }
+
+ @Override
+ protected void processTextPosition(TextPosition glyph) {
+ double y = glyph.getYDirAdj();
+ double x = glyph.getXDirAdj();
+ double size = Math.max(1, glyph.getFontSizeInPt());
+ boolean sameLine = !Double.isNaN(baseline)
+ && Math.abs(y - baseline) < size * 0.5
+ && x >= lastX - 1
+ && x - lastEnd < size * 1.5;
+ if (!sameLine) {
+ endLine();
+ baseline = y;
+ }
+ String letters = glyph.getUnicode();
+ if (letters != null) {
+ for (int i = 0; i < letters.length(); i++) {
+ char c = letters.charAt(i);
+ if (!Character.isWhitespace(c) && c != ' ') {
+ key.append(c);
+ }
+ }
+ }
+ lastX = x;
+ lastEnd = x + glyph.getWidthDirAdj();
+ }
+
+ private void endLine() {
+ String letters = key.toString().toLowerCase(Locale.ROOT);
+ if (letters.codePointCount(0, letters.length()) >= 3) {
+ lines.add(new Line(page, letters, baseline));
+ }
+ key.setLength(0);
+ baseline = Double.NaN;
+ lastEnd = Double.NaN;
+ lastX = Double.NaN;
+ }
+ }
+}
diff --git a/qa/src/test/java/com/demcha/compose/document/templates/invoice/presets/InvoiceDocxCorpus.java b/qa/src/test/java/com/demcha/compose/document/templates/invoice/presets/InvoiceDocxCorpus.java
new file mode 100644
index 000000000..ffc80ad5a
--- /dev/null
+++ b/qa/src/test/java/com/demcha/compose/document/templates/invoice/presets/InvoiceDocxCorpus.java
@@ -0,0 +1,45 @@
+package com.demcha.compose.document.templates.invoice.presets;
+
+import com.demcha.compose.document.templates.fidelity.DocxCorpusDocument;
+
+import java.util.List;
+
+/** The invoice presets of the DOCX fidelity corpus, with the long fixtures that run to more pages. */
+public final class InvoiceDocxCorpus {
+
+ private InvoiceDocxCorpus() {
+ }
+
+ public static List documents() {
+ double classic = ClassicInvoice.RECOMMENDED_MARGIN;
+ double modern = ModernInvoice.RECOMMENDED_MARGIN;
+ return List.of(
+ invoice("classic", classic, s -> ClassicInvoice.create().compose(s, InvoicePresetFixtures.canonicalInvoice())),
+ invoice("classic_long", classic, s -> ClassicInvoice.create().compose(s, InvoicePresetFixtures.stressInvoice())),
+ invoice("modern", modern, s -> ModernInvoice.create().compose(s, InvoicePresetFixtures.canonicalInvoice())),
+ invoice("modern_long", modern, s -> ModernInvoice.create().compose(s, InvoicePresetFixtures.stressInvoice())),
+ invoice("consulting", -1,
+ s -> ConsultingInvoice.create().compose(s, ConsultingInvoiceFixtures.canonicalInvoice())),
+ invoice("consulting_long", -1,
+ s -> ConsultingInvoice.create().compose(s, ConsultingInvoiceFixtures.overflowInvoice())),
+ invoice("luma_studio", -1,
+ s -> LumaStudioInvoice.create().compose(s, LumaStudioInvoiceFixtures.canonicalInvoice())),
+ invoice("luma_studio_long", -1,
+ s -> LumaStudioInvoice.create().compose(s, LumaStudioInvoiceFixtures.overflowInvoice())),
+ invoice("metered", -1, s -> MeteredInvoice.create().compose(s, MeteredInvoiceFixtures.invoice())),
+ invoice("merchant", -1, s -> MerchantInvoice.create().compose(s, MerchantInvoiceFixtures.invoice())),
+ invoice("obsidian", -1, s -> ObsidianInvoice.create().compose(s, ObsidianInvoiceFixtures.invoice())),
+ invoice("platform", -1, s -> PlatformInvoice.create().compose(s, PlatformInvoiceFixtures.invoice())),
+ invoice("payments", -1,
+ s -> PaymentsInvoice.create().compose(s, PaymentsInvoiceFixtures.canonicalInvoice())),
+ invoice("subscription", -1,
+ s -> SubscriptionInvoice.create().compose(s, SubscriptionInvoiceFixtures.invoice())),
+ invoice("workspace", -1,
+ s -> WorkspaceInvoice.create().compose(s, WorkspaceInvoiceFixtures.canonicalInvoice())));
+ }
+
+ private static DocxCorpusDocument invoice(String name, double margin,
+ java.util.function.Consumer compose) {
+ return new DocxCorpusDocument("invoice", name, margin, compose);
+ }
+}
diff --git a/qa/src/test/java/com/demcha/compose/document/templates/proposal/presets/ProposalDocxCorpus.java b/qa/src/test/java/com/demcha/compose/document/templates/proposal/presets/ProposalDocxCorpus.java
new file mode 100644
index 000000000..0e409d1a7
--- /dev/null
+++ b/qa/src/test/java/com/demcha/compose/document/templates/proposal/presets/ProposalDocxCorpus.java
@@ -0,0 +1,59 @@
+package com.demcha.compose.document.templates.proposal.presets;
+
+import com.demcha.compose.document.templates.data.proposal.ProposalData;
+import com.demcha.compose.document.templates.data.proposal.ProposalDocumentSpec;
+import com.demcha.compose.document.templates.fidelity.DocxCorpusDocument;
+
+import java.util.List;
+
+/** The proposal presets of the DOCX fidelity corpus. */
+public final class ProposalDocxCorpus {
+
+ private ProposalDocxCorpus() {
+ }
+
+ public static List documents() {
+ return List.of(
+ new DocxCorpusDocument("proposal", "indigo", -1,
+ s -> IndigoProposal.create().compose(s, IndigoProposalFixtures.canonicalProposal())),
+ new DocxCorpusDocument("proposal", "editorial", -1,
+ s -> EditorialProposal.create().compose(s, EditorialProposalFixtures.canonicalProposal())),
+ new DocxCorpusDocument("proposal", "northline", -1,
+ s -> NorthlineProposal.create().compose(s, NorthlineProposalFixtures.canonicalProposal())),
+ new DocxCorpusDocument("proposal", "modern", 28,
+ s -> ModernProposal.create().compose(s, modern())));
+ }
+
+ // The spec ModernProposalSmokeTest renders.
+ private static ProposalDocumentSpec modern() {
+ return ProposalDocumentSpec.from(ProposalData.builder()
+ .title("Proposal")
+ .proposalNumber("GC-P-2026-014")
+ .preparedDate("02 Apr 2026")
+ .validUntil("30 Apr 2026")
+ .projectTitle("Document platform consolidation")
+ .executiveSummary("A phased engagement to retire per-team PDF scripts "
+ + "in favour of one canonical document engine.")
+ .sender(from -> from
+ .name("GraphCompose Studio")
+ .addressLines("18 Layout Street", "London, UK")
+ .email("hello@graphcompose.dev")
+ .phone("+44 20 5555 1000")
+ .website("graphcompose.dev"))
+ .recipient(to -> to
+ .name("Northwind Systems")
+ .addressLines("Attn: Procurement", "410 Market Avenue")
+ .email("procurement@northwind.example"))
+ .section("Scope", "Discovery, architecture, and a reference rollout.")
+ .section("Approach", "Iterative delivery with weekly checkpoints.")
+ .timelineItem("Discovery", "2 weeks", "Stakeholder interviews + audit")
+ .timelineItem("Build", "6 weeks", "Engine + template migration")
+ .pricingRow("Discovery", "Workshops + audit", "GBP 6,000")
+ .pricingRow("Build", "Engine + templates", "GBP 24,000")
+ .emphasizedPricingRow("Total", "", "GBP 30,000")
+ .acceptanceTerm("50% on signature, 50% on delivery.")
+ .acceptanceTerm("Valid for 30 days from the prepared date.")
+ .footerNote("Thank you for considering GraphCompose.")
+ .build());
+ }
+}
diff --git a/qa/src/test/java/com/demcha/compose/document/templates/receipt/presets/ReceiptDocxCorpus.java b/qa/src/test/java/com/demcha/compose/document/templates/receipt/presets/ReceiptDocxCorpus.java
new file mode 100644
index 000000000..681b4a56e
--- /dev/null
+++ b/qa/src/test/java/com/demcha/compose/document/templates/receipt/presets/ReceiptDocxCorpus.java
@@ -0,0 +1,21 @@
+package com.demcha.compose.document.templates.receipt.presets;
+
+import com.demcha.compose.document.style.DocumentColor;
+import com.demcha.compose.document.templates.core.theme.BrandTheme;
+import com.demcha.compose.document.templates.fidelity.DocxCorpusDocument;
+
+import java.util.List;
+
+/** The receipt preset of the DOCX fidelity corpus. */
+public final class ReceiptDocxCorpus {
+
+ private ReceiptDocxCorpus() {
+ }
+
+ public static List documents() {
+ return List.of(new DocxCorpusDocument("receipt", "modern", ModernReceipt.RECOMMENDED_MARGIN,
+ s -> ModernReceipt.create(BrandTheme.receiptModern(),
+ ModernReceipt.Options.branded(null, DocumentColor.rgb(23, 92, 211)))
+ .compose(s, ReceiptFixtures.canonicalReceipt())));
+ }
+}
diff --git a/qa/src/test/java/com/demcha/compose/document/templates/rota/presets/RotaDocxCorpus.java b/qa/src/test/java/com/demcha/compose/document/templates/rota/presets/RotaDocxCorpus.java
new file mode 100644
index 000000000..de27ce04d
--- /dev/null
+++ b/qa/src/test/java/com/demcha/compose/document/templates/rota/presets/RotaDocxCorpus.java
@@ -0,0 +1,17 @@
+package com.demcha.compose.document.templates.rota.presets;
+
+import com.demcha.compose.document.templates.fidelity.DocxCorpusDocument;
+
+import java.util.List;
+
+/** The rota preset of the DOCX fidelity corpus. */
+public final class RotaDocxCorpus {
+
+ private RotaDocxCorpus() {
+ }
+
+ public static List documents() {
+ return List.of(new DocxCorpusDocument("rota", "cobalt", -1,
+ s -> CobaltRota.create().compose(s, CobaltRotaFixtures.canonicalRota())));
+ }
+}
diff --git a/qa/src/test/resources/docx-fidelity/libreoffice-windows-lines.tsv b/qa/src/test/resources/docx-fidelity/libreoffice-windows-lines.tsv
new file mode 100644
index 000000000..af8ae619b
--- /dev/null
+++ b/qa/src/test/resources/docx-fidelity/libreoffice-windows-lines.tsv
@@ -0,0 +1,3611 @@
+# libreoffice on windows — document, line, drift below the page (pt), letters
+cv-blue_banner 0:8f1010120ed6 0.42 jordanrivera
+cv-blue_banner 0:8d7a2cca3060 -0.20 +442055551000|jordan.rivera@exam
+cv-blue_banner 0:b944906ed84c -0.20 professionalsummary
+cv-blue_banner 0:c2f296ef30a3 -0.19 professionalexperience
+cv-blue_banner 0:a76f47480818 -0.25 seniorplatformengineer
+cv-blue_banner 0:060300b18051 -0.20 2024-present
+cv-blue_banner 0:f890faef907f -0.20 northwindsystems
+cv-blue_banner 0:daf65306b3b6 -0.22 softwareengineer
+cv-blue_banner 0:e7cc1822c6dc -0.17 2021-2024
+cv-blue_banner 0:998c1a985022 -0.17 brightleaflabs
+cv-blue_banner 0:41bb54fbae8d -0.19 backendengineer
+cv-blue_banner 0:3fa772117260 -0.14 2019-2021
+cv-blue_banner 0:ef148f221e31 -0.14 helixprintco
+cv-blue_banner 0:d7119ba1b2b4 -0.13 maintainedahigh-volumeinvoice-pr
+cv-blue_banner 0:68bf0109c6f8 -0.12 education
+cv-blue_banner 0:0ad1957d6bab -0.18 msccomputerscience
+cv-blue_banner 0:47ce0218bbea -0.13 universityofmanchester
+cv-blue_banner 0:2ffe115b06e5 -0.12 distinction.thesis:composablelay
+cv-blue_banner 0:b6749d0b616b -0.16 bscsoftwareengineering
+cv-blue_banner 0:30f9262640a0 -0.11 2015-2019
+cv-blue_banner 0:89ad9656f393 -0.11 imperialcollegelondon
+cv-blue_banner 0:baa173b4a82e -0.10 first-classhonours.specialisatio
+cv-blue_banner 0:6d3d5673c39f -0.14 oraclejavacertification
+cv-blue_banner 0:d40b22f00acb -0.09 2023-2024
+cv-blue_banner 0:2669e1f6d55c -0.09 professionaltrack
+cv-blue_banner 0:3857373829c1 -0.08 java17platformdeep-dive:records,
+cv-blue_banner 0:5f94c50dc5bf -0.07 technicalskills
+cv-blue_banner 0:eea537278f83 -0.08 •languages:java21,kotlin,groovy,
+cv-blue_banner 0:9c2cd7231a53 -0.07 •document&print:pdfbox,apachepoi
+cv-blue_banner 0:7bf8639ec5d3 -0.06 •layoutengines:customdsldesign,s
+cv-blue_banner 0:8e66776d28d7 -0.05 •build&infrastructure:maven,grad
+cv-blue_banner 0:1ed4fc7d7768 -0.04 •testing:junit5,assertj,pdfbox-b
+cv-blue_banner 0:26671c309eb9 -0.03 •distribution:mavencentral,sonat
+cv-blue_banner 0:676dfdd56ad2 -0.02 additionalinformation
+cv-blue_banner 0:f20997652453 -0.03 languages:english(fluent),german
+cv-blue_banner 0:ec9d3622395e -0.02 workeligibility:eligibletoworkin
+cv-blue_banner 0:dd20ae01c3cf -0.01 opensource:maintainerofgraphcomp
+cv-blue_banner 0:33c35e9d236d 0.00 speaking:jvmsummit2024,devoxxuk2
+cv-blue_banner 0:2577c0f557b2 0.01 projects
+cv-blue_banner 0:47f6c54ae700 -0.30 graphcompose(java21,pdfbox,maven
+cv-blue_banner 0:7fea658a4957 0.00 productioncv/invoice/proposalpip
+cv-boxed_sections 0:8f1010120ed6 0.46 jordanrivera
+cv-boxed_sections 0:8d7a2cca3060 -0.12 +442055551000|jordan.rivera@exam
+cv-boxed_sections 0:b944906ed84c -0.42 professionalsummary
+cv-boxed_sections 0:5f94c50dc5bf -0.43 technicalskills
+cv-boxed_sections 0:eea537278f83 -0.46 •languages:java21,kotlin,groovy,
+cv-boxed_sections 0:9c2cd7231a53 -0.45 •document&print:pdfbox,apachepoi
+cv-boxed_sections 0:7bf8639ec5d3 -0.45 •layoutengines:customdsldesign,s
+cv-boxed_sections 0:8e66776d28d7 -0.44 •build&infrastructure:maven,grad
+cv-boxed_sections 0:1ed4fc7d7768 -0.44 •testing:junit5,assertj,pdfbox-b
+cv-boxed_sections 0:26671c309eb9 -0.43 •distribution:mavencentral,sonat
+cv-boxed_sections 0:68bf0109c6f8 -0.42 education
+cv-boxed_sections 0:0ad1957d6bab -0.42 msccomputerscience
+cv-boxed_sections 0:3fa772117260 -0.46 2019-2021
+cv-boxed_sections 0:47ce0218bbea -0.43 universityofmanchester
+cv-boxed_sections 0:2ffe115b06e5 -0.42 distinction.thesis:composablelay
+cv-boxed_sections 0:b6749d0b616b -0.29 bscsoftwareengineering
+cv-boxed_sections 0:30f9262640a0 -0.32 2015-2019
+cv-boxed_sections 0:89ad9656f393 -0.30 imperialcollegelondon
+cv-boxed_sections 0:baa173b4a82e -0.28 first-classhonours.specialisatio
+cv-boxed_sections 0:6d3d5673c39f -0.15 oraclejavacertification
+cv-boxed_sections 0:d40b22f00acb -0.19 2023-2024
+cv-boxed_sections 0:2669e1f6d55c -0.16 professionaltrack
+cv-boxed_sections 0:3857373829c1 -0.15 java17platformdeep-dive:records,
+cv-boxed_sections 0:2577c0f557b2 -0.13 projects
+cv-boxed_sections 0:b2b029995203 -0.16 •graphcompose(java21,pdfbox,mave
+cv-boxed_sections 0:67593a76ef70 -0.46 declarativejavapdflayoutengine.s
+cv-boxed_sections 0:b9292cbd1454 -0.45 pipelinesforhiringtoolsandbillin
+cv-boxed_sections 0:1b50bb81df5a -0.05 •templatestudio(kotlin,composede
+cv-boxed_sections 0:836e76daecbf -0.04 internaltoolforevaluatingcv,prop
+cv-boxed_sections 0:25cdca2beb8b 0.06 •layoutlint(java21,javaparser,sp
+cv-boxed_sections 0:7488006d7864 -0.23 staticanalyserthatflagsfragileau
+cv-boxed_sections 0:c4d0c415b4f8 -0.23 production.
+cv-boxed_sections 0:fb1927f88597 0.18 •chromeforge(java,graphcompose,p
+cv-boxed_sections 0:e7e62230eb1f 0.18 editorial-magazinedocumenttoolki
+cv-boxed_sections 0:c2f296ef30a3 0.20 professionalexperience
+cv-boxed_sections 0:a76f47480818 0.19 seniorplatformengineer
+cv-boxed_sections 0:060300b18051 0.16 2024-present
+cv-boxed_sections 0:f890faef907f 0.18 northwindsystems
+cv-boxed_sections 1:49faf14f1f56 -0.73 ledthereusabledocument-generatio
+cv-boxed_sections 1:6bd3f168e89e -0.73 maintenancetimeby70%byretiringpe
+cv-boxed_sections 1:daf65306b3b6 -0.30 softwareengineer
+cv-boxed_sections 1:e7cc1822c6dc -0.33 2021-2024
+cv-boxed_sections 1:998c1a985022 -0.31 brightleaflabs
+cv-boxed_sections 1:e55664011cda -0.59 builtbackendservicesandproductio
+cv-boxed_sections 1:e80236b6d2b1 -0.59 itexttoacustomlayoutengine,elimi
+cv-boxed_sections 1:41bb54fbae8d -0.16 backendengineer
+cv-boxed_sections 1:3fa772117260 -0.19 2019-2021
+cv-boxed_sections 1:ef148f221e31 -0.17 helixprintco
+cv-boxed_sections 1:9d31a6bfbc69 -0.45 maintainedahigh-volumeinvoice-pr
+cv-boxed_sections 1:03af8a628309 -0.45 change.
+cv-boxed_sections 1:676dfdd56ad2 -0.13 additionalinformation
+cv-boxed_sections 1:f20997652453 -0.16 languages:english(fluent),german
+cv-boxed_sections 1:ec9d3622395e -0.16 workeligibility:eligibletoworkin
+cv-boxed_sections 1:dd20ae01c3cf -0.15 opensource:maintainerofgraphcomp
+cv-boxed_sections 1:33c35e9d236d -0.15 speaking:jvmsummit2024,devoxxuk2
+cv-centered_headline 0:8f1010120ed6 -0.50 jordanrivera
+cv-centered_headline 0:87ca614d0eab -0.18 professionaltitle
+cv-centered_headline 0:8d7a2cca3060 -0.23 +442055551000|jordan.rivera@exam
+cv-centered_headline 0:b944906ed84c -0.28 professionalsummary
+cv-centered_headline 0:f43d42692f27 0.06 platformengineerwith10+yearsbuil
+cv-centered_headline 0:5f94c50dc5bf -0.25 technicalskills
+cv-centered_headline 0:eea537278f83 -0.21 •languages:java21,kotlin,groovy,
+cv-centered_headline 0:9c2cd7231a53 -0.20 •document&print:pdfbox,apachepoi
+cv-centered_headline 0:7bf8639ec5d3 -0.19 •layoutengines:customdsldesign,s
+cv-centered_headline 0:8e66776d28d7 -0.18 •build&infrastructure:maven,grad
+cv-centered_headline 0:1ed4fc7d7768 -0.17 •testing:junit5,assertj,pdfbox-b
+cv-centered_headline 0:26671c309eb9 -0.16 •distribution:mavencentral,sonat
+cv-centered_headline 0:68bf0109c6f8 -0.19 education
+cv-centered_headline 0:0ad1957d6bab -0.19 msccomputerscience
+cv-centered_headline 0:3fa772117260 -0.20 2019-2021
+cv-centered_headline 0:47ce0218bbea -0.16 universityofmanchester
+cv-centered_headline 0:2ffe115b06e5 -0.14 distinction.thesis:composablelay
+cv-centered_headline 0:b6749d0b616b -0.07 bscsoftwareengineering
+cv-centered_headline 0:30f9262640a0 -0.08 2015-2019
+cv-centered_headline 0:89ad9656f393 -0.04 imperialcollegelondon
+cv-centered_headline 0:baa173b4a82e -0.02 first-classhonours.specialisatio
+cv-centered_headline 0:6d3d5673c39f 0.05 oraclejavacertification
+cv-centered_headline 0:d40b22f00acb 0.04 2023-2024
+cv-centered_headline 0:2669e1f6d55c 0.08 professionaltrack
+cv-centered_headline 0:3857373829c1 0.10 java17platformdeep-dive:records,
+cv-centered_headline 0:2577c0f557b2 0.07 projects
+cv-centered_headline 0:0f2c67872251 0.11 graphcompose(java21,pdfbox,maven
+cv-centered_headline 0:d73d02174dc9 0.24 templatestudio(kotlin,composedes
+cv-centered_headline 0:836e76daecbf 0.25 internaltoolforevaluatingcv,prop
+cv-centered_headline 0:542ec793b5b1 0.36 layoutlint(java21,javaparser,spo
+cv-centered_headline 0:dc31b6a18325 0.37 staticanalyserthatflagsfragileau
+cv-centered_headline 0:ee180ea1e0a5 0.48 chromeforge(java,graphcompose,pa
+cv-centered_headline 0:e7e62230eb1f 0.49 editorial-magazinedocumenttoolki
+cv-centered_headline 0:c2f296ef30a3 0.46 professionalexperience
+cv-centered_headline 0:a76f47480818 0.46 seniorplatformengineer
+cv-centered_headline 0:060300b18051 0.45 2024-present
+cv-centered_headline 0:f890faef907f 0.49 northwindsystems
+cv-centered_headline 0:49faf14f1f56 0.81 ledthereusabledocument-generatio
+cv-centered_headline 0:6bd3f168e89e 0.82 maintenancetimeby70%byretiringpe
+cv-centered_headline 0:daf65306b3b6 0.59 softwareengineer
+cv-centered_headline 0:e7cc1822c6dc 0.58 2021-2024
+cv-centered_headline 0:998c1a985022 0.62 brightleaflabs
+cv-centered_headline 0:41bb54fbae8d 0.72 backendengineer
+cv-centered_headline 0:ef148f221e31 0.75 helixprintco
+cv-centered_headline 1:9d31a6bfbc69 0.31 maintainedahigh-volumeinvoice-pr
+cv-centered_headline 1:03af8a628309 0.32 change.
+cv-centered_headline 1:676dfdd56ad2 -0.01 additionalinformation
+cv-centered_headline 1:f20997652453 0.03 languages:english(fluent),german
+cv-centered_headline 1:ec9d3622395e 0.04 workeligibility:eligibletoworkin
+cv-centered_headline 1:dd20ae01c3cf 0.05 opensource:maintainerofgraphcomp
+cv-centered_headline 1:33c35e9d236d 0.06 speaking:jvmsummit2024,devoxxuk2
+cv-charcoal_gold 0:73423c7707c4 3.21 anastasia
+cv-charcoal_gold 0:6627835f988e 2.75 smith
+cv-charcoal_gold 0:093e7d5fdbaa 2.72 contact
+cv-charcoal_gold 0:a8acc3a90a7b 2.94 +447700900123
+cv-charcoal_gold 0:0126a18bf252 2.94 hello@anastasiasmith.com
+cv-charcoal_gold 0:92966f349443 2.94 london,unitedkingdom
+cv-charcoal_gold 0:42535367bd3c 2.94 anastasiasmith.com
+cv-charcoal_gold 0:d5d2c85de2b9 2.94 linkedin.com/in/anastasiasmith
+cv-charcoal_gold 0:32c1cf49a2fe 2.72 skills
+cv-charcoal_gold 0:340455fbac25 2.84 projectmanagement
+cv-charcoal_gold 0:03cd52ebdc67 2.84 budgeting&forecasting
+cv-charcoal_gold 0:115925c1b96b 2.84 stakeholdercommunication
+cv-charcoal_gold 0:4e321f38b222 2.84 riskmanagement
+cv-charcoal_gold 0:2f594f65f16c 2.84 dataanalysis
+cv-charcoal_gold 0:b08c44dac044 2.84 processimprovement
+cv-charcoal_gold 0:c7b5692b2d27 2.84 microsoftexcel
+cv-charcoal_gold 0:2e2c6b2f5ad9 2.84 powerbi
+cv-charcoal_gold 0:f73b1d7d3bc6 2.84 jira/confluence
+cv-charcoal_gold 0:b011cfad056f 2.84 agilemethodologies
+cv-charcoal_gold 0:6cb574fa10b6 2.82 languages
+cv-charcoal_gold 0:b6234d2ea0d6 2.91 english
+cv-charcoal_gold 0:bef32d2c315a 2.91 native
+cv-charcoal_gold 0:aa304b5d1d72 2.91 russian
+cv-charcoal_gold 0:21bb36ad0638 2.91 french
+cv-charcoal_gold 0:23ed645595d6 2.91 b2–upperintermediate
+cv-charcoal_gold 0:28561c6b68fc 2.91 german
+cv-charcoal_gold 0:3cb3c2736bad 2.91 a2–basic
+cv-charcoal_gold 0:68bf0109c6f8 2.92 education
+cv-charcoal_gold 0:48f12eb2ea0d 2.94 mscprojectmanagement
+cv-charcoal_gold 0:ede0c8c47a1f 2.94 universitycollegelondon
+cv-charcoal_gold 0:fc3f0389b9de 2.94 2018–2019
+cv-charcoal_gold 0:66cb4ff79ee1 2.93 bscbusinessadministration
+cv-charcoal_gold 0:8826393fc0f0 2.93 king'scollegelondon
+cv-charcoal_gold 0:c7d18ae8c50d 2.93 2014–2017
+cv-charcoal_gold 0:3acba0d7b5dc 2.61 projectmanager
+cv-charcoal_gold 0:f54e0195601a 3.01 results-drivenprojectmanagerwith
+cv-charcoal_gold 0:7a0497cef9c6 3.01 teamsanddeliveringcomplexproject
+cv-charcoal_gold 0:c38f1902ece8 3.24 skilledinagileandwaterfallmethod
+cv-charcoal_gold 0:ca94787c6c7a 2.54 management.passionateaboutdrivin
+cv-charcoal_gold 0:53e5e7c5a884 2.64 experience
+cv-charcoal_gold 0:086c0e036e67 2.80 2021–present
+cv-charcoal_gold 0:eddc2d311872 2.74 seniorprojectmanager
+cv-charcoal_gold 0:243953e20dc4 2.84 digitalsolutionsltd·london,uk
+cv-charcoal_gold 0:7fde5861c84b 2.91 •managecross-functionalteamsofup
+cv-charcoal_gold 0:80c76af1fe2a 2.93 •implementagilepracticesthatimpr
+cv-charcoal_gold 0:b6bb33b79f44 2.95 •buildstrongclientrelationshipsa
+cv-charcoal_gold 0:6c39082d9294 2.92 2019–2021
+cv-charcoal_gold 0:46df57ef8321 2.96 innovatechsystems·london,uk
+cv-charcoal_gold 0:271b01626043 2.99 •delivered12+projectsacrossitand
+cv-charcoal_gold 0:77dd7c2ad6ae 3.01 •monitoredbudgets,timelines,andr
+cv-charcoal_gold 0:bf8278cd4edc 3.03 •identifiedrisksandimplementedmi
+cv-charcoal_gold 0:2773f92777d7 3.05 •achieved98%on-timeprojectdelive
+cv-charcoal_gold 0:ad564a6ee91d 3.02 2017–2019
+cv-charcoal_gold 0:e085ad3a0d32 2.96 projectcoordinator
+cv-charcoal_gold 0:6ac382583801 3.06 globalbusinessservices·london,uk
+cv-charcoal_gold 0:77aec5bb6b7f 3.09 •supportedprojectmanagersinplann
+cv-charcoal_gold 0:38dafe4a1765 3.11 •preparedreports,dashboards,andd
+cv-charcoal_gold 0:5c95a9041b72 3.13 •coordinatedmeetingsandtrackedac
+cv-charcoal_gold 0:f0d87e2131e2 3.15 •improvedinternalprocessesandpro
+cv-charcoal_gold 0:e831beb04c00 3.06 certifications
+cv-charcoal_gold 0:93a7ba535da0 3.22 pmp®certification
+cv-charcoal_gold 0:0f9f6d10bfa3 3.26 projectmanagementinstitute
+cv-charcoal_gold 0:73a2af8864fc 3.28 2020
+cv-charcoal_gold 0:043092900ed5 3.25 prince2®foundation
+cv-charcoal_gold 0:544a764703d6 3.29 axelos
+cv-charcoal_gold 0:023e33504ab9 3.31 2019
+cv-charcoal_gold 0:83cd2e790f6a 3.28 agilepm®foundation
+cv-charcoal_gold 0:0005e5872534 3.32 apmginternational
+cv-charcoal_gold 0:6ee18b42fbf1 3.06 achievements
+cv-charcoal_gold 0:3f06e4a3eb33 3.22 excellenceindeliveryaward
+cv-charcoal_gold 0:0c373352626d 3.26 digitalsolutionsltd
+cv-charcoal_gold 0:d398b29d3dbb 3.28 2023
+cv-charcoal_gold 0:92cb97e6b786 3.25 processimprovementinitiative
+cv-charcoal_gold 0:6517b58450f7 3.29 increasedefficiencyby30%
+cv-charcoal_gold 0:b1ab1e892617 3.31 2022
+cv-charcoal_gold 0:c2f5106fbd5a 3.28 topperformer
+cv-charcoal_gold 0:058521fbf0d1 3.32 innovatechsystems
+cv-charcoal_gold 0:3def82282260 3.25 technicaltools
+cv-charcoal_gold 0:eb04bd42c7fb 3.31 microsoft365|jira|confluence|asa
+cv-classic_serif 0:8f1010120ed6 -0.15 jordanrivera
+cv-classic_serif 0:8d7a2cca3060 0.19 +442055551000|jordan.rivera@exam
+cv-classic_serif 0:3c69d6bb4892 0.24 professionalprofile
+cv-classic_serif 0:32c1cf49a2fe 0.14 skills
+cv-classic_serif 0:873a24d153c8 0.11 languages:java21,kotlin,groovy,p
+cv-classic_serif 0:05e907ef2b18 0.09 document&print:pdfbox,apachepoi(
+cv-classic_serif 0:76656a8a6621 0.06 layoutengines:customdsldesign,se
+cv-classic_serif 0:1cd141fef347 0.04 build&infrastructure:maven,gradl
+cv-classic_serif 0:181ddda7f959 0.01 testing:junit5,assertj,pdfbox-ba
+cv-classic_serif 0:c40c656d9558 -0.01 distribution:mavencentral,sonaty
+cv-classic_serif 0:53e5e7c5a884 0.00 experience
+cv-classic_serif 0:a76f47480818 0.01 seniorplatformengineer
+cv-classic_serif 0:060300b18051 -0.02 2024-present
+cv-classic_serif 0:f890faef907f -0.01 northwindsystems
+cv-classic_serif 0:49faf14f1f56 -0.24 ledthereusabledocument-generatio
+cv-classic_serif 0:6bd3f168e89e -0.25 maintenancetimeby70%byretiringpe
+cv-classic_serif 0:daf65306b3b6 0.13 softwareengineer
+cv-classic_serif 0:e7cc1822c6dc 0.10 2021-2024
+cv-classic_serif 0:998c1a985022 0.11 brightleaflabs
+cv-classic_serif 0:e55664011cda -0.12 builtbackendservicesandproductio
+cv-classic_serif 0:e80236b6d2b1 -0.13 itexttoacustomlayoutengine,elimi
+cv-classic_serif 0:41bb54fbae8d 0.24 backendengineer
+cv-classic_serif 0:3fa772117260 0.21 2019-2021
+cv-classic_serif 0:ef148f221e31 0.22 helixprintco
+cv-classic_serif 0:9d31a6bfbc69 -0.01 maintainedahigh-volumeinvoice-pr
+cv-classic_serif 0:03af8a628309 -0.02 change.
+cv-classic_serif 0:2577c0f557b2 0.25 projects
+cv-classic_serif 0:0f2c67872251 0.26 graphcompose(java21,pdfbox,maven
+cv-classic_serif 0:67593a76ef70 -0.01 declarativejavapdflayoutengine.s
+cv-classic_serif 0:b9292cbd1454 -0.02 pipelinesforhiringtoolsandbillin
+cv-classic_serif 0:d73d02174dc9 0.35 templatestudio(kotlin,composedes
+cv-classic_serif 0:836e76daecbf 0.33 internaltoolforevaluatingcv,prop
+cv-classic_serif 0:542ec793b5b1 0.45 layoutlint(java21,javaparser,spo
+cv-classic_serif 0:ee180ea1e0a5 12.20 chromeforge(java,graphcompose,pa
+cv-classic_serif 0:e7e62230eb1f 12.18 editorial-magazinedocumenttoolki
+cv-classic_serif 0:68bf0109c6f8 12.20 education
+cv-classic_serif 0:0ad1957d6bab 12.21 msccomputerscience
+cv-classic_serif 0:47ce0218bbea 12.19 universityofmanchester
+cv-classic_serif 0:2ffe115b06e5 12.21 distinction.thesis:composablelay
+cv-classic_serif 0:b6749d0b616b 12.33 bscsoftwareengineering
+cv-classic_serif 0:30f9262640a0 12.30 2015-2019
+cv-classic_serif 1:89ad9656f393 0.16 imperialcollegelondon
+cv-classic_serif 1:baa173b4a82e 0.18 first-classhonours.specialisatio
+cv-classic_serif 1:6d3d5673c39f 0.30 oraclejavacertification
+cv-classic_serif 1:d40b22f00acb 0.27 2023-2024
+cv-classic_serif 1:2669e1f6d55c 0.28 professionaltrack
+cv-classic_serif 1:3857373829c1 0.30 java17platformdeep-dive:records,
+cv-classic_serif 1:7b476727faf3 0.33 additional
+cv-classic_serif 1:f20997652453 0.29 languages:english(fluent),german
+cv-classic_serif 1:ec9d3622395e 0.37 workeligibility:eligibletoworkin
+cv-classic_serif 1:dd20ae01c3cf 0.44 opensource:maintainerofgraphcomp
+cv-classic_serif 1:33c35e9d236d 0.52 speaking:jvmsummit2024,devoxxuk2
+cv-compact_mono 0:8f1010120ed6 0.41 jordanrivera
+cv-compact_mono 0:f9e4560bd641 -0.14 london,uk/+442055551000/jordan.r
+cv-compact_mono 0:32c1cf49a2fe 0.34 skills
+cv-compact_mono 0:551282493299 -0.01 languagesjava21,kotlin,groovy,py
+cv-compact_mono 0:8f5cfd05d621 -0.22 document&printpdfbox,apachepoi
+cv-compact_mono 0:148ff6990529 -0.11 (docx/xlsx),itext,postscript
+cv-compact_mono 0:862bd50bcc32 -0.10 layoutenginescustomdsldesign,sem
+cv-compact_mono 0:ec4f3e745260 0.01 layouttrees,pagination,snapshott
+cv-compact_mono 0:55a8b2742c06 0.02 build&infrastructuremaven,gradle
+cv-compact_mono 0:1649ba79bc7a 0.13 actions,jitpack
+cv-compact_mono 0:d4ac2ee01f81 0.14 testingjunit5,assertj,pdfbox-bas
+cv-compact_mono 0:b04e6ebfb02b 0.25 diff,layout-graphsnapshots
+cv-compact_mono 0:93c9f742ef14 0.26 distributionmavencentral,sonatyp
+cv-compact_mono 0:8f21bd149ad7 0.37 gpgsigning,jitpack
+cv-compact_mono 0:68bf0109c6f8 0.93 education
+cv-compact_mono 0:9ad8d9ef1711 0.43 msccomputerscience/universityof
+cv-compact_mono 0:594f6dd11e20 0.50 manchester/2019-2021
+cv-compact_mono 0:387dc0387824 0.53 bscsoftwareengineering/imperialc
+cv-compact_mono 0:453806946a88 0.60 london/2015-2019
+cv-compact_mono 0:7816e7a28b71 0.63 oraclejavacertification/professi
+cv-compact_mono 0:d40b22f00acb 0.85 2023-2024
+cv-compact_mono 0:7b476727faf3 1.41 additional
+cv-compact_mono 0:ecc25e73b19b 0.90 languages:english(fluent),german
+cv-compact_mono 0:ac7f0ee6a49e 0.91 (intermediate),spanish(basic)
+cv-compact_mono 0:8051a4b5e34f 0.94 opensource:maintainerofgraphcomp
+cv-compact_mono 0:08c2e869a75b 0.95 regularcontributortopdfboxissuet
+cv-compact_mono 0:1900eab6c028 0.54 profile
+cv-compact_mono 0:3828b9718a0d -0.05 platformengineerwith10+yearsbuil
+cv-compact_mono 0:f6b5e93ccadd -0.04 engines,anddeveloper-facingtempl
+cv-compact_mono 0:927ef106776a -0.03 semanticauthoringdsls,andturning
+cv-compact_mono 0:330fcb75ed52 -0.02 librariesthatscale.
+cv-compact_mono 0:53e5e7c5a884 0.26 experience
+cv-compact_mono 0:c9efb118bfda -0.09 seniorplatformengineer,northwind
+cv-compact_mono 0:9ccc3e904e5a -0.25 favourofonecanonicalengine.
+cv-compact_mono 0:e21e4e47835a -0.04 softwareengineer,brightleaflabs|
+cv-compact_mono 0:0cdd48f05f9d -0.24 builtbackendservicesandproductio
+cv-compact_mono 0:e48f1e2c853d -0.22 permonth.drovethemigrationfromit
+cv-compact_mono 0:b78a9a72ca9a -0.20 andcuttingp99renderlatencyfrom1.
+cv-compact_mono 0:9f5d87c00954 0.01 backendengineer,helixprintco|201
+cv-compact_mono 0:a485c37fe7ea -0.19 maintainedahigh-volumeinvoice-pr
+cv-compact_mono 0:5a136b6b9d8c -0.17 testharnessthatgatedeverytemplat
+cv-compact_mono 0:d94eccbb1fbe 0.09 selectedprojects
+cv-compact_mono 0:0059a3aac61e -0.46 graphcompose(java21,pdfbox,maven
+cv-compact_mono 0:18b7f8c840e4 -0.43 dsl,slot-basedtemplates,snapshot
+cv-compact_mono 0:d36f78e88fe0 -0.39 forhiringtoolsandbillingsystems.
+cv-compact_mono 0:55e119878845 -0.38 templatestudio(kotlin,composedes
+cv-compact_mono 0:c7b83853442b -0.35 proposal,andinvoiceoutputacross1
+cv-compact_mono 0:6b844249c695 -0.31 freezing.
+cv-compact_mono 0:6793d28e9783 -0.26 chromeforge(java,graphcompose,pa
+cv-compact_mono 0:e3cfea265b3b -0.23 graphcompose:cinematiccovers,pul
+cv-editorial_blue 0:8f1010120ed6 0.45 jordanrivera
+cv-editorial_blue 0:2d58f0cadc2d 0.22 platformengineer
+cv-editorial_blue 0:1b28eb6a9a2e 0.14 +442055551000-london,uk
+cv-editorial_blue 0:8817bf9310b6 0.11 jordan.rivera@example.com|linked
+cv-editorial_blue 0:3c69d6bb4892 0.15 professionalprofile
+cv-editorial_blue 0:32c1cf49a2fe 0.14 skills
+cv-editorial_blue 0:8447174c8fff 0.19 •java21
+cv-editorial_blue 0:4797e5b5555b 0.19 •kotlin
+cv-editorial_blue 0:44408890ac29 0.19 •groovy
+cv-editorial_blue 0:9b676a2ec3c3 0.19 •python
+cv-editorial_blue 0:c96e7be4e2bd 0.34 •sql
+cv-editorial_blue 0:5bf26a4a07e7 0.34 •pdfbox
+cv-editorial_blue 0:60bb71068aa6 0.34 •apachepoi(docx/xlsx)
+cv-editorial_blue 0:8af129f35b4a 0.34 •itext
+cv-editorial_blue 0:af16271643f5 0.33 •postscript
+cv-editorial_blue 0:52014e35429b 0.33 •icccolourprofiles
+cv-editorial_blue 0:5cc4da0e31ab 0.33 •fontmetrics
+cv-editorial_blue 0:ffd06dc07d03 0.33 •customdsldesign
+cv-editorial_blue 0:b3307292a943 0.33 •semanticlayouttrees
+cv-editorial_blue 0:6a0bf046882f 0.33 •pagination
+cv-editorial_blue 0:8d5738dcdcbd 0.33 •snapshottesting
+cv-editorial_blue 0:8f39f0146d0e 0.33 •visualregression
+cv-editorial_blue 0:a26a92311896 0.32 •maven
+cv-editorial_blue 0:d1002e9575f5 0.32 •gradle
+cv-editorial_blue 0:e7b0f50a3bf3 0.32 •githubactions
+cv-editorial_blue 0:193e87ad43b7 0.32 •jitpack
+cv-editorial_blue 0:62e29bf5f417 0.32 •docker
+cv-editorial_blue 0:83844532ef02 0.32 •jmhbenchmarking
+cv-editorial_blue 0:8a7a4807b03b 0.32 •junit5
+cv-editorial_blue 0:40aaef8fe2a9 0.32 •assertj
+cv-editorial_blue 0:a736ceace0f5 0.31 •pdfbox-basedpngdiff
+cv-editorial_blue 0:9a38eea08d15 0.31 •layout-graphsnapshots
+cv-editorial_blue 0:0d50de959d19 0.31 •mutationtesting(pitest)
+cv-editorial_blue 0:7ea255c76189 0.31 •mavencentral
+cv-editorial_blue 0:4e484fca00bb 0.41 •sonatypeossrh
+cv-editorial_blue 0:feaf5883619f 0.41 •gpgsigning
+cv-editorial_blue 0:11f34b7449a4 0.41 •semanticversioningdiscipline
+cv-editorial_blue 0:68bf0109c6f8 0.58 education
+cv-editorial_blue 0:78cdd0bfd1ce 0.54 msccomputerscience2019-2021
+cv-editorial_blue 0:47ce0218bbea 0.54 universityofmanchester
+cv-editorial_blue 0:2ffe115b06e5 0.54 distinction.thesis:composablelay
+cv-editorial_blue 0:c5947a492ce6 0.63 bscsoftwareengineering2015-2019
+cv-editorial_blue 0:89ad9656f393 0.63 imperialcollegelondon
+cv-editorial_blue 0:baa173b4a82e 0.63 first-classhonours.specialisatio
+cv-editorial_blue 0:83766950a9ce 0.72 oraclejavacertification2023-2024
+cv-editorial_blue 0:2669e1f6d55c 0.72 professionaltrack
+cv-editorial_blue 0:3857373829c1 0.72 java17platformdeep-dive:records,
+cv-editorial_blue 0:2577c0f557b2 0.72 projects
+cv-editorial_blue 0:0f2c67872251 0.68 graphcompose(java21,pdfbox,maven
+cv-editorial_blue 0:cf13c8a0c3d0 0.39 declarativejavapdflayoutengine.s
+cv-editorial_blue 0:cfef54184ea6 0.40 proposalpipelinesforhiringtoolsa
+cv-editorial_blue 0:d73d02174dc9 0.79 templatestudio(kotlin,composedes
+cv-editorial_blue 0:7127a108c33c 0.50 internaltoolforevaluatingcv,prop
+cv-editorial_blue 0:6b844249c695 0.50 freezing.
+cv-editorial_blue 0:542ec793b5b1 0.90 layoutlint(java21,javaparser,spo
+cv-editorial_blue 0:ee180ea1e0a5 1.00 chromeforge(java,graphcompose,pa
+cv-editorial_blue 0:e7e62230eb1f 1.01 editorial-magazinedocumenttoolki
+cv-editorial_blue 0:53e5e7c5a884 1.01 experience
+cv-editorial_blue 0:1b72d3ce3e11 0.99 seniorplatformengineer2024-prese
+cv-editorial_blue 0:f890faef907f 0.96 northwindsystems
+cv-editorial_blue 0:1af5650959fe 0.67 ledthereusabledocument-generatio
+cv-editorial_blue 0:27c01c228bd8 0.67 templatemaintenancetimeby70%byre
+cv-editorial_blue 0:1a7fe8433bff 1.08 softwareengineer2021-2024
+cv-editorial_blue 0:998c1a985022 1.05 brightleaflabs
+cv-editorial_blue 0:e86691b0219f 0.76 builtbackendservicesandproductio
+cv-editorial_blue 0:4ec57434564a 0.76 migrationfromitexttoacustomlayou
+cv-editorial_blue 1:ef148f221e31 10.35 helixprintco
+cv-editorial_blue 1:f811fbee6901 10.06 maintainedahigh-volumeinvoice-pr
+cv-editorial_blue 1:cbfca5b2a6d7 10.06 templatechange.
+cv-editorial_blue 1:7b476727faf3 10.37 additional
+cv-editorial_blue 1:f20997652453 10.34 languages:english(fluent),german
+cv-editorial_blue 1:ec9d3622395e 10.35 workeligibility:eligibletoworkin
+cv-editorial_blue 1:dd20ae01c3cf 10.35 opensource:maintainerofgraphcomp
+cv-editorial_blue 1:33c35e9d236d 10.36 speaking:jvmsummit2024,devoxxuk2
+cv-editorial_blue 1:0b516aa076e0 10.33 referencesavailableuponrequest.
+cv-engineering_resume 0:8f1010120ed6 0.15 jordanrivera
+cv-engineering_resume 0:2d58f0cadc2d -0.25 platformengineer
+cv-engineering_resume 0:fbeea547d99e -0.21 london,uk
+cv-engineering_resume 0:89674e6f130e -0.20 +442055551000
+cv-engineering_resume 0:e0f850305ded -0.19 jordan.rivera@example.com
+cv-engineering_resume 0:84308bea4540 -0.18 linkedin
+cv-engineering_resume 0:c0b0109d9439 -0.17 github
+cv-engineering_resume 0:32c1cf49a2fe -0.50 skills
+cv-engineering_resume 0:873a24d153c8 -0.44 languages:java21,kotlin,groovy,p
+cv-engineering_resume 0:db84150190bb -0.63 document&print:pdfbox,apachepoi
+cv-engineering_resume 0:69d03fef7130 -0.62 (docx/xlsx),itext,postscript,icc
+cv-engineering_resume 0:d52fd337f016 -0.61 profiles
+cv-engineering_resume 0:f93032b34754 -0.60 layoutengines:customdsldesign,se
+cv-engineering_resume 0:2d6fa255ba3a -0.59 layouttrees,pagination,snapshott
+cv-engineering_resume 0:f274537aaf2c -0.58 regression
+cv-engineering_resume 0:45fcec9fa26d -0.57 build&infrastructure:maven,gradl
+cv-engineering_resume 0:33ddf84f4bab -0.56 actions,jitpack,docker
+cv-engineering_resume 0:af23376e2ec2 -0.55 testing:junit5,assertj,pdfbox-ba
+cv-engineering_resume 0:a8c30cabf363 -0.54 diff,layout-graphsnapshots,mutat
+cv-engineering_resume 0:7c093617a679 -0.53 (pitest)
+cv-engineering_resume 0:11ca7190fe83 -0.52 distribution:mavencentral,sonaty
+cv-engineering_resume 0:768ad260251b -0.51 gpgsigning,jitpack,semanticversi
+cv-engineering_resume 0:d43c8bd5797a -0.50 discipline
+cv-engineering_resume 0:68bf0109c6f8 -0.38 education
+cv-engineering_resume 0:5f9c672fafaf -0.32 msccomputerscience/2019-2021
+cv-engineering_resume 0:141310eca6fb -0.31 bscsoftwareengineering/2015-2019
+cv-engineering_resume 0:608c03298f47 -0.30 oraclejavacertification/2023-202
+cv-engineering_resume 0:41ffd8b76afc -0.38 details
+cv-engineering_resume 0:ecc25e73b19b -0.52 languages:english(fluent),german
+cv-engineering_resume 0:ac7f0ee6a49e -0.51 (intermediate),spanish(basic)
+cv-engineering_resume 0:970ca9d789c2 -0.50 workeligibility:eligibletoworkin
+cv-engineering_resume 0:0735680e2596 -0.49 theeu
+cv-engineering_resume 0:e8256e23459a -1.55 engineeringprofile
+cv-engineering_resume 0:53e5e7c5a884 8.95 experience
+cv-engineering_resume 0:4977534824cc 9.04 seniorplatformengineer/2024-pres
+cv-engineering_resume 0:f890faef907f 9.08 northwindsystems
+cv-engineering_resume 0:0bf7eb0b1058 8.84 ledthereusabledocument-generatio
+cv-engineering_resume 0:7033b2988e4d 9.08 softwareengineer/2021-2024
+cv-engineering_resume 0:998c1a985022 9.12 brightleaflabs
+cv-engineering_resume 0:8b5abdc8c0d7 9.02 technicalevidence
+cv-engineering_resume 0:e2fbf67cb588 9.51 graphcompose(java21,pdfbox,maven
+cv-engineering_resume 0:eb5950729749 9.37 templates,snapshottesting.powers
+cv-engineering_resume 0:81c8132f9792 9.29 systems.(opensource)
+cv-engineering_resume 0:c944ee08a5bf 9.38 layoutlint(java21,javaparser,spo
+cv-engineering_resume 0:2d80d05697ad 9.09 untypedoffsets,implicitpagebreak
+cv-engineering_resume 0:6793d28e9783 9.28 chromeforge(java,graphcompose,pa
+cv-engineering_resume 0:e3cfea265b3b 8.99 graphcompose:cinematiccovers,pul
+cv-executive 0:8f1010120ed6 -0.50 jordanrivera
+cv-executive 0:89ff05847e96 -0.28 london,uk|+442055551000
+cv-executive 0:8817bf9310b6 -0.30 jordan.rivera@example.com|linked
+cv-executive 0:b944906ed84c -0.01 professionalsummary
+cv-executive 0:6fbdc8b79878 0.08 platformengineerwith10+yearsbuil
+cv-executive 0:c2be183b1c5f 0.08 templatesystems.specialisedinhig
+cv-executive 0:7f92a9c9efc9 0.08 scriptsintotyped,snapshot-tested
+cv-executive 0:5f94c50dc5bf -0.03 technicalskills
+cv-executive 0:eea537278f83 -0.24 •languages:java21,kotlin,groovy,
+cv-executive 0:9c2cd7231a53 -0.24 •document&print:pdfbox,apachepoi
+cv-executive 0:7bf8639ec5d3 -0.24 •layoutengines:customdsldesign,s
+cv-executive 0:8e66776d28d7 -0.24 •build&infrastructure:maven,grad
+cv-executive 0:1ed4fc7d7768 -0.24 •testing:junit5,assertj,pdfbox-b
+cv-executive 0:26671c309eb9 -0.24 •distribution:mavencentral,sonat
+cv-executive 0:68bf0109c6f8 -0.05 education
+cv-executive 0:0ad1957d6bab -0.26 msccomputerscience
+cv-executive 0:3fa772117260 -0.26 2019-2021
+cv-executive 0:47ce0218bbea -0.26 universityofmanchester
+cv-executive 0:2ffe115b06e5 -0.26 distinction.thesis:composablelay
+cv-executive 0:b6749d0b616b -0.16 bscsoftwareengineering
+cv-executive 0:30f9262640a0 -0.16 2015-2019
+cv-executive 0:89ad9656f393 -0.16 imperialcollegelondon
+cv-executive 0:baa173b4a82e -0.16 first-classhonours.specialisatio
+cv-executive 0:6d3d5673c39f -0.06 oraclejavacertification
+cv-executive 0:d40b22f00acb -0.06 2023-2024
+cv-executive 0:2669e1f6d55c -0.06 professionaltrack
+cv-executive 0:3857373829c1 -0.06 java17platformdeep-dive:records,
+cv-executive 0:2577c0f557b2 0.13 projects
+cv-executive 0:b2b029995203 -0.08 •graphcompose(java21,pdfbox,mave
+cv-executive 0:cf13c8a0c3d0 -0.33 declarativejavapdflayoutengine.s
+cv-executive 0:cfef54184ea6 -0.33 proposalpipelinesforhiringtoolsa
+cv-executive 0:1b50bb81df5a 0.02 •templatestudio(kotlin,composede
+cv-executive 0:7127a108c33c -0.23 internaltoolforevaluatingcv,prop
+cv-executive 0:6b844249c695 -0.23 freezing.
+cv-executive 0:25cdca2beb8b 0.12 •layoutlint(java21,javaparser,sp
+cv-executive 0:f5fa2add7746 -0.13 staticanalyserthatflagsfragileau
+cv-executive 0:9f5414016bd1 -0.13 toproduction.
+cv-executive 0:fb1927f88597 0.22 •chromeforge(java,graphcompose,p
+cv-executive 0:e7e62230eb1f 0.22 editorial-magazinedocumenttoolki
+cv-executive 0:c2f296ef30a3 0.41 professionalexperience
+cv-executive 0:a76f47480818 0.20 seniorplatformengineer
+cv-executive 0:060300b18051 0.20 2024-present
+cv-executive 0:f890faef907f 0.20 northwindsystems
+cv-executive 0:1af5650959fe 0.50 ledthereusabledocument-generatio
+cv-executive 0:27c01c228bd8 0.50 templatemaintenancetimeby70%byre
+cv-executive 1:daf65306b3b6 -3.18 softwareengineer
+cv-executive 1:e7cc1822c6dc -3.18 2021-2024
+cv-executive 1:998c1a985022 -3.18 brightleaflabs
+cv-executive 1:ff8303967fa4 -2.88 builtbackendservicesandproductio
+cv-executive 1:bd1fc9a4d815 -2.88 fromitexttoacustomlayoutengine,e
+cv-executive 1:41bb54fbae8d -3.08 backendengineer
+cv-executive 1:3fa772117260 -3.08 2019-2021
+cv-executive 1:ef148f221e31 -3.08 helixprintco
+cv-executive 1:f811fbee6901 -2.78 maintainedahigh-volumeinvoice-pr
+cv-executive 1:cbfca5b2a6d7 -2.78 templatechange.
+cv-executive 1:676dfdd56ad2 -2.89 additionalinformation
+cv-executive 1:f20997652453 -3.10 languages:english(fluent),german
+cv-executive 1:ec9d3622395e -3.10 workeligibility:eligibletoworkin
+cv-executive 1:dd20ae01c3cf -3.10 opensource:maintainerofgraphcomp
+cv-executive 1:33c35e9d236d -3.10 speaking:jvmsummit2024,devoxxuk2
+cv-midnight_navy 0:21d2636ad3df -16.37 alexmorgan
+cv-midnight_navy 0:5518402feccc -17.05 marketingmanager
+cv-midnight_navy 0:093e7d5fdbaa -17.12 contact
+cv-midnight_navy 0:01dcad830244 -16.44 +1(555)123-4567
+cv-midnight_navy 0:3eef38c97138 -16.45 alex.morgan@email.com
+cv-midnight_navy 0:d5a0d0abdc64 -16.45 newyork,ny,usa
+cv-midnight_navy 0:84308bea4540 -16.46 linkedin
+cv-midnight_navy 0:0e6a8e0b849e -16.47 portfolio
+cv-midnight_navy 0:68bf0109c6f8 -17.11 education
+cv-midnight_navy 0:6e1119579227 -17.18 masterofbusiness
+cv-midnight_navy 0:512afb6c7631 -17.18 administration
+cv-midnight_navy 0:09b0e2130c1e -16.68 universityofchicagoboothschoolof
+cv-midnight_navy 0:11d404179596 -16.69 business
+cv-midnight_navy 0:3b8048983ecc -17.07 2016–2018
+cv-midnight_navy 0:84c2243138f7 -17.20 bachelorofsciencein
+cv-midnight_navy 0:e2a530e251d3 -17.19 marketing
+cv-midnight_navy 0:1f676d444ffb -16.99 bostonuniversity
+cv-midnight_navy 0:8789bd1a8f91 -17.07 2012–2016
+cv-midnight_navy 0:32c1cf49a2fe -17.15 skills
+cv-midnight_navy 0:4a3750fc1d48 -15.95 strategicplanning
+cv-midnight_navy 0:0d676ed982b4 -13.85 digitalmarketing
+cv-midnight_navy 0:c29cfa799c8d -11.74 marketresearch
+cv-midnight_navy 0:2c5646de026b -9.64 brandmanagement
+cv-midnight_navy 0:2f594f65f16c -7.53 dataanalysis
+cv-midnight_navy 0:340455fbac25 -5.43 projectmanagement
+cv-midnight_navy 0:96fa20c5c60d -3.33 googleanalytics
+cv-midnight_navy 0:9bc298c12dc3 -1.22 seo/sem
+cv-midnight_navy 0:a95ee8d8cf67 0.88 microsoftofficesuite
+cv-midnight_navy 0:d4e16994df90 2.99 communication
+cv-midnight_navy 0:6cb574fa10b6 3.88 languages
+cv-midnight_navy 0:b6234d2ea0d6 8.86 english
+cv-midnight_navy 0:9c9b13446cd9 18.59 spanish
+cv-midnight_navy 0:21bb36ad0638 28.32 french
+cv-midnight_navy 0:b944906ed84c 2.44 professionalsummary
+cv-midnight_navy 0:05b2b441ce7b 3.20 results-drivenmarketingmanagerwi
+cv-midnight_navy 0:66d5ff95c72a 3.18 executingdata-drivenmarketingstr
+cv-midnight_navy 0:27747b7a33ce 3.16 engagement.proventrackrecordinle
+cv-midnight_navy 0:a0f4e7019ffc 3.14 successfulcampaigns,anddeliverin
+cv-midnight_navy 0:68352cb08e62 3.12 strongbrandsandcreatingimpactful
+cv-midnight_navy 0:53e5e7c5a884 2.32 experience
+cv-midnight_navy 0:086c0e036e67 2.39 2021–present
+cv-midnight_navy 0:009b5b6479fa 2.47 starwavesolutions
+cv-midnight_navy 0:60cebc1ec80c 2.47 newyork,ny
+cv-midnight_navy 0:e0ee3cbb7b53 1.94 ·manageateamof6marketingprofessi
+cv-midnight_navy 0:8ba85a74e016 1.96 anddesignteamstodrivecampaignsuc
+cv-midnight_navy 0:407f710db042 1.97 ·overseedigitalcampaignsacrossse
+cv-midnight_navy 0:308aef77a1c3 1.99 resultingina25%increaseinroi.
+cv-midnight_navy 0:7e121dceb78a 2.53 seniormarketingspecialist
+cv-midnight_navy 0:f7d1049ec64b 2.59 2018–2021
+cv-midnight_navy 0:4b8292fda43e 2.67 brightlinetechnologies
+cv-midnight_navy 0:a246f7ba3f71 2.11 ·executedmulti-channelmarketingc
+cv-midnight_navy 0:58b162e46dda 2.13 engagementby30%.
+cv-midnight_navy 0:ef77f2daef0f 2.72 ·managedsocialmediachannelsandco
+cv-midnight_navy 0:a112a7b3c16b 2.74 ·coordinatedwithcreativeteamstod
+cv-midnight_navy 0:990b9f22bb48 2.70 marketingcoordinator
+cv-midnight_navy 0:88f4e236ebcd 2.84 peakperformancegroup
+cv-midnight_navy 0:c8186fbbdae9 2.84 boston,ma
+cv-midnight_navy 0:87777be540ce 2.83 ·supportedthedevelopmentandexecu
+cv-midnight_navy 0:44bbb2209a31 2.85 ·assistedinorganizingevents,webi
+cv-midnight_navy 0:a1b8ec0d8fa7 2.86 ·monitoredcampaignperformanceand
+cv-midnight_navy 0:6c6e2844f9eb 2.88 ·maintainedandupdatedmarketingda
+cv-midnight_navy 0:6ee18b42fbf1 2.78 achievements
+cv-midnight_navy 0:ce3ecf332528 3.82 increasedbrand
+cv-midnight_navy 0:d42f3bf2c01a 3.24 awarenessby40%
+cv-midnight_navy 0:f732077ea0c0 2.67 within2years.
+cv-midnight_navy 0:f030b07931b5 3.82 boostedlead
+cv-midnight_navy 0:912bf883fae8 3.24 generationby35%
+cv-midnight_navy 0:f9049751a4c8 2.67 annually.
+cv-midnight_navy 0:fa2311efab0a 3.56 recognizedastop
+cv-midnight_navy 0:7918c6d41cc5 2.68 performerin2022.
+cv-midnight_navy 0:e831beb04c00 2.81 certifications
+cv-midnight_navy 0:4344ae02bbc0 2.88 googleanalyticscertified
+cv-midnight_navy 0:bbdefa2950f4 2.86 google
+cv-midnight_navy 0:73a2af8864fc 2.84 2020
+cv-midnight_navy 0:200b36afcfde 13.51 hubspotacademy
+cv-midnight_navy 0:1bea20e1df19 13.49 2021
+cv-minimal_underlined 0:8f1010120ed6 0.46 jordanrivera
+cv-minimal_underlined 0:8d7a2cca3060 0.18 +442055551000|jordan.rivera@exam
+cv-minimal_underlined 0:b944906ed84c -0.11 professionalsummary
+cv-minimal_underlined 0:80cc87fdc4c4 -0.72 platformengineerwith10+yearsbuil
+cv-minimal_underlined 0:bddc0bd093ce -0.72 systems.specialisedinhigh-throug
+cv-minimal_underlined 0:95a43d7b3df0 -0.71 snapshot-testedlibrariesthatscal
+cv-minimal_underlined 0:5f94c50dc5bf -0.38 technicalskills
+cv-minimal_underlined 0:eea537278f83 -0.70 •languages:java21,kotlin,groovy,
+cv-minimal_underlined 0:9c2cd7231a53 -0.69 •document&print:pdfbox,apachepoi
+cv-minimal_underlined 0:7bf8639ec5d3 -0.69 •layoutengines:customdsldesign,s
+cv-minimal_underlined 0:8e66776d28d7 -0.68 •build&infrastructure:maven,grad
+cv-minimal_underlined 0:1ed4fc7d7768 -0.68 •testing:junit5,assertj,pdfbox-b
+cv-minimal_underlined 0:26671c309eb9 -0.67 •distribution:mavencentral,sonat
+cv-minimal_underlined 0:68bf0109c6f8 -0.64 education
+cv-minimal_underlined 0:0ad1957d6bab -0.93 msccomputerscience
+cv-minimal_underlined 0:3fa772117260 -0.97 2019-2021
+cv-minimal_underlined 0:47ce0218bbea -0.94 universityofmanchester
+cv-minimal_underlined 0:2ffe115b06e5 -0.93 distinction.thesis:composablelay
+cv-minimal_underlined 0:b6749d0b616b -0.80 bscsoftwareengineering
+cv-minimal_underlined 0:30f9262640a0 -0.83 2015-2019
+cv-minimal_underlined 0:89ad9656f393 -0.81 imperialcollegelondon
+cv-minimal_underlined 0:baa173b4a82e -0.79 first-classhonours.specialisatio
+cv-minimal_underlined 0:6d3d5673c39f -0.66 oraclejavacertification
+cv-minimal_underlined 0:d40b22f00acb -0.70 2023-2024
+cv-minimal_underlined 0:2669e1f6d55c -0.67 professionaltrack
+cv-minimal_underlined 0:3857373829c1 -0.66 java17platformdeep-dive:records,
+cv-minimal_underlined 0:2577c0f557b2 -0.63 projects
+cv-minimal_underlined 0:b2b029995203 -0.94 •graphcompose(java21,pdfbox,mave
+cv-minimal_underlined 0:67593a76ef70 -1.24 declarativejavapdflayoutengine.s
+cv-minimal_underlined 0:b9292cbd1454 -1.23 pipelinesforhiringtoolsandbillin
+cv-minimal_underlined 0:1b50bb81df5a -0.83 •templatestudio(kotlin,composede
+cv-minimal_underlined 0:25cdca2beb8b -13.51 •layoutlint(java21,javaparser,sp
+cv-minimal_underlined 0:7488006d7864 -13.81 staticanalyserthatflagsfragileau
+cv-minimal_underlined 0:c4d0c415b4f8 -13.80 production.
+cv-minimal_underlined 0:fb1927f88597 -13.40 •chromeforge(java,graphcompose,p
+cv-minimal_underlined 0:e7e62230eb1f -13.39 editorial-magazinedocumenttoolki
+cv-minimal_underlined 0:c2f296ef30a3 -13.36 professionalexperience
+cv-minimal_underlined 0:a76f47480818 -13.65 seniorplatformengineer
+cv-minimal_underlined 0:060300b18051 -13.69 2024-present
+cv-minimal_underlined 0:f890faef907f -13.66 northwindsystems
+cv-minimal_underlined 1:49faf14f1f56 -0.73 ledthereusabledocument-generatio
+cv-minimal_underlined 1:6bd3f168e89e -0.73 maintenancetimeby70%byretiringpe
+cv-minimal_underlined 1:daf65306b3b6 -0.30 softwareengineer
+cv-minimal_underlined 1:e7cc1822c6dc -0.33 2021-2024
+cv-minimal_underlined 1:998c1a985022 -0.31 brightleaflabs
+cv-minimal_underlined 1:e55664011cda -0.59 builtbackendservicesandproductio
+cv-minimal_underlined 1:e80236b6d2b1 -0.59 itexttoacustomlayoutengine,elimi
+cv-minimal_underlined 1:41bb54fbae8d -0.16 backendengineer
+cv-minimal_underlined 1:3fa772117260 -0.19 2019-2021
+cv-minimal_underlined 1:ef148f221e31 -0.17 helixprintco
+cv-minimal_underlined 1:9d31a6bfbc69 -0.45 maintainedahigh-volumeinvoice-pr
+cv-minimal_underlined 1:03af8a628309 -0.45 change.
+cv-minimal_underlined 1:676dfdd56ad2 -0.12 additionalinformation
+cv-minimal_underlined 1:f20997652453 -0.43 languages:english(fluent),german
+cv-minimal_underlined 1:ec9d3622395e -0.43 workeligibility:eligibletoworkin
+cv-minimal_underlined 1:dd20ae01c3cf -0.42 opensource:maintainerofgraphcomp
+cv-minimal_underlined 1:33c35e9d236d -0.42 speaking:jvmsummit2024,devoxxuk2
+cv-mint_editorial 0:8f1010120ed6 -1.30 jordanrivera
+cv-mint_editorial 0:2d58f0cadc2d -0.27 platformengineer
+cv-mint_editorial 0:093e7d5fdbaa -0.71 contact
+cv-mint_editorial 0:89674e6f130e -0.07 +442055551000
+cv-mint_editorial 0:e0f850305ded -0.07 jordan.rivera@example.com
+cv-mint_editorial 0:fbeea547d99e -0.07 london,uk
+cv-mint_editorial 0:84308bea4540 -0.07 linkedin
+cv-mint_editorial 0:c0b0109d9439 -0.07 github
+cv-mint_editorial 0:68bf0109c6f8 -0.71 education
+cv-mint_editorial 0:0ad1957d6bab -0.16 msccomputerscience
+cv-mint_editorial 0:47ce0218bbea -0.28 universityofmanchester
+cv-mint_editorial 0:3fa772117260 -0.29 2019-2021
+cv-mint_editorial 0:5993c29826a9 -0.18 bscsoftware
+cv-mint_editorial 0:8c85b6639e62 -0.18 engineering
+cv-mint_editorial 0:89ad9656f393 -0.30 imperialcollegelondon
+cv-mint_editorial 0:30f9262640a0 -0.31 2015-2019
+cv-mint_editorial 0:95c2a0cf9777 -0.20 oraclejava
+cv-mint_editorial 0:b00a6c108553 -0.20 certification
+cv-mint_editorial 0:2669e1f6d55c -0.32 professionaltrack
+cv-mint_editorial 0:d40b22f00acb -0.33 2023-2024
+cv-mint_editorial 0:1900eab6c028 -0.71 profile
+cv-mint_editorial 0:924e8fc8d04f 0.29 platformengineerwith10+yearsbuil
+cv-mint_editorial 0:df58bf5ac853 0.29 pipelines,layoutengines,anddevel
+cv-mint_editorial 0:bedc997db3d0 0.29 inhigh-throughputpdfrendering,se
+cv-mint_editorial 0:3be7f615205f 0.29 production-opsscriptsintotyped,s
+cv-mint_editorial 0:53e5e7c5a884 -0.71 experience
+cv-mint_editorial 0:a76f47480818 -0.16 seniorplatformengineer
+cv-mint_editorial 0:d492f2d34b81 -0.28 northwindsystems|2024-present
+cv-mint_editorial 0:11a63b6a756a 0.28 ledthereusabledocument-generatio
+cv-mint_editorial 0:e9ddcca2381b 0.28 reportingflowsacross8productteam
+cv-mint_editorial 0:8e7a066998f5 0.28 by70%byretiringper-teampdfscript
+cv-mint_editorial 0:daf65306b3b6 -0.17 softwareengineer
+cv-mint_editorial 0:14aeb7d88f36 -0.29 brightleaflabs|2021-2024
+cv-mint_editorial 0:78c890058374 0.27 builtbackendservicesandproductio
+cv-mint_editorial 0:798b575aa9c2 0.27 processing2m+documentspermonth.d
+cv-mint_editorial 0:337c2b00cc88 0.27 customlayoutengine,eliminatingli
+cv-mint_editorial 0:cbec16fb4c22 0.27 from1.4sto380ms.
+cv-mint_editorial 1:2b3bcb2b7d1d -0.60 expertise
+cv-mint_editorial 1:6cb574fa10b6 -0.05 languages
+cv-mint_editorial 1:f2197dc148f6 -0.05 document&print
+cv-mint_editorial 1:634db137981a -0.05 layoutengines
+cv-mint_editorial 1:86c328e816c6 -0.05 build&infrastructure
+cv-mint_editorial 1:cf80cd8aed48 -0.05 testing
+cv-mint_editorial 1:933548450302 -0.05 distribution
+cv-mint_editorial 1:32c1cf49a2fe -0.60 skills
+cv-mint_editorial 1:d5680c2e2769 -0.05 java21
+cv-mint_editorial 1:19a67c2a5369 -0.05 kotlin
+cv-mint_editorial 1:95bfacd3a466 -0.05 groovy
+cv-mint_editorial 1:11a4a60b518b -0.05 python
+cv-mint_editorial 1:4ec7c53222c8 -0.05 sql
+cv-mint_editorial 1:57529f20c3ad -0.05 pdfbox
+cv-mint_editorial 1:3e860f41a5ea -0.60 social
+cv-mint_editorial 1:84308bea4540 -0.30 linkedin
+cv-mint_editorial 1:c0b0109d9439 -0.30 github
+cv-mint_editorial 1:53e5e7c5a884 -0.60 experience
+cv-mint_editorial 1:41bb54fbae8d -0.05 backendengineer
+cv-mint_editorial 1:43aab7d19dc6 -0.17 helixprintco|2019-2021
+cv-mint_editorial 1:d9af05f99661 0.39 maintainedahigh-volumeinvoice-pr
+cv-mint_editorial 1:1081945512b1 0.39 authoredthecompliancetestharness
+cv-modern_professional 0:8f1010120ed6 0.00 jordanrivera
+cv-modern_professional 0:89ff05847e96 0.14 london,uk|+442055551000
+cv-modern_professional 0:8817bf9310b6 0.11 jordan.rivera@example.com|linked
+cv-modern_professional 0:b944906ed84c 0.01 professionalsummary
+cv-modern_professional 0:6fbdc8b79878 -0.42 platformengineerwith10+yearsbuil
+cv-modern_professional 0:5f94c50dc5bf 0.01 technicalskills
+cv-modern_professional 0:eea537278f83 -0.12 •languages:java21,kotlin,groovy,
+cv-modern_professional 0:9c2cd7231a53 -0.12 •document&print:pdfbox,apachepoi
+cv-modern_professional 0:7bf8639ec5d3 -0.12 •layoutengines:customdsldesign,s
+cv-modern_professional 0:8e66776d28d7 -0.12 •build&infrastructure:maven,grad
+cv-modern_professional 0:1ed4fc7d7768 -0.12 •testing:junit5,assertj,pdfbox-b
+cv-modern_professional 0:26671c309eb9 -0.12 •distribution:mavencentral,sonat
+cv-modern_professional 0:68bf0109c6f8 0.02 education
+cv-modern_professional 0:0ad1957d6bab -0.12 msccomputerscience
+cv-modern_professional 0:3fa772117260 -0.11 2019-2021
+cv-modern_professional 0:47ce0218bbea -0.17 universityofmanchester
+cv-modern_professional 0:2ffe115b06e5 -0.11 distinction.thesis:composablelay
+cv-modern_professional 0:b6749d0b616b -0.02 bscsoftwareengineering
+cv-modern_professional 0:30f9262640a0 -0.01 2015-2019
+cv-modern_professional 0:89ad9656f393 -0.07 imperialcollegelondon
+cv-modern_professional 0:baa173b4a82e -0.01 first-classhonours.specialisatio
+cv-modern_professional 0:6d3d5673c39f 0.08 oraclejavacertification
+cv-modern_professional 0:d40b22f00acb 0.09 2023-2024
+cv-modern_professional 0:2669e1f6d55c 0.03 professionaltrack
+cv-modern_professional 0:3857373829c1 0.09 java17platformdeep-dive:records,
+cv-modern_professional 0:2577c0f557b2 0.22 projects
+cv-modern_professional 0:b2b029995203 0.09 •graphcompose(java21,pdfbox,mave
+cv-modern_professional 0:dd39d2ff3520 -0.21 declarativejavapdflayoutengine.s
+cv-modern_professional 0:9ecaa6df6d41 -0.21 invoice/proposalpipelinesforhiri
+cv-modern_professional 0:1b50bb81df5a 0.19 •templatestudio(kotlin,composede
+cv-modern_professional 0:18eec9e76e2d -0.11 internaltoolforevaluatingcv,prop
+cv-modern_professional 0:6bc2807453c6 -0.11 baselinefreezing.
+cv-modern_professional 0:25cdca2beb8b 0.29 •layoutlint(java21,javaparser,sp
+cv-modern_professional 0:cc2850ddd8ba -0.01 staticanalyserthatflagsfragileau
+cv-modern_professional 0:7b985a1d2b08 -0.01 shiptoproduction.
+cv-modern_professional 0:fb1927f88597 0.39 •chromeforge(java,graphcompose,p
+cv-modern_professional 0:cda7db6c6ea6 0.09 editorial-magazinedocumenttoolki
+cv-modern_professional 0:fe63fe18585a 0.09 callouts.
+cv-modern_professional 0:c2f296ef30a3 0.53 professionalexperience
+cv-modern_professional 0:a76f47480818 0.39 seniorplatformengineer
+cv-modern_professional 0:060300b18051 0.40 2024-present
+cv-modern_professional 0:f890faef907f 0.34 northwindsystems
+cv-modern_professional 0:a6525dacbac7 0.10 ledthereusabledocument-generatio
+cv-modern_professional 0:15e3905f4890 0.10 reducedtemplatemaintenancetimeby
+cv-modern_professional 0:daf65306b3b6 0.49 softwareengineer
+cv-modern_professional 0:e7cc1822c6dc 0.50 2021-2024
+cv-modern_professional 0:998c1a985022 0.44 brightleaflabs
+cv-modern_professional 0:e86691b0219f 0.20 builtbackendservicesandproductio
+cv-modern_professional 0:4ec57434564a 0.20 migrationfromitexttoacustomlayou
+cv-modern_professional 0:41bb54fbae8d 0.59 backendengineer
+cv-modern_professional 0:ef148f221e31 0.54 helixprintco
+cv-modern_professional 0:a32c7f2401d9 0.30 maintainedahigh-volumeinvoice-pr
+cv-modern_professional 0:7068c1d7034b 0.30 everytemplatechange.
+cv-modern_professional 1:676dfdd56ad2 -7.64 additionalinformation
+cv-modern_professional 1:f20997652453 -7.77 languages:english(fluent),german
+cv-modern_professional 1:ec9d3622395e -7.77 workeligibility:eligibletoworkin
+cv-modern_professional 1:dd20ae01c3cf -7.77 opensource:maintainerofgraphcomp
+cv-modern_professional 1:33c35e9d236d -7.77 speaking:jvmsummit2024,devoxxuk2
+cv-monogram_sidebar 0:093e7d5fdbaa 2.70 contact
+cv-monogram_sidebar 0:89674e6f130e 3.35 +442055551000
+cv-monogram_sidebar 0:e0f850305ded 3.87 jordan.rivera@example.com
+cv-monogram_sidebar 0:fbeea547d99e 4.39 london,uk
+cv-monogram_sidebar 0:84308bea4540 4.91 linkedin
+cv-monogram_sidebar 0:c0b0109d9439 5.43 github
+cv-monogram_sidebar 0:68bf0109c6f8 5.40 education
+cv-monogram_sidebar 0:0ad1957d6bab 5.50 msccomputerscience
+cv-monogram_sidebar 0:47ce0218bbea 5.53 universityofmanchester
+cv-monogram_sidebar 0:3fa772117260 5.54 2019-2021
+cv-monogram_sidebar 0:b6749d0b616b 5.51 bscsoftwareengineering
+cv-monogram_sidebar 0:89ad9656f393 5.54 imperialcollegelondon
+cv-monogram_sidebar 0:30f9262640a0 5.55 2015-2019
+cv-monogram_sidebar 0:32c1cf49a2fe 5.52 skills
+cv-monogram_sidebar 0:d5680c2e2769 5.67 java21
+cv-monogram_sidebar 0:19a67c2a5369 5.69 kotlin
+cv-monogram_sidebar 0:95bfacd3a466 5.71 groovy
+cv-monogram_sidebar 0:11a4a60b518b 5.73 python
+cv-monogram_sidebar 0:4ec7c53222c8 5.75 sql
+cv-monogram_sidebar 0:57529f20c3ad 5.77 pdfbox
+cv-monogram_sidebar 0:1814aacb6d5a 5.79 apachepoi(docx/xlsx)
+cv-monogram_sidebar 0:136c67657614 2.57 jordan
+cv-monogram_sidebar 0:8ba35ebe3d5c 2.58 rivera
+cv-monogram_sidebar 0:2d58f0cadc2d 2.76 platformengineer
+cv-monogram_sidebar 0:b944906ed84c 2.70 professionalsummary
+cv-monogram_sidebar 0:e9b75496bfb4 2.48 platformengineerwith10+yearsbuil
+cv-monogram_sidebar 0:84b4d993d952 2.48 developer-facingtemplatesystems.
+cv-monogram_sidebar 0:dc1181e6cd7b 2.48 andturningbrittleproduction-opss
+cv-monogram_sidebar 0:c2f296ef30a3 2.70 professionalexperience
+cv-monogram_sidebar 0:a76f47480818 2.73 seniorplatformengineer
+cv-monogram_sidebar 0:f890faef907f 2.77 northwindsystems
+cv-monogram_sidebar 0:060300b18051 2.79 2024-present
+cv-monogram_sidebar 0:0bf7eb0b1058 2.51 ledthereusabledocument-generatio
+cv-monogram_sidebar 0:b9f0f08f8ce0 2.51 teams.reducedtemplatemaintenance
+cv-monogram_sidebar 0:ab9a16f78540 2.51 canonicalengine.
+cv-monogram_sidebar 0:daf65306b3b6 2.76 softwareengineer
+cv-monogram_sidebar 0:998c1a985022 2.80 brightleaflabs
+cv-monogram_sidebar 0:e7cc1822c6dc 2.82 2021-2024
+cv-monogram_sidebar 0:e77e909f6ff5 2.54 builtbackendservicesandproductio
+cv-monogram_sidebar 0:97c59b2fdb55 2.54 drovethemigrationfromitexttoacus
+cv-monogram_sidebar 0:2c2b19cf214d 2.54 latencyfrom1.4sto380ms.
+cv-monogram_sidebar 0:2577c0f557b2 2.76 projects
+cv-monogram_sidebar 0:abdcacccefe1 3.23 templatestudio(kotlin,composedes
+cv-monogram_sidebar 0:041a43f9a663 3.52 andinvoiceoutputacross14designpr
+cv-monogram_sidebar 0:f87e2f0c02dc 3.57 layoutlint(java21,javaparser,spo
+cv-monogram_sidebar 0:a646f74483b1 3.86 rows,untypedoffsets,implicitpage
+cv-monogram_sidebar 0:676dfdd56ad2 4.13 additionalinformation
+cv-monogram_sidebar 0:f20997652453 4.16 languages:english(fluent),german
+cv-monogram_sidebar 0:ec9d3622395e 4.15 workeligibility:eligibletoworkin
+cv-monogram_sidebar 0:dd20ae01c3cf 4.14 opensource:maintainerofgraphcomp
+cv-navy_sidebar 0:9fdaa20e32a0 3.19 oliviamartinez
+cv-navy_sidebar 0:093e7d5fdbaa 2.66 contact
+cv-navy_sidebar 0:01dcad830244 2.87 +1(555)123-4567
+cv-navy_sidebar 0:51deda7d1a4f 2.87 your.email@gmail.com
+cv-navy_sidebar 0:d5a0d0abdc64 3.07 newyork,ny,usa
+cv-navy_sidebar 0:8d5bb5bf42be 3.02 linkedin.com/in/yourname
+cv-navy_sidebar 0:68bf0109c6f8 2.71 education
+cv-navy_sidebar 0:6e1410a7b5cb 3.17 masterofsciencein
+cv-navy_sidebar 0:e2a530e251d3 3.17 marketing
+cv-navy_sidebar 0:d244381bfb58 2.82 newyorkuniversity
+cv-navy_sidebar 0:60cebc1ec80c 2.82 newyork,ny
+cv-navy_sidebar 0:01e4455cec51 2.82 2020-2022
+cv-navy_sidebar 0:fb1235740d31 3.17 bachelorofbusiness
+cv-navy_sidebar 0:512afb6c7631 3.17 administration
+cv-navy_sidebar 0:1d9547a99a4e 2.82 universityofcalifornia
+cv-navy_sidebar 0:de747164b75f 2.82 losangeles,ca
+cv-navy_sidebar 0:7878b9e4385f 2.82 2016-2020
+cv-navy_sidebar 0:32c1cf49a2fe 2.76 skills
+cv-navy_sidebar 0:ccae905da5fc 2.87 •digitalmarketing
+cv-navy_sidebar 0:3e8cddd043e9 2.87 •dataanalysis
+cv-navy_sidebar 0:cb393a256ce2 2.87 •projectmanagement
+cv-navy_sidebar 0:45dad5d5c3cc 2.87 •seo/sem
+cv-navy_sidebar 0:004ded92a5a3 2.87 •microsoftofficesuite
+cv-navy_sidebar 0:e06c8b35cc09 2.87 •googleanalytics
+cv-navy_sidebar 0:238987499bc7 2.87 •socialmediastrategy
+cv-navy_sidebar 0:a3d99b3cc7e0 2.87 •contentmarketing
+cv-navy_sidebar 0:6cb574fa10b6 2.81 languages
+cv-navy_sidebar 0:b6234d2ea0d6 2.95 english
+cv-navy_sidebar 0:1889f4162fb9 2.95 –native
+cv-navy_sidebar 0:77915a7314f0 2.95 spanish–advanced
+cv-navy_sidebar 0:21bb36ad0638 2.95 french
+cv-navy_sidebar 0:3bc244be050e 2.95 –intermediate
+cv-navy_sidebar 0:5518402feccc 2.58 marketingmanager
+cv-navy_sidebar 0:7b5815d7a663 2.99 results-drivenmarketingprofessio
+cv-navy_sidebar 0:18f8b50d02d8 3.01 developingandexecutingdata-drive
+cv-navy_sidebar 0:2adca2422cbe 3.03 growth,increaseengagement,anddel
+cv-navy_sidebar 0:b3c222da2e1d 3.05 digitalmarketing,marketresearch,
+cv-navy_sidebar 0:53e5e7c5a884 2.72 experience
+cv-navy_sidebar 0:8a39b996b27c 2.89 jan2022-present
+cv-navy_sidebar 0:f97eeb2fe120 2.75 brightwavesolutions,newyork,ny
+cv-navy_sidebar 0:a4beef0c22d9 2.50 •developandimplementintegratedma
+cv-navy_sidebar 0:234eaa6417f7 2.50 awarenessby35%andleadgenerationb
+cv-navy_sidebar 0:dfd245470d6e 2.50 •manageateamof4marketingspeciali
+cv-navy_sidebar 0:94d0b8d13763 2.50 anddesignteamstoalignstrategies.
+cv-navy_sidebar 0:5dabf21df91b 2.50 •analyzecampaignperformanceusing
+cv-navy_sidebar 0:1cb810ca6189 2.50 optimizeroiandreporting.
+cv-navy_sidebar 0:3b172b9ab75e 2.69 marketingspecialist
+cv-navy_sidebar 0:d514872487af 2.87 jun2020-dec2021
+cv-navy_sidebar 0:a13f57f4d861 2.48 •executeddigitalmarketingcampaig
+cv-navy_sidebar 0:4b308a27b878 2.48 channels.
+cv-navy_sidebar 0:39b87fda4a82 2.48 •conductedmarketresearchandcompe
+cv-navy_sidebar 0:b088780ed500 2.48 andinformstrategy.
+cv-navy_sidebar 0:bafd8ea30ebe 2.48 •createdengagingcontentforblogs,
+cv-navy_sidebar 0:88a47597543f 2.48 engagementby40%.
+cv-navy_sidebar 0:dcf0600524d2 2.66 marketingintern
+cv-navy_sidebar 0:73a85d4a71b0 2.84 jan2020-may2020
+cv-navy_sidebar 0:e31c3dfebb27 2.70 •assistedinplanningandexecutingm
+cv-navy_sidebar 0:f7ee178c4b93 2.70 •supportedcontentcreationandsoci
+cv-navy_sidebar 0:3ffec90452c5 2.70 •analyzeddataandpreparedreportst
+cv-navy_sidebar 0:6ee18b42fbf1 2.69 achievements
+cv-navy_sidebar 0:cff13cc228a6 2.50 •increasedwebsitetrafficby60%wit
+cv-navy_sidebar 0:fae41a639f96 2.50 strategy.
+cv-navy_sidebar 0:b46da9584f4f 2.75 •launchedasuccessfulemailmarketi
+cv-navy_sidebar 0:3654c4d2721e 2.75 •received“employeeoftheyear”awar
+cv-navy_sidebar 0:e831beb04c00 2.74 certifications
+cv-navy_sidebar 0:431b6df4450d 2.80 •googleanalyticsindividualqualif
+cv-navy_sidebar 0:334a657f5d85 2.80 •hubspotcontentmarketingcertific
+cv-navy_sidebar 0:19323523a3e6 2.80 •facebookblueprintcertification
+cv-nordic_clean 0:8f1010120ed6 0.15 jordanrivera
+cv-nordic_clean 0:2d58f0cadc2d -0.20 platformengineer
+cv-nordic_clean 0:fbeea547d99e -0.20 london,uk
+cv-nordic_clean 0:89674e6f130e -0.18 +442055551000
+cv-nordic_clean 0:e0f850305ded -0.16 jordan.rivera@example.com
+cv-nordic_clean 0:84308bea4540 -0.14 linkedin
+cv-nordic_clean 0:c0b0109d9439 -0.12 github
+cv-nordic_clean 0:1900eab6c028 -0.25 profile
+cv-nordic_clean 0:32c1cf49a2fe -0.06 skills
+cv-nordic_clean 0:873a24d153c8 0.06 languages:java21,kotlin,groovy,p
+cv-nordic_clean 0:a1cec3782701 -9.71 layoutengines:customdsldesign,se
+cv-nordic_clean 0:3a3b8c3bddd0 -9.69 trees,pagination,snapshottesting
+cv-nordic_clean 0:b7d8ca9428a4 -9.67 build&infrastructure:maven,gradl
+cv-nordic_clean 0:656a2a3e57e0 -9.65 jitpack,docker,jmhbenchmarking
+cv-nordic_clean 0:b8b1a42a45e1 -9.63 testing:junit5,assertj,pdfbox-ba
+cv-nordic_clean 0:2ec2836b6df6 -9.61 layout-graphsnapshots,mutationte
+cv-nordic_clean 0:74b69eb8de4b -9.59 distribution:mavencentral,sonaty
+cv-nordic_clean 0:43ad67a4e3f5 -9.57 signing,jitpack,semanticversioni
+cv-nordic_clean 0:68bf0109c6f8 -9.49 education
+cv-nordic_clean 0:904a600c3869 -9.57 msccomputerscience/universityofm
+cv-nordic_clean 0:3fa772117260 -9.38 2019-2021
+cv-nordic_clean 0:78a380e4d1f0 -9.35 bscsoftwareengineering/imperialc
+cv-nordic_clean 0:30f9262640a0 -9.16 2015-2019
+cv-nordic_clean 0:7b476727faf3 -8.85 additional
+cv-nordic_clean 0:3b0f5db9217f -8.98 languages:english(fluent),german
+cv-nordic_clean 0:d8a971cea795 -9.00 spanish(basic)
+cv-nordic_clean 0:ec9d3622395e -8.77 workeligibility:eligibletoworkin
+cv-nordic_clean 0:d05b8b335e96 -9.04 opensource:maintainerofgraphcomp
+cv-nordic_clean 0:2f3b4176123d -9.06 contributortopdfboxissuetriage.
+cv-nordic_clean 0:b6b5a250cb72 -9.08 speaking:jvmsummit2024,devoxxuk2
+cv-nordic_clean 0:7ead14c50085 -9.10 ondeclarativedocumentlayout.
+cv-nordic_clean 0:53e5e7c5a884 -0.26 experience
+cv-nordic_clean 0:4977534824cc -0.18 seniorplatformengineer/2024-pres
+cv-nordic_clean 0:f890faef907f -0.14 northwindsystems
+cv-nordic_clean 0:64c4b52dceb1 -0.37 ledthereusabledocument-generatio
+cv-nordic_clean 0:b2773305641a -0.38 productteams.reducedtemplatemain
+cv-nordic_clean 0:7be82f4e179d -0.39 onecanonicalengine.
+cv-nordic_clean 0:7033b2988e4d -0.18 softwareengineer/2021-2024
+cv-nordic_clean 0:998c1a985022 -0.14 brightleaflabs
+cv-nordic_clean 0:632618b20dab -0.37 builtbackendservicesandproductio
+cv-nordic_clean 0:3c3f0a37747d -0.38 month.drovethemigrationfromitext
+cv-nordic_clean 0:e710587711df -0.39 p99renderlatencyfrom1.4sto380ms.
+cv-nordic_clean 0:fa8695dd2893 -0.18 backendengineer/2019-2021
+cv-nordic_clean 0:ef148f221e31 -0.14 helixprintco
+cv-nordic_clean 0:41d451f465c2 -0.37 maintainedahigh-volumeinvoice-pr
+cv-nordic_clean 0:6859fed08b66 -0.38 harnessthatgatedeverytemplatecha
+cv-nordic_clean 0:d94eccbb1fbe -0.27 selectedprojects
+cv-nordic_clean 0:643428f0ebf8 -0.05 templatestudio(kotlin,composedes
+cv-nordic_clean 0:c259a0e7581e 0.09 invoiceoutputacross14designprese
+cv-nordic_clean 0:f87e2f0c02dc 0.11 layoutlint(java21,javaparser,spo
+cv-nordic_clean 0:a646f74483b1 0.25 rows,untypedoffsets,implicitpage
+cv-nordic_clean 0:6793d28e9783 0.27 chromeforge(java,graphcompose,pa
+cv-nordic_clean 0:e3cfea265b3b 0.41 graphcompose:cinematiccovers,pul
+cv-orange_ops 0:8157f110feec 81.86 warehouseoperationssupervisor
+cv-orange_ops 0:a8acc3a90a7b 81.97 +447700900123
+cv-orange_ops 0:e6da1125d5d5 81.97 marcus.bennett@email.com
+cv-orange_ops 0:6a3bd39f358d 81.97 birmingham,westmidlands,uk
+cv-orange_ops 0:84308bea4540 81.97 linkedin
+cv-panel 0:8f1010120ed6 -0.40 jordanrivera
+cv-panel 0:2d58f0cadc2d 0.12 platformengineer
+cv-panel 0:89ff05847e96 0.19 london,uk|+442055551000
+cv-panel 0:8817bf9310b6 0.21 jordan.rivera@example.com|linked
+cv-panel 0:1900eab6c028 0.19 profile
+cv-panel 0:80cc87fdc4c4 -0.23 platformengineerwith10+yearsbuil
+cv-panel 0:c323ef4c385f -0.21 systems.specialisedinhigh-throug
+cv-panel 0:3ff1933dba9a -0.19 typed,snapshot-testedlibrariesth
+cv-panel 0:32c1cf49a2fe 0.49 skills
+cv-panel 0:eea537278f83 0.27 •languages:java21,kotlin,groovy,
+cv-panel 0:7e941e729572 0.09 •document&print:pdfbox,apachepoi
+cv-panel 0:9e3166ce2413 0.11 itext,postscript,icccolourprofil
+cv-panel 0:ebc70ed9b71b 0.13 •layoutengines:customdsldesign,s
+cv-panel 0:dd4f24d85605 0.15 pagination,snapshottesting,visua
+cv-panel 0:f5f76d479ec8 0.17 •build&infrastructure:maven,grad
+cv-panel 0:656a2a3e57e0 0.19 jitpack,docker,jmhbenchmarking
+cv-panel 0:9a6921f79b7d 0.25 •distribution:mavencentral,sonat
+cv-panel 0:77a74982066f 0.27 jitpack,semanticversioningdiscip
+cv-panel 0:68bf0109c6f8 0.50 education
+cv-panel 0:871923f4f0f2 0.28 msccomputerscience-2019-2021
+cv-panel 0:47ce0218bbea 0.30 universityofmanchester
+cv-panel 0:51e1ec7daa5a 0.10 distinction.thesis:composablelay
+cv-panel 0:d10553cd7368 0.12 deterministicdocumentrendering.
+cv-panel 0:ba6d361079f4 0.44 bscsoftwareengineering-2015-2019
+cv-panel 0:89ad9656f393 0.46 imperialcollegelondon
+cv-panel 0:4c58bcad7242 0.26 first-classhonours.specialisatio
+cv-panel 0:2189b9b3b549 0.28 analysis.
+cv-panel 0:8971b01c36bb 0.60 oraclejavacertification-2023-202
+cv-panel 0:2669e1f6d55c 0.62 professionaltrack
+cv-panel 0:4f17e3d7d6f4 0.42 java17platformdeep-dive:records,
+cv-panel 0:9e6154a3b625 0.44 matching,virtualthreads.
+cv-panel 0:7b476727faf3 0.67 additional
+cv-panel 0:3f88eb4c530c 0.25 languages:english(fluent),german
+cv-panel 0:5d276fee8c17 0.27 (basic)
+cv-panel 0:ec9d3622395e 0.49 workeligibility:eligibletoworkin
+cv-panel 0:d05b8b335e96 0.31 opensource:maintainerofgraphcomp
+cv-panel 0:2f3b4176123d 0.33 contributortopdfboxissuetriage.
+cv-panel 0:1ae173b42166 0.35 speaking:jvmsummit2024,devoxxuk2
+cv-panel 0:309255ca6a36 0.37 declarativedocumentlayout.
+cv-panel 0:53e5e7c5a884 0.49 experience
+cv-panel 0:99b44abc1b3e 0.27 seniorplatformengineer-2024-pres
+cv-panel 0:f890faef907f 0.29 northwindsystems
+cv-panel 0:ded138c59d03 0.47 softwareengineer-2021-2024
+cv-panel 0:998c1a985022 0.49 brightleaflabs
+cv-panel 0:0ed66ac9265d 0.29 builtbackendservicesandproductio
+cv-panel 0:17c4ef49d4e6 0.31 pipelinesprocessing2m+documentsp
+cv-panel 0:a7dd3c5be76b 0.33 migrationfromitexttoacustomlayou
+cv-panel 0:a35401d8bcad 0.35 licensingriskandcuttingp99render
+cv-panel 0:649d2d9d10d0 0.37 380ms.
+cv-panel 0:019bbdc8d0bb 0.69 backendengineer-2019-2021
+cv-panel 0:ef148f221e31 0.71 helixprintco
+cv-panel 0:09cc06a649eb 0.51 maintainedahigh-volumeinvoice-pr
+cv-panel 0:090e2184c17b 0.53 pdfs/year)andauthoredthecomplian
+cv-panel 0:6f071fdf7529 0.55 gatedeverytemplatechange.
+cv-panel 0:2577c0f557b2 0.78 projects
+cv-panel 0:b2b029995203 0.56 •graphcompose(java21,pdfbox,mave
+cv-panel 0:753f46e4e01b 0.56 •templatestudio(kotlin,composede
+cv-panel 0:6eb35b5b9a91 0.58 diff)
+cv-panel 0:d919bd2d50b6 0.60 internaltoolforevaluatingcv,prop
+cv-panel 0:245b9e56b9de 0.62 across14designpresets.pngdiffing
+cv-panel 0:6bc2807453c6 0.64 baselinefreezing.
+cv-panel 0:25cdca2beb8b 0.96 •layoutlint(java21,javaparser,sp
+cv-panel 0:30e034b9c7b2 0.78 staticanalyserthatflagsfragileau
+cv-panel 0:e7ad19d64668 0.80 nestedrows,untypedoffsets,implic
+cv-panel 0:95ac1a62c76f 0.82 theyshiptoproduction.
+cv-panel 0:fb1927f88597 1.14 •chromeforge(java,graphcompose,p
+cv-panel 0:bb865a4ccac1 0.96 editorial-magazinedocumenttoolki
+cv-panel 0:8a31ccd889ee 0.98 cinematiccovers,pullquotes,multi
+cv-panel 0:fe63fe18585a 1.00 callouts.
+cv-professional_sidebar 0:093e7d5fdbaa 2.72 contact
+cv-professional_sidebar 0:7f459725e1f6 2.92 +12345678900
+cv-professional_sidebar 0:52bf11c1afe0 2.87 your.email@example.com
+cv-professional_sidebar 0:0280d774794b 2.77 city,state,country
+cv-professional_sidebar 0:6901da423fd3 2.82 linkedin.com/in/username
+cv-professional_sidebar 0:941682c65056 2.77 www.yourwebsite.com
+cv-professional_sidebar 0:32c1cf49a2fe 2.67 skills
+cv-professional_sidebar 0:38a0963a6364 2.65 java
+cv-professional_sidebar 0:7e901df4274b 2.65 springboot
+cv-professional_sidebar 0:ab1011e077e1 2.65 sql/databases
+cv-professional_sidebar 0:bcfad352e21d 2.65 restfulapis
+cv-professional_sidebar 0:60a872f76d54 2.65 microservices
+cv-professional_sidebar 0:0c525b8c00a0 2.65 git/github
+cv-professional_sidebar 0:d548c5b83fa6 2.65 docker
+cv-professional_sidebar 0:d1de52313c86 2.65 testing(junit)
+cv-professional_sidebar 0:7e7f74200f0e 2.65 problemsolving
+cv-professional_sidebar 0:d4e16994df90 2.65 communication
+cv-professional_sidebar 0:68bf0109c6f8 2.62 education
+cv-professional_sidebar 0:9928b2859b5c 2.58 degreename
+cv-professional_sidebar 0:4dca5f288079 2.55 universityname
+cv-professional_sidebar 0:dbbecd8a99c4 2.53 2016–2020
+cv-professional_sidebar 0:8789bd1a8f91 2.44 2012–2016
+cv-professional_sidebar 0:6cb574fa10b6 2.39 languages
+cv-professional_sidebar 0:b6234d2ea0d6 2.37 english
+cv-professional_sidebar 0:87d8ab25d296 2.37 ukrainian
+cv-professional_sidebar 0:aa304b5d1d72 2.37 russian
+cv-professional_sidebar 0:22f6e39681dd 3.20 yourname
+cv-professional_sidebar 0:ce613d3da423 2.68 yourprofessionaltitle
+cv-professional_sidebar 0:1900eab6c028 2.82 profile
+cv-professional_sidebar 0:53e5e7c5a884 2.86 experience
+cv-professional_sidebar 0:59d596674b3e 2.86 javabackenddeveloper
+cv-professional_sidebar 0:50c8c8fd14da 2.97 2023–present
+cv-professional_sidebar 0:bb2dd5ad974a 2.85 productstudio|london,uk
+cv-professional_sidebar 0:ceaee04c6187 2.86 •builtsecurespringbootrestapisfo
+cv-professional_sidebar 0:ee25fe80eeb5 2.84 •addedjwtauthentication,validati
+cv-professional_sidebar 0:f44671369999 2.82 •tunedjpaqueriesandpostgresqlind
+cv-professional_sidebar 0:2bc488c1b6a1 2.80 •addedjunittestsanddockerenviron
+cv-professional_sidebar 0:798164649242 2.79 softwaredeveloper
+cv-professional_sidebar 0:d8ce4fa21722 2.90 2021–2023
+cv-professional_sidebar 0:8824d2ae15b0 2.78 digitalsolutionsltd|manchester,u
+cv-professional_sidebar 0:2e3ec0f8e8c9 2.79 •integratedinternalserviceswitht
+cv-professional_sidebar 0:34a68587109d 2.77 •deliveredflywaymigrationsandimp
+cv-professional_sidebar 0:d3e359b3c9ce 2.75 •introducedstructuredloggingandp
+cv-professional_sidebar 0:69a682467a69 2.73 •workedwithfrontendengineersoncl
+cv-professional_sidebar 0:bcde83e4c2f6 2.72 juniorjavadeveloper
+cv-professional_sidebar 0:6c39082d9294 2.83 2019–2021
+cv-professional_sidebar 0:25bd55f46bdf 2.71 techworks|remote
+cv-professional_sidebar 0:1ee9d7642bbb 2.72 •developedjavaservicesandreusabl
+cv-professional_sidebar 0:a96267ad58f6 2.70 •fixeddefectsacrossrest,persiste
+cv-professional_sidebar 0:dfaa35ac8977 2.68 •wrotejunittestsandsupportedcont
+cv-professional_sidebar 0:a232e51261bb 2.66 •documentedendpointsandoperation
+cv-professional_sidebar 0:2577c0f557b2 2.71 projects
+cv-professional_sidebar 0:55f503c6b9a8 2.71 cvrewriter
+cv-professional_sidebar 0:158a323a7ba4 2.82 2026
+cv-professional_sidebar 0:d8afbbbd5294 2.79 graphcompose
+cv-professional_sidebar 0:b2b2f104d32c 2.90 2025
+cv-professional_sidebar 0:403f46579303 2.63 declarativejavaandkotlindocument
+cv-professional_sidebar 0:9c15026b6402 2.63 multi-formatrendering.
+cv-professional_sidebar 0:07a0b0962107 2.93 references
+cv-professional_sidebar 0:5bf64f34444e 2.93 availableuponrequest.
+cv-serif_headline 0:5f6ca99b67a6 -0.51 alexandermorgan
+cv-serif_headline 0:daf65306b3b6 -0.32 softwareengineer
+cv-serif_headline 0:01dcad830244 -0.22 +1(555)123-4567
+cv-serif_headline 0:3eef38c97138 -0.18 alex.morgan@email.com
+cv-serif_headline 0:d5a0d0abdc64 -0.15 newyork,ny,usa
+cv-serif_headline 0:a0a064d0e491 -0.12 linkedin.com/in/alexmorgan
+cv-serif_headline 0:0a52c5f62d73 -0.09 github.com/alexmorgan
+cv-serif_headline 0:ff00f99bc03c -0.36 softwareengineerwith5+yearsofexp
+cv-serif_headline 0:7fd0d2d0fde8 -0.37 backendservices.proficientinjava
+cv-serif_headline 0:81bb94512f0b -0.38 systemdesign,anddeliveringhigh-q
+cv-serif_headline 0:53e5e7c5a884 0.00 experience
+cv-serif_headline 0:b37c6a2d5d11 0.04 seniorsoftwareengineer
+cv-serif_headline 0:e7227bbe0c40 0.04 jan2022–present
+cv-serif_headline 0:f4e5af202d87 0.10 techsolutionsinc.|newyork,ny
+cv-serif_headline 0:e6f39d8143bc -0.15 •designedanddevelopedmicroservic
+cv-serif_headline 0:f41ff924454c -0.15 over1mactiveusers.
+cv-serif_headline 0:4b16c2d8cb52 0.10 •implementedrestfulapisandintegr
+cv-serif_headline 0:5fd82b15227c -0.14 •optimizeddatabasequeriesandappl
+cv-serif_headline 0:38a7ed6f25a8 -0.15 35%.
+cv-serif_headline 0:df1ebc2b61e1 0.11 •ledateamof4engineersandmentored
+cv-serif_headline 0:ee96c91a5683 0.20 jun2019–dec2021
+cv-serif_headline 0:01bb3d9e4f47 0.26 innovatechltd.|newyork,ny
+cv-serif_headline 0:1e69401eddeb 0.27 •builtscalablewebapplicationsusi
+cv-serif_headline 0:babe9476fc8f 0.28 •collaboratedwithcross-functiona
+cv-serif_headline 0:23cd6cbea0ca 0.28 •implementedci/cdpipelinesusingj
+cv-serif_headline 0:45cca445fa04 0.29 •improvedcodequalityandreducedpr
+cv-serif_headline 0:78b24f507c79 0.39 juniorsoftwareengineer
+cv-serif_headline 0:07b9e4fd0073 0.38 jun2018–may2019
+cv-serif_headline 0:2198cdea3aba 0.44 devsphere|newyork,ny
+cv-serif_headline 0:173ed9f7b6b1 0.45 •assistedindevelopingandmaintain
+cv-serif_headline 0:0a1fbe0c94d9 0.45 •wroteunitandintegrationteststoe
+cv-serif_headline 0:bd5eec545fa8 0.46 •participatedinagileceremoniesan
+cv-serif_headline 0:2577c0f557b2 0.54 projects
+cv-serif_headline 0:c03ade0f8985 0.59 e-commerceplatform
+cv-serif_headline 0:f726495cb8e6 0.59 java,springboot,react,postgresql
+cv-serif_headline 0:09271909c2c5 0.36 developedafull-stacke-commerce
+cv-serif_headline 0:a395647dca6c 0.36 platformwithuserauthentication,p
+cv-serif_headline 0:19ed6c29c718 0.36 catalog,cart,andpaymentintegrati
+cv-serif_headline 0:1c1e5cfc5031 0.59 taskmanagementapi
+cv-serif_headline 0:4e8f2a166cfe 0.59 java,springboot,mongodb,docker
+cv-serif_headline 0:68bf0109c6f8 0.00 education
+cv-serif_headline 0:6a75b3a10877 0.07 m.s.incomputerscience
+cv-serif_headline 0:d244381bfb58 0.10 newyorkuniversity
+cv-serif_headline 0:d52c9df2c684 0.14 2018–2020|newyork,ny
+cv-serif_headline 0:8913dcd543d0 0.04 b.s.incomputerscience
+cv-serif_headline 0:ee7a3f01df1e 0.08 universityofcalifornia,losangele
+cv-serif_headline 0:5f29961bb46f 0.11 2014–2018|losangeles,ca
+cv-serif_headline 0:32c1cf49a2fe 0.07 skills
+cv-serif_headline 0:6cb574fa10b6 0.15 languages
+cv-serif_headline 0:38a0963a6364 0.17 java
+cv-serif_headline 0:11a4a60b518b 0.21 python
+cv-serif_headline 0:beb45f932639 0.25 javascript/typescript
+cv-serif_headline 0:4ec7c53222c8 0.29 sql
+cv-serif_headline 0:f9bfab9d2d9b 0.30 frameworks&libraries
+cv-serif_headline 0:7e901df4274b 0.32 springboot
+cv-serif_headline 0:ec34a1012c4c 0.36 hibernate
+cv-serif_headline 0:275976081ce1 0.40 react
+cv-serif_headline 0:324373d862ea 0.44 node.js
+cv-serif_headline 0:008231aaf999 0.48 express
+cv-serif_headline 0:1d446138494b 0.49 databases
+cv-serif_headline 0:430005175c4c 0.51 mysql
+cv-serif_headline 0:a478b4566be5 0.55 postgresql
+cv-serif_headline 0:1cc9a79bdaf0 0.59 mongodb
+cv-serif_headline 0:7dc785098784 0.61 tools&technologies
+cv-serif_headline 0:d548c5b83fa6 0.63 docker
+cv-serif_headline 0:94abcb2d2773 0.67 kubernetes
+cv-serif_headline 0:424e9661130e 0.71 jenkins
+cv-serif_headline 0:9a881b9b9f23 0.75 git
+cv-serif_headline 0:7d1507284a57 0.78 aws
+cv-serif_headline 0:b78463a925a0 0.80 softskills
+cv-serif_headline 0:1b3b2a6f7d93 0.83 problemsolving|communication
+cv-serif_headline 0:c3738991cb30 0.84 teamwork|adaptability
+cv-serif_headline 0:7bce4fcdeb12 0.85 leadership|timemanagement
+cv-serif_headline 0:e831beb04c00 0.81 certifications
+cv-serif_headline 0:eb246465ec07 1.47 awscertified
+cv-serif_headline 0:eb2d55035d04 9.95 (aws)
+cv-serif_headline 0:39f98aca30e7 1.47 oraclecertified
+cv-serif_headline 0:6b5ac810679c 0.83 professional,
+cv-serif_headline 0:d52585984184 0.95 javase17(oracle)
+cv-serif_headline 0:72be4e94032e 1.47 dockercertified
+cv-serif_headline 0:178b6e061a04 9.83 associate
+cv-serif_headline 0:418860eec88d 0.95 (dca)
+cv-serif_headline 0:958c81247482 1.47 springprofessional
+cv-serif_headline 0:b00a6c108553 0.83 certification
+cv-serif_headline 0:485507d8292d 0.95 (vmware)
+cv-serif_headline 0:64a3f18ab4fa 0.83 fundamentals
+cv-serif_headline 0:f4bf1c62326f 0.95 (linuxfoundation)
+cv-serif_headline 0:6ee18b42fbf1 8.20 achievements
+cv-serif_headline 0:e3072a9546f9 8.28 engineeroftheyear–2023
+cv-serif_headline 0:daa04ec0f117 8.28 performanceoptimization
+cv-serif_headline 0:781774e3ebfe 8.03 improvedsystemefficiencyby40%
+cv-serif_headline 0:95099c880a38 8.07 throughdatabaseandcodeoptimizati
+cv-serif_headline 0:4d752ab730a4 8.28 successfulmigration
+cv-sidebar_portrait 0:8f1010120ed6 2.32 jordanrivera
+cv-sidebar_portrait 0:89674e6f130e 3.02 +442055551000
+cv-sidebar_portrait 0:e0f850305ded 3.02 jordan.rivera@example.com
+cv-sidebar_portrait 0:fbeea547d99e 3.02 london,uk
+cv-sidebar_portrait 0:84308bea4540 3.02 linkedin
+cv-sidebar_portrait 0:c0b0109d9439 3.02 github
+cv-sidebar_portrait 0:68bf0109c6f8 2.69 education
+cv-sidebar_portrait 0:0ad1957d6bab 2.75 msccomputerscience
+cv-sidebar_portrait 0:47ce0218bbea 2.76 universityofmanchester
+cv-sidebar_portrait 0:3fa772117260 2.75 2019-2021
+cv-sidebar_portrait 0:b6749d0b616b 2.75 bscsoftwareengineering
+cv-sidebar_portrait 0:89ad9656f393 2.76 imperialcollegelondon
+cv-sidebar_portrait 0:30f9262640a0 2.75 2015-2019
+cv-sidebar_portrait 0:32c1cf49a2fe 2.73 skills
+cv-sidebar_portrait 0:d5680c2e2769 2.78 java21
+cv-sidebar_portrait 0:19a67c2a5369 2.78 kotlin
+cv-sidebar_portrait 0:95bfacd3a466 2.78 groovy
+cv-sidebar_portrait 0:11a4a60b518b 2.78 python
+cv-sidebar_portrait 0:4ec7c53222c8 2.78 sql
+cv-sidebar_portrait 0:6cb574fa10b6 2.77 languages
+cv-sidebar_portrait 0:d359699acbd5 2.83 english(fluent)
+cv-sidebar_portrait 0:a09174803665 2.81 german(intermediate)
+cv-sidebar_portrait 0:d8a971cea795 2.79 spanish(basic)
+cv-sidebar_portrait 0:2d58f0cadc2d 2.82 platformengineer
+cv-sidebar_portrait 0:3c69d6bb4892 2.73 professionalprofile
+cv-sidebar_portrait 0:924e8fc8d04f 2.55 platformengineerwith10+yearsbuil
+cv-sidebar_portrait 0:df58bf5ac853 2.57 pipelines,layoutengines,anddevel
+cv-sidebar_portrait 0:b6d3e08745d8 2.59 inhigh-throughputpdfrendering,se
+cv-sidebar_portrait 0:3ea39d224e93 2.61 brittleproduction-opsscriptsinto
+cv-sidebar_portrait 0:53e5e7c5a884 2.81 experience
+cv-sidebar_portrait 0:a76f47480818 2.89 seniorplatformengineer
+cv-sidebar_portrait 0:d492f2d34b81 2.88 northwindsystems|2024-present
+cv-sidebar_portrait 0:11a63b6a756a 2.64 ledthereusabledocument-generatio
+cv-sidebar_portrait 0:e9ddcca2381b 2.66 reportingflowsacross8productteam
+cv-sidebar_portrait 0:8e7a066998f5 2.68 by70%byretiringper-teampdfscript
+cv-sidebar_portrait 0:daf65306b3b6 2.96 softwareengineer
+cv-sidebar_portrait 0:14aeb7d88f36 2.95 brightleaflabs|2021-2024
+cv-sidebar_portrait 0:78c890058374 2.71 builtbackendservicesandproductio
+cv-sidebar_portrait 0:798b575aa9c2 2.73 processing2m+documentspermonth.d
+cv-sidebar_portrait 0:2577c0f557b2 2.97 projects
+cv-sidebar_portrait 0:0f2c67872251 3.05 graphcompose(java21,pdfbox,maven
+cv-sidebar_portrait 0:1538919cd7d4 2.79 declarativejavapdflayoutengine.s
+cv-sidebar_portrait 0:f6d88deff945 2.81 snapshottesting.powersproduction
+cv-sidebar_portrait 0:0869235b9cf7 2.83 hiringtoolsandbillingsystems.(op
+cv-sidebar_portrait 0:d73d02174dc9 3.11 templatestudio(kotlin,composedes
+cv-sidebar_portrait 0:5ebdeb66a893 2.85 internaltoolforevaluatingcv,prop
+cv-sidebar_portrait 0:a66d3183c752 2.87 presets.pngdiffing,side-by-sidel
+cv-slate_orange 0:4b64999089cd 2.53 versatileprofessional
+cv-slate_orange 0:73c506bc28be 2.62 operations•customersuccess•coord
+cv-slate_orange 0:b4ac3856722a 3.07 (555)123-4567
+cv-slate_orange 0:422684be6cf9 3.07 daniel.harper@email.com
+cv-slate_orange 0:84308bea4540 3.07 linkedin
+cv-slate_orange 0:a64d6af50109 3.07 austin,texas•opentorelocate
+cv-slate_orange 0:32c1cf49a2fe 2.83 skills
+cv-slate_orange 0:ee41e992b046 3.28 customerserviceexcellence
+cv-slate_orange 0:39433b0c8c42 3.28 operations&processsupport
+cv-slate_orange 0:68ac2246858d 3.28 project&calendarmanagement
+cv-slate_orange 0:d2b0c62842b8 3.28 datamanagement&reporting
+cv-slate_orange 0:713ccc3fc2fc 3.28 communication&stakeholders
+cv-slate_orange 0:010f2ad55bed 3.28 problemsolving&adaptability
+cv-slate_orange 0:02020d943fbc 3.28 sales&relationshipbuilding
+cv-slate_orange 0:88cc29c2fda2 3.28 microsoftoffice&googlesuite
+cv-slate_orange 0:e37d86244e99 3.28 crmsystems(salesforce,hubspot)
+cv-slate_orange 0:d70e5edb4685 3.28 timemanagement&prioritization
+cv-slate_orange 0:8bab53aa1bee 2.85 selectedachievements
+cv-slate_orange 0:b08c44dac044 3.31 processimprovement
+cv-slate_orange 0:c7966365f508 3.99 designedanewtrackingsystemthat
+cv-slate_orange 0:3a5ad5d0dc8d 3.54 reducedreportingtimeby30%and
+cv-slate_orange 0:74821a85e7b9 3.09 improvedaccuracy.
+cv-slate_orange 0:dd9532e202a3 3.30 customersatisfaction
+cv-slate_orange 0:dfc9a4fd0657 3.98 maintaineda96%customer
+cv-slate_orange 0:5e04b5e4dbf9 3.53 satisfactionratingthroughrespons
+cv-slate_orange 0:c119f318eaae 3.08 supportandissueresolution.
+cv-slate_orange 0:365853229c97 3.29 revenuecontribution
+cv-slate_orange 0:292a456730c2 3.97 consistentlyexceededmonthlysales
+cv-slate_orange 0:8eb387deb3e1 3.52 goalsby15–20%throughrelationship
+cv-slate_orange 0:77706bc9ed09 3.07 buildingandconsultativeservice.
+cv-slate_orange 0:6cb574fa10b6 2.85 languages
+cv-slate_orange 0:b6234d2ea0d6 3.37 english
+cv-slate_orange 0:bef32d2c315a 3.34 native
+cv-slate_orange 0:890744623577 3.62 spanishprofessionalworking
+cv-slate_orange 0:21bb36ad0638 3.87 french
+cv-slate_orange 0:fbb7b5bf4ca3 3.84 basic
+cv-slate_orange 0:676dfdd56ad2 3.61 additionalinformation
+cv-slate_orange 0:ef68dac1790b 4.06 availability:full-time
+cv-slate_orange 0:6795aec0e50a 4.06 willingtorelocate:yes
+cv-slate_orange 0:3c69d6bb4892 2.83 professionalprofile
+cv-slate_orange 0:36eb8f626c42 2.79 adaptableandresourcefulprofessio
+cv-slate_orange 0:f4e999c08086 2.81 customerservice,sales,andproject
+cv-slate_orange 0:41221430e3f8 2.83 organizationalskills,andtheabili
+cv-slate_orange 0:324c4509a3e4 2.85 managingpriorities,buildingrelat
+cv-slate_orange 0:57271827af78 2.87 customersatisfaction,andbusiness
+cv-slate_orange 0:c2f296ef30a3 2.95 professionalexperience
+cv-slate_orange 0:da2ea6509bec 3.42 operationscoordinator
+cv-slate_orange 0:e7227bbe0c40 3.38 jan2022–present
+cv-slate_orange 0:9f7cecddf317 3.37 brightstartlogistics,austin,tx
+cv-slate_orange 0:e0bbd6c9782e 3.35 •coordinatedailyoperationsandsch
+cv-slate_orange 0:dc9a542f8db9 3.34 •developandmaintaindashboardsand
+cv-slate_orange 0:66acc2e5b891 3.33 •streamlinecommunicationbetweend
+cv-slate_orange 0:8bd3fd672f95 3.32 •managevendorrelationshipsandass
+cv-slate_orange 0:dd7872236383 3.34 customersupportspecialist
+cv-slate_orange 0:1734c189cfe2 3.30 jun2020–dec2021
+cv-slate_orange 0:b9dfc8902d16 3.29 techwavesolutions,remote
+cv-slate_orange 0:56391e23e83a 3.27 •providedtechnicalsupporttocusto
+cv-slate_orange 0:7eb50a39cf50 3.26 •resolvedanaverageof40+inquiries
+cv-slate_orange 0:46f632748ba8 3.25 •createdknowledgebasearticlesand
+cv-slate_orange 0:02b44f46125c 3.24 •collaboratedwithproductandengin
+cv-slate_orange 0:a1707ef6164e 3.26 salesassociate
+cv-slate_orange 0:2bc613d4e516 3.22 mar2019–may2020
+cv-slate_orange 0:bb7253ff7002 3.21 urbanoutfitters,austin,tx
+cv-slate_orange 0:aaa52372c317 2.79 •consistentlyexceededsalestarget
+cv-slate_orange 0:198e638fe8f3 2.80 personalizedcustomerservice.
+cv-slate_orange 0:dabead95ee7e 3.19 •builtandmaintainedstrongcustome
+cv-slate_orange 0:ff3f5f9ca7a0 3.18 •merchandisedfloordisplaysandcon
+cv-slate_orange 0:05a39f2908ba 3.17 •recognizedas“topperformer”forq4
+cv-slate_orange 0:832235539465 3.19 administrativeassistant/projecta
+cv-slate_orange 0:2ccfc04a3ae7 3.15 may2018–feb2019
+cv-slate_orange 0:cfc5fd80ae80 3.14 greenfieldnonprofitinitiative,au
+cv-slate_orange 0:b8aecb03e7ed 3.12 •supportedprojectmanagerswithsch
+cv-slate_orange 0:77f797d4d64c 3.11 •managedcalendars,travelarrangem
+cv-slate_orange 0:80a7a6cdc723 3.10 •maintaineddonorrecordsandprepar
+cv-slate_orange 0:51539a61bb62 3.09 •assistedwitheventplanningandcom
+cv-slate_orange 0:68bf0109c6f8 2.70 education
+cv-slate_orange 0:84ba6b88f439 2.70 certifications&training
+cv-slate_orange 0:9d7190053be6 3.10 bachelorofartsincommunications
+cv-slate_orange 0:f592b4ba6aa4 3.07 universityoftexasataustin
+cv-slate_orange 0:3f84d2e470fe 3.07 austin,tx•graduatedmay2018
+cv-slate_orange 0:99b337b1faf4 3.10 •googleprojectmanagementcertific
+cv-slate_orange 0:4d1b69dc33a1 3.40 •hubspotcustomerservicecertifica
+cv-slate_orange 0:01a1e16912b7 3.70 •microsoftexcel:advancedformulas
+cv-slate_orange 0:07ef0ade6bb2 4.00 •servsafefoodhandlercertificatio
+cv-teal_pulse 0:a5800de7a5df -1.87 isabellamoore
+cv-teal_pulse 0:aea71faf1482 -0.38 registerednurse
+cv-teal_pulse 0:613c7b77c405 1.08 manchester,unitedkingdom
+cv-teal_pulse 0:4ddba42ce115 0.93 isabella.moore@email.com
+cv-teal_pulse 0:a8acc3a90a7b 0.68 +447700900123
+cv-teal_pulse 0:84308bea4540 0.83 linkedin
+cv-teal_pulse 0:32c1cf49a2fe -0.25 skills
+cv-teal_pulse 0:9836c1fde1ab -0.09 patientassessment
+cv-teal_pulse 0:7344802265f6 -0.11 careplanning
+cv-teal_pulse 0:32b1d161b612 -0.13 medicationadministration
+cv-teal_pulse 0:b9fff349f0ab -0.15 clinicaldocumentation
+cv-teal_pulse 0:cc981996b30d -0.16 infectionprevention
+cv-teal_pulse 0:48d90339937f -0.18 ivtherapy
+cv-teal_pulse 0:a392ecf06df5 -0.20 woundcare
+cv-teal_pulse 0:7016cd40c2ef -0.21 patienteducation
+cv-teal_pulse 0:ff0a6cdd9508 -0.23 safeguarding
+cv-teal_pulse 0:7b6511893d61 -0.25 teamcollaboration
+cv-teal_pulse 0:d9ff32cb0736 -0.26 dischargecoordination
+cv-teal_pulse 0:ceb75137b9fb -0.28 electronichealthrecords
+cv-teal_pulse 0:b944906ed84c -0.30 professionalsummary
+cv-teal_pulse 0:f8343b9099ef 0.65 compassionateregisterednursewith
+cv-teal_pulse 0:50347a4f84fc 0.64 high-qualitypatientcareacrossacu
+cv-teal_pulse 0:d24f5be95f6a 0.63 settings.skilledinpatientassessm
+cv-teal_pulse 0:824bf3935437 0.62 multidisciplinarycollaboration,d
+cv-teal_pulse 0:8d526cd52034 0.60 accurateclinicaldocumentation.kn
+cv-teal_pulse 0:4d61455b351b 0.59 communication,andpatient-centred
+cv-teal_pulse 0:c2f296ef30a3 -0.35 professionalexperience
+cv-teal_pulse 0:5cad9261fd60 -0.06 seniorstaffnurse—manchesterroyal
+cv-teal_pulse 0:5149e8e5e6b6 -0.08 deliverdirectnursingcareforadult
+cv-teal_pulse 0:8dcc0d173718 -0.08 coordinatecareplanswithdoctors,t
+cv-teal_pulse 0:325626fb2f7a -0.09 supervisejuniornursesandsupports
+cv-teal_pulse 0:c2864de08768 -0.09 improveddischargecoordinationand
+cv-teal_pulse 0:3ac4bbda9488 -0.10 maintainprecisedocumentationande
+cv-teal_pulse 0:59a7aa760eea -0.07 staffnurse—salfordgeneralhospita
+cv-teal_pulse 0:99bff63b0b23 -0.09 providednursingcareacrossmedical
+cv-teal_pulse 0:dee1c05c380e -0.09 administeredmedications,monitore
+cv-teal_pulse 0:a0cc1403feda -0.10 supportedinfectioncontrolprocedu
+cv-teal_pulse 0:25239222c011 -0.10 builtstrongrapportwithpatientsan
+cv-teal_pulse 0:f25d4331b19b -0.08 communitynurse—northcarecommunit
+cv-teal_pulse 0:19eefb6b6368 -0.09 deliveredhome-basednursingcarean
+cv-teal_pulse 0:16412b3fd5d8 -0.10 managedwoundcare,medicationsuppo
+cv-teal_pulse 0:fb42708d13d3 -0.10 workedcloselywithgps,socialservi
+cv-teal_pulse 0:68bf0109c6f8 -0.26 education
+cv-teal_pulse 0:c1596da36d69 -0.21 bsc(hons)adultnursing
+cv-teal_pulse 0:47ce0218bbea -0.22 universityofmanchester
+cv-teal_pulse 0:1da060005bfc -0.25 2013–2016
+cv-teal_pulse 0:e831beb04c00 -0.26 certifications
+cv-teal_pulse 0:ec8bd1e014bb -0.19 nmcregisterednurse
+cv-teal_pulse 0:669f27afcccf -0.22 immediatelifesupport(ils)
+cv-teal_pulse 0:34b32be15830 -0.25 venepunctureandcannulationcertif
+cv-teal_pulse 0:32215e12a886 -0.28 safeguardingadultslevel3
+cv-teal_pulse 0:676dfdd56ad2 -0.26 additionalinformation
+cv-teal_pulse 0:b035d3696f4e -0.22 righttowork:unitedkingdom
+cv-teal_pulse 0:cfa1d6dd779c -0.22 availability:1monthnotice
+cv-teal_pulse 0:b9b8965717b3 -0.23 compassionatecare.clinicalexcell
+cv-terracotta_rail 0:920a88ef5818 0.35 oliver.bennett@email.com
+cv-terracotta_rail 0:a8acc3a90a7b 0.35 +447700900123
+cv-terracotta_rail 0:e8c463a6c54d 0.35 bristol,unitedkingdom
+cv-terracotta_rail 0:84308bea4540 0.35 linkedin
+cv-terracotta_rail 0:32c1cf49a2fe -0.21 skills
+cv-terracotta_rail 0:4e1fe6feb1d5 0.37 architecturaldesign
+cv-terracotta_rail 0:4b1ce58ed984 0.37 conceptdevelopment
+cv-terracotta_rail 0:e8386273ac51 0.37 planningapplications
+cv-terracotta_rail 0:09033be5db1b 0.37 technicaldrawings
+cv-terracotta_rail 0:de4e9e607840 0.37 revit
+cv-terracotta_rail 0:50f08e64c5a6 0.37 autocad
+cv-terracotta_rail 0:af7c811cbfce 0.37 bimcoordination
+cv-terracotta_rail 0:531b7caeda92 0.37 designpresentations
+cv-terracotta_rail 0:bfcd894f9698 0.37 projectdelivery
+cv-terracotta_rail 0:9a1192ab93d0 0.37 stakeholdermanagement
+cv-terracotta_rail 0:48fe07df4f1c 0.37 sustainabledesign
+cv-terracotta_rail 0:95626582af55 0.37 buildingregulations
+cv-terracotta_rail 0:35390f5453e8 -0.18 software
+cv-terracotta_rail 0:2d5d6ea604fd 0.35 rhino
+cv-terracotta_rail 0:5971b0dc0625 0.35 sketchup
+cv-terracotta_rail 0:e9d09d8ff5bb 0.35 adobeindesign
+cv-terracotta_rail 0:3f4a09b92ccf 0.35 photoshop
+cv-terracotta_rail 0:3abe8752b2c0 0.35 microsoftoffice
+cv-terracotta_rail 0:e831beb04c00 -0.21 certifications
+cv-terracotta_rail 0:3ad949ee8543 0.32 arbregisteredarchitect
+cv-terracotta_rail 0:fa807066704f 0.32 ribacharteredmember
+cv-terracotta_rail 0:676dfdd56ad2 -0.24 additionalinformation
+cv-terracotta_rail 0:705ab1a9cb61 -0.22 languages:
+cv-terracotta_rail 0:9ee0e2dddc94 -0.24 english(native),
+cv-terracotta_rail 0:de6d9b2b98d4 -0.25 spanish(conversational)
+cv-terracotta_rail 0:c75efa67c038 -0.26 righttowork:
+cv-terracotta_rail 0:2474519f77a9 -0.28 unitedkingdom
+cv-terracotta_rail 0:76a9cead2e9f -0.29 availability:
+cv-terracotta_rail 0:d14126d0f8f4 -0.30 1monthnotice
+cv-terracotta_rail 0:0f08c27aab24 0.61 oliverbennett
+cv-terracotta_rail 0:334d566a27b2 -0.28 seniorarchitect
+cv-terracotta_rail 0:b944906ed84c -0.16 professionalsummary
+cv-terracotta_rail 0:bbb25a1ee248 0.10 provenexpertiseindesigndevelopme
+cv-terracotta_rail 0:bf4ab196cbb6 0.08 strongfocusonsustainability,qual
+cv-terracotta_rail 0:0dfcf4444281 0.06 collaborativecommunicatorskilled
+cv-terracotta_rail 0:22fdcc5cfe61 0.04 leadingmultidisciplinaryteamstoa
+cv-terracotta_rail 0:c2f296ef30a3 -0.30 professionalexperience
+cv-terracotta_rail 0:086c0e036e67 -0.30 2021–present
+cv-terracotta_rail 0:b3af3b56129a -0.33 northlinestudio,bristol,uk
+cv-terracotta_rail 0:27819bba9c0f -0.54 •leaddesignpackagesfromconceptth
+cv-terracotta_rail 0:d49fddeb9701 -0.57 andmixed-useprojects.
+cv-terracotta_rail 0:1d6340aa301d -0.59 •coordinatestructural,m&e,landsc
+cv-terracotta_rail 0:7062411e212a -0.61 buildablesolutions.
+cv-terracotta_rail 0:bf75379f5486 -0.63 •prepareandmanageplanningapplica
+cv-terracotta_rail 0:894e988cdf94 -0.65 documentation.
+cv-terracotta_rail 0:40c00971356d -0.67 •presentandcommunicatedesignprop
+cv-terracotta_rail 0:a218287e182e -0.69 anddrivingprojectsforward.
+cv-terracotta_rail 0:f2e40fc1edb7 -0.49 architect
+cv-terracotta_rail 0:f7d1049ec64b -0.49 2018–2021
+cv-terracotta_rail 0:59e0b0e4edc9 -0.52 urbanformpartners,bath,uk
+cv-terracotta_rail 0:4f2dbefcbec0 -0.74 •developedconceptandtechnicaldes
+cv-terracotta_rail 0:e2a5e1a23401 -0.76 educationprojects.
+cv-terracotta_rail 0:dedc7bfc0f49 -0.78 •preparedcoordinateddrawingsets,
+cv-terracotta_rail 0:abba33f53e5a -0.80 construction.
+cv-terracotta_rail 0:91a14d5e3005 -0.62 •supportedprojectdeliveryonsite,
+cv-terracotta_rail 0:6b3142466e26 -0.84 •coordinatedwithcontractorsandco
+cv-terracotta_rail 0:1150d4ba642c -0.86 intent.
+cv-terracotta_rail 0:2d2cd24f87d7 -0.67 partiiarchitecturalassistant
+cv-terracotta_rail 0:3b8048983ecc -0.67 2016–2018
+cv-terracotta_rail 0:ebd31e5e7505 -0.69 axisdesignworkshop,cardiff,uk
+cv-terracotta_rail 0:e48e46c3ddf3 -0.71 •supportedseniorarchitectsacross
+cv-terracotta_rail 0:810bbb784193 -0.93 •producedcadandrevitdrawings,mod
+cv-terracotta_rail 0:74b6191dd1ef -0.97 •undertookresearch,preparedprese
+cv-terracotta_rail 0:d94eccbb1fbe -0.78 selectedprojects
+cv-terracotta_rail 0:6b12fdc11f2a -0.83 harbourpoint
+cv-terracotta_rail 0:59765cc5b00d -0.84 mixed-useregeneration
+cv-terracotta_rail 0:db8e363f0316 -0.85 bristol
+cv-terracotta_rail 0:cd7ef0097a95 -0.14 mixed-usedevelopmentdelivering14
+cv-terracotta_rail 0:d37f8456ca99 -0.55 retailspaceandpublicrealmimprove
+cv-terracotta_rail 0:8378846eb8e4 -0.96 securedplanningconsentandisnowon
+cv-terracotta_rail 0:4ffc92a0d6bb -0.87 theassemblyhotel
+cv-terracotta_rail 0:9233fa2c31bc -0.88 boutiquehotelrefurbishment
+cv-terracotta_rail 0:0de8ab631548 -0.89 bath
+cv-terracotta_rail 0:af610a85e11a -0.18 sensitiverefurbishmentoflistedbu
+cv-terracotta_rail 0:fa90dda52a42 -0.59 a36-bedroomboutiquehotel;enhance
+cv-terracotta_rail 0:ee09d6e6e7ce -1.00 featuresandguestexperience.
+cv-terracotta_rail 0:bb04008bb937 -0.91 elmwoodmews
+cv-terracotta_rail 0:43e0681601c8 -0.92 residentialdevelopment
+cv-terracotta_rail 0:25e38d563739 -0.93 clifton,bristol
+cv-terracotta_rail 0:42b055a661a6 -0.13 designof28high-qualityhomeswithi
+cv-terracotta_rail 0:bdc5f821f737 -0.44 sustainablemasterplan;achievedhi
+cv-terracotta_rail 0:208ed62d3df6 -0.75 environmentalstandardsandstrongs
+cv-terracotta_rail 0:ac5e63220124 -1.06 performance.
+cv-terracotta_rail 0:68bf0109c6f8 -0.89 education
+cv-terracotta_rail 0:1d1dcf789873 -0.94 marcharchitecture
+cv-terracotta_rail 0:00583a6bed38 -0.94 2014–2016
+cv-terracotta_rail 0:5761434c99d8 -0.97 universityofsheffield
+cv-terracotta_rail 0:e3f2f6a4e375 -0.97 ba(hons)architecture
+cv-terracotta_rail 0:2920a7fb42fc -0.97 2011–2014
+cv-terracotta_rail 0:af625dd0aa20 -1.00 universityofthewestofengland
+cv-timeline_minimal 0:8f1010120ed6 0.15 jordanrivera
+cv-timeline_minimal 0:2d58f0cadc2d -0.40 platformengineer
+cv-timeline_minimal 0:fbeea547d99e -0.19 london,uk
+cv-timeline_minimal 0:89674e6f130e -0.19 +442055551000
+cv-timeline_minimal 0:e0f850305ded -0.19 jordan.rivera@example.com
+cv-timeline_minimal 0:84308bea4540 -0.19 linkedin
+cv-timeline_minimal 0:c0b0109d9439 -0.19 github
+cv-timeline_minimal 0:68bf0109c6f8 1.90 education
+cv-timeline_minimal 0:54654b90a771 1.40 msccomputerscience|universityof
+cv-timeline_minimal 0:a57111bb5a18 1.40 manchester-2019-2021
+cv-timeline_minimal 0:bf13436325bd 1.40 distinction.thesis:composablelay
+cv-timeline_minimal 0:4c7268c098b3 1.40 primitivesfordeterministicdocume
+cv-timeline_minimal 0:6154cc9024ae 1.40 rendering.
+cv-timeline_minimal 0:17dd75fc575f 1.40 bscsoftwareengineering|imperialc
+cv-timeline_minimal 0:220e665a6446 1.40 london-2015-2019
+cv-timeline_minimal 0:048a150be6e7 1.40 first-classhonours.specialisatio
+cv-timeline_minimal 0:f9d33eb2a1a2 1.40 compilersandstaticanalysis.
+cv-timeline_minimal 0:dddc36d8bb44 1.40 oraclejavacertification|professi
+cv-timeline_minimal 0:6c065bee3945 1.40 track-2023-2024
+cv-timeline_minimal 0:40f2bfbae245 1.40 java17platformdeep-dive:records,
+cv-timeline_minimal 0:6cba964fe5fe 1.40 types,patternmatching,virtualthr
+cv-timeline_minimal 0:5f94c50dc5bf 1.90 technicalskills
+cv-timeline_minimal 0:5d6819554c7a 1.40 languages:java21,kotlin,groovy,p
+cv-timeline_minimal 0:4ec7c53222c8 1.40 sql
+cv-timeline_minimal 0:db84150190bb 1.40 document&print:pdfbox,apachepoi
+cv-timeline_minimal 0:69d03fef7130 1.40 (docx/xlsx),itext,postscript,icc
+cv-timeline_minimal 0:689d68053b81 1.40 profiles,fontmetrics
+cv-timeline_minimal 0:8ca175286c7b 1.40 layoutengines:customdsldesign,
+cv-timeline_minimal 0:b6f2e7d194af 1.40 semanticlayouttrees,pagination,s
+cv-timeline_minimal 0:e8951d583db6 1.40 testing,visualregression
+cv-timeline_minimal 0:3b7a3ab3b6ee 1.40 build&infrastructure:maven,gradl
+cv-timeline_minimal 0:d176e972b547 1.40 githubactions,jitpack,docker,jmh
+cv-timeline_minimal 0:3d119f794292 1.40 benchmarking
+cv-timeline_minimal 0:b7b6a102880a 1.40 testing:junit5,assertj,pdfbox-ba
+cv-timeline_minimal 0:2f0dced56e7f 1.40 pngdiff,layout-graphsnapshots,mu
+cv-timeline_minimal 0:c001aa5cc6fb 1.40 testing(pitest)
+cv-timeline_minimal 0:90c057c30e8f 1.40 distribution:mavencentral,sonaty
+cv-timeline_minimal 0:7347a19cb48d 1.40 ossrh,gpgsigning,jitpack,semanti
+cv-timeline_minimal 0:b13180079f20 1.40 versioningdiscipline
+cv-timeline_minimal 0:2577c0f557b2 1.90 projects
+cv-timeline_minimal 0:bd82e94c4024 1.40 graphcompose(java21,pdfbox,maven
+cv-timeline_minimal 0:54b7bb3a12a0 1.40 jmh):declarativejavapdflayouteng
+cv-timeline_minimal 0:83ee0a75c2d4 1.40 semanticdsl,slot-basedtemplates,
+cv-timeline_minimal 0:235802baf524 1.40 snapshottesting.powersproduction
+cv-timeline_minimal 0:44925c9e42ee 1.40 invoice/proposalpipelinesforhiri
+cv-timeline_minimal 0:ae7902eee4b2 1.40 templatestudio(kotlin,composedes
+cv-timeline_minimal 0:f15436034237 1.40 pdfboxpngdiff):internaltoolfor
+cv-timeline_minimal 0:24a195694090 1.40 evaluatingcv,proposal,andinvoice
+cv-timeline_minimal 0:dbcc5c321887 1.40 layoutlint(java21,javaparser,spo
+cv-timeline_minimal 0:a1446929a276 1.40 staticanalyserthatflagsfragileau
+cv-timeline_minimal 0:d91205080ec3 1.40 patterns(deeplynestedrows,untype
+cv-timeline_minimal 0:d31cf3fc9dae 1.40 offsets,implicitpagebreaks)befor
+cv-timeline_minimal 0:7b985a1d2b08 1.40 shiptoproduction.
+cv-timeline_minimal 0:14e902e0e2ff 1.40 chromeforge(java,graphcompose,
+cv-timeline_minimal 0:f87a435df3ac 1.40 pandocbridge):editorial-magazine
+cv-timeline_minimal 0:73678fb1255e 1.40 documenttoolkitbuiltongraphcompo
+cv-timeline_minimal 0:a0c280e181e2 1.40 cinematiccovers,pullquotes,multi
+cv-timeline_minimal 0:d9f1b263312f 1.40 flow,sidebarcallouts.
+cv-timeline_minimal 0:b944906ed84c 1.85 professionalsummary
+cv-timeline_minimal 0:4bc9e0d2344b 1.30 platformengineerwith10+yearsbuil
+cv-timeline_minimal 0:453eef50417c 1.32 anddeveloper-facingtemplatesyste
+cv-timeline_minimal 0:39881b36a9c0 1.34 authoringdsls,andturningbrittlep
+cv-timeline_minimal 0:83064bdc95f5 1.36 scale.
+cv-timeline_minimal 0:c2f296ef30a3 1.93 professionalexperience
+cv-timeline_minimal 0:68c08b2a5966 1.63 seniorplatformengineer|northwind
+cv-timeline_minimal 0:64c4b52dceb1 1.37 ledthereusabledocument-generatio
+cv-timeline_minimal 0:1f193cd1d987 1.36 productteams.reducedtemplatemain
+cv-timeline_minimal 0:9ccc3e904e5a 1.35 favourofonecanonicalengine.
+cv-timeline_minimal 0:fb53bd1bfeb9 1.59 softwareengineer|brightleaflabs-
+cv-timeline_minimal 0:70dd947a4558 1.31 cuttingp99renderlatencyfrom1.4st
+cv-timeline_minimal 0:8a9898d2c965 1.55 backendengineer|helixprintco-201
+cv-timeline_minimal 0:a485c37fe7ea 1.29 maintainedahigh-volumeinvoice-pr
+cv-timeline_minimal 0:5a136b6b9d8c 1.28 testharnessthatgatedeverytemplat
+cv-timeline_minimal 1:676dfdd56ad2 0.20 additionalinformation
+cv-timeline_minimal 1:ecc25e73b19b -0.30 languages:english(fluent),german
+cv-timeline_minimal 1:ac7f0ee6a49e -0.30 (intermediate),spanish(basic)
+cv-timeline_minimal 1:db2a16c45fd5 -0.30 workeligibility:eligibletoworkin
+cv-timeline_minimal 1:7001312ec42e -0.30 andtheeu
+cv-timeline_minimal 1:a8af27d55da9 -0.30 opensource:maintainerof
+cv-timeline_minimal 1:cf566ad0f15d -0.30 graphcompose.regularcontributort
+cv-timeline_minimal 1:bf474bb1a54a -0.30 pdfboxissuetriage.
+cv-timeline_minimal 1:86512c31ab91 -0.30 speaking:jvmsummit2024,devoxxuk
+cv-timeline_minimal 1:e1a9c88a2aa2 -0.30 2025—bothondeclarativedocument
+cv-timeline_minimal 1:9331a1c670e0 -0.30 layout.
+cv-violet_grid 0:68a76c74faf5 0.23 sofiamartinez
+cv-violet_grid 0:04694b6a602f -0.35 ux/uidesigner
+cv-violet_grid 0:12932a9489aa -0.10 sofia.martinez.design@gmail.com
+cv-violet_grid 0:77b27b9ce612 -0.11 +1(415)555-7842
+cv-violet_grid 0:12d25ebdca93 -0.11 sanfrancisco,ca,usa
+cv-violet_grid 0:8a2bdbd153f4 -0.11 sofiamartinez.design
+cv-violet_grid 0:84308bea4540 -0.12 linkedin
+cv-violet_grid 0:30b943b69458 0.17 user-centereddesignerwith5+years
+cv-violet_grid 0:c5d00ee335d1 0.16 icombineresearch,designthinking,
+cv-violet_grid 0:62fd7c29c3c0 0.14 passionateaboutcollaboratingwith
+cv-violet_grid 0:32c1cf49a2fe 0.14 skills
+cv-violet_grid 0:b96067918254 0.24 uxresearch
+cv-violet_grid 0:9058674fd905 0.29 userinterviews,surveys,
+cv-violet_grid 0:0cdd38014d79 0.28 personas,journeymaps,
+cv-violet_grid 0:61e4ba28d469 0.28 competitiveanalysis
+cv-violet_grid 0:db5c6756c4b6 8.09 sitemaps,userflows,card
+cv-violet_grid 0:6c7ad1834a60 8.08 sorting,contentstrategy
+cv-violet_grid 0:187737d59250 0.24 wireframing
+cv-violet_grid 0:2286e5aa328a 0.29 lowtohigh-fidelity
+cv-violet_grid 0:5c4b21cb1af8 0.24 prototyping
+cv-violet_grid 0:1abfa9dc1773 0.29 interactiveprototypes,
+cv-violet_grid 0:1ddc6c379a54 0.28 microinteractions,
+cv-violet_grid 0:d1d99c54cf40 0.28 transitions
+cv-violet_grid 0:7a38f8d94009 0.24 usabilitytesting
+cv-violet_grid 0:63af69ae99e6 0.29 testplanning,usability
+cv-violet_grid 0:f67c409cc44f 0.28 tests,heuristicevaluation,
+cv-violet_grid 0:438e1d3264dd 0.28 insights&iteration
+cv-violet_grid 0:7e02941d76f5 0.24 designsystems
+cv-violet_grid 0:a0d27161913a 0.29 componentlibraries,
+cv-violet_grid 0:82374d275507 0.28 designtokens,pattern
+cv-violet_grid 0:caf9f906b16a 0.28 documentation
+cv-violet_grid 0:f9d35d43770d 0.26 tools
+cv-violet_grid 0:5cb2b3b6143c 0.32 figmafigjamadobexdsketchmironoti
+cv-violet_grid 0:53e5e7c5a884 0.30 experience
+cv-violet_grid 0:5a0774260e0c 0.42 2022-present
+cv-violet_grid 0:204f460767ff 0.38 seniorux/uidesigner|novafin(fint
+cv-violet_grid 0:318bba211bdc 0.43 sanfrancisco,ca
+cv-violet_grid 0:3883e88c63c3 0.42 ledend-to-enddesignforapersonalf
+cv-violet_grid 0:ccc00663f089 2.20 conducteduserresearch,builtperso
+cv-violet_grid 0:7d0f908c7e5f 3.98 designedwireframes,prototypes,an
+cv-violet_grid 0:9b57c4a85aad 5.77 establishedandmaintainedascalabl
+cv-violet_grid 0:6894eafb99c2 7.55 collaboratedwithproductmanagers,
+cv-violet_grid 0:01e4455cec51 9.34 2020-2022
+cv-violet_grid 0:24d722f0cfbe 9.30 uxdesigner|brighthealth(healthte
+cv-violet_grid 0:530707fb0897 9.34 redesignedpatientportalexperienc
+cv-violet_grid 0:b2e27a1d9270 11.12 plannedandfacilitatedusabilityte
+cv-violet_grid 0:ab80a52d70fe 12.90 partneredwithengineerstoensurefe
+cv-violet_grid 0:11cbf615189b 14.69 createdreusablecomponentsandstyl
+cv-violet_grid 0:7e5081a3ed48 16.48 2018-2020
+cv-violet_grid 0:73f7bbf7cd60 16.44 juniorux/uidesigner|lumendigital
+cv-violet_grid 0:c6b06045332f 16.49 austin,tx
+cv-violet_grid 0:5ea8234925c5 16.48 supporteddiscoveryworkshops,user
+cv-violet_grid 0:46f00c76528c 18.26 designedresponsivewebsitesandlan
+cv-violet_grid 0:f3cea36a9d83 20.04 collaboratedwithcopywritersandde
+cv-violet_grid 0:d94eccbb1fbe 21.81 selectedprojects
+cv-violet_grid 0:45dc8bf81211 21.76 novafinmobileapp|personalfinance
+cv-violet_grid 0:d398b29d3dbb 21.81 2023
+cv-violet_grid 0:e66c1ce573d3 21.67 ledux/uidesignforbudgeting,goalt
+cv-violet_grid 0:0ed8829e68d0 21.67 thatinformedasimplifiednavigatio
+cv-violet_grid 0:ee9bd17ebccf 21.67 22%increaseinweeklyactiveusers.
+cv-violet_grid 0:28b4603d784a 21.75 brighthealthpatientportal|health
+cv-violet_grid 0:1bea20e1df19 21.80 2021
+cv-violet_grid 0:999ddb26bed6 21.66 redesignedkeypatientflowsincludi
+cv-violet_grid 0:073d15633c0b 21.66 systemandcomponentlibraryusedacr
+cv-violet_grid 0:68bf0109c6f8 21.91 education
+cv-violet_grid 0:6cb574fa10b6 21.91 languages
+cv-violet_grid 0:0cf7506cf94a 19.58 bacheloroffineartsingraphicdesig
+cv-violet_grid 0:00ab7a6aa5f1 19.59 californiacollegeofthearts
+cv-violet_grid 0:7e2c21bb41db 19.58 sanfrancisco,ca|2014-2018
+cv-violet_grid 0:b6234d2ea0d6 21.23 english
+cv-violet_grid 0:bef32d2c315a 21.22 native
+cv-violet_grid 0:9c9b13446cd9 22.46 spanish
+cv-violet_grid 0:e35242c809c8 23.69 portuguese
+cv-violet_grid 0:c5d1de4964d6 23.69 conversational
+invoice-classic 0:c26c22b94338 0.49 graphcomposestudio
+invoice-classic 0:2a08ce5567fb 0.35 18layoutstreet
+invoice-classic 0:52d6e3de4fa0 0.10 invoice
+invoice-classic 0:38e9951985e4 0.32 gc-2026-041
+invoice-classic 0:20fe884effee 0.32 issued02apr2026
+invoice-classic 0:57a66d21eb1b 0.30 totaldue
+invoice-classic 0:30d85a94548c 0.37 invoicegc-2026-041issued02apr202
+invoice-classic 0:aeba3a7b3598 0.33 billto
+invoice-classic 0:f890faef907f 0.30 northwindsystems
+invoice-classic 0:1b405eb431ca 0.03 attn:financeteam
+invoice-classic 0:91eefd794f79 0.00 410marketavenue
+invoice-classic 0:00a97da4e243 -0.02 manchester,uk
+invoice-classic 0:62fcfa8745fc -0.05 ap@northwind.example
+invoice-classic 0:2081a41a7764 -0.07 +441615552200
+invoice-classic 0:75857a458999 0.33 from
+invoice-classic 0:fbeea547d99e 0.00 london,uk
+invoice-classic 0:faf1569a98e9 -0.02 ec1a4gc
+invoice-classic 0:befc6e9b5c24 -0.05 billing@graphcompose.dev
+invoice-classic 0:89674e6f130e -0.07 +442055551000
+invoice-classic 0:c9046f7a37ad 0.25 description
+invoice-classic 0:32e8369a9c4f 0.25 qty
+invoice-classic 0:385cfdbc00ec 0.25 unit
+invoice-classic 0:cf38d95c9c6b 0.25 amount
+invoice-classic 0:987c6297d0a9 0.47 discoveryworkshop
+invoice-classic 0:532674c6eb89 0.47 gbp1,450
+invoice-classic 0:08ec6deb1c40 0.47 templatearchitecture2
+invoice-classic 0:d2e67c4b1cca 0.47 gbp980
+invoice-classic 0:d6cdf6a05754 0.47 gbp1,960
+invoice-classic 0:fe13f8ee4f99 0.47 renderqa
+invoice-classic 0:7e7398cbff7c 0.47 gbp320
+invoice-classic 0:e23164e940c7 0.47 gbp960
+invoice-classic 0:6047df51175c 0.57 developerenablement1
+invoice-classic 0:c2ad01ea64ae 0.57 gbp780
+invoice-classic 0:d6577e95efba 0.82 subtotal
+invoice-classic 0:50cae0510231 0.82 gbp5,150
+invoice-classic 0:a52611c9261b 0.97 vat(20%)
+invoice-classic 0:d7f4425b8b16 0.97 gbp1,030
+invoice-classic 0:11239872d178 0.98 total
+invoice-classic 0:45a5ad5ad430 0.98 gbp6,180
+invoice-classic 0:ab5aa97074c4 1.10 notes
+invoice-classic 0:b78eb53cbd11 1.17 •pleaseincludetheinvoicenumberon
+invoice-classic 0:8c8fd62f15a7 1.17 yourremittanceadvice.
+invoice-classic 0:f73f1b89e354 1.17 •allworkwasdeliveredasagreedduri
+invoice-classic 0:49c1ececed52 1.17 theaprilimplementationwindow.
+invoice-classic 0:fb854bac39c8 1.10 paymentterms
+invoice-classic 0:24274f39b50b 1.17 •paymentduewithin14calendardays.
+invoice-classic 0:c438440ba377 1.17 •banktransferpreferred;contact
+invoice-classic 0:434cc906ae90 1.17 billing@graphcompose.devfor
+invoice-classic 0:8822ea375315 1.17 remittancedetails.
+invoice-classic 0:1a7b5c840e25 1.17 •latepaymentsmaydelayadditional
+invoice-classic 0:1631a06d245f 1.17 templatecustomizationwork.
+invoice-classic 0:e3337beaa171 1.15 thankyouforchoosinggraphcomposef
+invoice-classic_long 0:c26c22b94338 0.49 graphcomposestudio
+invoice-classic_long 0:2a08ce5567fb 0.35 18layoutstreet
+invoice-classic_long 0:52d6e3de4fa0 0.10 invoice
+invoice-classic_long 0:3594d2085950 0.32 gc-2026-042
+invoice-classic_long 0:25851a973edd 0.32 issued04may2026
+invoice-classic_long 0:57a66d21eb1b 0.30 totaldue
+invoice-classic_long 0:9eea1e05ff47 0.37 invoicegc-2026-042issued04may202
+invoice-classic_long 0:aeba3a7b3598 0.33 billto
+invoice-classic_long 0:f890faef907f 0.30 northwindsystems
+invoice-classic_long 0:1b405eb431ca 0.03 attn:financeteam
+invoice-classic_long 0:91eefd794f79 0.00 410marketavenue
+invoice-classic_long 0:00a97da4e243 -0.02 manchester,uk
+invoice-classic_long 0:62fcfa8745fc -0.05 ap@northwind.example
+invoice-classic_long 0:2081a41a7764 -0.07 +441615552200
+invoice-classic_long 0:75857a458999 0.33 from
+invoice-classic_long 0:fbeea547d99e 0.00 london,uk
+invoice-classic_long 0:faf1569a98e9 -0.02 ec1a4gc
+invoice-classic_long 0:befc6e9b5c24 -0.05 billing@graphcompose.dev
+invoice-classic_long 0:89674e6f130e -0.07 +442055551000
+invoice-classic_long 0:c9046f7a37ad 0.25 description
+invoice-classic_long 0:32e8369a9c4f 0.25 qty
+invoice-classic_long 0:385cfdbc00ec 0.25 unit
+invoice-classic_long 0:cf38d95c9c6b 0.25 amount
+invoice-classic_long 0:aa29f2f4fcb4 0.47 discoveryworkshop—sprint1
+invoice-classic_long 0:ce4081aef7a1 0.47 gbp180
+invoice-classic_long 0:9c9a412f0a45 0.47 designsystemaudit—sprint1
+invoice-classic_long 0:7be809cb1590 0.47 gbp217
+invoice-classic_long 0:378b363c8601 0.47 gbp434
+invoice-classic_long 0:5257532a7b5d 0.47 templatearchitecture—sprint1
+invoice-classic_long 0:c467cca4e45a 0.47 gbp254
+invoice-classic_long 0:4a4a218b012a 0.47 gbp762
+invoice-classic_long 0:58a1caacbf7e 0.47 layoutenginetuning—sprint1
+invoice-classic_long 0:dde0144b97b7 0.47 gbp291
+invoice-classic_long 0:457a71636ad9 0.47 gbp1164
+invoice-classic_long 0:6fcf7d6dd606 0.47 renderqapass—sprint1
+invoice-classic_long 0:dda88f5786f5 0.47 gbp328
+invoice-classic_long 0:ee18ad3bbb42 0.47 accessibilityreview—sprint1
+invoice-classic_long 0:e681b4843ffb 0.47 gbp365
+invoice-classic_long 0:1859c20b35dd 0.47 gbp730
+invoice-classic_long 0:c12c14945fcd 0.47 fontpipelinesetup—sprint1
+invoice-classic_long 0:9033a33f66e7 0.47 gbp402
+invoice-classic_long 0:837d48c1ff40 0.47 gbp1206
+invoice-classic_long 0:af6cba848dc0 0.47 chartintegration—sprint1
+invoice-classic_long 0:6109a2c30104 0.47 gbp439
+invoice-classic_long 0:87e9fcb6151d 0.47 gbp1756
+invoice-classic_long 0:a6bee1ec5e35 0.47 datamapping—sprint1
+invoice-classic_long 0:df1f9d4443d8 0.47 gbp476
+invoice-classic_long 0:052c9f49a4b8 0.47 paginationhardening—sprint1
+invoice-classic_long 0:9fba6332e489 0.47 gbp513
+invoice-classic_long 0:6f805c9f78c3 0.47 gbp1026
+invoice-classic_long 0:b54b7f77d86c 0.47 visualregressionwiring—sprint13
+invoice-classic_long 0:dc3d212d6b32 0.47 gbp550
+invoice-classic_long 0:96667fee53f3 0.47 gbp1650
+invoice-classic_long 0:9fe9e123b0f0 0.47 docsauthoring—sprint1
+invoice-classic_long 0:e7b406f24f04 0.47 gbp587
+invoice-classic_long 0:74357ca6b30e 0.47 gbp2348
+invoice-classic_long 0:9c6cf539f5bc 0.47 stakeholderdemo—sprint1
+invoice-classic_long 0:cf79b5cdb735 0.47 gbp624
+invoice-classic_long 0:d2bde6642670 0.47 performanceprofiling—sprint1
+invoice-classic_long 0:679f017f73c1 0.47 gbp661
+invoice-classic_long 0:63985b524723 0.47 gbp1322
+invoice-classic_long 0:f82bef1ac80d 0.47 releaseengineering—sprint1
+invoice-classic_long 0:0b21b7cf2ff9 0.47 gbp698
+invoice-classic_long 0:6afc08056aaa 0.47 gbp2094
+invoice-classic_long 0:632f71e8ff8b 0.47 supportretainer—sprint1
+invoice-classic_long 0:70b393b5fb10 0.47 gbp735
+invoice-classic_long 0:29edf7588a57 0.47 gbp2940
+invoice-classic_long 0:82a9218b91ae 0.47 discoveryworkshop—sprint2
+invoice-classic_long 0:c313f34b71b9 0.47 gbp772
+invoice-classic_long 0:7e69fbffe3e2 0.47 designsystemaudit—sprint2
+invoice-classic_long 0:e096e4fddf9a 0.47 gbp809
+invoice-classic_long 0:c985a0123929 0.47 gbp1618
+invoice-classic_long 0:899f0392eecb 0.47 templatearchitecture—sprint2
+invoice-classic_long 0:4c973ddb9245 0.47 gbp846
+invoice-classic_long 0:6ec359ce3927 0.47 gbp2538
+invoice-classic_long 0:69523ba7402c 0.47 layoutenginetuning—sprint2
+invoice-classic_long 0:0e196c2b490b 0.47 gbp883
+invoice-classic_long 0:6e0d19ab72c6 0.47 gbp3532
+invoice-classic_long 1:c9046f7a37ad 0.30 description
+invoice-classic_long 1:32e8369a9c4f 0.30 qty
+invoice-classic_long 1:385cfdbc00ec 0.30 unit
+invoice-classic_long 1:cf38d95c9c6b 0.30 amount
+invoice-classic_long 1:f12cbb7c274d 0.52 renderqapass—sprint2
+invoice-classic_long 1:b813c73bc488 0.52 gbp920
+invoice-classic_long 1:12cd54b50187 0.52 accessibilityreview—sprint2
+invoice-classic_long 1:377d92702316 0.52 gbp957
+invoice-classic_long 1:e7c66f6cf477 0.52 gbp1914
+invoice-classic_long 1:e3d8409ace07 0.52 fontpipelinesetup—sprint2
+invoice-classic_long 1:21604b8f0b36 0.52 gbp994
+invoice-classic_long 1:fe15ed444063 0.52 gbp2982
+invoice-classic_long 1:ca4d3c8eca22 0.52 chartintegration—sprint2
+invoice-classic_long 1:a4c7a6612c99 0.52 gbp1031
+invoice-classic_long 1:1c83f0b47e27 0.52 gbp4124
+invoice-classic_long 1:00de69c6e70f 0.52 datamapping—sprint2
+invoice-classic_long 1:b9d5c56a2cfd 0.52 gbp1068
+invoice-classic_long 1:eb628b5ea8ab 0.52 paginationhardening—sprint2
+invoice-classic_long 1:db5327b47d0e 0.52 gbp205
+invoice-classic_long 1:99d9b3b49da2 0.52 gbp410
+invoice-classic_long 1:505693cbc91e 0.52 visualregressionwiring—sprint23
+invoice-classic_long 1:9f0c5094fb63 0.52 gbp242
+invoice-classic_long 1:095b72c9d880 0.52 gbp726
+invoice-classic_long 1:2a787e61730a 0.52 docsauthoring—sprint2
+invoice-classic_long 1:28ad00e76aef 0.52 gbp279
+invoice-classic_long 1:fbb12fed0bbc 0.52 gbp1116
+invoice-classic_long 1:5369a2c40ff8 0.52 stakeholderdemo—sprint2
+invoice-classic_long 1:16562cbcd318 0.52 gbp316
+invoice-classic_long 1:611b258cb41e 0.52 performanceprofiling—sprint2
+invoice-classic_long 1:e391d4e46366 0.52 gbp353
+invoice-classic_long 1:7106c00cb009 0.52 gbp706
+invoice-classic_long 1:d24a15800df1 0.52 releaseengineering—sprint2
+invoice-classic_long 1:4bed9b4092ee 0.52 gbp390
+invoice-classic_long 1:ae16cd1e31b1 0.52 gbp1170
+invoice-classic_long 1:6876c7b0fe66 0.52 supportretainer—sprint2
+invoice-classic_long 1:909481a45a34 0.52 gbp427
+invoice-classic_long 1:4e58d78d0958 0.52 gbp1708
+invoice-classic_long 1:ddce236bccd7 0.52 discoveryworkshop—sprint3
+invoice-classic_long 1:f8d17c11d834 0.52 gbp464
+invoice-classic_long 1:c0986cd7b1d4 0.52 designsystemaudit—sprint3
+invoice-classic_long 1:09c7aebd89f6 0.52 gbp501
+invoice-classic_long 1:a61c7b6bdd20 0.52 gbp1002
+invoice-classic_long 1:21fd82d170b2 0.52 templatearchitecture—sprint3
+invoice-classic_long 1:399e39a6eff5 0.52 gbp538
+invoice-classic_long 1:81ea39164f41 0.52 gbp1614
+invoice-classic_long 1:47cb1e683e8d 0.52 layoutenginetuning—sprint3
+invoice-classic_long 1:f6df6e8e8f30 0.52 gbp575
+invoice-classic_long 1:7f7db0f4c1cf 0.52 gbp2300
+invoice-classic_long 1:608e31719f07 0.52 renderqapass—sprint3
+invoice-classic_long 1:e4fbc626999e 0.52 gbp612
+invoice-classic_long 1:98bfb4deb0b7 0.52 accessibilityreview—sprint3
+invoice-classic_long 1:7915a839b285 0.52 gbp649
+invoice-classic_long 1:ca74221d78ad 0.52 gbp1298
+invoice-classic_long 1:375dddcbee43 0.52 fontpipelinesetup—sprint3
+invoice-classic_long 1:7b97f0ac8a87 0.52 gbp686
+invoice-classic_long 1:6a57f6a84a1c 0.52 gbp2058
+invoice-classic_long 1:2f4f507058ff 0.62 chartintegration—sprint3
+invoice-classic_long 1:74df855b318c 0.62 gbp723
+invoice-classic_long 1:78016cdf49ca 0.62 gbp2892
+invoice-classic_long 1:d6577e95efba 0.87 subtotal
+invoice-classic_long 1:5969b6461056 0.87 gbp44,890
+invoice-classic_long 1:a52611c9261b 1.02 vat(20%)
+invoice-classic_long 1:e7fda33332e9 1.02 gbp8,978
+invoice-classic_long 1:11239872d178 1.03 total
+invoice-classic_long 1:90b9dec01ea9 1.03 gbp53,868
+invoice-classic_long 1:ab5aa97074c4 1.15 notes
+invoice-classic_long 1:970fb4bf9d95 1.22 •sprints1-3weredeliveredunderthe
+invoice-classic_long 1:a781fa6c76d2 1.22 frameworkagreement.
+invoice-classic_long 1:c980fb1ebf98 1.22 •hardwareandthird-partylicencesa
+invoice-classic_long 1:be1dea5817a5 1.22 billedseparately.
+invoice-classic_long 1:fb854bac39c8 1.15 paymentterms
+invoice-classic_long 1:24274f39b50b 1.22 •paymentduewithin14calendardays.
+invoice-classic_long 1:c438440ba377 1.22 •banktransferpreferred;contact
+invoice-classic_long 1:434cc906ae90 1.22 billing@graphcompose.devfor
+invoice-classic_long 1:8822ea375315 1.22 remittancedetails.
+invoice-classic_long 1:e3337beaa171 1.20 thankyouforchoosinggraphcomposef
+invoice-consulting 0:d44ceaea97d1 0.27 level8,1collinsstreet
+invoice-consulting 0:78a0bb33347f 0.29 melbournevic3000australia
+invoice-consulting 0:3b45ab243edb 2.81 +61398765432
+invoice-consulting 0:a17a9fc6d4a8 2.81 hello@northpoint.com.au
+invoice-consulting 0:ef0664c1d352 2.81 northpoint.com.au
+invoice-consulting 0:52d6e3de4fa0 -0.44 invoice
+invoice-consulting 0:6282391a4cc1 -0.63 invoicenumber:
+invoice-consulting 0:7d66eb3c1070 -0.19 inv-2025-0478
+invoice-consulting 0:89973ab74e1c -0.63 issuedate:
+invoice-consulting 0:0dee636efa5b -0.19 26may2025
+invoice-consulting 0:0e0fb0fc0939 -0.63 duedate:
+invoice-consulting 0:7709d5dcefbe -0.19 25june2025
+invoice-consulting 0:633dcfcb4a68 -0.63 project:
+invoice-consulting 0:28447bbc85e1 -0.19 digitalstrategyengagement
+invoice-consulting 0:d7523d00af19 -0.63 ponumber:
+invoice-consulting 0:80a06a9ef12d -0.19 po-7892
+invoice-consulting 0:aef9b6cb1bcd 0.04 billedto
+invoice-consulting 0:3fc5213307f9 0.00 greenfieldindustriesltd.
+invoice-consulting 0:37d614eaf852 0.01 accountspayabledepartment
+invoice-consulting 0:c438c5ffc681 0.02 12innovationdrive
+invoice-consulting 0:89f5b4615dc3 0.03 melbournevic3000
+invoice-consulting 0:c585f1decb98 0.04 australia
+invoice-consulting 0:4438ad217dea 0.05 email:ap@greenfield.com.au
+invoice-consulting 0:cfebda697822 0.04 invoicesummary
+invoice-consulting 0:5656f37a9311 0.50 professionalservicesrenderedinac
+invoice-consulting 0:a918299ac844 0.51 statementofworkfortheperiod
+invoice-consulting 0:3fa8489d9aac 0.02 1may2025–25may2025.
+invoice-consulting 0:c9046f7a37ad 0.92 description
+invoice-consulting 0:b28225a1247c 0.92 serviceperiod
+invoice-consulting 0:32e8369a9c4f 0.92 qty
+invoice-consulting 0:d1062d072acd 0.91 unitprice
+invoice-consulting 0:3ff0b4a2706b 0.93 (aud)
+invoice-consulting 0:cf38d95c9c6b 0.91 amount
+invoice-consulting 0:b344321f5471 1.21 1–10may2025
+invoice-consulting 0:a8994a9020c4 1.21 10.00
+invoice-consulting 0:4e9682fa850e 1.22 hrs
+invoice-consulting 0:aa92f0e23a97 1.21 250.00
+invoice-consulting 0:e48d9b7a2993 1.21 2,500.00
+invoice-consulting 0:1bcfde966d94 0.89 strategicconsultation
+invoice-consulting 0:fd3ca268f319 0.37 leadershipalignmentworkshops
+invoice-consulting 0:8d93e0c47a8c 1.23 1–15may2025
+invoice-consulting 0:cf9dcf6da8a8 1.23 1.00
+invoice-consulting 0:97e47b250054 1.23 3,500.00
+invoice-consulting 0:5581aef375ff 0.91 market&competitiveanalysis
+invoice-consulting 0:957080ea09d9 0.39 researchandanalysisreport
+invoice-consulting 0:47102c31f226 1.25 5–20may2025
+invoice-consulting 0:ec6305055be9 1.25 4,800.00
+invoice-consulting 0:53dea97cf116 0.93 digitalroadmapdevelopment
+invoice-consulting 0:acf357e68297 0.41 strategyandroadmapcreation
+invoice-consulting 0:c947fb16eab2 1.27 15–22may2025
+invoice-consulting 0:017144e2271f 1.27 6.00
+invoice-consulting 0:be6012a47af0 1.27 220.00
+invoice-consulting 0:172c0a785bc7 1.27 1,320.00
+invoice-consulting 0:fe04037aa850 0.95 stakeholderreviewsessions
+invoice-consulting 0:4658a1bff292 0.43 facilitationanddocumentation
+invoice-consulting 0:86f73207c794 1.44 20–25may2025
+invoice-consulting 0:55907ef405f6 1.44 1,880.00
+invoice-consulting 0:f2e12ad6cc9f 1.12 presentation&finalreport
+invoice-consulting 0:50de6dc61b80 0.60 executivepresentationanddelivery
+invoice-consulting 0:d6577e95efba 0.39 subtotal
+invoice-consulting 0:6311b1798398 0.83 14,000.00
+invoice-consulting 0:e370855bde0c 0.39 gst(10%)
+invoice-consulting 0:b87e26fb8fac 0.83 1,400.00
+invoice-consulting 0:713a1893d967 -0.27 totaldue(aud)
+invoice-consulting 0:d4464a725927 0.70 15,400.00
+invoice-consulting 0:13000a5d442c 0.96 paymentinformation
+invoice-consulting 0:944d398aea60 1.61 bankname:
+invoice-consulting 0:97fa113746b9 1.61 examplebank
+invoice-consulting 0:0ecb5847ffa7 1.61 accountname:
+invoice-consulting 0:b5dd15368c26 1.61 northpointconsultingptyltd
+invoice-consulting 0:6bbca23a71e6 1.61 bsb:
+invoice-consulting 0:83a417f0862b 1.61 123-456
+invoice-consulting 0:6b4894c28363 1.61 accountnumber:
+invoice-consulting 0:ef797c8118f0 1.61 12345678
+invoice-consulting 0:c608665436db 1.61 reference:
+invoice-consulting 0:010450dee1ff 1.62 pleaseensuretheinvoicenumberisin
+invoice-consulting 0:ab5aa97074c4 0.96 notes
+invoice-consulting 0:7c6ab37d83ef 0.92 thankyouforyourbusiness.
+invoice-consulting 0:4a699e29a3bb 1.43 ifyouhaveanyquestionsregardingth
+invoice-consulting 0:c766251af1f4 1.44 contactusataccounts@northpoint.c
+invoice-consulting 0:3d32fa219332 1.45 +61398765432.
+invoice-consulting 0:a6f6e2ddab6d 1.57 paymentisduewithin30daysfromthei
+invoice-consulting 0:55ee5fe62c33 0.01 northpointconsultingptyltd|abn12
+invoice-consulting 0:bdbada284e80 0.01 page1/1
+invoice-consulting_long 0:d44ceaea97d1 0.27 level8,1collinsstreet
+invoice-consulting_long 0:78a0bb33347f 0.29 melbournevic3000australia
+invoice-consulting_long 0:3b45ab243edb 2.81 +61398765432
+invoice-consulting_long 0:a17a9fc6d4a8 2.81 hello@northpoint.com.au
+invoice-consulting_long 0:ef0664c1d352 2.81 northpoint.com.au
+invoice-consulting_long 0:52d6e3de4fa0 -0.44 invoice
+invoice-consulting_long 0:6282391a4cc1 -0.63 invoicenumber:
+invoice-consulting_long 0:7d66eb3c1070 -0.19 inv-2025-0478
+invoice-consulting_long 0:89973ab74e1c -0.63 issuedate:
+invoice-consulting_long 0:0dee636efa5b -0.19 26may2025
+invoice-consulting_long 0:0e0fb0fc0939 -0.63 duedate:
+invoice-consulting_long 0:7709d5dcefbe -0.19 25june2025
+invoice-consulting_long 0:633dcfcb4a68 -0.63 project:
+invoice-consulting_long 0:28447bbc85e1 -0.19 digitalstrategyengagement
+invoice-consulting_long 0:d7523d00af19 -0.63 ponumber:
+invoice-consulting_long 0:80a06a9ef12d -0.19 po-7892
+invoice-consulting_long 0:aef9b6cb1bcd 0.04 billedto
+invoice-consulting_long 0:3fc5213307f9 0.00 greenfieldindustriesltd.
+invoice-consulting_long 0:37d614eaf852 0.01 accountspayabledepartment
+invoice-consulting_long 0:c438c5ffc681 0.02 12innovationdrive
+invoice-consulting_long 0:89f5b4615dc3 0.03 melbournevic3000
+invoice-consulting_long 0:c585f1decb98 0.04 australia
+invoice-consulting_long 0:4438ad217dea 0.05 email:ap@greenfield.com.au
+invoice-consulting_long 0:cfebda697822 0.04 invoicesummary
+invoice-consulting_long 0:5656f37a9311 0.50 professionalservicesrenderedinac
+invoice-consulting_long 0:a918299ac844 0.51 statementofworkfortheperiod
+invoice-consulting_long 0:3fa8489d9aac 0.02 1may2025–25may2025.
+invoice-consulting_long 0:c9046f7a37ad 0.92 description
+invoice-consulting_long 0:b28225a1247c 0.92 serviceperiod
+invoice-consulting_long 0:32e8369a9c4f 0.92 qty
+invoice-consulting_long 0:d1062d072acd 0.91 unitprice
+invoice-consulting_long 0:3ff0b4a2706b 0.93 (aud)
+invoice-consulting_long 0:cf38d95c9c6b 0.91 amount
+invoice-consulting_long 0:b344321f5471 1.21 1–10may2025
+invoice-consulting_long 0:a8994a9020c4 1.21 10.00
+invoice-consulting_long 0:4e9682fa850e 1.22 hrs
+invoice-consulting_long 0:aa92f0e23a97 1.21 250.00
+invoice-consulting_long 0:e48d9b7a2993 1.21 2,500.00
+invoice-consulting_long 0:1bcfde966d94 0.89 strategicconsultation
+invoice-consulting_long 0:fd3ca268f319 0.37 leadershipalignmentworkshops
+invoice-consulting_long 0:8d93e0c47a8c 1.23 1–15may2025
+invoice-consulting_long 0:cf9dcf6da8a8 1.23 1.00
+invoice-consulting_long 0:97e47b250054 1.23 3,500.00
+invoice-consulting_long 0:5581aef375ff 0.91 market&competitiveanalysis
+invoice-consulting_long 0:957080ea09d9 0.39 researchandanalysisreport
+invoice-consulting_long 0:47102c31f226 1.25 5–20may2025
+invoice-consulting_long 0:ec6305055be9 1.25 4,800.00
+invoice-consulting_long 0:53dea97cf116 0.93 digitalroadmapdevelopment
+invoice-consulting_long 0:acf357e68297 0.41 strategyandroadmapcreation
+invoice-consulting_long 0:c947fb16eab2 1.27 15–22may2025
+invoice-consulting_long 0:017144e2271f 1.27 6.00
+invoice-consulting_long 0:be6012a47af0 1.27 220.00
+invoice-consulting_long 0:172c0a785bc7 1.27 1,320.00
+invoice-consulting_long 0:fe04037aa850 0.95 stakeholderreviewsessions
+invoice-consulting_long 0:4658a1bff292 0.43 facilitationanddocumentation
+invoice-consulting_long 0:86f73207c794 1.29 20–25may2025
+invoice-consulting_long 0:55907ef405f6 1.29 1,880.00
+invoice-consulting_long 0:f2e12ad6cc9f 0.97 presentation&finalreport
+invoice-consulting_long 0:50de6dc61b80 0.45 executivepresentationanddelivery
+invoice-consulting_long 0:55ee5fe62c33 0.01 northpointconsultingptyltd|abn12
+invoice-consulting_long 0:c843aa25b80f 0.01 page1/2
+invoice-consulting_long 1:c9046f7a37ad 0.53 description
+invoice-consulting_long 1:b28225a1247c 0.53 serviceperiod
+invoice-consulting_long 1:32e8369a9c4f 0.53 qty
+invoice-consulting_long 1:d1062d072acd 0.52 unitprice
+invoice-consulting_long 1:3ff0b4a2706b 0.54 (aud)
+invoice-consulting_long 1:cf38d95c9c6b 0.52 amount
+invoice-consulting_long 1:b344321f5471 0.72 1–10may2025
+invoice-consulting_long 1:a8994a9020c4 0.72 10.00
+invoice-consulting_long 1:4e9682fa850e 0.73 hrs
+invoice-consulting_long 1:aa92f0e23a97 0.72 250.00
+invoice-consulting_long 1:e48d9b7a2993 0.72 2,500.00
+invoice-consulting_long 1:1bcfde966d94 0.40 strategicconsultation
+invoice-consulting_long 1:fd3ca268f319 -0.12 leadershipalignmentworkshops
+invoice-consulting_long 1:8d93e0c47a8c 0.74 1–15may2025
+invoice-consulting_long 1:cf9dcf6da8a8 0.74 1.00
+invoice-consulting_long 1:97e47b250054 0.74 3,500.00
+invoice-consulting_long 1:5581aef375ff 0.42 market&competitiveanalysis
+invoice-consulting_long 1:957080ea09d9 -0.10 researchandanalysisreport
+invoice-consulting_long 1:47102c31f226 0.76 5–20may2025
+invoice-consulting_long 1:ec6305055be9 0.76 4,800.00
+invoice-consulting_long 1:53dea97cf116 0.44 digitalroadmapdevelopment
+invoice-consulting_long 1:acf357e68297 -0.08 strategyandroadmapcreation
+invoice-consulting_long 1:c947fb16eab2 0.78 15–22may2025
+invoice-consulting_long 1:017144e2271f 0.78 6.00
+invoice-consulting_long 1:be6012a47af0 0.78 220.00
+invoice-consulting_long 1:172c0a785bc7 0.78 1,320.00
+invoice-consulting_long 1:fe04037aa850 0.46 stakeholderreviewsessions
+invoice-consulting_long 1:4658a1bff292 -0.06 facilitationanddocumentation
+invoice-consulting_long 1:86f73207c794 0.80 20–25may2025
+invoice-consulting_long 1:55907ef405f6 0.80 1,880.00
+invoice-consulting_long 1:f2e12ad6cc9f 0.48 presentation&finalreport
+invoice-consulting_long 1:50de6dc61b80 -0.04 executivepresentationanddelivery
+invoice-consulting_long 1:d6577e95efba 0.02 subtotal
+invoice-consulting_long 1:6311b1798398 0.46 14,000.00
+invoice-consulting_long 1:e370855bde0c 0.02 gst(10%)
+invoice-consulting_long 1:b87e26fb8fac 0.46 1,400.00
+invoice-consulting_long 1:713a1893d967 -0.64 totaldue(aud)
+invoice-consulting_long 1:d4464a725927 0.33 15,400.00
+invoice-consulting_long 1:13000a5d442c 0.59 paymentinformation
+invoice-consulting_long 1:944d398aea60 1.24 bankname:
+invoice-consulting_long 1:97fa113746b9 1.24 examplebank
+invoice-consulting_long 1:0ecb5847ffa7 1.24 accountname:
+invoice-consulting_long 1:b5dd15368c26 1.24 northpointconsultingptyltd
+invoice-consulting_long 1:6bbca23a71e6 1.24 bsb:
+invoice-consulting_long 1:83a417f0862b 1.24 123-456
+invoice-consulting_long 1:6b4894c28363 1.24 accountnumber:
+invoice-consulting_long 1:ef797c8118f0 1.24 12345678
+invoice-consulting_long 1:c608665436db 1.24 reference:
+invoice-consulting_long 1:7d66eb3c1070 1.24 inv-2025-0478
+invoice-consulting_long 1:010450dee1ff 1.25 pleaseensuretheinvoicenumberisin
+invoice-consulting_long 1:ab5aa97074c4 0.59 notes
+invoice-consulting_long 1:7c6ab37d83ef 0.55 thankyouforyourbusiness.
+invoice-consulting_long 1:4a699e29a3bb 1.06 ifyouhaveanyquestionsregardingth
+invoice-consulting_long 1:c766251af1f4 1.07 contactusataccounts@northpoint.c
+invoice-consulting_long 1:3d32fa219332 1.08 +61398765432.
+invoice-consulting_long 1:a6f6e2ddab6d 1.20 paymentisduewithin30daysfromthei
+invoice-consulting_long 1:55ee5fe62c33 0.01 northpointconsultingptyltd|abn12
+invoice-consulting_long 1:1bed6052d9b3 0.01 page2/2
+invoice-luma_studio 0:ac5742bfd7c4 -9.14 &co.
+invoice-luma_studio 0:1583c0f92f86 -104.93 luma&co.studio
+invoice-luma_studio 0:b2b5b83cc26d -0.07 branding.design.digital.
+invoice-luma_studio 0:c9ed0a9b9c8d 0.02 studio3.02,theloom
+invoice-luma_studio 0:0a7d7e43c5de 0.00 14gowerstreet
+invoice-luma_studio 0:b87f5fb5bcfa -0.02 londonwc1e6bt
+invoice-luma_studio 0:2474519f77a9 -0.04 unitedkingdom
+invoice-luma_studio 0:89b5eccb38ff 0.12 +44(0)2079460832
+invoice-luma_studio 0:ea8232890494 0.07 hello@lumaandco.studio
+invoice-luma_studio 0:374d89493adc 0.03 www.lumaandco.studio
+invoice-luma_studio 0:be3e8b44676d -0.05 companyno.12578934|vatno.3694567
+invoice-luma_studio 0:52d6e3de4fa0 -10.79 invoice
+invoice-luma_studio 0:6bb089477e20 0.12 invoiceno.
+invoice-luma_studio 0:4435610d8a9f 0.19 inv-2024-0587
+invoice-luma_studio 0:8feaf8016bab 0.12 issuedate
+invoice-luma_studio 0:8d36ed29c317 0.19 20may2024
+invoice-luma_studio 0:ac10f8c16320 0.12 duedate
+invoice-luma_studio 0:9c4e61874f0f 0.19 19june2024
+invoice-luma_studio 0:fb854bac39c8 0.12 paymentterms
+invoice-luma_studio 0:ad75b9983242 0.19 30days
+invoice-luma_studio 0:466e5b9cd57f 0.12 currency
+invoice-luma_studio 0:54f8e1b3fe44 0.19 gbp
+invoice-luma_studio 0:aeba3a7b3598 0.04 billto
+invoice-luma_studio 0:212254716728 -0.06 northfieldconsultingltd
+invoice-luma_studio 0:bcb7024f74fe -0.10 attn:sarahmitchell
+invoice-luma_studio 0:13dd937d2fe6 -0.14 21jubileeway
+invoice-luma_studio 0:f9bab6a0b45b -0.18 londonse13ss
+invoice-luma_studio 0:725a8f5062e7 0.04 shipto
+invoice-luma_studio 0:254289ce0191 -0.10 thefoundry,2ndfloor
+invoice-luma_studio 0:84db1f48facb -0.14 17-19greatsuffolkstreet
+invoice-luma_studio 0:e7a5f0717d99 -0.18 londonse10ns
+invoice-luma_studio 0:c9046f7a37ad 0.04 description
+invoice-luma_studio 0:32e8369a9c4f 0.04 qty
+invoice-luma_studio 0:d1062d072acd 0.04 unitprice
+invoice-luma_studio 0:7c512b48ba8a 0.04 vat
+invoice-luma_studio 0:cf38d95c9c6b 0.04 amount
+invoice-luma_studio 0:7b420577e50f 0.07 £1,200.00
+invoice-luma_studio 0:dc934fe30a94 0.07 20%
+invoice-luma_studio 0:d8f4e3a46d2d 0.01 brandstrategyworkshop
+invoice-luma_studio 0:be624d692600 -0.56 discoverysession,research&brand
+invoice-luma_studio 0:40ca2aad940f -0.55 positioning.
+invoice-luma_studio 0:07bcffc86e95 0.08 £2,650.00
+invoice-luma_studio 0:e302dd04d528 0.02 visualidentitydesign
+invoice-luma_studio 0:40e412f627fb -0.55 logosuite,colourpalette,typograp
+invoice-luma_studio 0:9c17d116fe08 -0.54 &guidelines.
+invoice-luma_studio 0:a20d66947acc 0.08 £3,200.00
+invoice-luma_studio 0:b25ac9cd66bd 0.03 websitedesign(upto8pages)
+invoice-luma_studio 0:dab758788e6f -0.19 ux/uidesignfordesktopandmobile.
+invoice-luma_studio 0:f916278cb74c 0.09 £850.00
+invoice-luma_studio 0:4a1359f78476 0.04 copywriting
+invoice-luma_studio 0:69afea703455 -0.18 websitecopy&keymessaging.
+invoice-luma_studio 0:07b417914317 0.10 £600.00
+invoice-luma_studio 0:340455fbac25 0.05 projectmanagement
+invoice-luma_studio 0:72534f9863ad -0.52 planning,coordination&client
+invoice-luma_studio 0:4df00f9a2b20 -0.52 liaison.
+invoice-luma_studio 0:d6577e95efba 0.11 subtotal
+invoice-luma_studio 0:b504edd8ea39 0.11 £8,500.00
+invoice-luma_studio 0:a52611c9261b 0.10 vat(20%)
+invoice-luma_studio 0:a894ec54e7f3 0.10 £1,700.00
+invoice-luma_studio 0:57a66d21eb1b -1.14 totaldue
+invoice-luma_studio 0:b4cb2a644826 0.29 £10,200.00
+invoice-luma_studio 0:ab5aa97074c4 -0.07 notes
+invoice-luma_studio 0:7c6ab37d83ef -0.39 thankyouforyourbusiness.
+invoice-luma_studio 0:3d717dfb25d8 -0.43 ifyouhaveanyquestionsregarding
+invoice-luma_studio 0:479a74142336 -0.48 thisinvoice,pleasegetintouch.
+invoice-luma_studio 0:1960744391ed -0.52 allworkremainstheintellectualpro
+invoice-luma_studio 0:eeb53247f32c -0.56 ofluma&co.studiountilpayment
+invoice-luma_studio 0:9eef22d7d34e -0.61 hasbeenreceivedinfull.
+invoice-luma_studio 0:3c7ade679fdf -0.07 paymentdetails
+invoice-luma_studio 0:b1819c9cd5bf -0.34 pleasemakepaymentbybanktransfert
+invoice-luma_studio 0:8c1e4a24f6a8 -0.10 luma&co.studioltd
+invoice-luma_studio 0:4381dc2ab142 -0.14 bank
+invoice-luma_studio 0:447827e26127 -0.14 starlingbank
+invoice-luma_studio 0:10aeacde20ff -0.14 sortcode
+invoice-luma_studio 0:c14b2f2f32e4 -0.14 60-83-71
+invoice-luma_studio 0:f5bd52edd4c2 -0.13 accountno.
+invoice-luma_studio 0:4e20613ec3a6 -0.13 98765432
+invoice-luma_studio 0:d53cd2cae33d -0.13 iban
+invoice-luma_studio 0:279d55d978a1 -0.13 gb36srlg60837198765432
+invoice-luma_studio 0:e398486c0acf -0.13 bic
+invoice-luma_studio 0:ddc998160ae0 -0.13 srlggb2l
+invoice-luma_studio 0:543a2e86433f 0.24 thankyouforchoosingluma&co.studi
+invoice-luma_studio 0:7111b3fcbf69 -0.07 paymentisdueby19june2024.
+invoice-luma_studio 0:7b14b8d2c5c4 0.01 page1of1
+invoice-luma_studio_long 0:ac5742bfd7c4 -9.14 &co.
+invoice-luma_studio_long 0:1583c0f92f86 -104.93 luma&co.studio
+invoice-luma_studio_long 0:b2b5b83cc26d -0.07 branding.design.digital.
+invoice-luma_studio_long 0:c9ed0a9b9c8d 0.02 studio3.02,theloom
+invoice-luma_studio_long 0:0a7d7e43c5de 0.00 14gowerstreet
+invoice-luma_studio_long 0:b87f5fb5bcfa -0.02 londonwc1e6bt
+invoice-luma_studio_long 0:2474519f77a9 -0.04 unitedkingdom
+invoice-luma_studio_long 0:89b5eccb38ff 0.12 +44(0)2079460832
+invoice-luma_studio_long 0:ea8232890494 0.07 hello@lumaandco.studio
+invoice-luma_studio_long 0:374d89493adc 0.03 www.lumaandco.studio
+invoice-luma_studio_long 0:be3e8b44676d -0.05 companyno.12578934|vatno.3694567
+invoice-luma_studio_long 0:52d6e3de4fa0 -10.79 invoice
+invoice-luma_studio_long 0:6bb089477e20 0.12 invoiceno.
+invoice-luma_studio_long 0:4435610d8a9f 0.19 inv-2024-0587
+invoice-luma_studio_long 0:8feaf8016bab 0.12 issuedate
+invoice-luma_studio_long 0:8d36ed29c317 0.19 20may2024
+invoice-luma_studio_long 0:ac10f8c16320 0.12 duedate
+invoice-luma_studio_long 0:9c4e61874f0f 0.19 19june2024
+invoice-luma_studio_long 0:fb854bac39c8 0.12 paymentterms
+invoice-luma_studio_long 0:ad75b9983242 0.19 30days
+invoice-luma_studio_long 0:466e5b9cd57f 0.12 currency
+invoice-luma_studio_long 0:54f8e1b3fe44 0.19 gbp
+invoice-luma_studio_long 0:aeba3a7b3598 0.04 billto
+invoice-luma_studio_long 0:212254716728 -0.06 northfieldconsultingltd
+invoice-luma_studio_long 0:bcb7024f74fe -0.10 attn:sarahmitchell
+invoice-luma_studio_long 0:13dd937d2fe6 -0.14 21jubileeway
+invoice-luma_studio_long 0:f9bab6a0b45b -0.18 londonse13ss
+invoice-luma_studio_long 0:725a8f5062e7 0.04 shipto
+invoice-luma_studio_long 0:254289ce0191 -0.10 thefoundry,2ndfloor
+invoice-luma_studio_long 0:84db1f48facb -0.14 17-19greatsuffolkstreet
+invoice-luma_studio_long 0:e7a5f0717d99 -0.18 londonse10ns
+invoice-luma_studio_long 0:c9046f7a37ad 0.04 description
+invoice-luma_studio_long 0:32e8369a9c4f 0.04 qty
+invoice-luma_studio_long 0:d1062d072acd 0.04 unitprice
+invoice-luma_studio_long 0:7c512b48ba8a 0.04 vat
+invoice-luma_studio_long 0:cf38d95c9c6b 0.04 amount
+invoice-luma_studio_long 0:7b420577e50f 0.07 £1,200.00
+invoice-luma_studio_long 0:dc934fe30a94 0.07 20%
+invoice-luma_studio_long 0:d8f4e3a46d2d 0.01 brandstrategyworkshop
+invoice-luma_studio_long 0:be624d692600 -0.56 discoverysession,research&brand
+invoice-luma_studio_long 0:d6def76ba3d1 -0.55 positioning.phase1.
+invoice-luma_studio_long 0:07bcffc86e95 0.08 £2,650.00
+invoice-luma_studio_long 0:e302dd04d528 0.02 visualidentitydesign
+invoice-luma_studio_long 0:40e412f627fb -0.55 logosuite,colourpalette,typograp
+invoice-luma_studio_long 0:270a9e26d2e0 -0.54 &guidelines.phase1.
+invoice-luma_studio_long 0:a20d66947acc 0.09 £3,200.00
+invoice-luma_studio_long 0:b25ac9cd66bd 0.03 websitedesign(upto8pages)
+invoice-luma_studio_long 0:dab758788e6f -0.54 ux/uidesignfordesktopandmobile.
+invoice-luma_studio_long 0:bb1a79cda1ae -0.53 phase1.
+invoice-luma_studio_long 0:f916278cb74c 0.10 £850.00
+invoice-luma_studio_long 0:4a1359f78476 0.04 copywriting
+invoice-luma_studio_long 0:e6a181326fc9 -0.53 websitecopy&keymessaging.phase
+invoice-luma_studio_long 0:07b417914317 0.11 £600.00
+invoice-luma_studio_long 0:340455fbac25 0.05 projectmanagement
+invoice-luma_studio_long 0:72534f9863ad -0.52 planning,coordination&client
+invoice-luma_studio_long 0:8f09113ca513 -0.51 liaison.phase1.
+invoice-luma_studio_long 0:532160121f5f -0.50 positioning.phase2.
+invoice-luma_studio_long 0:82ed33a90b4e -0.49 &guidelines.phase2.
+invoice-luma_studio_long 0:81deaef85fed -0.48 phase2.
+invoice-luma_studio_long 0:cc6f3d44f8c5 0.01 page1of3
+invoice-luma_studio_long 1:c9046f7a37ad 0.18 description
+invoice-luma_studio_long 1:32e8369a9c4f 0.18 qty
+invoice-luma_studio_long 1:d1062d072acd 0.18 unitprice
+invoice-luma_studio_long 1:7c512b48ba8a 0.18 vat
+invoice-luma_studio_long 1:cf38d95c9c6b 0.18 amount
+invoice-luma_studio_long 1:f916278cb74c 0.21 £850.00
+invoice-luma_studio_long 1:dc934fe30a94 0.21 20%
+invoice-luma_studio_long 1:4a1359f78476 0.15 copywriting
+invoice-luma_studio_long 1:e6a181326fc9 -0.41 websitecopy&keymessaging.phase
+invoice-luma_studio_long 1:07b417914317 0.22 £600.00
+invoice-luma_studio_long 1:340455fbac25 0.16 projectmanagement
+invoice-luma_studio_long 1:72534f9863ad -0.40 planning,coordination&client
+invoice-luma_studio_long 1:ad05c4b80bfe -0.40 liaison.phase2.
+invoice-luma_studio_long 1:7b420577e50f 0.23 £1,200.00
+invoice-luma_studio_long 1:d8f4e3a46d2d 0.17 brandstrategyworkshop
+invoice-luma_studio_long 1:be624d692600 -0.39 discoverysession,research&brand
+invoice-luma_studio_long 1:b95a82d5055c -0.39 positioning.phase3.
+invoice-luma_studio_long 1:07bcffc86e95 0.24 £2,650.00
+invoice-luma_studio_long 1:e302dd04d528 0.18 visualidentitydesign
+invoice-luma_studio_long 1:40e412f627fb -0.38 logosuite,colourpalette,typograp
+invoice-luma_studio_long 1:708bc0c2e87c -0.38 &guidelines.phase3.
+invoice-luma_studio_long 1:a20d66947acc 0.25 £3,200.00
+invoice-luma_studio_long 1:b25ac9cd66bd 0.19 websitedesign(upto8pages)
+invoice-luma_studio_long 1:dab758788e6f -0.37 ux/uidesignfordesktopandmobile.
+invoice-luma_studio_long 1:155500f32e83 -0.37 phase3.
+invoice-luma_studio_long 1:82f971bee7f8 -0.35 liaison.phase3.
+invoice-luma_studio_long 1:7affbd48dd15 -0.34 positioning.phase4.
+invoice-luma_studio_long 1:e489d439e723 -0.33 &guidelines.phase4.
+invoice-luma_studio_long 1:7024991be198 -0.32 phase4.
+invoice-luma_studio_long 1:bbcc6ebb140f -0.30 liaison.phase4.
+invoice-luma_studio_long 1:d6577e95efba 0.33 subtotal
+invoice-luma_studio_long 1:b504edd8ea39 0.33 £8,500.00
+invoice-luma_studio_long 1:a52611c9261b 0.32 vat(20%)
+invoice-luma_studio_long 1:a894ec54e7f3 0.32 £1,700.00
+invoice-luma_studio_long 1:57a66d21eb1b -0.92 totaldue
+invoice-luma_studio_long 1:b4cb2a644826 0.51 £10,200.00
+invoice-luma_studio_long 1:60fd7eb93483 0.01 page2of3
+invoice-luma_studio_long 2:ab5aa97074c4 -11.83 notes
+invoice-luma_studio_long 2:7c6ab37d83ef -12.15 thankyouforyourbusiness.
+invoice-luma_studio_long 2:3d717dfb25d8 -12.20 ifyouhaveanyquestionsregarding
+invoice-luma_studio_long 2:479a74142336 -12.24 thisinvoice,pleasegetintouch.
+invoice-luma_studio_long 2:1960744391ed -12.28 allworkremainstheintellectualpro
+invoice-luma_studio_long 2:eeb53247f32c -12.33 ofluma&co.studiountilpayment
+invoice-luma_studio_long 2:9eef22d7d34e -12.37 hasbeenreceivedinfull.
+invoice-luma_studio_long 2:3c7ade679fdf -11.83 paymentdetails
+invoice-luma_studio_long 2:b1819c9cd5bf -12.10 pleasemakepaymentbybanktransfert
+invoice-luma_studio_long 2:8c1e4a24f6a8 -11.86 luma&co.studioltd
+invoice-luma_studio_long 2:4381dc2ab142 -11.90 bank
+invoice-luma_studio_long 2:447827e26127 -11.90 starlingbank
+invoice-luma_studio_long 2:10aeacde20ff -11.90 sortcode
+invoice-luma_studio_long 2:c14b2f2f32e4 -11.90 60-83-71
+invoice-luma_studio_long 2:f5bd52edd4c2 -11.90 accountno.
+invoice-luma_studio_long 2:4e20613ec3a6 -11.90 98765432
+invoice-luma_studio_long 2:d53cd2cae33d -11.89 iban
+invoice-luma_studio_long 2:279d55d978a1 -11.89 gb36srlg60837198765432
+invoice-luma_studio_long 2:e398486c0acf -11.89 bic
+invoice-luma_studio_long 2:ddc998160ae0 -11.89 srlggb2l
+invoice-luma_studio_long 2:543a2e86433f 0.23 thankyouforchoosingluma&co.studi
+invoice-luma_studio_long 2:7111b3fcbf69 -0.08 paymentisdueby19june2024.
+invoice-luma_studio_long 2:bc6d215b63ee 0.01 page3of3
+invoice-merchant 0:0dffa3b5d008 -0.01 coastline
+invoice-merchant 0:52d6e3de4fa0 0.08 invoice
+invoice-merchant 0:9422e2aeb800 0.08 coastlinecommerceinc.
+invoice-merchant 0:8bb83c0c3efb 0.10 150elginstreet,8thfloor
+invoice-merchant 0:cf0df3462e70 0.09 ottawa,onk2p1l4
+invoice-merchant 0:408c7c5887a0 0.09 canada
+invoice-merchant 0:0d9b94d29fc9 0.01 www.coastline.example
+invoice-merchant 0:76957649b8a8 -0.02 billing@coastline.example
+invoice-merchant 0:0b44bf19dd44 -0.05 +1613-555-0142
+invoice-merchant 0:884004f21362 -0.03 vatid:ca8139020285rt0001
+invoice-merchant 0:6282391a4cc1 0.23 invoicenumber:
+invoice-merchant 0:a6e01b979f55 0.23 inv-2026-000789
+invoice-merchant 0:8d05f5d55191 0.20 invoicedate:
+invoice-merchant 0:dc9696f61d36 0.20 27may2026
+invoice-merchant 0:0e0fb0fc0939 0.18 duedate:
+invoice-merchant 0:93059e9a1c07 0.18 26june2026
+invoice-merchant 0:d39366fa1423 0.16 billingperiod:
+invoice-merchant 0:ec215645f61e 0.16 01may2026–31may2026
+invoice-merchant 0:18e2cca1098e 0.14 paymentterms:
+invoice-merchant 0:c6af9fc633ee 0.14 net30days
+invoice-merchant 0:967e0b6ca4b9 0.12 currency:
+invoice-merchant 0:d60fbd8718ec 0.12 usd
+invoice-merchant 0:aeba3a7b3598 -0.03 billto
+invoice-merchant 0:45fe04dbae24 -0.07 brightfutureltd.
+invoice-merchant 0:65405af34bf9 -0.08 45kingstreet
+invoice-merchant 0:1f8da9c4e269 -0.07 manchester,m24wu
+invoice-merchant 0:2474519f77a9 -0.06 unitedkingdom
+invoice-merchant 0:c7a9cfdd1c55 -0.07 vatid:gb987654321
+invoice-merchant 0:725a8f5062e7 -0.03 shipto
+invoice-merchant 0:5895c7cd8d5b -0.08 warehouse7
+invoice-merchant 0:caf76743df2d -0.07 northindustrialestate
+invoice-merchant 0:c9046f7a37ad 0.16 description
+invoice-merchant 0:169240d91658 0.16 plan/service
+invoice-merchant 0:32e8369a9c4f 0.16 qty
+invoice-merchant 0:e2a9c81da5f6 0.16 unitprice(usd)
+invoice-merchant 0:5dfb966b2bcf 0.16 amount(usd)
+invoice-merchant 0:fe6b34582738 0.27 coastlineadvanced
+invoice-merchant 0:46f3b0cea3bc 0.23 monthlysubscription
+invoice-merchant 0:71738eb7126d 0.24 advancedplan
+invoice-merchant 0:7b969356782c 0.24 399.00
+invoice-merchant 0:0a9acaea6477 0.26 paymentprocessing
+invoice-merchant 0:91809142f08f 0.21 transactionfee
+invoice-merchant 0:358a7392afe6 0.22 asperusage
+invoice-merchant 0:561b2814d3c0 0.22 0.00
+invoice-merchant 0:3f9fea8c0fc5 0.24 additionalstaffaccounts
+invoice-merchant 0:fbf7948d004d 0.20 staffaccount
+invoice-merchant 0:7b476727faf3 0.21 additional
+invoice-merchant 0:0856fec27d23 0.21 15.00
+invoice-merchant 0:bc7a1ad05efc 0.21 45.00
+invoice-merchant 0:0036ebf2cfb2 0.23 prioritysupport
+invoice-merchant 0:6bfa3f8e9308 0.18 24/7support
+invoice-merchant 0:7f0f70e643bc 0.19 included
+invoice-merchant 0:3c7ade679fdf 0.53 paymentdetails
+invoice-merchant 0:944d398aea60 0.65 bankname:
+invoice-merchant 0:d6c3cea2e943 0.65 harbourbankofcanada
+invoice-merchant 0:0ecb5847ffa7 0.65 accountname:
+invoice-merchant 0:6b4894c28363 0.66 accountnumber:
+invoice-merchant 0:ca2ea6319cc8 0.66 1001-4267-153
+invoice-merchant 0:555043320c0c 0.66 swiftcode:
+invoice-merchant 0:922f5f70c123 0.66 hrbrcat2
+invoice-merchant 0:f1b1597830d6 0.66 institutionnumber:
+invoice-merchant 0:88c0413bfef1 0.66 003
+invoice-merchant 0:e47c9313aced 0.67 transitnumber:
+invoice-merchant 0:fec334e6bf8c 0.67 00016
+invoice-merchant 0:4f657c67e41a 0.67 accounttype:
+invoice-merchant 0:b8b8acdf702e 0.67 cadaccount
+invoice-merchant 0:fa0fbe194b51 0.68 remittanceemail:
+invoice-merchant 0:c608665436db 0.68 reference:
+invoice-merchant 0:1b0fdc20ced4 0.61 pleaseincludetheinvoicenumber
+invoice-merchant 0:cfdf1faf410b 0.59 inyourpaymentreference.
+invoice-merchant 0:d6577e95efba 0.54 subtotal
+invoice-merchant 0:30d16b02fd3e 0.61 444.00
+invoice-merchant 0:2ee4d3de4ddf 0.56 tax(0%)
+invoice-merchant 0:57a66d21eb1b 0.69 totaldue
+invoice-merchant 0:a4dfc8dd0535 0.76 usd444.00
+invoice-merchant 0:b0553f008513 0.87 paymentdueby
+invoice-merchant 0:a416c258bdd9 0.30 thankyouforchoosingcoastline.
+invoice-merchant 0:aaa4b5e2074f 0.27 ifyouhaveanyquestionsaboutthisin
+invoice-metered 0:8a80987c409a 0.23 northwindcloud
+invoice-metered 0:52d6e3de4fa0 0.20 invoice
+invoice-metered 0:41305d2c2d3b -0.19 northwindcloudservicesltd.
+invoice-metered 0:c3f5f4cc9def -0.18 120riversideway
+invoice-metered 0:5be08c6bee4c -0.19 bristol,bs16qt
+invoice-metered 0:2474519f77a9 -0.20 unitedkingdom
+invoice-metered 0:ec6d474a1bfc -0.21 vatid:
+invoice-metered 0:b03c22d79b17 -0.21 gb412883027
+invoice-metered 0:83e16ec72a3f -0.23 phone:
+invoice-metered 0:bff9aeb5400b -0.23 +44(0)1174962280
+invoice-metered 0:439961205ae6 -0.25 email:
+invoice-metered 0:228e0a39fe6e -0.25 billing@northwind.example
+invoice-metered 0:294ed2cfe15e -0.26 website:https://northwind.exampl
+invoice-metered 0:6282391a4cc1 -0.08 invoicenumber:
+invoice-metered 0:0edf022238f1 -0.07 inv-2026-00041882
+invoice-metered 0:8d05f5d55191 -0.05 invoicedate:
+invoice-metered 0:52c8b7a9ee5f -0.04 31july2026
+invoice-metered 0:0e0fb0fc0939 -0.05 duedate:
+invoice-metered 0:6a077b4f161e -0.04 30august2026
+invoice-metered 0:aa1e9c8092ab -0.05 billperiod:
+invoice-metered 0:3e380076ca84 -0.04 01jul2026–31jul2026
+invoice-metered 0:18e2cca1098e -0.04 paymentterms:
+invoice-metered 0:c6af9fc633ee -0.04 net30days
+invoice-metered 0:967e0b6ca4b9 -0.04 currency:
+invoice-metered 0:54f8e1b3fe44 -0.04 gbp
+invoice-metered 0:aeba3a7b3598 0.01 billto
+invoice-metered 0:45fe04dbae24 -0.05 brightfutureltd.
+invoice-metered 0:65405af34bf9 -0.04 45kingstreet
+invoice-metered 0:1f8da9c4e269 -0.08 manchester,m24wu
+invoice-metered 0:c7a9cfdd1c55 -0.16 vatid:gb987654321
+invoice-metered 0:725a8f5062e7 0.01 shipto
+invoice-metered 0:5895c7cd8d5b -0.04 warehouse7
+invoice-metered 0:caf76743df2d -0.08 northindustrialestate
+invoice-metered 0:c9046f7a37ad 0.28 description
+invoice-metered 0:9df6b026a8c6 0.28 service
+invoice-metered 0:32e8369a9c4f 0.28 qty
+invoice-metered 0:d1062d072acd 0.28 unitprice
+invoice-metered 0:cf38d95c9c6b 0.28 amount
+invoice-metered 0:f13d9c7c6f89 0.49 computeinstances
+invoice-metered 0:d08426b31521 0.46 on-demandusage
+invoice-metered 0:05313a23f706 0.50 london(eu-west)
+invoice-metered 0:6e477a22f840 0.50 744hrs
+invoice-metered 0:352967434b63 0.50 gbp0.0710
+invoice-metered 0:eec5f520909e 0.50 gbp52.82
+invoice-metered 0:721ffa554e56 0.48 objectstorage
+invoice-metered 0:df2f05798b9e 0.45 storedvolume
+invoice-metered 0:41542149a8a5 0.48 480gb
+invoice-metered 0:2242bd7aa8ce 0.48 gbp0.0215
+invoice-metered 0:7c6be041f9c2 0.48 gbp10.32
+invoice-metered 0:8152fd217e12 0.46 manageddatabase
+invoice-metered 0:3c8556c4aa26 0.43 primaryandreplica
+invoice-metered 0:76afc71f5b3e 0.47 gbp0.1650
+invoice-metered 0:baad0db43ed6 0.47 gbp122.76
+invoice-metered 0:444858f5bf18 0.45 egresstraffic
+invoice-metered 0:8b72bb875a83 0.42 datatransferout
+invoice-metered 0:8001c2743965 0.45 global
+invoice-metered 0:847eb4cbbb42 0.45 310gb
+invoice-metered 0:d651e46704f7 0.45 gbp0.0900
+invoice-metered 0:4ecaa7313375 0.45 gbp27.90
+invoice-metered 0:efa8771baad9 0.69 supportplan
+invoice-metered 0:9e81cd6e653a 0.65 standardresponse
+invoice-metered 0:a0443240c5ed 0.69 gbp0.91
+invoice-metered 0:3c7ade679fdf 0.30 paymentdetails
+invoice-metered 0:0ecb5847ffa7 0.29 accountname:
+invoice-metered 0:944d398aea60 0.27 bankname:
+invoice-metered 0:062433da3c2a 0.27 riverbankplc
+invoice-metered 0:6b4894c28363 0.25 accountnumber:
+invoice-metered 0:7c068e1eded4 0.25 60415523
+invoice-metered 0:4bf9e1b71d6b 0.23 sortcode:
+invoice-metered 0:0309d81ea4af 0.23 20-41-08
+invoice-metered 0:1f619f9689b2 0.21 iban:
+invoice-metered 0:6c4b0e61038b 0.21 gb29rivb20410860415523
+invoice-metered 0:4f657c67e41a 0.18 accounttype:
+invoice-metered 0:3af279547725 0.18 businesscurrent
+invoice-metered 0:fa0fbe194b51 0.16 remittanceemail:
+invoice-metered 0:d6577e95efba 0.88 subtotal
+invoice-metered 0:79fabcfaa819 0.88 gbp214.71
+invoice-metered 0:a52611c9261b 0.85 vat(20%)
+invoice-metered 0:e50d8a0ea599 0.85 gbp42.94
+invoice-metered 0:57a66d21eb1b 0.72 totaldue
+invoice-metered 0:f207312dff2f 0.65 gbp257.65
+invoice-metered 0:b0553f008513 0.81 paymentdueby
+invoice-metered 0:e60e7ef06ccc -0.01 thankyouforrunningonnorthwindclo
+invoice-metered 0:34ea2ec3fe72 -0.01 forbillingandaccountsupport,visi
+invoice-metered 0:e28672d64882 -0.04 northwindcloudservicesltd.isasub
+invoice-metered 0:985e43c2de34 -0.04 120riversideway,bristol,bs16qt,u
+invoice-metered 0:7b14b8d2c5c4 -0.04 page1of1
+invoice-modern 0:52d6e3de4fa0 0.00 invoice
+invoice-modern 0:30d85a94548c 0.30 invoicegc-2026-041issued02apr202
+invoice-modern 0:75857a458999 0.20 from
+invoice-modern 0:c26c22b94338 0.18 graphcomposestudio
+invoice-modern 0:2a08ce5567fb -0.10 18layoutstreet
+invoice-modern 0:fbeea547d99e -0.12 london,uk
+invoice-modern 0:faf1569a98e9 -0.15 ec1a4gc
+invoice-modern 0:befc6e9b5c24 -0.17 billing@graphcompose.dev
+invoice-modern 0:89674e6f130e -0.20 +442055551000
+invoice-modern 0:a2b2e7d2906f -0.22 taxidgb-99887766
+invoice-modern 0:aeba3a7b3598 0.20 billto
+invoice-modern 0:f890faef907f 0.18 northwindsystems
+invoice-modern 0:1b405eb431ca -0.10 attn:financeteam
+invoice-modern 0:91eefd794f79 -0.12 410marketavenue
+invoice-modern 0:00a97da4e243 -0.15 manchester,uk
+invoice-modern 0:62fcfa8745fc -0.17 ap@northwind.example
+invoice-modern 0:2081a41a7764 -0.20 +441615552200
+invoice-modern 0:5a6e7135d21b -0.22 taxidnw-2026-01
+invoice-modern 0:c9046f7a37ad 0.10 description
+invoice-modern 0:32e8369a9c4f 0.10 qty
+invoice-modern 0:385cfdbc00ec 0.10 unit
+invoice-modern 0:cf38d95c9c6b 0.10 amount
+invoice-modern 0:987c6297d0a9 0.32 discoveryworkshop
+invoice-modern 0:532674c6eb89 0.32 gbp1,450
+invoice-modern 0:08ec6deb1c40 0.32 templatearchitecture2
+invoice-modern 0:d2e67c4b1cca 0.32 gbp980
+invoice-modern 0:d6cdf6a05754 0.32 gbp1,960
+invoice-modern 0:fe13f8ee4f99 0.32 renderqa
+invoice-modern 0:7e7398cbff7c 0.32 gbp320
+invoice-modern 0:e23164e940c7 0.32 gbp960
+invoice-modern 0:6047df51175c 0.32 developerenablement1
+invoice-modern 0:c2ad01ea64ae 0.32 gbp780
+invoice-modern 0:d6577e95efba 0.32 subtotal
+invoice-modern 0:50cae0510231 0.32 gbp5,150
+invoice-modern 0:a52611c9261b 0.32 vat(20%)
+invoice-modern 0:d7f4425b8b16 0.32 gbp1,030
+invoice-modern 0:11239872d178 0.33 total
+invoice-modern 0:45a5ad5ad430 0.33 gbp6,180
+invoice-modern 0:ab5aa97074c4 0.45 notes
+invoice-modern 0:b78eb53cbd11 0.52 •pleaseincludetheinvoicenumberon
+invoice-modern 0:8c8fd62f15a7 0.52 yourremittanceadvice.
+invoice-modern 0:0c98130c526f 0.52 •allworkwasdeliveredasagreed
+invoice-modern 0:2e9787ed79bf 0.52 duringtheaprilimplementation
+invoice-modern 0:e41212011d98 0.52 window.
+invoice-modern 0:fb854bac39c8 0.45 paymentterms
+invoice-modern 0:24274f39b50b 0.52 •paymentduewithin14calendardays.
+invoice-modern 0:c438440ba377 0.52 •banktransferpreferred;contact
+invoice-modern 0:434cc906ae90 0.52 billing@graphcompose.devfor
+invoice-modern 0:8822ea375315 0.52 remittancedetails.
+invoice-modern 0:1a7b5c840e25 0.52 •latepaymentsmaydelayadditional
+invoice-modern 0:1631a06d245f 0.52 templatecustomizationwork.
+invoice-modern 0:e3337beaa171 0.50 thankyouforchoosinggraphcomposef
+invoice-modern_long 0:52d6e3de4fa0 0.00 invoice
+invoice-modern_long 0:61a964e78950 0.30 invoicegc-2026-042issued04may202
+invoice-modern_long 0:62a2fed3d6e0 0.30 pending
+invoice-modern_long 0:75857a458999 0.20 from
+invoice-modern_long 0:c26c22b94338 0.18 graphcomposestudio
+invoice-modern_long 0:2a08ce5567fb -0.10 18layoutstreet
+invoice-modern_long 0:fbeea547d99e -0.12 london,uk
+invoice-modern_long 0:faf1569a98e9 -0.15 ec1a4gc
+invoice-modern_long 0:befc6e9b5c24 -0.17 billing@graphcompose.dev
+invoice-modern_long 0:89674e6f130e -0.20 +442055551000
+invoice-modern_long 0:aeba3a7b3598 0.20 billto
+invoice-modern_long 0:f890faef907f 0.18 northwindsystems
+invoice-modern_long 0:1b405eb431ca -0.10 attn:financeteam
+invoice-modern_long 0:91eefd794f79 -0.12 410marketavenue
+invoice-modern_long 0:00a97da4e243 -0.15 manchester,uk
+invoice-modern_long 0:62fcfa8745fc -0.17 ap@northwind.example
+invoice-modern_long 0:2081a41a7764 -0.20 +441615552200
+invoice-modern_long 0:c9046f7a37ad 0.13 description
+invoice-modern_long 0:32e8369a9c4f 0.13 qty
+invoice-modern_long 0:385cfdbc00ec 0.13 unit
+invoice-modern_long 0:cf38d95c9c6b 0.13 amount
+invoice-modern_long 0:aa29f2f4fcb4 0.35 discoveryworkshop—sprint1
+invoice-modern_long 0:ce4081aef7a1 0.35 gbp180
+invoice-modern_long 0:9c9a412f0a45 0.35 designsystemaudit—sprint1
+invoice-modern_long 0:7be809cb1590 0.35 gbp217
+invoice-modern_long 0:378b363c8601 0.35 gbp434
+invoice-modern_long 0:5257532a7b5d 0.35 templatearchitecture—sprint1
+invoice-modern_long 0:c467cca4e45a 0.35 gbp254
+invoice-modern_long 0:4a4a218b012a 0.35 gbp762
+invoice-modern_long 0:58a1caacbf7e 0.35 layoutenginetuning—sprint1
+invoice-modern_long 0:dde0144b97b7 0.35 gbp291
+invoice-modern_long 0:457a71636ad9 0.35 gbp1164
+invoice-modern_long 0:6fcf7d6dd606 0.35 renderqapass—sprint1
+invoice-modern_long 0:dda88f5786f5 0.35 gbp328
+invoice-modern_long 0:ee18ad3bbb42 0.35 accessibilityreview—sprint1
+invoice-modern_long 0:e681b4843ffb 0.35 gbp365
+invoice-modern_long 0:1859c20b35dd 0.35 gbp730
+invoice-modern_long 0:c12c14945fcd 0.35 fontpipelinesetup—sprint1
+invoice-modern_long 0:9033a33f66e7 0.35 gbp402
+invoice-modern_long 0:837d48c1ff40 0.35 gbp1206
+invoice-modern_long 0:af6cba848dc0 0.35 chartintegration—sprint1
+invoice-modern_long 0:6109a2c30104 0.35 gbp439
+invoice-modern_long 0:87e9fcb6151d 0.35 gbp1756
+invoice-modern_long 0:a6bee1ec5e35 0.35 datamapping—sprint1
+invoice-modern_long 0:df1f9d4443d8 0.35 gbp476
+invoice-modern_long 0:052c9f49a4b8 0.35 paginationhardening—sprint1
+invoice-modern_long 0:9fba6332e489 0.35 gbp513
+invoice-modern_long 0:6f805c9f78c3 0.35 gbp1026
+invoice-modern_long 0:b54b7f77d86c 0.35 visualregressionwiring—sprint13
+invoice-modern_long 0:dc3d212d6b32 0.35 gbp550
+invoice-modern_long 0:96667fee53f3 0.35 gbp1650
+invoice-modern_long 0:9fe9e123b0f0 0.35 docsauthoring—sprint1
+invoice-modern_long 0:e7b406f24f04 0.35 gbp587
+invoice-modern_long 0:74357ca6b30e 0.35 gbp2348
+invoice-modern_long 0:9c6cf539f5bc 0.35 stakeholderdemo—sprint1
+invoice-modern_long 0:cf79b5cdb735 0.35 gbp624
+invoice-modern_long 0:d2bde6642670 0.35 performanceprofiling—sprint1
+invoice-modern_long 0:679f017f73c1 0.35 gbp661
+invoice-modern_long 0:63985b524723 0.35 gbp1322
+invoice-modern_long 0:f82bef1ac80d 0.35 releaseengineering—sprint1
+invoice-modern_long 0:0b21b7cf2ff9 0.35 gbp698
+invoice-modern_long 0:6afc08056aaa 0.35 gbp2094
+invoice-modern_long 0:632f71e8ff8b 0.35 supportretainer—sprint1
+invoice-modern_long 0:70b393b5fb10 0.35 gbp735
+invoice-modern_long 0:29edf7588a57 0.35 gbp2940
+invoice-modern_long 0:82a9218b91ae 0.35 discoveryworkshop—sprint2
+invoice-modern_long 0:c313f34b71b9 0.35 gbp772
+invoice-modern_long 0:7e69fbffe3e2 0.35 designsystemaudit—sprint2
+invoice-modern_long 0:e096e4fddf9a 0.35 gbp809
+invoice-modern_long 0:c985a0123929 0.35 gbp1618
+invoice-modern_long 0:899f0392eecb 0.35 templatearchitecture—sprint2
+invoice-modern_long 0:4c973ddb9245 0.35 gbp846
+invoice-modern_long 0:6ec359ce3927 0.35 gbp2538
+invoice-modern_long 0:69523ba7402c 0.35 layoutenginetuning—sprint2
+invoice-modern_long 0:0e196c2b490b 0.35 gbp883
+invoice-modern_long 0:6e0d19ab72c6 0.35 gbp3532
+invoice-modern_long 1:c9046f7a37ad 0.30 description
+invoice-modern_long 1:32e8369a9c4f 0.30 qty
+invoice-modern_long 1:385cfdbc00ec 0.30 unit
+invoice-modern_long 1:cf38d95c9c6b 0.30 amount
+invoice-modern_long 1:f12cbb7c274d 0.52 renderqapass—sprint2
+invoice-modern_long 1:b813c73bc488 0.52 gbp920
+invoice-modern_long 1:12cd54b50187 0.52 accessibilityreview—sprint2
+invoice-modern_long 1:377d92702316 0.52 gbp957
+invoice-modern_long 1:e7c66f6cf477 0.52 gbp1914
+invoice-modern_long 1:e3d8409ace07 0.52 fontpipelinesetup—sprint2
+invoice-modern_long 1:21604b8f0b36 0.52 gbp994
+invoice-modern_long 1:fe15ed444063 0.52 gbp2982
+invoice-modern_long 1:ca4d3c8eca22 0.52 chartintegration—sprint2
+invoice-modern_long 1:a4c7a6612c99 0.52 gbp1031
+invoice-modern_long 1:1c83f0b47e27 0.52 gbp4124
+invoice-modern_long 1:00de69c6e70f 0.52 datamapping—sprint2
+invoice-modern_long 1:b9d5c56a2cfd 0.52 gbp1068
+invoice-modern_long 1:eb628b5ea8ab 0.52 paginationhardening—sprint2
+invoice-modern_long 1:db5327b47d0e 0.52 gbp205
+invoice-modern_long 1:99d9b3b49da2 0.52 gbp410
+invoice-modern_long 1:505693cbc91e 0.52 visualregressionwiring—sprint23
+invoice-modern_long 1:9f0c5094fb63 0.52 gbp242
+invoice-modern_long 1:095b72c9d880 0.52 gbp726
+invoice-modern_long 1:2a787e61730a 0.52 docsauthoring—sprint2
+invoice-modern_long 1:28ad00e76aef 0.52 gbp279
+invoice-modern_long 1:fbb12fed0bbc 0.52 gbp1116
+invoice-modern_long 1:5369a2c40ff8 0.52 stakeholderdemo—sprint2
+invoice-modern_long 1:16562cbcd318 0.52 gbp316
+invoice-modern_long 1:611b258cb41e 0.52 performanceprofiling—sprint2
+invoice-modern_long 1:e391d4e46366 0.52 gbp353
+invoice-modern_long 1:7106c00cb009 0.52 gbp706
+invoice-modern_long 1:d24a15800df1 0.52 releaseengineering—sprint2
+invoice-modern_long 1:4bed9b4092ee 0.52 gbp390
+invoice-modern_long 1:ae16cd1e31b1 0.52 gbp1170
+invoice-modern_long 1:6876c7b0fe66 0.52 supportretainer—sprint2
+invoice-modern_long 1:909481a45a34 0.52 gbp427
+invoice-modern_long 1:4e58d78d0958 0.52 gbp1708
+invoice-modern_long 1:ddce236bccd7 0.52 discoveryworkshop—sprint3
+invoice-modern_long 1:f8d17c11d834 0.52 gbp464
+invoice-modern_long 1:c0986cd7b1d4 0.52 designsystemaudit—sprint3
+invoice-modern_long 1:09c7aebd89f6 0.52 gbp501
+invoice-modern_long 1:a61c7b6bdd20 0.52 gbp1002
+invoice-modern_long 1:21fd82d170b2 0.52 templatearchitecture—sprint3
+invoice-modern_long 1:399e39a6eff5 0.52 gbp538
+invoice-modern_long 1:81ea39164f41 0.52 gbp1614
+invoice-modern_long 1:47cb1e683e8d 0.52 layoutenginetuning—sprint3
+invoice-modern_long 1:f6df6e8e8f30 0.52 gbp575
+invoice-modern_long 1:7f7db0f4c1cf 0.52 gbp2300
+invoice-modern_long 1:608e31719f07 0.52 renderqapass—sprint3
+invoice-modern_long 1:e4fbc626999e 0.52 gbp612
+invoice-modern_long 1:98bfb4deb0b7 0.52 accessibilityreview—sprint3
+invoice-modern_long 1:7915a839b285 0.52 gbp649
+invoice-modern_long 1:ca74221d78ad 0.52 gbp1298
+invoice-modern_long 1:375dddcbee43 0.52 fontpipelinesetup—sprint3
+invoice-modern_long 1:7b97f0ac8a87 0.52 gbp686
+invoice-modern_long 1:6a57f6a84a1c 0.52 gbp2058
+invoice-modern_long 1:2f4f507058ff 0.52 chartintegration—sprint3
+invoice-modern_long 1:74df855b318c 0.52 gbp723
+invoice-modern_long 1:78016cdf49ca 0.52 gbp2892
+invoice-modern_long 1:d6577e95efba 0.52 subtotal
+invoice-modern_long 1:5969b6461056 0.52 gbp44,890
+invoice-modern_long 1:a52611c9261b 0.52 vat(20%)
+invoice-modern_long 1:e7fda33332e9 0.52 gbp8,978
+invoice-modern_long 1:11239872d178 0.53 total
+invoice-modern_long 1:90b9dec01ea9 0.53 gbp53,868
+invoice-modern_long 1:ab5aa97074c4 0.65 notes
+invoice-modern_long 1:970fb4bf9d95 0.72 •sprints1-3weredeliveredunderthe
+invoice-modern_long 1:a781fa6c76d2 0.72 frameworkagreement.
+invoice-modern_long 1:c980fb1ebf98 0.72 •hardwareandthird-partylicencesa
+invoice-modern_long 1:be1dea5817a5 0.72 billedseparately.
+invoice-modern_long 1:fb854bac39c8 0.65 paymentterms
+invoice-modern_long 1:24274f39b50b 0.72 •paymentduewithin14calendardays.
+invoice-modern_long 1:c438440ba377 0.72 •banktransferpreferred;contact
+invoice-modern_long 1:434cc906ae90 0.72 billing@graphcompose.devfor
+invoice-modern_long 1:8822ea375315 0.72 remittancedetails.
+invoice-modern_long 1:e3337beaa171 0.70 thankyouforchoosinggraphcomposef
+invoice-obsidian 0:07f15cde5b18 0.14 kestrel
+invoice-obsidian 0:52d6e3de4fa0 0.12 invoice
+invoice-obsidian 0:5d1d1b79af09 0.02 invoicenumber
+invoice-obsidian 0:3e62d1fbe5ec 0.06 inv-2026-1048
+invoice-obsidian 0:8feaf8016bab 0.02 issuedate
+invoice-obsidian 0:4d49cb78b810 0.02 27august2026
+invoice-obsidian 0:ac10f8c16320 -0.05 duedate
+invoice-obsidian 0:b55571aaabac -0.05 10september2026
+invoice-obsidian 0:fb854bac39c8 -0.12 paymentterms
+invoice-obsidian 0:56a2e019b8aa -0.12 14days
+invoice-obsidian 0:466e5b9cd57f -0.19 currency
+invoice-obsidian 0:54f8e1b3fe44 -0.19 gbp
+invoice-obsidian 0:75857a458999 -0.26 from
+invoice-obsidian 0:7d7385ecfbd9 -0.29 kestrelbusiness
+invoice-obsidian 0:5f51304df361 -0.27 7harboursidewalk
+invoice-obsidian 0:895a6b59f677 -0.29 bristolbs15ty
+invoice-obsidian 0:2474519f77a9 -0.29 unitedkingdom
+invoice-obsidian 0:70ec69d2102f -0.31 ar@kestrel.example
+invoice-obsidian 0:aeba3a7b3598 -0.26 billto
+invoice-obsidian 0:7bfc2b791f41 -0.29 northlineconsultingltd
+invoice-obsidian 0:13dd937d2fe6 -0.27 21jubileeway
+invoice-obsidian 0:f9bab6a0b45b -0.29 londonse13ss
+invoice-obsidian 0:c9046f7a37ad -1.75 description
+invoice-obsidian 0:32e8369a9c4f -1.75 qty
+invoice-obsidian 0:d1062d072acd -1.75 unitprice
+invoice-obsidian 0:a52611c9261b -1.75 vat(20%)
+invoice-obsidian 0:cf38d95c9c6b -1.75 amount
+invoice-obsidian 0:15345cbad705 -0.17 subscriptionsetup
+invoice-obsidian 0:5100476d46bb -0.17 one-offaccountandworkspacesetup
+invoice-obsidian 0:507f9f133059 -0.21 £150.00
+invoice-obsidian 0:893d7480f763 -0.21 £30.00
+invoice-obsidian 0:629184210581 -0.21 £180.00
+invoice-obsidian 0:3e8060178bc4 -0.21 internationalpaymentsupport
+invoice-obsidian 0:33e4ab51097e -0.21 monthlysupportforcross-borderpay
+invoice-obsidian 0:96d6b62c061d -0.25 £250.00
+invoice-obsidian 0:70d5b1312085 -0.25 £50.00
+invoice-obsidian 0:d86642b21e53 -0.25 £300.00
+invoice-obsidian 0:9399cf3b221a -0.26 expensemanagementintegration
+invoice-obsidian 0:da2890c99f7a -0.26 apiaccessandintegration
+invoice-obsidian 0:372ba7238228 -0.29 £200.00
+invoice-obsidian 0:05c6a4f7132f -0.29 £40.00
+invoice-obsidian 0:853580239989 -0.29 £240.00
+invoice-obsidian 0:ba80be228223 -0.30 virtualcards
+invoice-obsidian 0:eae2564ef311 -0.30 50virtualcards
+invoice-obsidian 0:cf02270203a4 -0.34 £100.00
+invoice-obsidian 0:33b5fc913817 -0.34 £20.00
+invoice-obsidian 0:8aec54fdb1a1 -0.34 £120.00
+invoice-obsidian 0:cc29e90932c5 -0.34 businessaccountmaintenance
+invoice-obsidian 0:f1254de1a1d4 -0.34 monthlyaccountmaintenancefee
+invoice-obsidian 0:8bf9ac7b27bd -0.38 £6.00
+invoice-obsidian 0:bff295cd3f97 -0.38 £36.00
+invoice-obsidian 0:d6577e95efba 0.56 subtotal
+invoice-obsidian 0:4595e1b34cb1 0.55 £730.00
+invoice-obsidian 0:eafa82a0eadf 0.51 £146.00
+invoice-obsidian 0:57a66d21eb1b 0.43 totaldue
+invoice-obsidian 0:ad3ba615a506 0.41 £876.00
+invoice-obsidian 0:ab5aa97074c4 0.22 notes
+invoice-obsidian 0:0956d8d0441d 0.84 thankyouforchoosingkestrelbusine
+invoice-obsidian 0:0b4d6f0e8783 0.84 thisinvoicecoversservicesandfeat
+invoice-obsidian 0:02e483554647 0.85 toyourbusinessasofthedateofissue
+invoice-obsidian 0:b439106fc5a1 0.86 ifyouhaveanyquestionsaboutthisin
+invoice-obsidian 0:877ac656a147 0.87 pleasecontactusatar@kestrel.exam
+invoice-obsidian 0:3c7ade679fdf 0.22 paymentdetails
+invoice-obsidian 0:473fbeedb47c -0.30 pleasepaybybanktransfer
+invoice-obsidian 0:59f2b74175d7 -0.29 totheaccountbelow.
+invoice-obsidian 0:811f691f5582 0.23 payee
+invoice-obsidian 0:10aeacde20ff 0.22 sortcode
+invoice-obsidian 0:a748c443f622 0.16 04-00-75
+invoice-obsidian 0:f92a9c925024 0.21 accountnumber
+invoice-obsidian 0:ef797c8118f0 0.15 12345678
+invoice-obsidian 0:52367a6622b1 0.20 reference
+invoice-obsidian 0:7c6ab37d83ef 0.48 thankyouforyourbusiness.
+invoice-obsidian 0:a97667f07d1b 0.47 paymentisdueby10september2026.
+invoice-obsidian 0:7b14b8d2c5c4 -0.03 page1of1
+invoice-payments 0:b6c4ac412ac8 -0.02 meridian
+invoice-payments 0:52d6e3de4fa0 0.41 invoice
+invoice-payments 0:c0cc75b9cfdc -0.22 meridianpaymentsltd.
+invoice-payments 0:5eeaa101da6c -0.19 1harbourexchange
+invoice-payments 0:e3f6090f249b -0.23 canarywharf
+invoice-payments 0:1bb9adbf32ff -0.26 londone149ge
+invoice-payments 0:2474519f77a9 -0.30 unitedkingdom
+invoice-payments 0:e89d810f7944 -0.32 companyno.09048900
+invoice-payments 0:a3052fe78c6e -0.32 vatno.gb123456789
+invoice-payments 0:5d1d1b79af09 -0.07 invoicenumber
+invoice-payments 0:3d9e18bc1da9 -0.09 invoicedate
+invoice-payments 0:9fb3dbb29042 -0.12 billingperiod
+invoice-payments 0:acc0140cb66d -0.14 accountid
+invoice-payments 0:fb854bac39c8 -0.16 paymentterms
+invoice-payments 0:ac10f8c16320 -0.19 duedate
+invoice-payments 0:073c1634c496 -0.21 status
+invoice-payments 0:052ff4dff688 -0.04 inv-2025-05-10472
+invoice-payments 0:23a4c624cbda -0.01 10may2025
+invoice-payments 0:7b052c343b27 0.02 1-30april2025
+invoice-payments 0:018052c1dd59 0.04 acct_4q8xtb2mkp
+invoice-payments 0:98ec3d1fd5b9 0.07 net30
+invoice-payments 0:1ade0cb4877f 0.10 14june2025
+invoice-payments 0:e66d03af0bf1 0.09 unpaid
+invoice-payments 0:aeba3a7b3598 0.13 billto
+invoice-payments 0:98997fb707ef 0.05 northwindltd.
+invoice-payments 0:834834123752 0.13 attention:financeteam
+invoice-payments 0:76b6fd2080ed 0.10 42bridgewaterstreet
+invoice-payments 0:e031db0583eb 0.07 manchesterm154qt
+invoice-payments 0:23f3489a1043 0.04 vatno.gb987654321
+invoice-payments 0:725a8f5062e7 0.13 shipto
+invoice-payments 0:9976f2392d8c 0.13 operationscentre
+invoice-payments 0:fc0e113402c7 0.10 7kingswaypark
+invoice-payments 0:a72c3f2308ed 0.07 leedsls126bd
+invoice-payments 0:c9046f7a37ad 0.24 description
+invoice-payments 0:1a7b308d8df6 0.24 quantity
+invoice-payments 0:d1062d072acd 0.24 unitprice
+invoice-payments 0:7c512b48ba8a 0.24 vat
+invoice-payments 0:2da123241332 0.24 amount(gbp)
+invoice-payments 0:3ab6c1099bcc 5.43 subscriptionbilling
+invoice-payments 0:96d6b62c061d 0.40 £250.00
+invoice-payments 0:dc934fe30a94 0.40 20%
+invoice-payments 0:0a9acaea6477 5.43 paymentprocessing
+invoice-payments 0:351704ebff51 0.40 £1,180.00
+invoice-payments 0:b3bc34f90a55 0.42 fraudscreening
+invoice-payments 0:ed051c6a1942 0.46 advancedfraudscreeningandrules
+invoice-payments 0:a0a787efd867 0.42 £320.00
+invoice-payments 0:34b75c1d0234 0.41 companyformation
+invoice-payments 0:bf45c494a8dc 0.45 incorporationandcompliancefiling
+invoice-payments 0:629184210581 0.41 £180.00
+invoice-payments 0:9427a01801d2 0.40 in-personterminals
+invoice-payments 0:882be821cf2e 0.44 terminalrentalandfirmwareupdates
+invoice-payments 0:3c4459a5e4ec 0.40 £39.00
+invoice-payments 0:5d16afda896e 0.41 £156.00
+invoice-payments 0:0036ebf2cfb2 0.59 prioritysupport
+invoice-payments 0:7ef1d2ff5e3a 0.63 namedengineer,one-hourresponse
+invoice-payments 0:cf02270203a4 0.59 £100.00
+invoice-payments 0:3c7ade679fdf 0.77 paymentdetails
+invoice-payments 0:182748d2fece 0.81 bankname
+invoice-payments 0:758f4a6f175f 0.82 accountname
+invoice-payments 0:10aeacde20ff 0.83 sortcode
+invoice-payments 0:f92a9c925024 0.84 accountnumber
+invoice-payments 0:d53cd2cae33d 0.85 iban
+invoice-payments 0:3f695692d5f1 0.86 swift/bic
+invoice-payments 0:52367a6622b1 0.87 reference
+invoice-payments 0:c66da4639881 0.78 harbourbankplc
+invoice-payments 0:2cd71c3c2603 0.70 40-02-50
+invoice-payments 0:8fb8a81278c4 0.66 71295408
+invoice-payments 0:48617b6d05d4 0.62 gb29hrbk40025071295408
+invoice-payments 0:6929e6db6e1f 0.58 hrbkgb2l
+invoice-payments 0:e4c4788968b2 0.86 subtotal(excl.vat)
+invoice-payments 0:7ed180496d4e 0.87 vatat20%
+invoice-payments 0:751cbab81a3a 0.90 £2,186.00
+invoice-payments 0:9a5256946abd 0.91 £437.20
+invoice-payments 0:57a66d21eb1b 0.85 totaldue
+invoice-payments 0:5eb0b17220fa 0.91 dueby14june2025
+invoice-payments 0:30d896eb989f 0.65 £2,623.20
+invoice-payments 0:ab5aa97074c4 1.06 notes
+invoice-payments 0:241bcf576ac5 1.08 thankyouforyourbusiness.thisinvo
+invoice-payments 0:f912ca46bf39 1.06 latepaymentmayincurinterestatthe
+invoice-payments 0:73a09fec2c1a 1.10 paymentdueby14june2025
+invoice-payments 0:79df6c5bbc16 1.08 pleaseincludetheinvoicenumberasp
+invoice-payments 0:28b3008f693b 1.04 questions?we'reheretohelp.
+invoice-payments 0:5b88ed40a689 1.07 support@meridianpayments.example
+invoice-payments 0:2e3891f6ba2f 1.08 39661900
+invoice-payments 0:7b14b8d2c5c4 -0.04 page1of1
+invoice-platform 0:9817f28442bf 0.04 auroracloud
+invoice-platform 0:52d6e3de4fa0 0.61 invoice
+invoice-platform 0:1cf61cdc6464 0.06 auroracloudinc.
+invoice-platform 0:43315277b007 -0.40 500harbourstreet
+invoice-platform 0:d9065bfb8f59 -0.40 vancouver,bcv6c2w2
+invoice-platform 0:408c7c5887a0 -0.41 canada
+invoice-platform 0:88a643f14708 0.18 aurora.example
+invoice-platform 0:f2cfc804c0f3 0.18 billing@aurora.example
+invoice-platform 0:799715f2b96e 0.19 +1604-555-0180
+invoice-platform 0:719c55c7e988 -0.44 vatid:cabn842137755
+invoice-platform 0:6282391a4cc1 -0.31 invoicenumber:
+invoice-platform 0:3ad2bd3ce9fc -0.31 inv-2026-07-31-9f4k2m
+invoice-platform 0:8d05f5d55191 -0.34 invoicedate:
+invoice-platform 0:52c8b7a9ee5f -0.34 31july2026
+invoice-platform 0:0e0fb0fc0939 -0.36 duedate:
+invoice-platform 0:6a077b4f161e -0.36 30august2026
+invoice-platform 0:e26e182e1141 -0.39 billingaccountid:
+invoice-platform 0:6d4b27b68226 -0.39 7c2d9e-b1f4a8-3k6m0p
+invoice-platform 0:d39366fa1423 -0.41 billingperiod:
+invoice-platform 0:3e380076ca84 -0.41 01jul2026–31jul2026
+invoice-platform 0:18e2cca1098e -0.44 paymentterms:
+invoice-platform 0:c6af9fc633ee -0.44 net30days
+invoice-platform 0:967e0b6ca4b9 -0.46 currency:
+invoice-platform 0:2afe5e26e9c8 -0.46 cad
+invoice-platform 0:aeba3a7b3598 -0.39 billto
+invoice-platform 0:45fe04dbae24 -0.41 brightfutureltd.
+invoice-platform 0:65405af34bf9 -0.37 45kingstreet
+invoice-platform 0:1f8da9c4e269 -0.39 manchester,m24wu
+invoice-platform 0:2474519f77a9 -0.41 unitedkingdom
+invoice-platform 0:c7a9cfdd1c55 -0.43 vatid:gb987654321
+invoice-platform 0:725a8f5062e7 -0.41 shipto
+invoice-platform 0:5895c7cd8d5b -0.36 warehouse7
+invoice-platform 0:caf76743df2d -0.38 northindustrialestate
+invoice-platform 0:c9046f7a37ad -0.22 description
+invoice-platform 0:9df6b026a8c6 -0.22 service
+invoice-platform 0:c697d2981bf4 -0.22 region
+invoice-platform 0:0a4e4c29432e -0.22 usage
+invoice-platform 0:965711fdf178 -0.22 unitprice(cad)
+invoice-platform 0:1742adf77d8c -0.22 amount(cad)
+invoice-platform 0:b04a12f6483e -0.26 compute
+invoice-platform 0:a2cd33d50126 -0.26 ca-central1
+invoice-platform 0:ff5f15700bca -0.26 744.00
+invoice-platform 0:404314b1f4bd -0.27 hours
+invoice-platform 0:456fa3bce642 -0.26 0.0685
+invoice-platform 0:4249970361b2 -0.26 50.96
+invoice-platform 0:f13d9c7c6f89 -0.32 computeinstances
+invoice-platform 0:524b18673a85 -0.29 n2standardvm
+invoice-platform 0:49a25f9feefa -0.27 storage
+invoice-platform 0:f58bef646914 -0.26 480.00
+invoice-platform 0:089bbc1623e2 -0.27 0.0210
+invoice-platform 0:782fd1b0f47e -0.27 10.08
+invoice-platform 0:721ffa554e56 -0.32 objectstorage
+invoice-platform 0:b3223a301c5f -0.29 standardclass
+invoice-platform 0:3549b0028b75 -0.27 database
+invoice-platform 0:ae96e95d52ac -0.27 0.1385
+invoice-platform 0:2ff58dbe7993 -0.27 103.04
+invoice-platform 0:8152fd217e12 -0.32 manageddatabase
+invoice-platform 0:3500adb3c8a1 -0.30 postgresqlinstance
+invoice-platform 0:3009be769fb8 -0.27 network
+invoice-platform 0:8001c2743965 -0.27 global
+invoice-platform 0:3f6ae649df50 -0.27 260.00
+invoice-platform 0:7775158f6d3a -0.27 0.0860
+invoice-platform 0:f7650feb3574 -0.27 22.36
+invoice-platform 0:444858f5bf18 -0.32 egresstraffic
+invoice-platform 0:8b72bb875a83 -0.30 datatransferout
+invoice-platform 0:a18603086e5b -0.27 support
+invoice-platform 0:561b2814d3c0 -0.27 0.00
+invoice-platform 0:efa8771baad9 -0.33 supportplan
+invoice-platform 0:9e81cd6e653a -0.30 standardresponse
+invoice-platform 0:13000a5d442c -0.25 paymentinformation
+invoice-platform 0:944d398aea60 -0.11 bankname:
+invoice-platform 0:d6c3cea2e943 -0.11 harbourbankofcanada
+invoice-platform 0:0ecb5847ffa7 -0.10 accountname:
+invoice-platform 0:6b4894c28363 -0.10 accountnumber:
+invoice-platform 0:559c58c48948 -0.10 417802336
+invoice-platform 0:555043320c0c -0.09 swiftcode:
+invoice-platform 0:5a986aa9e713 -0.09 hbcacat1
+invoice-platform 0:e47c9313aced -0.08 transitnumber:
+invoice-platform 0:20b565bff5c3 -0.08 00812
+invoice-platform 0:f1b1597830d6 -0.08 institutionnumber:
+invoice-platform 0:3c241d267414 -0.08 049
+invoice-platform 0:4f657c67e41a -0.07 accounttype:
+invoice-platform 0:7522b6a6c098 -0.07 businesschequing
+invoice-platform 0:fa0fbe194b51 -0.07 remittanceemail:
+invoice-platform 0:b3ec04f337ed -0.17 includeyourbillingaccountid
+invoice-platform 0:a11a3e122422 -0.18 onyourpaymentremittance.
+invoice-platform 0:d6577e95efba -0.21 subtotal
+invoice-platform 0:6fb943a5640a -0.21 186.44
+invoice-platform 0:26a72d1933a2 -0.20 tax(5%)
+invoice-platform 0:6c5bbecf6ec0 -0.20 9.32
+invoice-platform 0:57a66d21eb1b -0.38 totaldue
+invoice-platform 0:17e16a2f994d 0.00 cad195.76
+invoice-platform 0:ac10f8c16320 -0.18 duedate
+invoice-platform 0:d5ef7c1f9830 -0.46 thankyouforrunningonauroracloud.
+invoice-platform 0:6a88f440b84e -0.46 manageyouraccountataurora.exampl
+invoice-platform 0:cf0a1e1dc87b -0.54 500harbourstreet,vancouver,bcv6c
+invoice-platform 0:7b14b8d2c5c4 0.02 page1of1
+invoice-subscription 0:435df6fdbffd 0.05 halstead
+invoice-subscription 0:52d6e3de4fa0 0.02 invoice
+invoice-subscription 0:0a36c1665b7e 0.28 halsteadsoftwareltd.
+invoice-subscription 0:6bc2056359b7 0.20 18chandlerrow
+invoice-subscription 0:776a7e9eb92a 0.22 leedsls14qt
+invoice-subscription 0:2474519f77a9 0.24 unitedkingdom
+invoice-subscription 0:bfdec553b85a 0.24 billing@halstead.example
+invoice-subscription 0:78acb3cb907b 0.27 www.halstead.example
+invoice-subscription 0:f1c030eb4329 0.29 vatnogb418227603
+invoice-subscription 0:77ead61b5875 0.29 invoiceno
+invoice-subscription 0:0b0c0ee24de8 0.26 hs-inv-2026-0417
+invoice-subscription 0:8feaf8016bab 0.34 issuedate
+invoice-subscription 0:4d49cb78b810 0.32 27august2026
+invoice-subscription 0:ac10f8c16320 0.39 duedate
+invoice-subscription 0:b55571aaabac 0.37 10september2026
+invoice-subscription 0:fb854bac39c8 0.45 paymentterms
+invoice-subscription 0:56a2e019b8aa 0.42 14days
+invoice-subscription 0:466e5b9cd57f 0.50 currency
+invoice-subscription 0:54f8e1b3fe44 0.47 gbp
+invoice-subscription 0:aeba3a7b3598 0.51 billto
+invoice-subscription 0:7bfc2b791f41 -0.76 northlineconsultingltd
+invoice-subscription 0:bcb7024f74fe -0.75 attn:sarahmitchell
+invoice-subscription 0:13dd937d2fe6 -0.73 21jubileeway
+invoice-subscription 0:f9bab6a0b45b -0.72 londonse13ss
+invoice-subscription 0:725a8f5062e7 0.51 shipto
+invoice-subscription 0:254289ce0191 -0.75 thefoundry,2ndfloor
+invoice-subscription 0:84db1f48facb -0.73 17-19greatsuffolkstreet
+invoice-subscription 0:e7a5f0717d99 -0.72 londonse10ns
+invoice-subscription 0:c9046f7a37ad -0.61 description
+invoice-subscription 0:32e8369a9c4f -0.61 qty
+invoice-subscription 0:d1062d072acd -0.61 unitprice
+invoice-subscription 0:7c512b48ba8a -0.61 vat
+invoice-subscription 0:cf38d95c9c6b -0.61 amount
+invoice-subscription 0:86705447c73d -0.32 halsteadworkspacepremium(10seats
+invoice-subscription 0:0c8dc980db3f -0.32 £18.00
+invoice-subscription 0:dc934fe30a94 -0.32 20%
+invoice-subscription 0:629184210581 -0.32 £180.00
+invoice-subscription 0:59df1d2b0f69 -0.20 hostedplatformservices
+invoice-subscription 0:44c1ce3394d2 -0.20 £420.00
+invoice-subscription 0:217bada1d20f -0.08 analyticsprolicences(5seats)
+invoice-subscription 0:599cd58953ce -0.08 £8.40
+invoice-subscription 0:756b8c62fe05 -0.08 £42.00
+invoice-subscription 0:b055bcc305ed 0.04 prioritysupportplan
+invoice-subscription 0:1077d7cede59 0.04 £275.00
+invoice-subscription 0:361537ef6a11 0.16 voiceadd-on(5seats)
+invoice-subscription 0:8bf9ac7b27bd 0.16 £6.00
+invoice-subscription 0:893d7480f763 0.16 £30.00
+invoice-subscription 0:ab5aa97074c4 0.45 notes
+invoice-subscription 0:4440ed73b83f 1.23 thisinvoicecoverssoftwaresubscri
+invoice-subscription 0:fffc319556fa 1.24 hostedservicesforthecurrentbilli
+invoice-subscription 0:d6577e95efba 0.29 subtotal
+invoice-subscription 0:adde9b2bd3ad 0.29 £947.00
+invoice-subscription 0:a52611c9261b 0.27 vat(20%)
+invoice-subscription 0:14edcfc20351 0.27 £189.40
+invoice-subscription 0:57a66d21eb1b 0.42 totaldue
+invoice-subscription 0:cf1b68cc49ef 0.49 £1,136.40
+invoice-subscription 0:3c7ade679fdf 1.74 paymentdetails
+invoice-subscription 0:56ed021beb35 0.47 beneficiary
+invoice-subscription 0:0b85f3c8ed04 0.43 halsteadsoftwareltd
+invoice-subscription 0:4381dc2ab142 0.47 bank
+invoice-subscription 0:6d50b2dd724f 0.43 northgatebank
+invoice-subscription 0:10aeacde20ff 0.47 sortcode
+invoice-subscription 0:b19b1415ef9b 0.43 40-05-30
+invoice-subscription 0:f92a9c925024 0.47 accountnumber
+invoice-subscription 0:ef797c8118f0 0.43 12345678
+invoice-subscription 0:52367a6622b1 0.47 reference
+invoice-subscription 0:04f7247e8e99 0.47 pleaseincludetheinvoicenumberast
+invoice-subscription 0:7c6ab37d83ef 0.51 thankyouforyourbusiness.
+invoice-subscription 0:354ffeb2bbc3 0.47 paymentisdueby10september2026.if
+invoice-subscription 0:7f7d98088133 0.48 foranyqueries,pleasecontactbilli
+invoice-subscription 0:7b14b8d2c5c4 0.00 page1of1
+invoice-workspace 0:07f15cde5b18 0.15 kestrel
+invoice-workspace 0:52d6e3de4fa0 -0.16 invoice
+invoice-workspace 0:091019880d88 -0.37 kestrelcollaboration,inc.
+invoice-workspace 0:9167e0470dae -0.31 500howardstreet,6thfloor
+invoice-workspace 0:efa5e1529794 -0.28 sanfrancisco,ca94105
+invoice-workspace 0:fd7321c405f8 -0.24 unitedstates
+invoice-workspace 0:d3c6f273c22d -0.24 vatid:us77-0560185
+invoice-workspace 0:6282391a4cc1 -0.31 invoicenumber:
+invoice-workspace 0:b13757c9a6fc -0.30 inv-2024-0003521
+invoice-workspace 0:8d05f5d55191 -0.29 invoicedate:
+invoice-workspace 0:8da43dd45024 -0.27 27may2024
+invoice-workspace 0:d39366fa1423 -0.26 billingperiod:
+invoice-workspace 0:ec09225090a8 -0.25 1-31may2024
+invoice-workspace 0:23513511df83 -0.24 workspaceid:
+invoice-workspace 0:1179fb658a97 -0.23 t04fq9l2m
+invoice-workspace 0:18e2cca1098e -0.21 paymentterms:
+invoice-workspace 0:98ec3d1fd5b9 -0.20 net30
+invoice-workspace 0:0e0fb0fc0939 -0.19 duedate:
+invoice-workspace 0:f1e2a60122bd -0.18 26june2024
+invoice-workspace 0:aeba3a7b3598 -0.18 billto
+invoice-workspace 0:45fe04dbae24 -0.22 brightfutureltd.
+invoice-workspace 0:65405af34bf9 -0.17 45kingstreet
+invoice-workspace 0:494f1a937311 -0.16 manchesterm27az
+invoice-workspace 0:2474519f77a9 -0.16 unitedkingdom
+invoice-workspace 0:c7a9cfdd1c55 -0.13 vatid:gb987654321
+invoice-workspace 0:725a8f5062e7 -0.18 shipto
+invoice-workspace 0:6d835e737af6 -0.17 unit4,riversidepark
+invoice-workspace 0:555d5194cd4d -0.16 leedsls14ap
+invoice-workspace 0:c9046f7a37ad 0.21 description
+invoice-workspace 0:169240d91658 0.21 plan/service
+invoice-workspace 0:32e8369a9c4f 0.21 qty
+invoice-workspace 0:e2a9c81da5f6 0.21 unitprice(usd)
+invoice-workspace 0:5dfb966b2bcf 0.21 amount(usd)
+invoice-workspace 0:2bcc555090a1 0.31 kestrelbusiness+
+invoice-workspace 0:68fad867a983 0.36 workspacesubscription
+invoice-workspace 0:e0b844887562 0.37 business+annual
+invoice-workspace 0:84906b0f4b73 0.37 50users
+invoice-workspace 0:5ee31a6284bc 0.37 8.75
+invoice-workspace 0:843d501d422c 0.37 437.50
+invoice-workspace 0:3007667b4e18 0.29 enterprisekeymanagement
+invoice-workspace 0:162e9c93c528 0.34 customer-managedencryptionkeys
+invoice-workspace 0:a33a54a73112 0.35 add-on
+invoice-workspace 0:d66c66a96157 0.35 100.00
+invoice-workspace 0:0036ebf2cfb2 0.27 prioritysupport
+invoice-workspace 0:51833276172f 0.32 namedengineerandresponsetarget
+invoice-workspace 0:fe6d3468cf5c 0.33 standard
+invoice-workspace 0:a99210875f11 0.33 50.00
+invoice-workspace 0:14209e8ccd53 0.45 workflowautomation
+invoice-workspace 0:31be3ff05457 0.50 templatesandscheduledruns
+invoice-workspace 0:7f0f70e643bc 0.51 included
+invoice-workspace 0:561b2814d3c0 0.51 0.00
+invoice-workspace 0:3c7ade679fdf 1.12 paymentdetails
+invoice-workspace 0:944d398aea60 1.21 bankname:
+invoice-workspace 0:a18e9fdf120e 1.21 bayunionbank,n.a.
+invoice-workspace 0:0ecb5847ffa7 1.17 accountname:
+invoice-workspace 0:6b4894c28363 1.13 accountnumber:
+invoice-workspace 0:ab92799f9bc7 1.13 000000123456789
+invoice-workspace 0:c1390f638bd3 1.09 routing(aba):
+invoice-workspace 0:1f873cdde0ca 1.09 021000021
+invoice-workspace 0:e58256751597 1.06 swift/bic:
+invoice-workspace 0:0fdf54f117f8 1.06 bayuus33
+invoice-workspace 0:967e0b6ca4b9 1.02 currency:
+invoice-workspace 0:d60fbd8718ec 1.02 usd
+invoice-workspace 0:c608665436db 0.98 reference:
+invoice-workspace 0:3db3fa89ea2c 0.94 bankaddress:
+invoice-workspace 0:b1645851e755 0.94 1marketplaza,sanfrancisco
+invoice-workspace 0:9b600d1211c8 1.88 pleaseincludetheinvoicenumberiny
+invoice-workspace 0:415eb9e42f41 0.62 reference.
+invoice-workspace 0:d6577e95efba 0.76 subtotal
+invoice-workspace 0:460dd5bae888 0.76 587.50
+invoice-workspace 0:2ee4d3de4ddf 0.76 tax(0%)
+invoice-workspace 0:57a66d21eb1b 0.69 totaldue
+invoice-workspace 0:ad00e93ce79a 0.61 usd587.50
+invoice-workspace 0:b0553f008513 0.23 paymentdueby
+invoice-workspace 0:08775a92bfca 1.39 thankyouforusingkestrel.
+invoice-workspace 0:18e82fbd48a3 1.46 questionsaboutthisinvoice?reachu
+invoice-workspace 0:3c72ba0e1eb8 1.33 500howardstreet,6thfloor,sanfran
+invoice-workspace 0:9e2917e23527 1.32 kestrel.example
+invoice-workspace 0:7b14b8d2c5c4 -0.05 page1of1
+letter-blue_banner 0:8f1010120ed6 0.42 jordanrivera
+letter-blue_banner 0:8d7a2cca3060 -0.20 +442055551000|jordan.rivera@exam
+letter-blue_banner 0:bef81b541365 -0.21 dearhiringteamatnorthwindsystems
+letter-blue_banner 0:a71e98216baa -0.08 iwouldwelcometheopportunitytobri
+letter-blue_banner 0:80a6a628ad52 -0.05 sincerely,
+letter-boxed_sections 0:8f1010120ed6 0.46 jordanrivera
+letter-boxed_sections 0:8d7a2cca3060 -0.12 +442055551000|jordan.rivera@exam
+letter-boxed_sections 0:bef81b541365 -0.41 dearhiringteamatnorthwindsystems
+letter-boxed_sections 0:ab54410ead82 -0.71 iamexcitedtosharemyinterestinthe
+letter-boxed_sections 0:9185168d2cf8 -0.70 document-generationsystemsthatba
+letter-boxed_sections 0:5fb2802723b6 -0.70 ienjoytranslatingfuzzyworkflowre
+letter-boxed_sections 0:dab2d688b7ab -0.69 adoptioneasierfortherestofthetea
+letter-boxed_sections 0:a71e98216baa -0.39 iwouldwelcometheopportunitytobri
+letter-boxed_sections 0:80a6a628ad52 -0.38 sincerely,
+letter-centered_headline 0:8f1010120ed6 -0.50 jordanrivera
+letter-centered_headline 0:2d58f0cadc2d -0.18 platformengineer
+letter-centered_headline 0:8d7a2cca3060 -0.23 +442055551000|jordan.rivera@exam
+letter-centered_headline 0:bef81b541365 -0.25 dearhiringteamatnorthwindsystems
+letter-centered_headline 0:5fb2802723b6 0.13 ienjoytranslatingfuzzyworkflowre
+letter-centered_headline 0:dab2d688b7ab 0.14 adoptioneasierfortherestofthetea
+letter-centered_headline 0:a71e98216baa -0.12 iwouldwelcometheopportunitytobri
+letter-centered_headline 0:80a6a628ad52 -0.09 sincerely,
+letter-classic_serif 0:8f1010120ed6 -0.15 jordanrivera
+letter-classic_serif 0:8d7a2cca3060 0.19 +442055551000|jordan.rivera@exam
+letter-classic_serif 0:bef81b541365 0.20 dearhiringteamatnorthwindsystems
+letter-classic_serif 0:ab54410ead82 -0.08 iamexcitedtosharemyinterestinthe
+letter-classic_serif 0:9185168d2cf8 -0.10 document-generationsystemsthatba
+letter-classic_serif 0:a463bced3db2 -0.13 ienjoytranslatingfuzzyworkflowre
+letter-classic_serif 0:dd474e249222 -0.15 makeadoptioneasierfortherestofth
+letter-classic_serif 0:a71e98216baa 0.07 iwouldwelcometheopportunitytobri
+letter-classic_serif 0:80a6a628ad52 0.05 sincerely,
+letter-compact_mono 0:8f1010120ed6 0.31 jordanrivera
+letter-compact_mono 0:f9e4560bd641 -0.24 london,uk/+442055551000/jordan.r
+letter-compact_mono 0:bef81b541365 -0.08 dearhiringteamatnorthwindsystems
+letter-compact_mono 0:1382a6e37675 -0.35 ienjoytranslatingfuzzyworkflowre
+letter-compact_mono 0:d8e633770b49 -0.38 easierfortherestoftheteam.
+letter-compact_mono 0:a71e98216baa -0.13 iwouldwelcometheopportunitytobri
+letter-compact_mono 0:80a6a628ad52 -0.12 sincerely,
+letter-editorial_blue 0:8f1010120ed6 0.45 jordanrivera
+letter-editorial_blue 0:2d58f0cadc2d 0.22 platformengineer
+letter-editorial_blue 0:1b28eb6a9a2e 0.14 +442055551000-london,uk
+letter-editorial_blue 0:8817bf9310b6 0.11 jordan.rivera@example.com|linked
+letter-editorial_blue 0:bef81b541365 0.13 dearhiringteamatnorthwindsystems
+letter-editorial_blue 0:0c42fe9f3491 -0.15 ienjoytranslatingfuzzyworkflowre
+letter-editorial_blue 0:dda41d31bb3c -0.15 thatmakeadoptioneasierfortherest
+letter-editorial_blue 0:80a6a628ad52 8.86 sincerely,
+letter-engineering_resume 0:8f1010120ed6 0.15 jordanrivera
+letter-engineering_resume 0:2d58f0cadc2d -0.25 platformengineer
+letter-engineering_resume 0:fbeea547d99e -0.21 london,uk
+letter-engineering_resume 0:89674e6f130e -0.20 +442055551000
+letter-engineering_resume 0:e0f850305ded -0.19 jordan.rivera@example.com
+letter-engineering_resume 0:84308bea4540 -0.18 linkedin
+letter-engineering_resume 0:c0b0109d9439 -0.17 github
+letter-engineering_resume 0:bef81b541365 -1.40 dearhiringteamatnorthwindsystems
+letter-engineering_resume 0:a71e98216baa -1.40 iwouldwelcometheopportunitytobri
+letter-engineering_resume 0:80a6a628ad52 -1.41 sincerely,
+letter-executive 0:8f1010120ed6 -0.50 jordanrivera
+letter-executive 0:89ff05847e96 -0.28 london,uk|+442055551000
+letter-executive 0:8817bf9310b6 -0.30 jordan.rivera@example.com|linked
+letter-executive 0:bef81b541365 -0.20 dearhiringteamatnorthwindsystems
+letter-executive 0:ab54410ead82 0.13 iamexcitedtosharemyinterestinthe
+letter-executive 0:9185168d2cf8 0.13 document-generationsystemsthatba
+letter-executive 0:0c42fe9f3491 0.15 ienjoytranslatingfuzzyworkflowre
+letter-executive 0:dda41d31bb3c 0.15 thatmakeadoptioneasierfortherest
+letter-executive 0:7c5a9817c868 0.18 iwouldwelcometheopportunitytobri
+letter-executive 0:4012eb4b05db 0.18 group.
+letter-executive 0:80a6a628ad52 -0.10 sincerely,
+letter-mint-editorial-letter 0:8f1010120ed6 -1.30 jordanrivera
+letter-mint-editorial-letter 0:2d58f0cadc2d -0.27 platformengineer
+letter-mint-editorial-letter 0:bef81b541365 -0.16 dearhiringteamatnorthwindsystems
+letter-mint-editorial-letter 0:ab54410ead82 0.29 iamexcitedtosharemyinterestinthe
+letter-mint-editorial-letter 0:9185168d2cf8 0.29 document-generationsystemsthatba
+letter-mint-editorial-letter 0:a463bced3db2 0.29 ienjoytranslatingfuzzyworkflowre
+letter-mint-editorial-letter 0:dd474e249222 0.29 makeadoptioneasierfortherestofth
+letter-mint-editorial-letter 0:a71e98216baa -0.16 iwouldwelcometheopportunitytobri
+letter-mint-editorial-letter 0:80a6a628ad52 -0.16 sincerely,
+letter-modern_professional 0:8f1010120ed6 0.00 jordanrivera
+letter-modern_professional 0:89ff05847e96 0.14 london,uk|+442055551000
+letter-modern_professional 0:8817bf9310b6 0.11 jordan.rivera@example.com|linked
+letter-modern_professional 0:bef81b541365 -0.13 dearhiringteamatnorthwindsystems
+letter-modern_professional 0:c65db8c80e17 -0.43 iamexcitedtosharemyinterestinthe
+letter-modern_professional 0:c8d01ef84078 -0.43 reusabledocument-generationsyste
+letter-modern_professional 0:2e5ddee14dbc -0.43 ienjoytranslatingfuzzyworkflowre
+letter-modern_professional 0:906501a5e847 -0.43 examplesthatmakeadoptioneasierfo
+letter-modern_professional 0:7c5a9817c868 -0.43 iwouldwelcometheopportunitytobri
+letter-modern_professional 0:4012eb4b05db -0.43 group.
+letter-modern_professional 0:80a6a628ad52 -0.13 sincerely,
+letter-monogram_sidebar 0:136c67657614 -0.38 jordan
+letter-monogram_sidebar 0:8ba35ebe3d5c -0.37 rivera
+letter-monogram_sidebar 0:2d58f0cadc2d -0.19 platformengineer
+letter-monogram_sidebar 0:8d7a2cca3060 -0.17 +442055551000|jordan.rivera@exam
+letter-monogram_sidebar 0:bef81b541365 -0.23 dearhiringteamatnorthwindsystems
+letter-monogram_sidebar 0:ab54410ead82 0.12 iamexcitedtosharemyinterestinthe
+letter-monogram_sidebar 0:9185168d2cf8 0.12 document-generationsystemsthatba
+letter-monogram_sidebar 0:a463bced3db2 0.12 ienjoytranslatingfuzzyworkflowre
+letter-monogram_sidebar 0:dd474e249222 0.12 makeadoptioneasierfortherestofth
+letter-monogram_sidebar 0:a71e98216baa -0.23 iwouldwelcometheopportunitytobri
+letter-monogram_sidebar 0:80a6a628ad52 -0.23 sincerely,
+letter-monogram_sidebar 0:8f1010120ed6 -0.23 jordanrivera
+letter-nordic_clean 0:8f1010120ed6 0.15 jordanrivera
+letter-nordic_clean 0:2d58f0cadc2d -0.20 platformengineer
+letter-nordic_clean 0:fbeea547d99e -0.20 london,uk
+letter-nordic_clean 0:89674e6f130e -0.18 +442055551000
+letter-nordic_clean 0:e0f850305ded -0.16 jordan.rivera@example.com
+letter-nordic_clean 0:84308bea4540 -0.14 linkedin
+letter-nordic_clean 0:c0b0109d9439 -0.12 github
+letter-nordic_clean 0:bef81b541365 -0.11 dearhiringteamatnorthwindsystems
+letter-nordic_clean 0:8d84d32bef54 -0.36 iamexcitedtosharemyinterestinthe
+letter-nordic_clean 0:be14171d4555 -0.37 thatbalancepublicapidesign,rende
+letter-nordic_clean 0:26e89af4523d -0.38 ienjoytranslatingfuzzyworkflowre
+letter-nordic_clean 0:27c5581ffbbc -0.39 restoftheteam.
+letter-nordic_clean 0:a71e98216baa -0.14 iwouldwelcometheopportunitytobri
+letter-nordic_clean 0:80a6a628ad52 -0.14 sincerely,
+letter-panel 0:8f1010120ed6 -0.40 jordanrivera
+letter-panel 0:2d58f0cadc2d 0.12 platformengineer
+letter-panel 0:89ff05847e96 0.19 london,uk|+442055551000
+letter-panel 0:8817bf9310b6 0.21 jordan.rivera@example.com|linked
+letter-panel 0:bef81b541365 0.01 dearhiringteamatnorthwindsystems
+letter-panel 0:ab54410ead82 -0.17 iamexcitedtosharemyinterestinthe
+letter-panel 0:9185168d2cf8 -0.15 document-generationsystemsthatba
+letter-panel 0:0c42fe9f3491 -0.13 ienjoytranslatingfuzzyworkflowre
+letter-panel 0:dda41d31bb3c -0.11 thatmakeadoptioneasierfortherest
+letter-panel 0:7c5a9817c868 -0.09 iwouldwelcometheopportunitytobri
+letter-panel 0:4012eb4b05db -0.07 group.
+letter-panel 0:80a6a628ad52 0.15 sincerely,
+letter-sidebar_portrait 0:8f1010120ed6 -0.73 jordanrivera
+letter-sidebar_portrait 0:2d58f0cadc2d -0.23 platformengineer
+letter-sidebar_portrait 0:8d7a2cca3060 -0.22 +442055551000|jordan.rivera@exam
+letter-sidebar_portrait 0:bef81b541365 -0.28 dearhiringteamatnorthwindsystems
+letter-sidebar_portrait 0:ab54410ead82 -0.51 iamexcitedtosharemyinterestinthe
+letter-sidebar_portrait 0:9185168d2cf8 -0.49 document-generationsystemsthatba
+letter-sidebar_portrait 0:0c42fe9f3491 -0.47 ienjoytranslatingfuzzyworkflowre
+letter-sidebar_portrait 0:dda41d31bb3c -0.45 thatmakeadoptioneasierfortherest
+letter-sidebar_portrait 0:7c5a9817c868 -0.43 iwouldwelcometheopportunitytobri
+letter-sidebar_portrait 0:4012eb4b05db -0.41 group.
+letter-sidebar_portrait 0:80a6a628ad52 -0.14 sincerely,
+letter-timeline_minimal 0:8f1010120ed6 0.15 jordanrivera
+letter-timeline_minimal 0:2d58f0cadc2d -0.40 platformengineer
+letter-timeline_minimal 0:fbeea547d99e -0.19 london,uk
+letter-timeline_minimal 0:89674e6f130e -0.19 +442055551000
+letter-timeline_minimal 0:e0f850305ded -0.19 jordan.rivera@example.com
+letter-timeline_minimal 0:84308bea4540 -0.19 linkedin
+letter-timeline_minimal 0:c0b0109d9439 -0.19 github
+letter-timeline_minimal 0:bef81b541365 1.52 dearhiringteamatnorthwindsystems
+letter-timeline_minimal 0:ab54410ead82 1.32 iamexcitedtosharemyinterestinthe
+letter-timeline_minimal 0:9185168d2cf8 1.32 document-generationsystemsthatba
+letter-timeline_minimal 0:a463bced3db2 1.32 ienjoytranslatingfuzzyworkflowre
+letter-timeline_minimal 0:dd474e249222 1.32 makeadoptioneasierfortherestofth
+letter-timeline_minimal 0:a71e98216baa 1.52 iwouldwelcometheopportunitytobri
+letter-timeline_minimal 0:80a6a628ad52 1.52 sincerely,
+proposal-editorial 0:5205c2a261bc 0.81 northline
+proposal-editorial 0:da0daaba4b15 0.33 studio
+proposal-editorial 0:ecd1378bc9dc -0.31 proposal
+proposal-editorial 0:3786fae913f7 0.63 proposal—
+proposal-editorial 0:03a41208320e 1.33 brandrefresh&
+proposal-editorial 0:c20712117515 -1.02 websiteredesign
+proposal-editorial 0:1bae6dc6c199 -0.11 preparedforasterahealthco.|prepa
+proposal-editorial 0:566835ed7fba -1.01 executivesummary
+proposal-editorial 0:a27307c3fd63 0.57 thankyoufortheopportunitytopartn
+proposal-editorial 0:b03206c0ed03 0.57 nextchapter.thisproposaloutlines
+proposal-editorial 0:838b34bafe7b 0.57 brandidentityandredesigningyourw
+proposal-editorial 0:c704f790608e 0.57 mission,elevatecredibility,andde
+proposal-editorial 0:20bdf45ebb79 0.57 peopleyouserve.
+proposal-editorial 0:d28f860aec04 0.57 ourprocessblendsstrategicthinkin
+proposal-editorial 0:53fcd88ebb00 0.57 cohesivebrandsystemandamodern,co
+proposal-editorial 0:95bad9757a67 0.57 outcomewillbeaclear,confidentpre
+proposal-editorial 0:8863e2b998da 0.57 improvesengagement,andsupportsyo
+proposal-editorial 0:f16c2c2f1999 -0.82 projectgoals
+proposal-editorial 0:c008ab0ba85f -0.19 projectduration
+proposal-editorial 0:5a6b4bf425f2 -0.41 6weeks
+proposal-editorial 0:7aa73e5c14d3 -0.12 startwindow
+proposal-editorial 0:6fcb2d3f02ba -0.33 september2026
+proposal-editorial 0:185e8dc84248 -0.05 primarycontact
+proposal-editorial 0:59d00e0c1b99 -0.26 projectlead
+proposal-editorial 0:4190fd3a8d72 -0.01 proposalvalidity
+proposal-editorial 0:56a2e019b8aa -0.22 14days
+proposal-editorial 0:265e93f6b9da -0.05 (until8september2026)
+proposal-editorial 0:e2ea93b97611 1.15 strengthenbrand
+proposal-editorial 0:7d95098b921b 0.15 credibilityandvisual
+proposal-editorial 0:218e304f8b84 -0.85 consistency.
+proposal-editorial 0:35597cc9803f 1.15 improvewebsite
+proposal-editorial 0:83f63137756b 0.15 usabilityanddrive
+proposal-editorial 0:cce9fba37d4e -0.85 meaningfulaction.
+proposal-editorial 0:59aaadaf0c54 1.15 communicateyour
+proposal-editorial 0:30193022f687 0.15 valueclearlyacrossall
+proposal-editorial 0:04b5995c746f -0.85 touchpoints.
+proposal-editorial 0:b45d848fe1b6 1.15 buildascalabledigital
+proposal-editorial 0:e8228bfeba0e 0.15 foundationforfuture
+proposal-editorial 0:1fa35c7a1402 -0.85 growth.
+proposal-editorial 0:bc981abcdf59 -1.33 scopeofwork
+proposal-editorial 0:28450edd9a4f -0.25 discovery&research
+proposal-editorial 0:12bff3036b66 -0.16 visualidentityrefinement
+proposal-editorial 0:fc5134bf5fd1 -0.07 websiteux/uidesign
+proposal-editorial 0:5d58b01c7096 0.18 designaresponsive,accessibility-
+proposal-editorial 0:5d6068f6a879 -0.10 navigationandclearconversionpath
+proposal-editorial 0:32001e20b2ed 0.02 contentstructure&messaging
+proposal-editorial 0:b3c948ec3e36 0.27 definesitearchitecture,keymessag
+proposal-editorial 0:231428fde7aa -0.01 communicatevalueandbuildtrust.
+proposal-editorial 0:8c7703bb6fb7 0.11 launchsupport
+proposal-editorial 0:026890c58de9 0.01 northlinestudio|northlinestudio.
+proposal-editorial 1:e35c32bb5ed8 -46.41 deliverables
+proposal-editorial 1:23eb79a19b39 -45.38 brandstrategysummary
+proposal-editorial 1:aaa2a6073d69 -45.38 refinedlogosuite&brandguidelines
+proposal-editorial 1:d626f7532564 -45.38 color,typography&designsystem
+proposal-editorial 1:018ec557a513 -45.38 websiteuxwireframes
+proposal-editorial 1:5ed4970fa285 -45.38 high-fidelitywebsitedesigns
+proposal-editorial 1:8b712e7e93bf -57.80 contentstrategy&pagetemplates
+proposal-editorial 1:e9bf06d9b130 -57.80 developer-readyassets&specificat
+proposal-editorial 1:e93e7ba95ceb -57.80 launchchecklist&trainingsession
+proposal-editorial 1:94d192b3a326 -46.32 timeline
+proposal-editorial 1:02195b8e9896 -45.06 phase
+proposal-editorial 1:c51faa148557 -45.06 focus
+proposal-editorial 1:caa79af4db67 -45.06 duration
+proposal-editorial 1:e0ee8bb50685 -45.06 output
+proposal-editorial 1:9a5c531db125 -44.88 01discover
+proposal-editorial 1:99b15ca862e5 -44.88 1week
+proposal-editorial 1:7817fa5085e2 -43.65 research,audit,insights,and
+proposal-editorial 1:73dff70e25ad -45.15 strategy
+proposal-editorial 1:ddfbc608570a -43.65 discoveryreport&creative
+proposal-editorial 1:93c4abe27cf1 -45.15 direction
+proposal-editorial 1:9285b279249c -44.78 02design
+proposal-editorial 1:b183847fe9f8 -44.78 2weeks
+proposal-editorial 1:1e0716635ae3 -43.55 brandrefinementandwebsite
+proposal-editorial 1:80f5fb36f074 -45.05 ux/uidesign
+proposal-editorial 1:ad5e8a376247 -43.55 designsystem&high-fidelity
+proposal-editorial 1:dbb1831acb45 -45.05 designs
+proposal-editorial 1:ea1ecc5ce8ad -44.68 03developprep
+proposal-editorial 1:381b99928ddd -43.45 contentstructure,developer
+proposal-editorial 1:b144c5104484 -44.95 handoff&assetpreparation
+proposal-editorial 1:6ba4e54f2632 -43.45 specs,assets&content
+proposal-editorial 1:06a61df042ad -44.95 framework
+proposal-editorial 1:17f923a4777c -44.45 04launchsupport
+proposal-editorial 1:8f16bc1588b5 -44.60 qa,training&go-liveassistance
+proposal-editorial 1:7c23497e09b0 -44.60 qasign-off&successfullaunch
+proposal-editorial 1:f9b21c4bda58 -45.18 investment
+proposal-editorial 1:4a33eacd5fa6 -43.92 item
+proposal-editorial 1:2da123241332 -43.92 amount(gbp)
+proposal-editorial 1:1167b381fe2f -43.76 discovery&strategy
+proposal-editorial 1:572a8dc5a455 -43.76 £2,500
+proposal-editorial 1:7c2ad9ba0fd0 -43.71 brandidentityrefinement
+proposal-editorial 1:7f2732df7390 -43.71 £4,500
+proposal-editorial 1:fc5134bf5fd1 -43.66 websiteux/uidesign
+proposal-editorial 1:8534d989b9ed -43.66 £7,000
+proposal-editorial 1:32001e20b2ed -43.61 contentstructure&messaging
+proposal-editorial 1:e58a378ffc52 -43.61 £2,000
+proposal-editorial 1:8c7703bb6fb7 -43.56 launchsupport
+proposal-editorial 1:d423fc0a31c2 -43.56 £1,500
+proposal-editorial 1:d6577e95efba -43.51 subtotal
+proposal-editorial 1:8873236d3571 -43.51 £17,500
+proposal-editorial 1:3d213570f707 -43.46 optional:3monthspost-launchsuppo
+proposal-editorial 1:7ffd918ebc4a -43.46 £1,750
+proposal-editorial 1:58656319146d -43.29 totalinvestment
+proposal-editorial 1:4aadcd9bc785 -43.29 £19,250
+proposal-editorial 1:51d2361f4fae -45.18 terms
+proposal-editorial 1:99ffab766326 -44.80 50%depositisrequiredtosecurethe
+proposal-editorial 1:5414e5671cbd -44.05 projectandschedulethekick-off.
+proposal-editorial 1:832db31f5c9a -43.87 includestworoundsofrevisionsper
+proposal-editorial 1:5130aeada3db -43.12 majordeliverable.
+proposal-editorial 1:ffce6ed7e6e5 -42.94 finalfilesandhandoffdeliveredupo
+proposal-editorial 1:566f68df6dd8 -42.19 finalpayment.
+proposal-editorial 1:06ebb5670fa8 -42.61 ownershipofallfinaldeliverables
+proposal-editorial 1:c1514c6cdad1 -44.29 acceptance
+proposal-editorial 1:893663b06769 -43.26 bysigningbelow,youagreetothescop
+proposal-editorial 1:df16232de5b9 -43.27 acceptedby:
+proposal-editorial 1:f089d24d7cf3 -43.27 signature:
+proposal-editorial 1:c74c9cd82f13 -43.27 date:
+proposal-editorial 1:026890c58de9 0.01 northlinestudio|northlinestudio.
+proposal-indigo 0:07f15cde5b18 0.14 kestrel
+proposal-indigo 0:ecd1378bc9dc 0.13 proposal
+proposal-indigo 0:781d36213745 0.07 preparedfor
+proposal-indigo 0:45fe04dbae24 0.09 brightfutureltd.
+proposal-indigo 0:65405af34bf9 0.05 45kingstreet
+proposal-indigo 0:1f8da9c4e269 0.07 manchester,m24wu
+proposal-indigo 0:2474519f77a9 0.08 unitedkingdom
+proposal-indigo 0:cf6b67fe426f 0.10 attn
+proposal-indigo 0:7b6259001f01 0.09 priyaraman
+proposal-indigo 0:59458508a082 0.12 founder
+proposal-indigo 0:1f054d7534fa 0.08 priya@brightfuture.example
+proposal-indigo 0:a8acc3a90a7b 0.09 +447700900123
+proposal-indigo 0:f99fb5990e3f 0.16 proposalfor
+proposal-indigo 0:460ebeabf0d7 0.16 financialinfrastructure
+proposal-indigo 0:e0b894e9070f 0.17 &embeddedfinance
+proposal-indigo 0:76f9df77e8af 0.18 partnership
+proposal-indigo 0:f33b9e206de3 1.06 empoweringbrightfutureltd.withmo
+proposal-indigo 0:16a14b235896 1.06 infrastructure,globalcapabilitie
+proposal-indigo 0:2fdd6f092df5 1.05 experienceforyourcustomers.
+proposal-indigo 0:0e87632cd46b -24.60 date
+proposal-indigo 0:dc9696f61d36 -24.61 27may2026
+proposal-indigo 0:621f581e97b4 -24.60 proposalid
+proposal-indigo 0:2b2adf7998f8 -24.61 kes-2026-0527-01
+proposal-indigo 0:4bf91849cfb4 -24.60 validuntil
+proposal-indigo 0:93059e9a1c07 -24.61 26june2026
+proposal-indigo 0:8d6867ab3a4c -24.60 preparedby
+proposal-indigo 0:50910841c2da -24.61 kestrelbusinessteam
+proposal-indigo 0:69cca54632df -0.77 aboutkestrelbusiness
+proposal-indigo 0:8001c2743965 -27.90 global
+proposal-indigo 0:f469802a3144 -27.88 scale
+proposal-indigo 0:774cdf08f6a8 -27.90 modern
+proposal-indigo 0:9fec08e4574b -27.88 infrastructure
+proposal-indigo 0:5924acfba1a5 -27.90 secure&
+proposal-indigo 0:b67c263c0379 -27.88 compliant
+proposal-indigo 0:88fa0d759f84 -27.90 developer
+proposal-indigo 0:962cba9fd476 -27.88 firstapis
+proposal-indigo 0:4f30d3328d6f -0.69 projectoverview
+proposal-indigo 0:a73369734180 -0.69 thisproposaloutlinesatailoredfin
+proposal-indigo 0:19a7c085cb24 -0.68 supportbrightfutureltd.inenablin
+proposal-indigo 0:ff5888ea18e0 -0.68 financialservicesforyourbusiness
+proposal-indigo 0:2855076f724f -0.67 multi-currencybusinessaccounts
+proposal-indigo 0:4e36c64ccf3a -0.66 hold,send,receivein30+currencies
+proposal-indigo 0:17f85ac3692b -0.58 corporatecards&expenses
+proposal-indigo 0:82c5a2c4443e -0.57 issuephysical&virtualcardswithsm
+proposal-indigo 0:e05293fab5bc -0.48 payments&collections
+proposal-indigo 0:1443f4651241 -0.47 local&globalpayments,directdebit
+proposal-indigo 0:32df55902e8b -0.39 embeddedfinanceapis
+proposal-indigo 0:8ac47b282ff6 -0.38 buildfinancialproductsdirectlyin
+proposal-indigo 0:58520edff52a -0.30 compliance&risk
+proposal-indigo 0:05aecb87ba6a -0.28 kyc,aml,fraudmonitoringandregula
+proposal-indigo 0:ec5294e7a376 -0.69 investmentsummary
+proposal-indigo 0:af60f4182ca5 -0.69 implementation&onboarding
+proposal-indigo 0:572a8dc5a455 -0.69 £2,500
+proposal-indigo 0:760775d91a04 -0.58 platformaccess&apis
+proposal-indigo 0:6ca9376c51ca -0.58 £3,000
+proposal-indigo 0:9a38b75a07fb -0.47 transactionfees(est.)
+proposal-indigo 0:3b325109deb0 -0.47 variable
+proposal-indigo 0:bfece4405b19 -0.36 support&accountmanagement
+proposal-indigo 0:7f0f70e643bc -0.36 included
+proposal-indigo 0:e0bd5388bdc9 -0.24 estimatedfirstyearinvestment
+proposal-indigo 0:51db6c622be8 -0.21 £5,500
+proposal-indigo 0:ab5aa97074c4 -0.26 notes
+proposal-indigo 0:b9e9c18c4d13 -0.27 •pricingexcludesapplicabletaxes.
+proposal-indigo 0:e4239ffa2bb6 -0.26 •transactionfeesarebasedonusagea
+proposal-indigo 0:82eb848e77b3 -0.26 •thisproposalisvalidfor30daysfro
+proposal-indigo 0:732bcbb66cec -0.27 kestrelpaymentsltd
+proposal-indigo 0:3898e7b5f79b -0.24 7harbourcircus,canarywharf,londo
+proposal-indigo 0:29208032c874 -0.23 kestrel.example/business|busines
+proposal-modern 0:ecd1378bc9dc 0.00 proposal
+proposal-modern 0:f592a683c61d 0.27 documentplatformconsolidation
+proposal-modern 0:bbe07492ee1f 0.32 proposalgc-p-2026-014prepared02a
+proposal-modern 0:566835ed7fba -0.07 executivesummary
+proposal-modern 0:7ccf0e6c59fa -0.10 aphasedengagementtoretireper-tea
+proposal-modern 0:75857a458999 -0.42 from
+proposal-modern 0:c26c22b94338 -0.45 graphcomposestudio
+proposal-modern 0:2a08ce5567fb -0.72 18layoutstreet
+proposal-modern 0:fbeea547d99e -0.75 london,uk
+proposal-modern 0:3c8401edb4cc -0.77 hello@graphcompose.dev
+proposal-modern 0:89674e6f130e -0.80 +442055551000
+proposal-modern 0:213a61c7aeb6 -0.82 graphcompose.dev
+proposal-modern 0:f890faef907f -0.45 northwindsystems
+proposal-modern 0:577a7fcdaa02 -0.72 attn:procurement
+proposal-modern 0:91eefd794f79 -0.75 410marketavenue
+proposal-modern 0:3daace874084 -0.77 procurement@northwind.example
+proposal-modern 0:5f161c914988 -0.41 scope
+proposal-modern 0:9e580657f485 -0.57 discovery,architecture,andarefer
+proposal-modern 0:cec9111de36d -0.41 approach
+proposal-modern 0:3215ea3be6d9 -0.57 iterativedeliverywithweeklycheck
+proposal-modern 0:94d192b3a326 -0.41 timeline
+proposal-modern 0:02195b8e9896 -0.47 phase
+proposal-modern 0:caa79af4db67 -0.47 duration
+proposal-modern 0:41ffd8b76afc -0.47 details
+proposal-modern 0:fa44132b238e -0.25 discovery
+proposal-modern 0:b183847fe9f8 -0.25 2weeks
+proposal-modern 0:4b20bfb69ca7 -0.25 stakeholderinterviews+audit
+proposal-modern 0:44575cf5b285 -0.15 build
+proposal-modern 0:5a6b4bf425f2 -0.15 6weeks
+proposal-modern 0:7a802048127d -0.15 engine+templatemigration
+proposal-modern 0:f9b21c4bda58 0.09 investment
+proposal-modern 0:4a33eacd5fa6 0.03 item
+proposal-modern 0:c9046f7a37ad 0.03 description
+proposal-modern 0:cf38d95c9c6b 0.03 amount
+proposal-modern 0:fe9b6b4f133b 0.25 workshops+auditgbp6,000
+proposal-modern 0:62e788ae3916 0.25 engine+templatesgbp24,000
+proposal-modern 0:11239872d178 0.25 total
+proposal-modern 0:1c3065490625 0.25 gbp30,000
+proposal-modern 0:63feb7230a5d 0.57 acceptanceterms
+proposal-modern 0:35046a9f5675 0.50 •50%onsignature,50%ondelivery.
+proposal-modern 0:f03c1877ea2b 0.50 •validfor30daysfromthepreparedda
+proposal-modern 0:90572e911376 0.42 thankyouforconsideringgraphcompo
+proposal-northline 0:5205c2a261bc -0.44 northline
+proposal-northline 0:da0daaba4b15 -0.44 studio
+proposal-northline 0:ecd1378bc9dc -0.38 proposal
+proposal-northline 0:53df6a685985 -0.06 proposal–
+proposal-northline 0:03a41208320e 0.54 brandrefresh&
+proposal-northline 0:c20712117515 -0.16 websiteredesign
+proposal-northline 0:1bae6dc6c199 -0.20 preparedforasterahealthco.|prepa
+proposal-northline 0:566835ed7fba -0.54 executivesummary
+proposal-northline 0:a27307c3fd63 0.08 thankyoufortheopportunitytopartn
+proposal-northline 0:b03206c0ed03 0.08 nextchapter.thisproposaloutlines
+proposal-northline 0:838b34bafe7b 0.08 brandidentityandredesigningyourw
+proposal-northline 0:c704f790608e 0.08 mission,elevatecredibility,andde
+proposal-northline 0:20bdf45ebb79 0.08 peopleyouserve.
+proposal-northline 0:d28f860aec04 0.08 ourprocessblendsstrategicthinkin
+proposal-northline 0:53fcd88ebb00 0.08 cohesivebrandsystemandamodern,co
+proposal-northline 0:95bad9757a67 0.08 outcomewillbeaclear,confidentpre
+proposal-northline 0:8863e2b998da 0.08 improvesengagement,andsupportsyo
+proposal-northline 0:f16c2c2f1999 -0.44 projectgoals
+proposal-northline 0:e4af490aeb22 -0.26 projectataglance
+proposal-northline 0:c008ab0ba85f -0.20 projectduration
+proposal-northline 0:5a6b4bf425f2 -0.37 6weeks
+proposal-northline 0:7aa73e5c14d3 -0.15 startwindow
+proposal-northline 0:6fcb2d3f02ba -0.32 september2026
+proposal-northline 0:185e8dc84248 -0.10 primarycontact
+proposal-northline 0:59d00e0c1b99 -0.27 projectlead
+proposal-northline 0:4190fd3a8d72 -0.05 proposalvalidity
+proposal-northline 0:56a2e019b8aa -0.22 14days
+proposal-northline 0:e2ea93b97611 10.92 strengthenbrand
+proposal-northline 0:7d95098b921b 10.42 credibilityandvisual
+proposal-northline 0:218e304f8b84 9.92 consistency.
+proposal-northline 0:35597cc9803f 10.92 improvewebsite
+proposal-northline 0:83f63137756b 10.42 usabilityanddrive
+proposal-northline 0:cce9fba37d4e 9.92 meaningfulaction.
+proposal-northline 0:59aaadaf0c54 10.92 communicateyour
+proposal-northline 0:30193022f687 10.42 valueclearlyacrossall
+proposal-northline 0:04b5995c746f 9.92 touchpoints.
+proposal-northline 0:b45d848fe1b6 10.92 buildascalabledigital
+proposal-northline 0:e8228bfeba0e 10.42 foundationforfuture
+proposal-northline 0:1fa35c7a1402 9.92 growth.
+proposal-northline 0:bc981abcdf59 9.91 scopeofwork
+proposal-northline 0:28450edd9a4f 10.27 discovery&research
+proposal-northline 0:155f35b4967f 10.87 stakeholderinterviews,brandaudit
+proposal-northline 0:973aeda5fe6d 10.17 insightstoinformstrategy.
+proposal-northline 0:12bff3036b66 10.37 visualidentityrefinement
+proposal-northline 0:d7ac738462f9 10.97 refinelogosystem,colorpalette,ty
+proposal-northline 0:9136e740c370 10.27 cohesive,modernidentity.
+proposal-northline 0:fc5134bf5fd1 10.47 websiteux/uidesign
+proposal-northline 0:5d58b01c7096 11.07 designaresponsive,accessibility-
+proposal-northline 0:5d6068f6a879 10.37 navigationandclearconversionpath
+proposal-northline 0:32001e20b2ed 10.57 contentstructure&messaging
+proposal-northline 0:b3c948ec3e36 11.17 definesitearchitecture,keymessag
+proposal-northline 0:231428fde7aa 10.47 communicatevalueandbuildtrust.
+proposal-northline 0:8c7703bb6fb7 10.67 launchsupport
+proposal-northline 0:64aa6ccd2e0e 11.27 developerhandoff,qasupport,train
+proposal-northline 0:1f71a8d2d1d2 10.57 ensureasmoothlaunch.
+proposal-northline 0:026890c58de9 0.01 northlinestudio|northlinestudio.
+proposal-northline 1:5205c2a261bc -0.34 northline
+proposal-northline 1:da0daaba4b15 -0.34 studio
+proposal-northline 1:ecd1378bc9dc -0.28 proposal
+proposal-northline 1:e35c32bb5ed8 -0.44 deliverables
+proposal-northline 1:23eb79a19b39 -0.12 brandstrategysummary
+proposal-northline 1:aaa2a6073d69 -0.12 refinedlogosuite&brandguidelines
+proposal-northline 1:d626f7532564 -0.12 color,typography&designsystem
+proposal-northline 1:018ec557a513 -0.12 websiteuxwireframes
+proposal-northline 1:5ed4970fa285 -0.12 high-fidelitywebsitedesigns
+proposal-northline 1:f4a5e0b85868 -0.12 responsivedesignfordesktop,table
+proposal-northline 1:8b712e7e93bf -0.12 contentstrategy&pagetemplates
+proposal-northline 1:e9bf06d9b130 -0.12 developer-readyassets&specificat
+proposal-northline 1:e93e7ba95ceb -0.12 launchchecklist&trainingsession
+proposal-northline 1:94d192b3a326 -0.44 timeline
+proposal-northline 1:02195b8e9896 0.11 phase
+proposal-northline 1:c51faa148557 0.11 focus
+proposal-northline 1:caa79af4db67 0.11 duration
+proposal-northline 1:e0ee8bb50685 0.11 output
+proposal-northline 1:9a5c531db125 0.29 01discover
+proposal-northline 1:99b15ca862e5 0.29 1week
+proposal-northline 1:7817fa5085e2 0.87 research,audit,insights,and
+proposal-northline 1:73dff70e25ad 0.17 strategy
+proposal-northline 1:ddfbc608570a 0.87 discoveryreport&creative
+proposal-northline 1:93c4abe27cf1 0.17 direction
+proposal-northline 1:9285b279249c 0.39 02design
+proposal-northline 1:b183847fe9f8 0.39 2weeks
+proposal-northline 1:1e0716635ae3 0.97 brandrefinementandwebsite
+proposal-northline 1:80f5fb36f074 0.27 ux/uidesign
+proposal-northline 1:ad5e8a376247 0.97 designsystem&high-fidelity
+proposal-northline 1:dbb1831acb45 0.27 designs
+proposal-northline 1:ea1ecc5ce8ad 0.49 03developprep
+proposal-northline 1:381b99928ddd 1.07 contentstructure,developer
+proposal-northline 1:b144c5104484 0.37 handoff&assetpreparation
+proposal-northline 1:6ba4e54f2632 1.07 specs,assets&content
+proposal-northline 1:06a61df042ad 0.37 framework
+proposal-northline 1:17f923a4777c 0.72 04launchsupport
+proposal-northline 1:8f16bc1588b5 0.57 qa,training&go-liveassistance
+proposal-northline 1:7c23497e09b0 0.57 qasign-off&successfullaunch
+proposal-northline 1:f9b21c4bda58 0.61 investment
+proposal-northline 1:4a33eacd5fa6 1.16 item
+proposal-northline 1:2da123241332 1.16 amount(gbp)
+proposal-northline 1:1167b381fe2f 1.32 discovery&strategy
+proposal-northline 1:572a8dc5a455 1.32 £2,500
+proposal-northline 1:7c2ad9ba0fd0 1.37 brandidentityrefinement
+proposal-northline 1:7f2732df7390 1.37 £4,500
+proposal-northline 1:fc5134bf5fd1 1.42 websiteux/uidesign
+proposal-northline 1:8534d989b9ed 1.42 £7,000
+proposal-northline 1:32001e20b2ed 1.47 contentstructure&messaging
+proposal-northline 1:e58a378ffc52 1.47 £2,000
+proposal-northline 1:8c7703bb6fb7 1.52 launchsupport
+proposal-northline 1:d423fc0a31c2 1.52 £1,500
+proposal-northline 1:d6577e95efba 1.57 subtotal
+proposal-northline 1:8873236d3571 1.57 £17,500
+proposal-northline 1:3d213570f707 1.62 optional:3monthspost-launchsuppo
+proposal-northline 1:7ffd918ebc4a 1.62 £1,750
+proposal-northline 1:58656319146d 1.79 totalinvestment
+proposal-northline 1:4aadcd9bc785 1.79 £19,250
+proposal-northline 1:51d2361f4fae 0.61 terms
+proposal-northline 1:99ffab766326 0.78 50%depositisrequiredtosecurethe
+proposal-northline 1:5414e5671cbd 1.55 projectandschedulethekick-off.
+proposal-northline 1:832db31f5c9a 1.73 includestworoundsofrevisionsper
+proposal-northline 1:5130aeada3db 2.50 majordeliverable.
+proposal-northline 1:ffce6ed7e6e5 2.68 finalfilesandhandoffdeliveredupo
+proposal-northline 1:566f68df6dd8 3.45 finalpayment.
+proposal-northline 1:06ebb5670fa8 3.03 ownershipofallfinaldeliverables
+proposal-northline 1:5312201597c1 3.80 transferstoasterahealthco.afterf
+proposal-northline 1:d31e8d77a816 3.80 paymentisreceived.
+proposal-northline 1:c1514c6cdad1 1.41 acceptance
+proposal-northline 1:893663b06769 1.73 bysigningbelow,youagreetothescop
+proposal-northline 1:df16232de5b9 1.72 acceptedby:
+proposal-northline 1:f089d24d7cf3 1.72 signature:
+proposal-northline 1:c74c9cd82f13 1.72 date:
+proposal-northline 1:026890c58de9 0.01 northlinestudio|northlinestudio.
+receipt-modern 0:2b019b5b46da 0.31 northwindpay
+receipt-modern 0:a3c304a23bb1 0.30 transferconfirmation
+receipt-modern 0:e885a92f5bb7 0.18 generatedon09august2026
+receipt-modern 0:c288dd6df716 0.19 referencenwp-4821-0067
+receipt-modern 0:9de2a2d7cd7a 0.18 amountcollected
+receipt-modern 0:465691680b99 0.03 £66.62
+receipt-modern 0:4260e5ae365d 0.20 directdebitcollectedbyharbourfin
+receipt-modern 0:4ddb3e96801a 0.18 completed
+receipt-modern 0:a22e6dacae05 0.24 valuedate07jul2026
+receipt-modern 0:53becbb168d1 0.24 operationdate07jul2026
+receipt-modern 0:b311cb4017a4 0.24 schemebacsdirectdebit
+receipt-modern 0:1bd90283f7fe 0.18 paidfrom
+receipt-modern 0:0293c2cdfa58 0.23 alexsample
+receipt-modern 0:85d2c9e53e92 -0.03 12exampleway
+receipt-modern 0:db3b3fcfe2d1 -0.02 brentfordtw00aa
+receipt-modern 0:2474519f77a9 -0.01 unitedkingdom
+receipt-modern 0:a3570420c75d 0.29 account••••4396
+receipt-modern 0:d2f5582b8015 0.29 sortcode00-00-00
+receipt-modern 0:c4ab31d8c668 0.18 paidto
+receipt-modern 0:c032ca75a3a7 0.23 harbourfinanceltd
+receipt-modern 0:995c51cebabe -0.02 1samplequay
+receipt-modern 0:f05e0b2f4fe3 -0.01 manchesterm00aa
+receipt-modern 0:597533badf94 0.29 account••••5604
+receipt-modern 0:a5938b687682 0.29 sortcode00-00-11
+receipt-modern 0:5434155c0fda 0.23 transferdetails
+receipt-modern 0:a4d7978db2aa 0.29 mandatereference
+receipt-modern 0:0123b9cf310f 0.29 mnd-0110-8054-5652
+receipt-modern 0:3840804e6235 0.29 transactionid
+receipt-modern 0:60e01e42bb33 0.29 b71f0c2e-9a44-4f18-bd30-51c7a2e9
+receipt-modern 0:2cbaa23e0a56 0.29 paymentscheme
+receipt-modern 0:1477cb720a28 0.29 bacsdirectdebit
+receipt-modern 0:1fa78044a7da 0.29 statementdescription
+receipt-modern 0:b77918146dd3 0.29 harbourfin4821
+receipt-modern 0:c72294b34f1a 0.23 amountbreakdown
+receipt-modern 0:cf38d95c9c6b 0.29 amount
+receipt-modern 0:dc40efafaeb3 0.29 transferfee
+receipt-modern 0:3a82ba6903c6 0.29 £0.00
+receipt-modern 0:1cdd81427c35 0.29 exchangerate
+receipt-modern 0:0311534a9954 0.29 1.00gbp/gbp
+receipt-modern 0:c1dc9f641ca3 0.29 totaldebited
+receipt-modern 0:de149c2431a2 0.23 paymentprogress
+receipt-modern 0:4568e72e6bfd 0.29 instructed
+receipt-modern 0:c5f62da028cc 0.25 07jul2026,08:12bst·collectionreq
+receipt-modern 0:788d0109e065 0.30 inclearing
+receipt-modern 0:7cb44e46733a 0.26 08jul2026,09:00bst·three-working
+receipt-modern 0:d31e014808ec 0.31 settled
+receipt-modern 0:06cb75439693 0.27 09jul2026,06:30bst·fundsdebiteda
+receipt-modern 0:ab5aa97074c4 0.26 notes
+receipt-modern 0:a8da22f90eac 0.31 keepthisconfirmationforyourrecor
+receipt-modern 0:59941ac03c12 0.39 scantocheckthisconfirmationagain
+receipt-modern 0:868e2517782a 0.13 support+442000000000
+receipt-modern 0:94d25770d489 0.13 help@northwind-pay.example
+receipt-modern 0:d613d9566d09 0.13 northwindpayisafictionalinstitut
+receipt-modern 0:403a860bfc00 0.13 invented.
+receipt-modern 0:7b14b8d2c5c4 -0.04 page1of1
+rota-cobalt 0:33888e306262 1.18 quay
+rota-cobalt 0:f5f481423c57 1.03 quaysidebar
+rota-cobalt 0:d457d4238a16 1.43 monday31st
+rota-cobalt 0:916a90a10237 1.43 tuesday1st
+rota-cobalt 0:c602d130bfde 1.43 wednesday2nd
+rota-cobalt 0:74cf6babb6f6 1.43 thursday3rd
+rota-cobalt 0:ae6aa379ad0c 1.43 friday4th
+rota-cobalt 0:a6643f169bfd 1.43 saturday5th
+rota-cobalt 0:58752a3c0543 1.43 sunday6th
+rota-cobalt 0:c4aee96677b0 2.02 /cleancrushedice
+rota-cobalt 0:2895e01ceae0 1.26 machine&area
+rota-cobalt 0:f4e7df025c89 2.22 pianist18:30/clean
+rota-cobalt 0:d3acaa767810 1.71 crushedicemachine&
+rota-cobalt 0:4a91ee5f0106 1.20 area
+rota-cobalt 0:b913ee5e077a 2.02 privatedinner44pax/
+rota-cobalt 0:d89987d22df9 1.26 soulgf/pianist18:30
+rota-cobalt 0:fb980282ae0a 2.02 pianist18:30/partner
+rota-cobalt 0:3c1fc038017e 1.26 meeting3:30pm
+rota-cobalt 0:cc96b22615e5 1.42 pianist19:00
+rota-cobalt 0:bc14a4ce6407 2.17 statuslegend
+rota-cobalt 0:1f58b9145b24 2.23 request
+rota-cobalt 0:b4dc66dde806 2.23 off
+rota-cobalt 0:cdc2def9aec4 2.23 hol
+rota-cobalt 0:08c4242b5f58 2.23 stock
+rota-cobalt 0:f8f8922da592 2.23 standby
+rota-cobalt 0:c2fb788c7dee 2.23 training
+rota-cobalt 0:a18603086e5b 2.23 support
+rota-cobalt 0:17ae69cc7e46 2.21 covers
+rota-cobalt 0:412a5c513322 2.22 l104/d50
+rota-cobalt 0:304560bf3205 2.22 l33/d57
+rota-cobalt 0:ca6ce47ada53 2.22 l32/d76
+rota-cobalt 0:e594a1e64b7d 2.22 l22/d48
+rota-cobalt 0:7062fafe1dab 2.22 l65/d112
+rota-cobalt 0:778cb57b62fa 2.22 l73/d112
+rota-cobalt 0:1b4471920f01 2.22 l72/d83
+rota-cobalt 0:288965a1f2c8 2.12 management
+rota-cobalt 0:6a61eb7383e8 2.23 rosa
+rota-cobalt 0:3bb0f0bb5552 2.24 09:00-18:00
+rota-cobalt 0:9fff4d6be39d 2.24 16:00-01:00
+rota-cobalt 0:1017e02ccc77 2.24 08:00-18:00
+rota-cobalt 0:e669544e9895 1.45 08:00-16:00
+rota-cobalt 0:19c30663e8ef 1.51 16:00-21:00
+rota-cobalt 0:c9affe7f7587 2.34 tomas
+rota-cobalt 0:6d43df86fe4b 2.35 16:00-00:00
+rota-cobalt 0:5a5f719aae11 1.65 11:00-16:00
+rota-cobalt 0:df9ba122242c 2.27 bartenders
+rota-cobalt 0:dbaf86dd80e3 2.39 nadia
+rota-cobalt 0:0cdd9d9e75dc 1.60 09:00-16:00
+rota-cobalt 0:f1e2ce9aa575 1.67 16:00-22:00
+rota-cobalt 0:de7ee76e7373 2.60 elias
+rota-cobalt 0:61587c4c0d6d 2.60 09:00-17:00
+rota-cobalt 0:7195a8ed72b9 1.81 12:00-16:00
+rota-cobalt 0:953cb9ba8128 2.80 mirela
+rota-cobalt 0:c1298a6e85c2 2.81 12:00-18:00
+rota-cobalt 0:86846e84f9bf 2.91 sofia
+rota-cobalt 0:effcc54ba75f 2.91 karol
+rota-cobalt 0:5c1e134d2d34 3.02 henrik
+rota-cobalt 0:6326e0e8cfda 3.13 lucia
+rota-cobalt 0:c235e502637c 3.06 barbacks
+rota-cobalt 0:bd558de5f794 3.08 oskar
+rota-cobalt 0:4941d6993ee9 3.08 teodor
+rota-cobalt 0:1d3d3d6a07bd 3.29 vesna
+rota-cobalt 0:59f2ff7c7c70 0.03 timesshownin24-hourformat.shiftc
+rota-cobalt 0:594c41ec0506 0.03 quaysidebar|31aug-6sep2026
diff --git a/qa/src/test/resources/docx-fidelity/libreoffice-windows.tsv b/qa/src/test/resources/docx-fidelity/libreoffice-windows.tsv
new file mode 100644
index 000000000..b55a7ea73
--- /dev/null
+++ b/qa/src/test/resources/docx-fidelity/libreoffice-windows.tsv
@@ -0,0 +1,64 @@
+# libreoffice on windows
+document engine_pages editor_pages lines matched median p90 over2
+cv-blue_banner 2 2 53 41 0.12 0.20 0
+cv-boxed_sections 2 2 58 55 0.29 0.46 0
+cv-centered_headline 2 2 57 51 0.20 0.59 0
+cv-charcoal_gold 1 1 81 79 2.94 3.28 79
+cv-classic_serif 2 2 56 52 0.24 12.20 8
+cv-compact_mono 1 1 58 50 0.26 0.90 0
+cv-editorial_blue 2 2 81 75 0.41 10.06 9
+cv-engineering_resume 1 1 57 47 0.55 9.12 14
+cv-executive 2 2 60 60 0.24 3.10 15
+cv-midnight_navy 1 1 83 76 3.20 17.12 70
+cv-minimal_underlined 2 2 59 57 0.69 13.40 9
+cv-mint_editorial 2 2 59 59 0.27 0.60 0
+cv-modern_professional 2 2 60 58 0.12 0.54 5
+cv-monogram_sidebar 1 1 53 50 3.57 5.69 50
+cv-navy_sidebar 1 1 68 68 2.82 3.03 68
+cv-nordic_clean 1 1 63 53 0.38 9.61 21
+cv-orange_ops 1 2 107 5 81.97 81.97 5
+cv-panel 1 1 79 69 0.37 0.78 0
+cv-professional_sidebar 1 1 66 60 2.72 2.90 60
+cv-serif_headline 1 1 101 93 0.40 1.47 8
+cv-sidebar_portrait 1 1 49 47 2.78 3.02 47
+cv-slate_orange 1 1 87 84 3.26 3.70 84
+cv-teal_pulse 1 1 57 55 0.22 0.65 0
+cv-terracotta_rail 1 1 97 95 0.49 0.94 0
+cv-timeline_minimal 2 2 89 84 1.40 1.40 0
+cv-violet_grid 1 2 78 74 3.98 21.80 38
+invoice-classic 1 1 52 52 0.47 1.17 0
+invoice-classic_long 2 2 154 154 0.47 0.87 0
+invoice-consulting 1 1 84 84 0.92 1.61 3
+invoice-consulting_long 2 2 119 119 0.72 1.24 3
+invoice-luma_studio 1 1 84 84 0.12 0.55 3
+invoice-luma_studio_long 3 3 120 120 0.22 11.90 23
+invoice-merchant 1 2 80 78 0.21 0.67 0
+invoice-metered 1 1 87 87 0.25 0.65 0
+invoice-modern 1 1 52 52 0.32 0.52 0
+invoice-modern_long 2 2 152 152 0.35 0.52 0
+invoice-obsidian 1 1 74 74 0.29 0.85 0
+invoice-payments 1 1 89 85 0.40 1.06 2
+invoice-platform 1 1 97 97 0.27 0.41 0
+invoice-subscription 1 1 71 71 0.42 0.73 0
+invoice-workspace 1 1 79 79 0.33 1.13 0
+letter-blue_banner 1 1 9 5 0.20 0.42 0
+letter-boxed_sections 1 1 9 9 0.46 0.70 0
+letter-centered_headline 1 1 10 8 0.18 0.25 0
+letter-classic_serif 1 1 9 9 0.13 0.19 0
+letter-compact_mono 1 1 9 7 0.24 0.35 0
+letter-editorial_blue 1 1 11 8 0.15 0.45 1
+letter-engineering_resume 1 1 14 10 0.21 1.40 0
+letter-executive 1 1 11 11 0.18 0.30 0
+letter-mint-editorial-letter 1 1 9 9 0.29 0.29 0
+letter-modern_professional 1 1 11 11 0.43 0.43 0
+letter-monogram_sidebar 1 1 12 12 0.23 0.37 0
+letter-nordic_clean 1 1 14 14 0.18 0.38 0
+letter-panel 1 1 12 12 0.15 0.21 0
+letter-sidebar_portrait 1 1 11 11 0.43 0.51 0
+letter-timeline_minimal 1 1 14 14 1.32 1.52 0
+proposal-editorial 2 2 130 117 43.27 45.15 66
+proposal-indigo 1 1 72 68 0.48 27.88 16
+proposal-modern 1 1 42 42 0.41 0.75 0
+proposal-northline 2 2 130 129 0.87 10.47 34
+receipt-modern 1 1 55 55 0.26 0.30 0
+rota-cobalt 1 1 67 64 2.22 2.91 41
From 13d3783c80294f5e9f0e5e6396729d0c0b9f89c6 Mon Sep 17 00:00:00 2001
From: DemchaAV
Date: Thu, 1 Oct 2026 17:17:49 +0100
Subject: [PATCH 2/2] test(qa): pair repeated lines nearest-first, refuse a
baseline without its lines, and never measure a stale PDF
---
CHANGELOG.md | 7 +-
.../fidelity/DocxFidelityCorpusTest.java | 21 +-
.../fidelity/DocxFidelityGateTest.java | 74 ++-
.../templates/fidelity/FidelityBaseline.java | 56 ++-
.../fidelity/FidelityMeasurement.java | 92 +++-
.../fidelity/LibreOfficeConverter.java | 41 +-
.../document/templates/fidelity/PdfLines.java | 61 +--
.../libreoffice-windows-lines.tsv | 468 +++++++++++++++++-
.../docx-fidelity/libreoffice-windows.tsv | 96 ++--
9 files changed, 776 insertions(+), 140 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index eba95581f..ff5691996 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1478,9 +1478,10 @@ follow semantic versioning; release dates are ISO 8601.
- **The DOCX export is held to its corpus, line by line.** `DocxFidelityCorpusTest` exports
every template preset — 62 documents across CVs, cover letters, invoices, proposals, a
receipt and a rota — to DOCX, has LibreOffice set each one, and finds each of the page's
- lines in it by its letters. Against the committed baseline a document fails when a line is
- no longer found (set at other words or on another page), when a line drifts half a point
- further from the page, or when it takes a page more. Counts per document would not do: a
+ lines in it by its letters — lines of the same letters on a page, a rota's shifts, each
+ paired with the editor's nearest. Against the committed baseline a document fails when a line
+ is no longer found (set at other words or on another page), when a line drifts more than half
+ a point further from the page, or when it takes a page more. Counts per document would not do: a
sidebar CV that LibreOffice sets about 3pt off throughout lost an indented list without
its counts moving, and the line check names the two lines lost and the six set 12pt
higher. It runs on request, `-Dgraphcompose.docxFidelity=libreoffice`; a change that moves
diff --git a/qa/src/test/java/com/demcha/compose/document/templates/fidelity/DocxFidelityCorpusTest.java b/qa/src/test/java/com/demcha/compose/document/templates/fidelity/DocxFidelityCorpusTest.java
index 4fcd02651..2d90919f1 100644
--- a/qa/src/test/java/com/demcha/compose/document/templates/fidelity/DocxFidelityCorpusTest.java
+++ b/qa/src/test/java/com/demcha/compose/document/templates/fidelity/DocxFidelityCorpusTest.java
@@ -53,6 +53,9 @@ void everyDocumentStandsNoFurtherFromThePageThanItsBaseline() throws Exception {
Path work = Path.of("target", "docx-fidelity").toAbsolutePath();
Path engine = Files.createDirectories(work.resolve("engine"));
Path editor = work.resolve(EDITOR);
+ // LibreOffice can exit cleanly when a file fails to load: a PDF left from an earlier
+ // run would then be measured in its place.
+ deleteTree(editor);
List corpus = corpus();
List docx = new ArrayList<>();
for (DocxCorpusDocument document : corpus) {
@@ -67,16 +70,19 @@ void everyDocumentStandsNoFurtherFromThePageThanItsBaseline() throws Exception {
measurements.add(FidelityMeasurement.of(document.stem(),
engine.resolve(document.stem() + ".pdf"), converted));
}
- String note = EDITOR + " on " + LibreOfficeConverter.platform();
+ String note = EDITOR + " " + converter.build() + " on " + LibreOfficeConverter.platform();
FidelityBaseline.write(work.resolve("measured-" + EDITOR + ".tsv"), note, measurements);
Path baseline = Path.of("src", "test", "resources", "docx-fidelity",
EDITOR + "-" + LibreOfficeConverter.platform() + ".tsv");
+ List regressions = FidelityBaseline.read(baseline).regressions(measurements);
if (Boolean.getBoolean("graphcompose.docxFidelity.update")) {
+ // Written all the same: what it lets through is the baseline's diff, shown here first.
+ regressions.forEach(regression -> System.err.println("baseline rewritten over: " + regression));
FidelityBaseline.write(baseline, note, measurements);
return;
}
- assertThat(FidelityBaseline.read(baseline).regressions(measurements))
+ assertThat(regressions)
.as("documents set further from the page than %s holds them (measured: %s)",
baseline, work.resolve("measured-" + EDITOR + ".tsv"))
.isEmpty();
@@ -91,6 +97,17 @@ void everyCorpusDocumentHasAStemOfItsOwn() {
assertThat(stems).hasSizeGreaterThanOrEqualTo(60);
}
+ private static void deleteTree(Path dir) throws java.io.IOException {
+ if (!Files.exists(dir)) {
+ return;
+ }
+ try (var paths = Files.walk(dir)) {
+ for (Path path : paths.sorted(java.util.Comparator.reverseOrder()).toList()) {
+ Files.delete(path);
+ }
+ }
+ }
+
/** Every family's presets. */
static List corpus() {
List corpus = new ArrayList<>();
diff --git a/qa/src/test/java/com/demcha/compose/document/templates/fidelity/DocxFidelityGateTest.java b/qa/src/test/java/com/demcha/compose/document/templates/fidelity/DocxFidelityGateTest.java
index 1bb05c968..58c7eddd8 100644
--- a/qa/src/test/java/com/demcha/compose/document/templates/fidelity/DocxFidelityGateTest.java
+++ b/qa/src/test/java/com/demcha/compose/document/templates/fidelity/DocxFidelityGateTest.java
@@ -107,7 +107,7 @@ void theBaselineFailsAPageFurtherFromTheEnginesCountAndADocumentItDoesNotHold()
assertThat(baseline.regressions(List.of(doc("cv-probe", 1, 2, line(1, "aa", 0.4)))))
.singleElement().asString().contains("2 pages");
- assertThat(baseline.regressions(List.of(doc("cv-other", 1, 1, line(1, "aa", 0.4)))))
+ assertThat(baseline.regressions(List.of(doc("cv-probe", 1, 1, line(1, "aa", 0.4)), doc("cv-other", 1, 1, line(1, "aa", 0.4)))))
.singleElement().asString().contains("not in the baseline");
}
@@ -130,11 +130,81 @@ void aBaselineIsReadAsItWasWritten() throws Exception {
FidelityBaseline.write(file, "probe", rows);
assertThat(FidelityBaseline.read(file).regressions(rows)).isEmpty();
- assertThat(FidelityBaseline.read(file).regressions(List.of(doc("cv-b", 2, 3, line(1, "aa", -1.5)))))
+ assertThat(FidelityBaseline.read(file).regressions(List.of(doc("cv-a", 1, 1, line(1, "aa", 0.86)),
+ doc("cv-b", 2, 3, line(1, "aa", -1.5), line(2, "cc", 3)))))
+ .as("a drift read back as written: 0.25 -> 0.86 is further").singleElement().asString().contains("further");
+ assertThat(FidelityBaseline.read(file).regressions(List.of(doc("cv-a", 1, 1, line(1, "aa", 0.25)),
+ doc("cv-b", 2, 3, line(1, "aa", -1.5)))))
.as("the line file read back with the document file").singleElement().asString().contains("no longer found");
assertThat(Files.readAllLines(file)).first().isEqualTo("# probe");
}
+ @Test
+ void halfAPointFurtherIsRoundingAndMoreIsNot() {
+ FidelityBaseline baseline = FidelityBaseline.of(List.of(doc("cv-probe", 1, 1, line(1, "aa", 1.0))));
+
+ assertThat(baseline.regressions(List.of(doc("cv-probe", 1, 1, line(1, "aa", 1.5))))).isEmpty();
+ assertThat(baseline.regressions(List.of(doc("cv-probe", 1, 1, line(1, "aa", 1.51))))).hasSize(1);
+ }
+
+ @Test
+ void aDocumentTheCorpusNoLongerHasFails() {
+ FidelityBaseline baseline = FidelityBaseline.of(List.of(doc("cv-gone", 1, 1, line(1, "aa", 0))));
+
+ assertThat(baseline.regressions(List.of())).singleElement().asString().contains("no longer in the corpus");
+ }
+
+ @Test
+ void aBaselineWithoutItsLinesIsRefused() throws Exception {
+ Path file = dir.resolve("baseline.tsv");
+ FidelityBaseline.write(file, "probe", List.of(doc("cv-a", 1, 1, line(1, "aa", 0.25), line(1, "bb", 0.5))));
+ Path lines = dir.resolve("baseline-lines.tsv");
+ List rows = Files.readAllLines(lines);
+
+ Files.write(lines, rows.subList(0, rows.size() - 1));
+ assertThatThrownBy(() -> FidelityBaseline.read(file)).as("a line missing from the line file")
+ .isInstanceOf(IllegalStateException.class).hasMessageContaining("cv-a");
+ Files.delete(lines);
+ assertThatThrownBy(() -> FidelityBaseline.read(file)).as("no line file")
+ .isInstanceOf(IllegalStateException.class).hasMessageContaining("no line file");
+ }
+
+ @Test
+ void aMalformedLineRowIsRefusedByName() {
+ assertThatThrownBy(() -> FidelityMeasurement.parseLine("cv-a\t1:abc\tfar\tletters", new LinkedHashMap<>()))
+ .isInstanceOf(IllegalArgumentException.class)
+ .hasMessageContaining("cv-a");
+ }
+
+ @Test
+ void linesOfTheSameLettersArePairedNearestFirst() {
+ // A rota's two "09:00-18:00" on one page: the editor draws them in the other order and
+ // loses the first. The one left is the second, where it stood, and the first is lost.
+ PdfLines page = new PdfLines(List.of(new PdfLines.Line(0, "0900-1800", 40, 100),
+ new PdfLines.Line(0, "0900-1800", 40, 200)), 1);
+ PdfLines set = new PdfLines(List.of(new PdfLines.Line(0, "0900-1800", 40, 200.5)), 1);
+
+ FidelityMeasurement measured = FidelityMeasurement.of("rota-probe", page, set);
+
+ assertThat(measured.lines()).isEqualTo(2);
+ assertThat(measured.matched()).isEqualTo(1);
+ assertThat(measured.found()).hasSize(1);
+ var found = measured.found().entrySet().iterator().next();
+ assertThat(found.getKey()).endsWith("#1");
+ assertThat(found.getValue().drift()).isEqualTo(0.5);
+ }
+
+ @Test
+ void twoColumnsOnOneBaselineAreTwoLines() throws Exception {
+ Path page = pdf("columns", flow -> flow.addRow("Row", row -> row
+ .columns(com.demcha.compose.document.style.DocumentRowColumn.fixed(180),
+ com.demcha.compose.document.style.DocumentRowColumn.weight(1))
+ .addParagraph("Left")
+ .addParagraph("Right")));
+
+ assertThat(PdfLines.of(page).lines()).extracting(PdfLines.Line::key).containsExactly("left", "right");
+ }
+
@Test
void aMalformedBaselineRowIsRefusedByName() {
assertThatThrownBy(() -> FidelityMeasurement.parse("cv-a\t1\tone\t40\t39\t0.25\t0.5\t1", Map.of()))
diff --git a/qa/src/test/java/com/demcha/compose/document/templates/fidelity/FidelityBaseline.java b/qa/src/test/java/com/demcha/compose/document/templates/fidelity/FidelityBaseline.java
index bbfe2c712..4d81aff8e 100644
--- a/qa/src/test/java/com/demcha/compose/document/templates/fidelity/FidelityBaseline.java
+++ b/qa/src/test/java/com/demcha/compose/document/templates/fidelity/FidelityBaseline.java
@@ -19,10 +19,12 @@
* A change may move the export nearer the page, never further. Against its baseline a
* document fails when the editor sets it on a page count further from the engine's, when a
* line the baseline found is no longer found — the editor breaks it at another word, or puts it
- * on another page — or when a found line drifts {@value #LINE_SLACK}pt further from the page
- * than it did. Line by line, because a document already set a few points off throughout hides a
- * new defect in its counts. A document the baseline does not hold fails until the baseline is
- * written with it.
+ * on another page — or when a found line drifts more than {@value #LINE_SLACK}pt further from
+ * the page than it did. Line by line, because a document already set a few points off
+ * throughout hides a new defect in its counts. A document the baseline does not hold fails
+ * until the baseline is written with it, and so does one the baseline holds and the corpus no
+ * longer has. A document whose lines the editor mostly sets at other words is held to the few
+ * it finds: the gate keeps what an export has, and adds nothing for what it lacks.
*
* The baseline is two files: {@code .tsv}, a row per document, and
* {@code -lines.tsv}, a row per found line, named by its page and a digest of its
@@ -42,26 +44,38 @@ private FidelityBaseline(Map rows) {
this.rows = rows;
}
+ /**
+ * Reads a baseline: no file at all is an empty baseline, which every document fails
+ * against; a document file without its line file, or a line file that holds another number
+ * of a document's lines than its row says it found, is refused rather than read as a
+ * baseline that holds no lines.
+ */
static FidelityBaseline read(Path documents) throws IOException {
- Map> lines = new LinkedHashMap<>();
+ Map rows = new LinkedHashMap<>();
+ if (!Files.exists(documents)) {
+ return new FidelityBaseline(rows);
+ }
Path lineFile = linesOf(documents);
- if (Files.exists(lineFile)) {
- for (String row : Files.readAllLines(lineFile, StandardCharsets.UTF_8)) {
- if (!row.isBlank() && !row.startsWith("#")) {
- FidelityMeasurement.parseLine(row, lines);
- }
+ if (!Files.exists(lineFile)) {
+ throw new IllegalStateException("the baseline " + documents + " has no line file " + lineFile);
+ }
+ Map> lines = new LinkedHashMap<>();
+ for (String row : Files.readAllLines(lineFile, StandardCharsets.UTF_8)) {
+ if (!row.isBlank() && !row.startsWith("#")) {
+ FidelityMeasurement.parseLine(row, lines);
}
}
- Map rows = new LinkedHashMap<>();
- if (Files.exists(documents)) {
- for (String row : Files.readAllLines(documents, StandardCharsets.UTF_8)) {
- if (row.isBlank() || row.startsWith("#") || row.equals(FidelityMeasurement.HEADER)) {
- continue;
- }
- String stem = row.substring(0, Math.max(0, row.indexOf('\t')));
- FidelityMeasurement measured = FidelityMeasurement.parse(row, lines.getOrDefault(stem, Map.of()));
- rows.put(measured.stem(), measured);
+ for (String row : Files.readAllLines(documents, StandardCharsets.UTF_8)) {
+ if (row.isBlank() || row.startsWith("#") || row.equals(FidelityMeasurement.HEADER)) {
+ continue;
+ }
+ String stem = row.substring(0, Math.max(0, row.indexOf('\t')));
+ FidelityMeasurement measured = FidelityMeasurement.parse(row, lines.getOrDefault(stem, Map.of()));
+ if (measured.found().size() != measured.matched()) {
+ throw new IllegalStateException(stem + " found " + measured.matched() + " lines, and "
+ + lineFile + " holds " + measured.found().size() + " of them");
}
+ rows.put(measured.stem(), measured);
}
return new FidelityBaseline(rows);
}
@@ -90,6 +104,10 @@ static void write(Path documents, String note, Collection m
/** What each measurement does worse than its baseline; empty when none does. */
List regressions(Collection measurements) {
List found = new ArrayList<>();
+ java.util.Set measured = new java.util.HashSet<>();
+ measurements.forEach(now -> measured.add(now.stem()));
+ rows.keySet().stream().filter(stem -> !measured.contains(stem))
+ .forEach(stem -> found.add(stem + ": in the baseline, and no longer in the corpus"));
for (FidelityMeasurement now : measurements) {
FidelityMeasurement was = rows.get(now.stem());
if (was == null) {
diff --git a/qa/src/test/java/com/demcha/compose/document/templates/fidelity/FidelityMeasurement.java b/qa/src/test/java/com/demcha/compose/document/templates/fidelity/FidelityMeasurement.java
index f76a9acec..5307d400e 100644
--- a/qa/src/test/java/com/demcha/compose/document/templates/fidelity/FidelityMeasurement.java
+++ b/qa/src/test/java/com/demcha/compose/document/templates/fidelity/FidelityMeasurement.java
@@ -17,7 +17,9 @@
* How far an editor's rendering of a document's DOCX stands from the engine's PDF of it.
*
* Each line of the page is looked for, by its letters, on the same page of the editor's
- * PDF; a line the editor breaks at another word, or puts on another page, is not found. A found
+ * PDF; a line the editor breaks at another word, or puts on another page, is not found. Lines
+ * of the same letters on one page — a rota's shifts, a CV's date ranges — are paired each with
+ * the editor's nearest, so one lost or moved among them is not hidden behind another. A found
* line's drift is how far its baseline stands below the page's, above when negative.
*
* @param stem the document
@@ -28,8 +30,9 @@
* @param median the median of the found lines' drift either way, in points
* @param p90 the drift either way nine in ten found lines stay within, in points
* @param over2 the found lines drifting more than 2pt either way
- * @param found each found line's drift, by its {@link #lineId line id}; empty when read
- * from a baseline row
+ * @param found each found line's drift, by its line id: its page, a digest of its
+ * letters, and which of the page's lines of those letters it is, in the
+ * order the page draws them
*/
record FidelityMeasurement(String stem, int enginePages, int editorPages, int lines, int matched,
double median, double p90, int over2, Map found) {
@@ -44,48 +47,93 @@ record Found(int page, String preview, double drift) {
found = Collections.unmodifiableMap(new LinkedHashMap<>(found));
}
- /** The share of the page's lines found in the editor's, from 0 to 1. */
- double matchedShare() {
- return lines == 0 ? 1 : (double) matched / lines;
- }
-
/** Measures the editor's PDF of a document against the engine's. */
static FidelityMeasurement of(String stem, Path enginePdf, Path editorPdf) throws IOException {
return of(stem, PdfLines.of(enginePdf), PdfLines.of(editorPdf));
}
static FidelityMeasurement of(String stem, PdfLines engine, PdfLines editor) {
- Map page = engine.byKey();
- Map set = editor.byKey();
+ Map> page = grouped(engine);
+ Map> set = grouped(editor);
Map found = new LinkedHashMap<>();
List drifts = new ArrayList<>();
- for (Map.Entry line : page.entrySet()) {
- PdfLines.Line there = set.get(line.getKey());
- if (there != null) {
- double drift = round(there.baseline() - line.getValue().baseline());
- found.put(lineId(line.getValue()), new Found(line.getValue().page(), preview(line.getValue().key()), drift));
- drifts.add(Math.abs(drift));
+ int lines = 0;
+ for (Map.Entry> group : page.entrySet()) {
+ List ours = group.getValue();
+ lines += ours.size();
+ PdfLines.Line[] theirs = paired(ours, set.getOrDefault(group.getKey(), List.of()));
+ for (int index = 0; index < ours.size(); index++) {
+ if (theirs[index] != null) {
+ PdfLines.Line line = ours.get(index);
+ double drift = round(theirs[index].baseline() - line.baseline());
+ found.put(lineId(line, index), new Found(line.page(), preview(line.key()), drift));
+ drifts.add(Math.abs(drift));
+ }
}
}
Collections.sort(drifts);
int over2 = (int) drifts.stream().filter(drift -> drift > 2).count();
- return new FidelityMeasurement(stem, engine.pages(), editor.pages(), page.size(), drifts.size(),
+ return new FidelityMeasurement(stem, engine.pages(), editor.pages(), lines, drifts.size(),
quantile(drifts, 0.5), quantile(drifts, 0.9), over2, found);
}
- /** A line's identity across runs: its page and a digest of its letters. */
- static String lineId(PdfLines.Line line) {
+ /** A PDF's lines by page and letters, each group in the order the page draws them. */
+ private static Map> grouped(PdfLines pdf) {
+ Map> groups = new LinkedHashMap<>();
+ for (PdfLines.Line line : pdf.lines()) {
+ groups.computeIfAbsent(line.page() + "/" + line.key(), key -> new ArrayList<>()).add(line);
+ }
+ return groups;
+ }
+
+ /**
+ * Pairs the page's lines of one group with the editor's, nearest first: each pair is the
+ * closest of the lines still unpaired, so a group the editor sets in another order, or with
+ * one line lost, pairs the lines that stand where they did.
+ */
+ private static PdfLines.Line[] paired(List ours, List theirs) {
+ PdfLines.Line[] pairs = new PdfLines.Line[ours.size()];
+ if (ours.size() == 1 && theirs.size() == 1) {
+ pairs[0] = theirs.get(0);
+ return pairs;
+ }
+ List candidates = new ArrayList<>();
+ for (int i = 0; i < ours.size(); i++) {
+ for (int j = 0; j < theirs.size(); j++) {
+ candidates.add(new int[]{i, j});
+ }
+ }
+ candidates.sort(java.util.Comparator.comparingDouble(pair -> distance(ours.get(pair[0]), theirs.get(pair[1]))));
+ boolean[] taken = new boolean[theirs.size()];
+ for (int[] pair : candidates) {
+ if (pairs[pair[0]] == null && !taken[pair[1]]) {
+ pairs[pair[0]] = theirs.get(pair[1]);
+ taken[pair[1]] = true;
+ }
+ }
+ return pairs;
+ }
+
+ private static double distance(PdfLines.Line a, PdfLines.Line b) {
+ return Math.hypot(a.x() - b.x(), a.baseline() - b.baseline());
+ }
+
+ /**
+ * A line's identity across runs: its page, a digest of its letters, and which of the page's
+ * lines of those letters it is.
+ */
+ static String lineId(PdfLines.Line line, int occurrence) {
try {
byte[] digest = MessageDigest.getInstance("SHA-256").digest(line.key().getBytes(StandardCharsets.UTF_8));
- return line.page() + ":" + HexFormat.of().formatHex(digest, 0, 6);
+ String id = line.page() + ":" + HexFormat.of().formatHex(digest, 0, 6);
+ return occurrence == 0 ? id : id + "#" + occurrence;
} catch (NoSuchAlgorithmException missing) {
throw new IllegalStateException(missing);
}
}
private static String preview(String key) {
- String letters = key.replaceAll("[\\t\\r\\n]", "");
- return letters.length() <= 32 ? letters : letters.substring(0, 32);
+ return key.codePointCount(0, key.length()) <= 32 ? key : key.substring(0, key.offsetByCodePoints(0, 32));
}
private static double round(double points) {
diff --git a/qa/src/test/java/com/demcha/compose/document/templates/fidelity/LibreOfficeConverter.java b/qa/src/test/java/com/demcha/compose/document/templates/fidelity/LibreOfficeConverter.java
index 178d11cef..2e9389fa4 100644
--- a/qa/src/test/java/com/demcha/compose/document/templates/fidelity/LibreOfficeConverter.java
+++ b/qa/src/test/java/com/demcha/compose/document/templates/fidelity/LibreOfficeConverter.java
@@ -42,12 +42,47 @@ static Optional find() {
String path = System.getenv("PATH");
if (path != null) {
for (String directory : path.split(java.io.File.pathSeparator)) {
- candidates.add(Path.of(directory, "soffice").toString());
- candidates.add(Path.of(directory, "soffice.exe").toString());
+ candidates.add(directory + "/soffice");
+ candidates.add(directory + "/soffice.exe");
}
}
candidates.add("C:/Program Files/LibreOffice/program/soffice.exe");
- return candidates.stream().map(Path::of).filter(Files::isRegularFile).findFirst().map(LibreOfficeConverter::new);
+ for (String candidate : candidates) {
+ try {
+ Path file = Path.of(candidate);
+ if (Files.isRegularFile(file)) {
+ return Optional.of(new LibreOfficeConverter(file));
+ }
+ } catch (java.nio.file.InvalidPathException notAPath) {
+ // A PATH entry no path can be made of, quotes and all: not a LibreOffice.
+ }
+ }
+ return Optional.empty();
+ }
+
+ /**
+ * The build of LibreOffice converting, as its installation records it beside the program —
+ * {@code buildid} in {@code version.ini} on Windows, {@code versionrc} elsewhere — or
+ * {@code unknown}. Read from the file: {@code soffice --version} can wait on a window.
+ */
+ String build() {
+ Path program = soffice.toAbsolutePath().getParent();
+ for (String name : List.of("version.ini", "versionrc")) {
+ Path file = program.resolve(name);
+ try {
+ if (Files.isRegularFile(file)) {
+ for (String line : Files.readAllLines(file, java.nio.charset.StandardCharsets.ISO_8859_1)) {
+ if (line.startsWith("buildid=")) {
+ String id = line.substring("buildid=".length()).strip();
+ return "build " + id.substring(0, Math.min(12, id.length()));
+ }
+ }
+ }
+ } catch (IOException unreadable) {
+ return "unknown";
+ }
+ }
+ return "unknown";
}
/** Converts each DOCX into a PDF of the same stem in {@code outDir}. */
diff --git a/qa/src/test/java/com/demcha/compose/document/templates/fidelity/PdfLines.java b/qa/src/test/java/com/demcha/compose/document/templates/fidelity/PdfLines.java
index 7cb94b3bb..3324823b5 100644
--- a/qa/src/test/java/com/demcha/compose/document/templates/fidelity/PdfLines.java
+++ b/qa/src/test/java/com/demcha/compose/document/templates/fidelity/PdfLines.java
@@ -8,33 +8,35 @@
import java.io.IOException;
import java.nio.file.Path;
import java.util.ArrayList;
-import java.util.LinkedHashMap;
import java.util.List;
import java.util.Locale;
-import java.util.Map;
/**
- * The lines of text a PDF draws, each keyed by its page and its letters, with the baseline its
- * first letter stands on.
+ * The lines of text a PDF draws, each with its page, its letters, and where its first letter
+ * stands.
*
* Glyphs are read in the order the page draws them. A line ends where the next glyph stands
- * on another baseline, steps back to the left, or stands further off than one and a half of its
- * size: two columns on one baseline are two lines, as they are two runs of text. The key is the
- * line's letters without white space, lower-cased, so text an editor sets with spaces between
- * tracked letters, or with a trailing space, keys as the page's does. Lines of fewer than three
- * letters are left out, and only the first line of each key on a page is kept.
+ * on another baseline (more than half its size off), steps back to the left, or stands further
+ * off than one and a half times its size: two runs of text on one baseline are two lines when
+ * the second starts that far past the first, as two columns' text does. The key is the line's
+ * letters without white space, lower-cased, so text an editor sets with spaces between tracked
+ * letters, or with a trailing space, keys as the page's does. Lines of fewer than three letters
+ * are left out.
*/
final class PdfLines {
- /** A line: its page, its letters, and the baseline of its first letter from the page's top. */
- record Line(int page, String key, double baseline) {
+ /**
+ * A line: its page, its letters, and its first letter's left edge and baseline, from the
+ * page's left and top, in points.
+ */
+ record Line(int page, String key, double x, double baseline) {
}
private final List lines;
private final int pages;
- private PdfLines(List lines, int pages) {
- this.lines = lines;
+ PdfLines(List lines, int pages) {
+ this.lines = List.copyOf(lines);
this.pages = pages;
}
@@ -57,20 +59,12 @@ List lines() {
return lines;
}
- /** The lines by page and key, the first of each kept. */
- Map byKey() {
- Map keyed = new LinkedHashMap<>();
- for (Line line : lines) {
- keyed.putIfAbsent(line.page() + "/" + line.key(), line);
- }
- return keyed;
- }
-
private static final class Collector extends PDFTextStripper {
private final List lines = new ArrayList<>();
private final StringBuilder key = new StringBuilder();
private int page;
+ private double x = Double.NaN;
private double baseline = Double.NaN;
private double lastEnd = Double.NaN;
private double lastX = Double.NaN;
@@ -88,35 +82,34 @@ protected void startPage(org.apache.pdfbox.pdmodel.PDPage pdPage) throws IOExcep
@Override
protected void processTextPosition(TextPosition glyph) {
double y = glyph.getYDirAdj();
- double x = glyph.getXDirAdj();
+ double left = glyph.getXDirAdj();
double size = Math.max(1, glyph.getFontSizeInPt());
boolean sameLine = !Double.isNaN(baseline)
&& Math.abs(y - baseline) < size * 0.5
- && x >= lastX - 1
- && x - lastEnd < size * 1.5;
+ && left >= lastX - 1
+ && left - lastEnd < size * 1.5;
if (!sameLine) {
endLine();
baseline = y;
+ x = left;
}
String letters = glyph.getUnicode();
if (letters != null) {
- for (int i = 0; i < letters.length(); i++) {
- char c = letters.charAt(i);
- if (!Character.isWhitespace(c) && c != ' ') {
- key.append(c);
- }
- }
+ letters.codePoints()
+ .filter(c -> !Character.isWhitespace(c) && !Character.isSpaceChar(c))
+ .forEach(key::appendCodePoint);
}
- lastX = x;
- lastEnd = x + glyph.getWidthDirAdj();
+ lastX = left;
+ lastEnd = left + glyph.getWidthDirAdj();
}
private void endLine() {
String letters = key.toString().toLowerCase(Locale.ROOT);
if (letters.codePointCount(0, letters.length()) >= 3) {
- lines.add(new Line(page, letters, baseline));
+ lines.add(new Line(page, letters, x, baseline));
}
key.setLength(0);
+ x = Double.NaN;
baseline = Double.NaN;
lastEnd = Double.NaN;
lastX = Double.NaN;
diff --git a/qa/src/test/resources/docx-fidelity/libreoffice-windows-lines.tsv b/qa/src/test/resources/docx-fidelity/libreoffice-windows-lines.tsv
index af8ae619b..3c6c8438c 100644
--- a/qa/src/test/resources/docx-fidelity/libreoffice-windows-lines.tsv
+++ b/qa/src/test/resources/docx-fidelity/libreoffice-windows-lines.tsv
@@ -1,4 +1,4 @@
-# libreoffice on windows — document, line, drift below the page (pt), letters
+# libreoffice build bce0998afefd on windows — document, line, drift below the page (pt), letters
cv-blue_banner 0:8f1010120ed6 0.42 jordanrivera
cv-blue_banner 0:8d7a2cca3060 -0.20 +442055551000|jordan.rivera@exam
cv-blue_banner 0:b944906ed84c -0.20 professionalsummary
@@ -11,6 +11,7 @@ cv-blue_banner 0:e7cc1822c6dc -0.17 2021-2024
cv-blue_banner 0:998c1a985022 -0.17 brightleaflabs
cv-blue_banner 0:41bb54fbae8d -0.19 backendengineer
cv-blue_banner 0:3fa772117260 -0.14 2019-2021
+cv-blue_banner 0:3fa772117260#1 -0.13 2019-2021
cv-blue_banner 0:ef148f221e31 -0.14 helixprintco
cv-blue_banner 0:d7119ba1b2b4 -0.13 maintainedahigh-volumeinvoice-pr
cv-blue_banner 0:68bf0109c6f8 -0.12 education
@@ -110,6 +111,7 @@ cv-centered_headline 0:26671c309eb9 -0.16 •distribution:mavencentral,sonat
cv-centered_headline 0:68bf0109c6f8 -0.19 education
cv-centered_headline 0:0ad1957d6bab -0.19 msccomputerscience
cv-centered_headline 0:3fa772117260 -0.20 2019-2021
+cv-centered_headline 0:3fa772117260#1 0.71 2019-2021
cv-centered_headline 0:47ce0218bbea -0.16 universityofmanchester
cv-centered_headline 0:2ffe115b06e5 -0.14 distinction.thesis:composablelay
cv-centered_headline 0:b6749d0b616b -0.07 bscsoftwareengineering
@@ -168,6 +170,7 @@ cv-charcoal_gold 0:b011cfad056f 2.84 agilemethodologies
cv-charcoal_gold 0:6cb574fa10b6 2.82 languages
cv-charcoal_gold 0:b6234d2ea0d6 2.91 english
cv-charcoal_gold 0:bef32d2c315a 2.91 native
+cv-charcoal_gold 0:bef32d2c315a#1 2.91 native
cv-charcoal_gold 0:aa304b5d1d72 2.91 russian
cv-charcoal_gold 0:21bb36ad0638 2.91 french
cv-charcoal_gold 0:23ed645595d6 2.91 b2–upperintermediate
@@ -181,6 +184,7 @@ cv-charcoal_gold 0:66cb4ff79ee1 2.93 bscbusinessadministration
cv-charcoal_gold 0:8826393fc0f0 2.93 king'scollegelondon
cv-charcoal_gold 0:c7d18ae8c50d 2.93 2014–2017
cv-charcoal_gold 0:3acba0d7b5dc 2.61 projectmanager
+cv-charcoal_gold 0:3acba0d7b5dc#1 2.86 projectmanager
cv-charcoal_gold 0:f54e0195601a 3.01 results-drivenprojectmanagerwith
cv-charcoal_gold 0:7a0497cef9c6 3.01 teamsanddeliveringcomplexproject
cv-charcoal_gold 0:c38f1902ece8 3.24 skilledinagileandwaterfallmethod
@@ -209,9 +213,11 @@ cv-charcoal_gold 0:e831beb04c00 3.06 certifications
cv-charcoal_gold 0:93a7ba535da0 3.22 pmp®certification
cv-charcoal_gold 0:0f9f6d10bfa3 3.26 projectmanagementinstitute
cv-charcoal_gold 0:73a2af8864fc 3.28 2020
+cv-charcoal_gold 0:73a2af8864fc#1 3.34 2020
cv-charcoal_gold 0:043092900ed5 3.25 prince2®foundation
cv-charcoal_gold 0:544a764703d6 3.29 axelos
cv-charcoal_gold 0:023e33504ab9 3.31 2019
+cv-charcoal_gold 0:023e33504ab9#1 3.34 2019
cv-charcoal_gold 0:83cd2e790f6a 3.28 agilepm®foundation
cv-charcoal_gold 0:0005e5872534 3.32 apmginternational
cv-charcoal_gold 0:6ee18b42fbf1 3.06 achievements
@@ -248,6 +254,7 @@ cv-classic_serif 0:e55664011cda -0.12 builtbackendservicesandproductio
cv-classic_serif 0:e80236b6d2b1 -0.13 itexttoacustomlayoutengine,elimi
cv-classic_serif 0:41bb54fbae8d 0.24 backendengineer
cv-classic_serif 0:3fa772117260 0.21 2019-2021
+cv-classic_serif 0:3fa772117260#1 12.18 2019-2021
cv-classic_serif 0:ef148f221e31 0.22 helixprintco
cv-classic_serif 0:9d31a6bfbc69 -0.01 maintainedahigh-volumeinvoice-pr
cv-classic_serif 0:03af8a628309 -0.02 change.
@@ -353,6 +360,7 @@ cv-editorial_blue 0:a26a92311896 0.32 •maven
cv-editorial_blue 0:d1002e9575f5 0.32 •gradle
cv-editorial_blue 0:e7b0f50a3bf3 0.32 •githubactions
cv-editorial_blue 0:193e87ad43b7 0.32 •jitpack
+cv-editorial_blue 0:193e87ad43b7#1 0.41 •jitpack
cv-editorial_blue 0:62e29bf5f417 0.32 •docker
cv-editorial_blue 0:83844532ef02 0.32 •jmhbenchmarking
cv-editorial_blue 0:8a7a4807b03b 0.32 •junit5
@@ -511,6 +519,7 @@ cv-executive 1:dd20ae01c3cf -3.10 opensource:maintainerofgraphcomp
cv-executive 1:33c35e9d236d -3.10 speaking:jvmsummit2024,devoxxuk2
cv-midnight_navy 0:21d2636ad3df -16.37 alexmorgan
cv-midnight_navy 0:5518402feccc -17.05 marketingmanager
+cv-midnight_navy 0:5518402feccc#1 2.33 marketingmanager
cv-midnight_navy 0:093e7d5fdbaa -17.12 contact
cv-midnight_navy 0:01dcad830244 -16.44 +1(555)123-4567
cv-midnight_navy 0:3eef38c97138 -16.45 alex.morgan@email.com
@@ -523,6 +532,7 @@ cv-midnight_navy 0:512afb6c7631 -17.18 administration
cv-midnight_navy 0:09b0e2130c1e -16.68 universityofchicagoboothschoolof
cv-midnight_navy 0:11d404179596 -16.69 business
cv-midnight_navy 0:3b8048983ecc -17.07 2016–2018
+cv-midnight_navy 0:3b8048983ecc#1 2.76 2016–2018
cv-midnight_navy 0:84c2243138f7 -17.20 bachelorofsciencein
cv-midnight_navy 0:e2a530e251d3 -17.19 marketing
cv-midnight_navy 0:1f676d444ffb -16.99 bostonuniversity
@@ -552,6 +562,7 @@ cv-midnight_navy 0:53e5e7c5a884 2.32 experience
cv-midnight_navy 0:086c0e036e67 2.39 2021–present
cv-midnight_navy 0:009b5b6479fa 2.47 starwavesolutions
cv-midnight_navy 0:60cebc1ec80c 2.47 newyork,ny
+cv-midnight_navy 0:60cebc1ec80c#1 2.67 newyork,ny
cv-midnight_navy 0:e0ee3cbb7b53 1.94 ·manageateamof6marketingprofessi
cv-midnight_navy 0:8ba85a74e016 1.96 anddesignteamstodrivecampaignsuc
cv-midnight_navy 0:407f710db042 1.97 ·overseedigitalcampaignsacrossse
@@ -716,6 +727,7 @@ cv-modern_professional 0:26671c309eb9 -0.12 •distribution:mavencentral,sonat
cv-modern_professional 0:68bf0109c6f8 0.02 education
cv-modern_professional 0:0ad1957d6bab -0.12 msccomputerscience
cv-modern_professional 0:3fa772117260 -0.11 2019-2021
+cv-modern_professional 0:3fa772117260#1 0.60 2019-2021
cv-modern_professional 0:47ce0218bbea -0.17 universityofmanchester
cv-modern_professional 0:2ffe115b06e5 -0.11 distinction.thesis:composablelay
cv-modern_professional 0:b6749d0b616b -0.02 bscsoftwareengineering
@@ -842,6 +854,7 @@ cv-navy_sidebar 0:77915a7314f0 2.95 spanish–advanced
cv-navy_sidebar 0:21bb36ad0638 2.95 french
cv-navy_sidebar 0:3bc244be050e 2.95 –intermediate
cv-navy_sidebar 0:5518402feccc 2.58 marketingmanager
+cv-navy_sidebar 0:5518402feccc#1 2.71 marketingmanager
cv-navy_sidebar 0:7b5815d7a663 2.99 results-drivenmarketingprofessio
cv-navy_sidebar 0:18f8b50d02d8 3.01 developingandexecutingdata-drive
cv-navy_sidebar 0:2adca2422cbe 3.03 growth,increaseengagement,anddel
@@ -849,6 +862,8 @@ cv-navy_sidebar 0:b3c222da2e1d 3.05 digitalmarketing,marketresearch,
cv-navy_sidebar 0:53e5e7c5a884 2.72 experience
cv-navy_sidebar 0:8a39b996b27c 2.89 jan2022-present
cv-navy_sidebar 0:f97eeb2fe120 2.75 brightwavesolutions,newyork,ny
+cv-navy_sidebar 0:f97eeb2fe120#1 2.73 brightwavesolutions,newyork,ny
+cv-navy_sidebar 0:f97eeb2fe120#2 2.70 brightwavesolutions,newyork,ny
cv-navy_sidebar 0:a4beef0c22d9 2.50 •developandimplementintegratedma
cv-navy_sidebar 0:234eaa6417f7 2.50 awarenessby35%andleadgenerationb
cv-navy_sidebar 0:dfd245470d6e 2.50 •manageateamof4marketingspeciali
@@ -1023,7 +1038,9 @@ cv-professional_sidebar 0:7e7f74200f0e 2.65 problemsolving
cv-professional_sidebar 0:d4e16994df90 2.65 communication
cv-professional_sidebar 0:68bf0109c6f8 2.62 education
cv-professional_sidebar 0:9928b2859b5c 2.58 degreename
+cv-professional_sidebar 0:9928b2859b5c#1 2.49 degreename
cv-professional_sidebar 0:4dca5f288079 2.55 universityname
+cv-professional_sidebar 0:4dca5f288079#1 2.46 universityname
cv-professional_sidebar 0:dbbecd8a99c4 2.53 2016–2020
cv-professional_sidebar 0:8789bd1a8f91 2.44 2012–2016
cv-professional_sidebar 0:6cb574fa10b6 2.39 languages
@@ -1066,6 +1083,7 @@ cv-professional_sidebar 0:07a0b0962107 2.93 references
cv-professional_sidebar 0:5bf64f34444e 2.93 availableuponrequest.
cv-serif_headline 0:5f6ca99b67a6 -0.51 alexandermorgan
cv-serif_headline 0:daf65306b3b6 -0.32 softwareengineer
+cv-serif_headline 0:daf65306b3b6#1 0.21 softwareengineer
cv-serif_headline 0:01dcad830244 -0.22 +1(555)123-4567
cv-serif_headline 0:3eef38c97138 -0.18 alex.morgan@email.com
cv-serif_headline 0:d5a0d0abdc64 -0.15 newyork,ny,usa
@@ -1130,6 +1148,7 @@ cv-serif_headline 0:1cc9a79bdaf0 0.59 mongodb
cv-serif_headline 0:7dc785098784 0.61 tools&technologies
cv-serif_headline 0:d548c5b83fa6 0.63 docker
cv-serif_headline 0:94abcb2d2773 0.67 kubernetes
+cv-serif_headline 0:94abcb2d2773#1 1.47 kubernetes
cv-serif_headline 0:424e9661130e 0.71 jenkins
cv-serif_headline 0:9a881b9b9f23 0.75 git
cv-serif_headline 0:7d1507284a57 0.78 aws
@@ -1144,7 +1163,7 @@ cv-serif_headline 0:39f98aca30e7 1.47 oraclecertified
cv-serif_headline 0:6b5ac810679c 0.83 professional,
cv-serif_headline 0:d52585984184 0.95 javase17(oracle)
cv-serif_headline 0:72be4e94032e 1.47 dockercertified
-cv-serif_headline 0:178b6e061a04 9.83 associate
+cv-serif_headline 0:178b6e061a04 0.83 associate
cv-serif_headline 0:418860eec88d 0.95 (dca)
cv-serif_headline 0:958c81247482 1.47 springprofessional
cv-serif_headline 0:b00a6c108553 0.83 certification
@@ -1353,7 +1372,9 @@ cv-terracotta_rail 0:4b1ce58ed984 0.37 conceptdevelopment
cv-terracotta_rail 0:e8386273ac51 0.37 planningapplications
cv-terracotta_rail 0:09033be5db1b 0.37 technicaldrawings
cv-terracotta_rail 0:de4e9e607840 0.37 revit
+cv-terracotta_rail 0:de4e9e607840#1 0.35 revit
cv-terracotta_rail 0:50f08e64c5a6 0.37 autocad
+cv-terracotta_rail 0:50f08e64c5a6#1 0.35 autocad
cv-terracotta_rail 0:af7c811cbfce 0.37 bimcoordination
cv-terracotta_rail 0:531b7caeda92 0.37 designpresentations
cv-terracotta_rail 0:bfcd894f9698 0.37 projectdelivery
@@ -1379,6 +1400,7 @@ cv-terracotta_rail 0:76a9cead2e9f -0.29 availability:
cv-terracotta_rail 0:d14126d0f8f4 -0.30 1monthnotice
cv-terracotta_rail 0:0f08c27aab24 0.61 oliverbennett
cv-terracotta_rail 0:334d566a27b2 -0.28 seniorarchitect
+cv-terracotta_rail 0:334d566a27b2#1 -0.30 seniorarchitect
cv-terracotta_rail 0:b944906ed84c -0.16 professionalsummary
cv-terracotta_rail 0:bbb25a1ee248 0.10 provenexpertiseindesigndevelopme
cv-terracotta_rail 0:bf4ab196cbb6 0.08 strongfocusonsustainability,qual
@@ -1393,6 +1415,7 @@ cv-terracotta_rail 0:1d6340aa301d -0.59 •coordinatestructural,m&e,landsc
cv-terracotta_rail 0:7062411e212a -0.61 buildablesolutions.
cv-terracotta_rail 0:bf75379f5486 -0.63 •prepareandmanageplanningapplica
cv-terracotta_rail 0:894e988cdf94 -0.65 documentation.
+cv-terracotta_rail 0:894e988cdf94#1 -0.99 documentation.
cv-terracotta_rail 0:40c00971356d -0.67 •presentandcommunicatedesignprop
cv-terracotta_rail 0:a218287e182e -0.69 anddrivingprojectsforward.
cv-terracotta_rail 0:f2e40fc1edb7 -0.49 architect
@@ -1405,6 +1428,7 @@ cv-terracotta_rail 0:abba33f53e5a -0.80 construction.
cv-terracotta_rail 0:91a14d5e3005 -0.62 •supportedprojectdeliveryonsite,
cv-terracotta_rail 0:6b3142466e26 -0.84 •coordinatedwithcontractorsandco
cv-terracotta_rail 0:1150d4ba642c -0.86 intent.
+cv-terracotta_rail 0:1150d4ba642c#1 -0.95 intent.
cv-terracotta_rail 0:2d2cd24f87d7 -0.67 partiiarchitecturalassistant
cv-terracotta_rail 0:3b8048983ecc -0.67 2016–2018
cv-terracotta_rail 0:ebd31e5e7505 -0.69 axisdesignworkshop,cardiff,uk
@@ -1559,6 +1583,7 @@ cv-violet_grid 0:53e5e7c5a884 0.30 experience
cv-violet_grid 0:5a0774260e0c 0.42 2022-present
cv-violet_grid 0:204f460767ff 0.38 seniorux/uidesigner|novafin(fint
cv-violet_grid 0:318bba211bdc 0.43 sanfrancisco,ca
+cv-violet_grid 0:318bba211bdc#1 9.35 sanfrancisco,ca
cv-violet_grid 0:3883e88c63c3 0.42 ledend-to-enddesignforapersonalf
cv-violet_grid 0:ccc00663f089 2.20 conducteduserresearch,builtperso
cv-violet_grid 0:7d0f908c7e5f 3.98 designedwireframes,prototypes,an
@@ -1592,12 +1617,15 @@ cv-violet_grid 0:0cf7506cf94a 19.58 bacheloroffineartsingraphicdesig
cv-violet_grid 0:00ab7a6aa5f1 19.59 californiacollegeofthearts
cv-violet_grid 0:7e2c21bb41db 19.58 sanfrancisco,ca|2014-2018
cv-violet_grid 0:b6234d2ea0d6 21.23 english
-cv-violet_grid 0:bef32d2c315a 21.22 native
+cv-violet_grid 0:bef32d2c315a 37.97 native
+cv-violet_grid 0:bef32d2c315a#1 5.71 native
cv-violet_grid 0:9c9b13446cd9 22.46 spanish
cv-violet_grid 0:e35242c809c8 23.69 portuguese
cv-violet_grid 0:c5d1de4964d6 23.69 conversational
invoice-classic 0:c26c22b94338 0.49 graphcomposestudio
+invoice-classic 0:c26c22b94338#1 0.30 graphcomposestudio
invoice-classic 0:2a08ce5567fb 0.35 18layoutstreet
+invoice-classic 0:2a08ce5567fb#1 0.03 18layoutstreet
invoice-classic 0:52d6e3de4fa0 0.10 invoice
invoice-classic 0:38e9951985e4 0.32 gc-2026-041
invoice-classic 0:20fe884effee 0.32 issued02apr2026
@@ -1621,6 +1649,7 @@ invoice-classic 0:385cfdbc00ec 0.25 unit
invoice-classic 0:cf38d95c9c6b 0.25 amount
invoice-classic 0:987c6297d0a9 0.47 discoveryworkshop
invoice-classic 0:532674c6eb89 0.47 gbp1,450
+invoice-classic 0:532674c6eb89#1 0.47 gbp1,450
invoice-classic 0:08ec6deb1c40 0.47 templatearchitecture2
invoice-classic 0:d2e67c4b1cca 0.47 gbp980
invoice-classic 0:d6cdf6a05754 0.47 gbp1,960
@@ -1629,6 +1658,7 @@ invoice-classic 0:7e7398cbff7c 0.47 gbp320
invoice-classic 0:e23164e940c7 0.47 gbp960
invoice-classic 0:6047df51175c 0.57 developerenablement1
invoice-classic 0:c2ad01ea64ae 0.57 gbp780
+invoice-classic 0:c2ad01ea64ae#1 0.57 gbp780
invoice-classic 0:d6577e95efba 0.82 subtotal
invoice-classic 0:50cae0510231 0.82 gbp5,150
invoice-classic 0:a52611c9261b 0.97 vat(20%)
@@ -1649,7 +1679,9 @@ invoice-classic 0:1a7b5c840e25 1.17 •latepaymentsmaydelayadditional
invoice-classic 0:1631a06d245f 1.17 templatecustomizationwork.
invoice-classic 0:e3337beaa171 1.15 thankyouforchoosinggraphcomposef
invoice-classic_long 0:c26c22b94338 0.49 graphcomposestudio
+invoice-classic_long 0:c26c22b94338#1 0.30 graphcomposestudio
invoice-classic_long 0:2a08ce5567fb 0.35 18layoutstreet
+invoice-classic_long 0:2a08ce5567fb#1 0.03 18layoutstreet
invoice-classic_long 0:52d6e3de4fa0 0.10 invoice
invoice-classic_long 0:3594d2085950 0.32 gc-2026-042
invoice-classic_long 0:25851a973edd 0.32 issued04may2026
@@ -1673,6 +1705,7 @@ invoice-classic_long 0:385cfdbc00ec 0.25 unit
invoice-classic_long 0:cf38d95c9c6b 0.25 amount
invoice-classic_long 0:aa29f2f4fcb4 0.47 discoveryworkshop—sprint1
invoice-classic_long 0:ce4081aef7a1 0.47 gbp180
+invoice-classic_long 0:ce4081aef7a1#1 0.47 gbp180
invoice-classic_long 0:9c9a412f0a45 0.47 designsystemaudit—sprint1
invoice-classic_long 0:7be809cb1590 0.47 gbp217
invoice-classic_long 0:378b363c8601 0.47 gbp434
@@ -1684,6 +1717,7 @@ invoice-classic_long 0:dde0144b97b7 0.47 gbp291
invoice-classic_long 0:457a71636ad9 0.47 gbp1164
invoice-classic_long 0:6fcf7d6dd606 0.47 renderqapass—sprint1
invoice-classic_long 0:dda88f5786f5 0.47 gbp328
+invoice-classic_long 0:dda88f5786f5#1 0.47 gbp328
invoice-classic_long 0:ee18ad3bbb42 0.47 accessibilityreview—sprint1
invoice-classic_long 0:e681b4843ffb 0.47 gbp365
invoice-classic_long 0:1859c20b35dd 0.47 gbp730
@@ -1695,6 +1729,7 @@ invoice-classic_long 0:6109a2c30104 0.47 gbp439
invoice-classic_long 0:87e9fcb6151d 0.47 gbp1756
invoice-classic_long 0:a6bee1ec5e35 0.47 datamapping—sprint1
invoice-classic_long 0:df1f9d4443d8 0.47 gbp476
+invoice-classic_long 0:df1f9d4443d8#1 0.47 gbp476
invoice-classic_long 0:052c9f49a4b8 0.47 paginationhardening—sprint1
invoice-classic_long 0:9fba6332e489 0.47 gbp513
invoice-classic_long 0:6f805c9f78c3 0.47 gbp1026
@@ -1706,6 +1741,7 @@ invoice-classic_long 0:e7b406f24f04 0.47 gbp587
invoice-classic_long 0:74357ca6b30e 0.47 gbp2348
invoice-classic_long 0:9c6cf539f5bc 0.47 stakeholderdemo—sprint1
invoice-classic_long 0:cf79b5cdb735 0.47 gbp624
+invoice-classic_long 0:cf79b5cdb735#1 0.47 gbp624
invoice-classic_long 0:d2bde6642670 0.47 performanceprofiling—sprint1
invoice-classic_long 0:679f017f73c1 0.47 gbp661
invoice-classic_long 0:63985b524723 0.47 gbp1322
@@ -1717,6 +1753,7 @@ invoice-classic_long 0:70b393b5fb10 0.47 gbp735
invoice-classic_long 0:29edf7588a57 0.47 gbp2940
invoice-classic_long 0:82a9218b91ae 0.47 discoveryworkshop—sprint2
invoice-classic_long 0:c313f34b71b9 0.47 gbp772
+invoice-classic_long 0:c313f34b71b9#1 0.47 gbp772
invoice-classic_long 0:7e69fbffe3e2 0.47 designsystemaudit—sprint2
invoice-classic_long 0:e096e4fddf9a 0.47 gbp809
invoice-classic_long 0:c985a0123929 0.47 gbp1618
@@ -1732,6 +1769,7 @@ invoice-classic_long 1:385cfdbc00ec 0.30 unit
invoice-classic_long 1:cf38d95c9c6b 0.30 amount
invoice-classic_long 1:f12cbb7c274d 0.52 renderqapass—sprint2
invoice-classic_long 1:b813c73bc488 0.52 gbp920
+invoice-classic_long 1:b813c73bc488#1 0.52 gbp920
invoice-classic_long 1:12cd54b50187 0.52 accessibilityreview—sprint2
invoice-classic_long 1:377d92702316 0.52 gbp957
invoice-classic_long 1:e7c66f6cf477 0.52 gbp1914
@@ -1743,6 +1781,7 @@ invoice-classic_long 1:a4c7a6612c99 0.52 gbp1031
invoice-classic_long 1:1c83f0b47e27 0.52 gbp4124
invoice-classic_long 1:00de69c6e70f 0.52 datamapping—sprint2
invoice-classic_long 1:b9d5c56a2cfd 0.52 gbp1068
+invoice-classic_long 1:b9d5c56a2cfd#1 0.52 gbp1068
invoice-classic_long 1:eb628b5ea8ab 0.52 paginationhardening—sprint2
invoice-classic_long 1:db5327b47d0e 0.52 gbp205
invoice-classic_long 1:99d9b3b49da2 0.52 gbp410
@@ -1754,6 +1793,7 @@ invoice-classic_long 1:28ad00e76aef 0.52 gbp279
invoice-classic_long 1:fbb12fed0bbc 0.52 gbp1116
invoice-classic_long 1:5369a2c40ff8 0.52 stakeholderdemo—sprint2
invoice-classic_long 1:16562cbcd318 0.52 gbp316
+invoice-classic_long 1:16562cbcd318#1 0.52 gbp316
invoice-classic_long 1:611b258cb41e 0.52 performanceprofiling—sprint2
invoice-classic_long 1:e391d4e46366 0.52 gbp353
invoice-classic_long 1:7106c00cb009 0.52 gbp706
@@ -1765,6 +1805,7 @@ invoice-classic_long 1:909481a45a34 0.52 gbp427
invoice-classic_long 1:4e58d78d0958 0.52 gbp1708
invoice-classic_long 1:ddce236bccd7 0.52 discoveryworkshop—sprint3
invoice-classic_long 1:f8d17c11d834 0.52 gbp464
+invoice-classic_long 1:f8d17c11d834#1 0.52 gbp464
invoice-classic_long 1:c0986cd7b1d4 0.52 designsystemaudit—sprint3
invoice-classic_long 1:09c7aebd89f6 0.52 gbp501
invoice-classic_long 1:a61c7b6bdd20 0.52 gbp1002
@@ -1776,6 +1817,7 @@ invoice-classic_long 1:f6df6e8e8f30 0.52 gbp575
invoice-classic_long 1:7f7db0f4c1cf 0.52 gbp2300
invoice-classic_long 1:608e31719f07 0.52 renderqapass—sprint3
invoice-classic_long 1:e4fbc626999e 0.52 gbp612
+invoice-classic_long 1:e4fbc626999e#1 0.52 gbp612
invoice-classic_long 1:98bfb4deb0b7 0.52 accessibilityreview—sprint3
invoice-classic_long 1:7915a839b285 0.52 gbp649
invoice-classic_long 1:ca74221d78ad 0.52 gbp1298
@@ -1810,6 +1852,7 @@ invoice-consulting 0:ef0664c1d352 2.81 northpoint.com.au
invoice-consulting 0:52d6e3de4fa0 -0.44 invoice
invoice-consulting 0:6282391a4cc1 -0.63 invoicenumber:
invoice-consulting 0:7d66eb3c1070 -0.19 inv-2025-0478
+invoice-consulting 0:7d66eb3c1070#1 1.61 inv-2025-0478
invoice-consulting 0:89973ab74e1c -0.63 issuedate:
invoice-consulting 0:0dee636efa5b -0.19 26may2025
invoice-consulting 0:0e0fb0fc0939 -0.63 duedate:
@@ -1834,21 +1877,27 @@ invoice-consulting 0:b28225a1247c 0.92 serviceperiod
invoice-consulting 0:32e8369a9c4f 0.92 qty
invoice-consulting 0:d1062d072acd 0.91 unitprice
invoice-consulting 0:3ff0b4a2706b 0.93 (aud)
+invoice-consulting 0:3ff0b4a2706b#1 0.93 (aud)
invoice-consulting 0:cf38d95c9c6b 0.91 amount
invoice-consulting 0:b344321f5471 1.21 1–10may2025
invoice-consulting 0:a8994a9020c4 1.21 10.00
invoice-consulting 0:4e9682fa850e 1.22 hrs
+invoice-consulting 0:4e9682fa850e#1 1.28 hrs
invoice-consulting 0:aa92f0e23a97 1.21 250.00
invoice-consulting 0:e48d9b7a2993 1.21 2,500.00
invoice-consulting 0:1bcfde966d94 0.89 strategicconsultation
invoice-consulting 0:fd3ca268f319 0.37 leadershipalignmentworkshops
invoice-consulting 0:8d93e0c47a8c 1.23 1–15may2025
invoice-consulting 0:cf9dcf6da8a8 1.23 1.00
+invoice-consulting 0:cf9dcf6da8a8#1 1.25 1.00
+invoice-consulting 0:cf9dcf6da8a8#2 1.44 1.00
invoice-consulting 0:97e47b250054 1.23 3,500.00
+invoice-consulting 0:97e47b250054#1 1.23 3,500.00
invoice-consulting 0:5581aef375ff 0.91 market&competitiveanalysis
invoice-consulting 0:957080ea09d9 0.39 researchandanalysisreport
invoice-consulting 0:47102c31f226 1.25 5–20may2025
invoice-consulting 0:ec6305055be9 1.25 4,800.00
+invoice-consulting 0:ec6305055be9#1 1.25 4,800.00
invoice-consulting 0:53dea97cf116 0.93 digitalroadmapdevelopment
invoice-consulting 0:acf357e68297 0.41 strategyandroadmapcreation
invoice-consulting 0:c947fb16eab2 1.27 15–22may2025
@@ -1859,6 +1908,7 @@ invoice-consulting 0:fe04037aa850 0.95 stakeholderreviewsessions
invoice-consulting 0:4658a1bff292 0.43 facilitationanddocumentation
invoice-consulting 0:86f73207c794 1.44 20–25may2025
invoice-consulting 0:55907ef405f6 1.44 1,880.00
+invoice-consulting 0:55907ef405f6#1 1.44 1,880.00
invoice-consulting 0:f2e12ad6cc9f 1.12 presentation&finalreport
invoice-consulting 0:50de6dc61b80 0.60 executivepresentationanddelivery
invoice-consulting 0:d6577e95efba 0.39 subtotal
@@ -1918,33 +1968,104 @@ invoice-consulting_long 0:b28225a1247c 0.92 serviceperiod
invoice-consulting_long 0:32e8369a9c4f 0.92 qty
invoice-consulting_long 0:d1062d072acd 0.91 unitprice
invoice-consulting_long 0:3ff0b4a2706b 0.93 (aud)
+invoice-consulting_long 0:3ff0b4a2706b#1 0.93 (aud)
invoice-consulting_long 0:cf38d95c9c6b 0.91 amount
invoice-consulting_long 0:b344321f5471 1.21 1–10may2025
+invoice-consulting_long 0:b344321f5471#1 1.31 1–10may2025
+invoice-consulting_long 0:b344321f5471#2 1.41 1–10may2025
invoice-consulting_long 0:a8994a9020c4 1.21 10.00
+invoice-consulting_long 0:a8994a9020c4#1 1.31 10.00
+invoice-consulting_long 0:a8994a9020c4#2 1.41 10.00
invoice-consulting_long 0:4e9682fa850e 1.22 hrs
+invoice-consulting_long 0:4e9682fa850e#1 1.28 hrs
+invoice-consulting_long 0:4e9682fa850e#2 1.32 hrs
+invoice-consulting_long 0:4e9682fa850e#3 1.38 hrs
+invoice-consulting_long 0:4e9682fa850e#4 1.42 hrs
+invoice-consulting_long 0:4e9682fa850e#5 1.48 hrs
invoice-consulting_long 0:aa92f0e23a97 1.21 250.00
+invoice-consulting_long 0:aa92f0e23a97#1 1.31 250.00
+invoice-consulting_long 0:aa92f0e23a97#2 1.41 250.00
invoice-consulting_long 0:e48d9b7a2993 1.21 2,500.00
+invoice-consulting_long 0:e48d9b7a2993#1 1.31 2,500.00
+invoice-consulting_long 0:e48d9b7a2993#2 1.41 2,500.00
invoice-consulting_long 0:1bcfde966d94 0.89 strategicconsultation
+invoice-consulting_long 0:1bcfde966d94#1 0.99 strategicconsultation
+invoice-consulting_long 0:1bcfde966d94#2 1.09 strategicconsultation
invoice-consulting_long 0:fd3ca268f319 0.37 leadershipalignmentworkshops
+invoice-consulting_long 0:fd3ca268f319#1 0.47 leadershipalignmentworkshops
+invoice-consulting_long 0:fd3ca268f319#2 0.57 leadershipalignmentworkshops
invoice-consulting_long 0:8d93e0c47a8c 1.23 1–15may2025
+invoice-consulting_long 0:8d93e0c47a8c#1 1.33 1–15may2025
+invoice-consulting_long 0:8d93e0c47a8c#2 1.43 1–15may2025
invoice-consulting_long 0:cf9dcf6da8a8 1.23 1.00
+invoice-consulting_long 0:cf9dcf6da8a8#1 1.25 1.00
+invoice-consulting_long 0:cf9dcf6da8a8#2 1.29 1.00
+invoice-consulting_long 0:cf9dcf6da8a8#3 1.33 1.00
+invoice-consulting_long 0:cf9dcf6da8a8#4 1.35 1.00
+invoice-consulting_long 0:cf9dcf6da8a8#5 1.39 1.00
+invoice-consulting_long 0:cf9dcf6da8a8#6 1.43 1.00
+invoice-consulting_long 0:cf9dcf6da8a8#7 1.45 1.00
+invoice-consulting_long 0:cf9dcf6da8a8#8 1.49 1.00
invoice-consulting_long 0:97e47b250054 1.23 3,500.00
+invoice-consulting_long 0:97e47b250054#1 1.23 3,500.00
+invoice-consulting_long 0:97e47b250054#2 1.33 3,500.00
+invoice-consulting_long 0:97e47b250054#3 1.33 3,500.00
+invoice-consulting_long 0:97e47b250054#4 1.43 3,500.00
+invoice-consulting_long 0:97e47b250054#5 1.43 3,500.00
invoice-consulting_long 0:5581aef375ff 0.91 market&competitiveanalysis
+invoice-consulting_long 0:5581aef375ff#1 1.01 market&competitiveanalysis
+invoice-consulting_long 0:5581aef375ff#2 1.11 market&competitiveanalysis
invoice-consulting_long 0:957080ea09d9 0.39 researchandanalysisreport
+invoice-consulting_long 0:957080ea09d9#1 0.49 researchandanalysisreport
+invoice-consulting_long 0:957080ea09d9#2 0.59 researchandanalysisreport
invoice-consulting_long 0:47102c31f226 1.25 5–20may2025
+invoice-consulting_long 0:47102c31f226#1 1.35 5–20may2025
+invoice-consulting_long 0:47102c31f226#2 1.45 5–20may2025
invoice-consulting_long 0:ec6305055be9 1.25 4,800.00
+invoice-consulting_long 0:ec6305055be9#1 1.25 4,800.00
+invoice-consulting_long 0:ec6305055be9#2 1.35 4,800.00
+invoice-consulting_long 0:ec6305055be9#3 1.35 4,800.00
+invoice-consulting_long 0:ec6305055be9#4 1.45 4,800.00
+invoice-consulting_long 0:ec6305055be9#5 1.45 4,800.00
invoice-consulting_long 0:53dea97cf116 0.93 digitalroadmapdevelopment
+invoice-consulting_long 0:53dea97cf116#1 1.03 digitalroadmapdevelopment
+invoice-consulting_long 0:53dea97cf116#2 1.13 digitalroadmapdevelopment
invoice-consulting_long 0:acf357e68297 0.41 strategyandroadmapcreation
+invoice-consulting_long 0:acf357e68297#1 0.51 strategyandroadmapcreation
+invoice-consulting_long 0:acf357e68297#2 0.61 strategyandroadmapcreation
invoice-consulting_long 0:c947fb16eab2 1.27 15–22may2025
+invoice-consulting_long 0:c947fb16eab2#1 1.37 15–22may2025
+invoice-consulting_long 0:c947fb16eab2#2 1.47 15–22may2025
invoice-consulting_long 0:017144e2271f 1.27 6.00
+invoice-consulting_long 0:017144e2271f#1 1.37 6.00
+invoice-consulting_long 0:017144e2271f#2 1.47 6.00
invoice-consulting_long 0:be6012a47af0 1.27 220.00
+invoice-consulting_long 0:be6012a47af0#1 1.37 220.00
+invoice-consulting_long 0:be6012a47af0#2 1.47 220.00
invoice-consulting_long 0:172c0a785bc7 1.27 1,320.00
+invoice-consulting_long 0:172c0a785bc7#1 1.37 1,320.00
+invoice-consulting_long 0:172c0a785bc7#2 1.47 1,320.00
invoice-consulting_long 0:fe04037aa850 0.95 stakeholderreviewsessions
+invoice-consulting_long 0:fe04037aa850#1 1.05 stakeholderreviewsessions
+invoice-consulting_long 0:fe04037aa850#2 1.15 stakeholderreviewsessions
invoice-consulting_long 0:4658a1bff292 0.43 facilitationanddocumentation
+invoice-consulting_long 0:4658a1bff292#1 0.53 facilitationanddocumentation
+invoice-consulting_long 0:4658a1bff292#2 0.63 facilitationanddocumentation
invoice-consulting_long 0:86f73207c794 1.29 20–25may2025
+invoice-consulting_long 0:86f73207c794#1 1.39 20–25may2025
+invoice-consulting_long 0:86f73207c794#2 1.49 20–25may2025
invoice-consulting_long 0:55907ef405f6 1.29 1,880.00
+invoice-consulting_long 0:55907ef405f6#1 1.29 1,880.00
+invoice-consulting_long 0:55907ef405f6#2 1.39 1,880.00
+invoice-consulting_long 0:55907ef405f6#3 1.39 1,880.00
+invoice-consulting_long 0:55907ef405f6#4 1.49 1,880.00
+invoice-consulting_long 0:55907ef405f6#5 1.49 1,880.00
invoice-consulting_long 0:f2e12ad6cc9f 0.97 presentation&finalreport
+invoice-consulting_long 0:f2e12ad6cc9f#1 1.07 presentation&finalreport
+invoice-consulting_long 0:f2e12ad6cc9f#2 1.17 presentation&finalreport
invoice-consulting_long 0:50de6dc61b80 0.45 executivepresentationanddelivery
+invoice-consulting_long 0:50de6dc61b80#1 0.55 executivepresentationanddelivery
+invoice-consulting_long 0:50de6dc61b80#2 0.65 executivepresentationanddelivery
invoice-consulting_long 0:55ee5fe62c33 0.01 northpointconsultingptyltd|abn12
invoice-consulting_long 0:c843aa25b80f 0.01 page1/2
invoice-consulting_long 1:c9046f7a37ad 0.53 description
@@ -1952,33 +2073,79 @@ invoice-consulting_long 1:b28225a1247c 0.53 serviceperiod
invoice-consulting_long 1:32e8369a9c4f 0.53 qty
invoice-consulting_long 1:d1062d072acd 0.52 unitprice
invoice-consulting_long 1:3ff0b4a2706b 0.54 (aud)
+invoice-consulting_long 1:3ff0b4a2706b#1 0.54 (aud)
invoice-consulting_long 1:cf38d95c9c6b 0.52 amount
invoice-consulting_long 1:b344321f5471 0.72 1–10may2025
+invoice-consulting_long 1:b344321f5471#1 0.82 1–10may2025
+invoice-consulting_long 1:b344321f5471#2 1.07 1–10may2025
invoice-consulting_long 1:a8994a9020c4 0.72 10.00
+invoice-consulting_long 1:a8994a9020c4#1 0.82 10.00
+invoice-consulting_long 1:a8994a9020c4#2 1.07 10.00
invoice-consulting_long 1:4e9682fa850e 0.73 hrs
+invoice-consulting_long 1:4e9682fa850e#1 0.79 hrs
+invoice-consulting_long 1:4e9682fa850e#2 0.83 hrs
+invoice-consulting_long 1:4e9682fa850e#3 0.89 hrs
+invoice-consulting_long 1:4e9682fa850e#4 1.08 hrs
invoice-consulting_long 1:aa92f0e23a97 0.72 250.00
+invoice-consulting_long 1:aa92f0e23a97#1 0.82 250.00
+invoice-consulting_long 1:aa92f0e23a97#2 1.07 250.00
invoice-consulting_long 1:e48d9b7a2993 0.72 2,500.00
+invoice-consulting_long 1:e48d9b7a2993#1 0.82 2,500.00
+invoice-consulting_long 1:e48d9b7a2993#2 1.07 2,500.00
invoice-consulting_long 1:1bcfde966d94 0.40 strategicconsultation
+invoice-consulting_long 1:1bcfde966d94#1 0.50 strategicconsultation
+invoice-consulting_long 1:1bcfde966d94#2 0.75 strategicconsultation
invoice-consulting_long 1:fd3ca268f319 -0.12 leadershipalignmentworkshops
+invoice-consulting_long 1:fd3ca268f319#1 -0.02 leadershipalignmentworkshops
+invoice-consulting_long 1:fd3ca268f319#2 0.23 leadershipalignmentworkshops
invoice-consulting_long 1:8d93e0c47a8c 0.74 1–15may2025
+invoice-consulting_long 1:8d93e0c47a8c#1 0.84 1–15may2025
invoice-consulting_long 1:cf9dcf6da8a8 0.74 1.00
+invoice-consulting_long 1:cf9dcf6da8a8#1 0.76 1.00
+invoice-consulting_long 1:cf9dcf6da8a8#2 0.80 1.00
+invoice-consulting_long 1:cf9dcf6da8a8#3 0.84 1.00
+invoice-consulting_long 1:cf9dcf6da8a8#4 0.86 1.00
+invoice-consulting_long 1:cf9dcf6da8a8#5 0.90 1.00
invoice-consulting_long 1:97e47b250054 0.74 3,500.00
+invoice-consulting_long 1:97e47b250054#1 0.74 3,500.00
+invoice-consulting_long 1:97e47b250054#2 0.84 3,500.00
+invoice-consulting_long 1:97e47b250054#3 0.84 3,500.00
invoice-consulting_long 1:5581aef375ff 0.42 market&competitiveanalysis
+invoice-consulting_long 1:5581aef375ff#1 0.52 market&competitiveanalysis
invoice-consulting_long 1:957080ea09d9 -0.10 researchandanalysisreport
+invoice-consulting_long 1:957080ea09d9#1 0.00 researchandanalysisreport
invoice-consulting_long 1:47102c31f226 0.76 5–20may2025
+invoice-consulting_long 1:47102c31f226#1 0.86 5–20may2025
invoice-consulting_long 1:ec6305055be9 0.76 4,800.00
+invoice-consulting_long 1:ec6305055be9#1 0.76 4,800.00
+invoice-consulting_long 1:ec6305055be9#2 0.86 4,800.00
+invoice-consulting_long 1:ec6305055be9#3 0.86 4,800.00
invoice-consulting_long 1:53dea97cf116 0.44 digitalroadmapdevelopment
+invoice-consulting_long 1:53dea97cf116#1 0.54 digitalroadmapdevelopment
invoice-consulting_long 1:acf357e68297 -0.08 strategyandroadmapcreation
+invoice-consulting_long 1:acf357e68297#1 0.02 strategyandroadmapcreation
invoice-consulting_long 1:c947fb16eab2 0.78 15–22may2025
+invoice-consulting_long 1:c947fb16eab2#1 0.88 15–22may2025
invoice-consulting_long 1:017144e2271f 0.78 6.00
+invoice-consulting_long 1:017144e2271f#1 0.88 6.00
invoice-consulting_long 1:be6012a47af0 0.78 220.00
+invoice-consulting_long 1:be6012a47af0#1 0.88 220.00
invoice-consulting_long 1:172c0a785bc7 0.78 1,320.00
+invoice-consulting_long 1:172c0a785bc7#1 0.88 1,320.00
invoice-consulting_long 1:fe04037aa850 0.46 stakeholderreviewsessions
+invoice-consulting_long 1:fe04037aa850#1 0.56 stakeholderreviewsessions
invoice-consulting_long 1:4658a1bff292 -0.06 facilitationanddocumentation
+invoice-consulting_long 1:4658a1bff292#1 0.04 facilitationanddocumentation
invoice-consulting_long 1:86f73207c794 0.80 20–25may2025
+invoice-consulting_long 1:86f73207c794#1 0.90 20–25may2025
invoice-consulting_long 1:55907ef405f6 0.80 1,880.00
+invoice-consulting_long 1:55907ef405f6#1 0.80 1,880.00
+invoice-consulting_long 1:55907ef405f6#2 0.90 1,880.00
+invoice-consulting_long 1:55907ef405f6#3 0.90 1,880.00
invoice-consulting_long 1:f2e12ad6cc9f 0.48 presentation&finalreport
+invoice-consulting_long 1:f2e12ad6cc9f#1 0.58 presentation&finalreport
invoice-consulting_long 1:50de6dc61b80 -0.04 executivepresentationanddelivery
+invoice-consulting_long 1:50de6dc61b80#1 0.06 executivepresentationanddelivery
invoice-consulting_long 1:d6577e95efba 0.02 subtotal
invoice-consulting_long 1:6311b1798398 0.46 14,000.00
invoice-consulting_long 1:e370855bde0c 0.02 gst(10%)
@@ -2006,12 +2173,15 @@ invoice-consulting_long 1:a6f6e2ddab6d 1.20 paymentisduewithin30daysfromthei
invoice-consulting_long 1:55ee5fe62c33 0.01 northpointconsultingptyltd|abn12
invoice-consulting_long 1:1bed6052d9b3 0.01 page2/2
invoice-luma_studio 0:ac5742bfd7c4 -9.14 &co.
-invoice-luma_studio 0:1583c0f92f86 -104.93 luma&co.studio
+invoice-luma_studio 0:1583c0f92f86 -0.38 luma&co.studio
+invoice-luma_studio 0:1583c0f92f86#1 0.28 luma&co.studio
invoice-luma_studio 0:b2b5b83cc26d -0.07 branding.design.digital.
invoice-luma_studio 0:c9ed0a9b9c8d 0.02 studio3.02,theloom
invoice-luma_studio 0:0a7d7e43c5de 0.00 14gowerstreet
invoice-luma_studio 0:b87f5fb5bcfa -0.02 londonwc1e6bt
invoice-luma_studio 0:2474519f77a9 -0.04 unitedkingdom
+invoice-luma_studio 0:2474519f77a9#1 -0.22 unitedkingdom
+invoice-luma_studio 0:2474519f77a9#2 -0.22 unitedkingdom
invoice-luma_studio 0:89b5eccb38ff 0.12 +44(0)2079460832
invoice-luma_studio 0:ea8232890494 0.07 hello@lumaandco.studio
invoice-luma_studio 0:374d89493adc 0.03 www.lumaandco.studio
@@ -2029,6 +2199,7 @@ invoice-luma_studio 0:466e5b9cd57f 0.12 currency
invoice-luma_studio 0:54f8e1b3fe44 0.19 gbp
invoice-luma_studio 0:aeba3a7b3598 0.04 billto
invoice-luma_studio 0:212254716728 -0.06 northfieldconsultingltd
+invoice-luma_studio 0:212254716728#1 -0.06 northfieldconsultingltd
invoice-luma_studio 0:bcb7024f74fe -0.10 attn:sarahmitchell
invoice-luma_studio 0:13dd937d2fe6 -0.14 21jubileeway
invoice-luma_studio 0:f9bab6a0b45b -0.18 londonse13ss
@@ -2042,21 +2213,30 @@ invoice-luma_studio 0:d1062d072acd 0.04 unitprice
invoice-luma_studio 0:7c512b48ba8a 0.04 vat
invoice-luma_studio 0:cf38d95c9c6b 0.04 amount
invoice-luma_studio 0:7b420577e50f 0.07 £1,200.00
+invoice-luma_studio 0:7b420577e50f#1 0.07 £1,200.00
invoice-luma_studio 0:dc934fe30a94 0.07 20%
+invoice-luma_studio 0:dc934fe30a94#1 0.08 20%
+invoice-luma_studio 0:dc934fe30a94#2 0.08 20%
+invoice-luma_studio 0:dc934fe30a94#3 0.09 20%
+invoice-luma_studio 0:dc934fe30a94#4 0.10 20%
invoice-luma_studio 0:d8f4e3a46d2d 0.01 brandstrategyworkshop
invoice-luma_studio 0:be624d692600 -0.56 discoverysession,research&brand
invoice-luma_studio 0:40ca2aad940f -0.55 positioning.
invoice-luma_studio 0:07bcffc86e95 0.08 £2,650.00
+invoice-luma_studio 0:07bcffc86e95#1 0.08 £2,650.00
invoice-luma_studio 0:e302dd04d528 0.02 visualidentitydesign
invoice-luma_studio 0:40e412f627fb -0.55 logosuite,colourpalette,typograp
invoice-luma_studio 0:9c17d116fe08 -0.54 &guidelines.
invoice-luma_studio 0:a20d66947acc 0.08 £3,200.00
+invoice-luma_studio 0:a20d66947acc#1 0.08 £3,200.00
invoice-luma_studio 0:b25ac9cd66bd 0.03 websitedesign(upto8pages)
invoice-luma_studio 0:dab758788e6f -0.19 ux/uidesignfordesktopandmobile.
invoice-luma_studio 0:f916278cb74c 0.09 £850.00
+invoice-luma_studio 0:f916278cb74c#1 0.09 £850.00
invoice-luma_studio 0:4a1359f78476 0.04 copywriting
invoice-luma_studio 0:69afea703455 -0.18 websitecopy&keymessaging.
invoice-luma_studio 0:07b417914317 0.10 £600.00
+invoice-luma_studio 0:07b417914317#1 0.10 £600.00
invoice-luma_studio 0:340455fbac25 0.05 projectmanagement
invoice-luma_studio 0:72534f9863ad -0.52 planning,coordination&client
invoice-luma_studio 0:4df00f9a2b20 -0.52 liaison.
@@ -2090,12 +2270,15 @@ invoice-luma_studio 0:543a2e86433f 0.24 thankyouforchoosingluma&co.studi
invoice-luma_studio 0:7111b3fcbf69 -0.07 paymentisdueby19june2024.
invoice-luma_studio 0:7b14b8d2c5c4 0.01 page1of1
invoice-luma_studio_long 0:ac5742bfd7c4 -9.14 &co.
-invoice-luma_studio_long 0:1583c0f92f86 -104.93 luma&co.studio
+invoice-luma_studio_long 0:1583c0f92f86 -0.38 luma&co.studio
+invoice-luma_studio_long 0:1583c0f92f86#1 0.28 luma&co.studio
invoice-luma_studio_long 0:b2b5b83cc26d -0.07 branding.design.digital.
invoice-luma_studio_long 0:c9ed0a9b9c8d 0.02 studio3.02,theloom
invoice-luma_studio_long 0:0a7d7e43c5de 0.00 14gowerstreet
invoice-luma_studio_long 0:b87f5fb5bcfa -0.02 londonwc1e6bt
invoice-luma_studio_long 0:2474519f77a9 -0.04 unitedkingdom
+invoice-luma_studio_long 0:2474519f77a9#1 -0.22 unitedkingdom
+invoice-luma_studio_long 0:2474519f77a9#2 -0.22 unitedkingdom
invoice-luma_studio_long 0:89b5eccb38ff 0.12 +44(0)2079460832
invoice-luma_studio_long 0:ea8232890494 0.07 hello@lumaandco.studio
invoice-luma_studio_long 0:374d89493adc 0.03 www.lumaandco.studio
@@ -2113,6 +2296,7 @@ invoice-luma_studio_long 0:466e5b9cd57f 0.12 currency
invoice-luma_studio_long 0:54f8e1b3fe44 0.19 gbp
invoice-luma_studio_long 0:aeba3a7b3598 0.04 billto
invoice-luma_studio_long 0:212254716728 -0.06 northfieldconsultingltd
+invoice-luma_studio_long 0:212254716728#1 -0.06 northfieldconsultingltd
invoice-luma_studio_long 0:bcb7024f74fe -0.10 attn:sarahmitchell
invoice-luma_studio_long 0:13dd937d2fe6 -0.14 21jubileeway
invoice-luma_studio_long 0:f9bab6a0b45b -0.18 londonse13ss
@@ -2126,22 +2310,46 @@ invoice-luma_studio_long 0:d1062d072acd 0.04 unitprice
invoice-luma_studio_long 0:7c512b48ba8a 0.04 vat
invoice-luma_studio_long 0:cf38d95c9c6b 0.04 amount
invoice-luma_studio_long 0:7b420577e50f 0.07 £1,200.00
+invoice-luma_studio_long 0:7b420577e50f#1 0.07 £1,200.00
+invoice-luma_studio_long 0:7b420577e50f#2 0.12 £1,200.00
+invoice-luma_studio_long 0:7b420577e50f#3 0.12 £1,200.00
invoice-luma_studio_long 0:dc934fe30a94 0.07 20%
+invoice-luma_studio_long 0:dc934fe30a94#1 0.08 20%
+invoice-luma_studio_long 0:dc934fe30a94#2 0.09 20%
+invoice-luma_studio_long 0:dc934fe30a94#3 0.10 20%
+invoice-luma_studio_long 0:dc934fe30a94#4 0.11 20%
+invoice-luma_studio_long 0:dc934fe30a94#5 0.12 20%
+invoice-luma_studio_long 0:dc934fe30a94#6 0.13 20%
+invoice-luma_studio_long 0:dc934fe30a94#7 0.14 20%
invoice-luma_studio_long 0:d8f4e3a46d2d 0.01 brandstrategyworkshop
+invoice-luma_studio_long 0:d8f4e3a46d2d#1 0.06 brandstrategyworkshop
invoice-luma_studio_long 0:be624d692600 -0.56 discoverysession,research&brand
+invoice-luma_studio_long 0:be624d692600#1 -0.51 discoverysession,research&brand
invoice-luma_studio_long 0:d6def76ba3d1 -0.55 positioning.phase1.
invoice-luma_studio_long 0:07bcffc86e95 0.08 £2,650.00
+invoice-luma_studio_long 0:07bcffc86e95#1 0.08 £2,650.00
+invoice-luma_studio_long 0:07bcffc86e95#2 0.13 £2,650.00
+invoice-luma_studio_long 0:07bcffc86e95#3 0.13 £2,650.00
invoice-luma_studio_long 0:e302dd04d528 0.02 visualidentitydesign
+invoice-luma_studio_long 0:e302dd04d528#1 0.07 visualidentitydesign
invoice-luma_studio_long 0:40e412f627fb -0.55 logosuite,colourpalette,typograp
+invoice-luma_studio_long 0:40e412f627fb#1 -0.50 logosuite,colourpalette,typograp
invoice-luma_studio_long 0:270a9e26d2e0 -0.54 &guidelines.phase1.
invoice-luma_studio_long 0:a20d66947acc 0.09 £3,200.00
+invoice-luma_studio_long 0:a20d66947acc#1 0.09 £3,200.00
+invoice-luma_studio_long 0:a20d66947acc#2 0.14 £3,200.00
+invoice-luma_studio_long 0:a20d66947acc#3 0.14 £3,200.00
invoice-luma_studio_long 0:b25ac9cd66bd 0.03 websitedesign(upto8pages)
+invoice-luma_studio_long 0:b25ac9cd66bd#1 0.08 websitedesign(upto8pages)
invoice-luma_studio_long 0:dab758788e6f -0.54 ux/uidesignfordesktopandmobile.
+invoice-luma_studio_long 0:dab758788e6f#1 -0.49 ux/uidesignfordesktopandmobile.
invoice-luma_studio_long 0:bb1a79cda1ae -0.53 phase1.
invoice-luma_studio_long 0:f916278cb74c 0.10 £850.00
+invoice-luma_studio_long 0:f916278cb74c#1 0.10 £850.00
invoice-luma_studio_long 0:4a1359f78476 0.04 copywriting
invoice-luma_studio_long 0:e6a181326fc9 -0.53 websitecopy&keymessaging.phase
invoice-luma_studio_long 0:07b417914317 0.11 £600.00
+invoice-luma_studio_long 0:07b417914317#1 0.11 £600.00
invoice-luma_studio_long 0:340455fbac25 0.05 projectmanagement
invoice-luma_studio_long 0:72534f9863ad -0.52 planning,coordination&client
invoice-luma_studio_long 0:8f09113ca513 -0.51 liaison.phase1.
@@ -2155,24 +2363,68 @@ invoice-luma_studio_long 1:d1062d072acd 0.18 unitprice
invoice-luma_studio_long 1:7c512b48ba8a 0.18 vat
invoice-luma_studio_long 1:cf38d95c9c6b 0.18 amount
invoice-luma_studio_long 1:f916278cb74c 0.21 £850.00
+invoice-luma_studio_long 1:f916278cb74c#1 0.21 £850.00
+invoice-luma_studio_long 1:f916278cb74c#2 0.26 £850.00
+invoice-luma_studio_long 1:f916278cb74c#3 0.26 £850.00
+invoice-luma_studio_long 1:f916278cb74c#4 0.31 £850.00
+invoice-luma_studio_long 1:f916278cb74c#5 0.31 £850.00
invoice-luma_studio_long 1:dc934fe30a94 0.21 20%
+invoice-luma_studio_long 1:dc934fe30a94#1 0.22 20%
+invoice-luma_studio_long 1:dc934fe30a94#2 0.23 20%
+invoice-luma_studio_long 1:dc934fe30a94#3 0.24 20%
+invoice-luma_studio_long 1:dc934fe30a94#4 0.25 20%
+invoice-luma_studio_long 1:dc934fe30a94#5 0.26 20%
+invoice-luma_studio_long 1:dc934fe30a94#6 0.27 20%
+invoice-luma_studio_long 1:dc934fe30a94#7 0.28 20%
+invoice-luma_studio_long 1:dc934fe30a94#8 0.29 20%
+invoice-luma_studio_long 1:dc934fe30a94#9 0.30 20%
+invoice-luma_studio_long 1:dc934fe30a94#10 0.31 20%
+invoice-luma_studio_long 1:dc934fe30a94#11 0.32 20%
invoice-luma_studio_long 1:4a1359f78476 0.15 copywriting
+invoice-luma_studio_long 1:4a1359f78476#1 0.20 copywriting
+invoice-luma_studio_long 1:4a1359f78476#2 0.25 copywriting
invoice-luma_studio_long 1:e6a181326fc9 -0.41 websitecopy&keymessaging.phase
+invoice-luma_studio_long 1:e6a181326fc9#1 -0.36 websitecopy&keymessaging.phase
+invoice-luma_studio_long 1:e6a181326fc9#2 -0.31 websitecopy&keymessaging.phase
invoice-luma_studio_long 1:07b417914317 0.22 £600.00
+invoice-luma_studio_long 1:07b417914317#1 0.22 £600.00
+invoice-luma_studio_long 1:07b417914317#2 0.27 £600.00
+invoice-luma_studio_long 1:07b417914317#3 0.27 £600.00
+invoice-luma_studio_long 1:07b417914317#4 0.32 £600.00
+invoice-luma_studio_long 1:07b417914317#5 0.32 £600.00
invoice-luma_studio_long 1:340455fbac25 0.16 projectmanagement
+invoice-luma_studio_long 1:340455fbac25#1 0.21 projectmanagement
+invoice-luma_studio_long 1:340455fbac25#2 0.26 projectmanagement
invoice-luma_studio_long 1:72534f9863ad -0.40 planning,coordination&client
+invoice-luma_studio_long 1:72534f9863ad#1 -0.35 planning,coordination&client
+invoice-luma_studio_long 1:72534f9863ad#2 -0.30 planning,coordination&client
invoice-luma_studio_long 1:ad05c4b80bfe -0.40 liaison.phase2.
invoice-luma_studio_long 1:7b420577e50f 0.23 £1,200.00
+invoice-luma_studio_long 1:7b420577e50f#1 0.23 £1,200.00
+invoice-luma_studio_long 1:7b420577e50f#2 0.28 £1,200.00
+invoice-luma_studio_long 1:7b420577e50f#3 0.28 £1,200.00
invoice-luma_studio_long 1:d8f4e3a46d2d 0.17 brandstrategyworkshop
+invoice-luma_studio_long 1:d8f4e3a46d2d#1 0.22 brandstrategyworkshop
invoice-luma_studio_long 1:be624d692600 -0.39 discoverysession,research&brand
+invoice-luma_studio_long 1:be624d692600#1 -0.34 discoverysession,research&brand
invoice-luma_studio_long 1:b95a82d5055c -0.39 positioning.phase3.
invoice-luma_studio_long 1:07bcffc86e95 0.24 £2,650.00
+invoice-luma_studio_long 1:07bcffc86e95#1 0.24 £2,650.00
+invoice-luma_studio_long 1:07bcffc86e95#2 0.29 £2,650.00
+invoice-luma_studio_long 1:07bcffc86e95#3 0.29 £2,650.00
invoice-luma_studio_long 1:e302dd04d528 0.18 visualidentitydesign
+invoice-luma_studio_long 1:e302dd04d528#1 0.23 visualidentitydesign
invoice-luma_studio_long 1:40e412f627fb -0.38 logosuite,colourpalette,typograp
+invoice-luma_studio_long 1:40e412f627fb#1 -0.33 logosuite,colourpalette,typograp
invoice-luma_studio_long 1:708bc0c2e87c -0.38 &guidelines.phase3.
invoice-luma_studio_long 1:a20d66947acc 0.25 £3,200.00
+invoice-luma_studio_long 1:a20d66947acc#1 0.25 £3,200.00
+invoice-luma_studio_long 1:a20d66947acc#2 0.30 £3,200.00
+invoice-luma_studio_long 1:a20d66947acc#3 0.30 £3,200.00
invoice-luma_studio_long 1:b25ac9cd66bd 0.19 websitedesign(upto8pages)
+invoice-luma_studio_long 1:b25ac9cd66bd#1 0.24 websitedesign(upto8pages)
invoice-luma_studio_long 1:dab758788e6f -0.37 ux/uidesignfordesktopandmobile.
+invoice-luma_studio_long 1:dab758788e6f#1 -0.32 ux/uidesignfordesktopandmobile.
invoice-luma_studio_long 1:155500f32e83 -0.37 phase3.
invoice-luma_studio_long 1:82f971bee7f8 -0.35 liaison.phase3.
invoice-luma_studio_long 1:7affbd48dd15 -0.34 positioning.phase4.
@@ -2212,19 +2464,23 @@ invoice-luma_studio_long 2:bc6d215b63ee 0.01 page3of3
invoice-merchant 0:0dffa3b5d008 -0.01 coastline
invoice-merchant 0:52d6e3de4fa0 0.08 invoice
invoice-merchant 0:9422e2aeb800 0.08 coastlinecommerceinc.
+invoice-merchant 0:9422e2aeb800#1 0.65 coastlinecommerceinc.
invoice-merchant 0:8bb83c0c3efb 0.10 150elginstreet,8thfloor
invoice-merchant 0:cf0df3462e70 0.09 ottawa,onk2p1l4
invoice-merchant 0:408c7c5887a0 0.09 canada
invoice-merchant 0:0d9b94d29fc9 0.01 www.coastline.example
invoice-merchant 0:76957649b8a8 -0.02 billing@coastline.example
+invoice-merchant 0:76957649b8a8#1 0.68 billing@coastline.example
invoice-merchant 0:0b44bf19dd44 -0.05 +1613-555-0142
invoice-merchant 0:884004f21362 -0.03 vatid:ca8139020285rt0001
invoice-merchant 0:6282391a4cc1 0.23 invoicenumber:
invoice-merchant 0:a6e01b979f55 0.23 inv-2026-000789
+invoice-merchant 0:a6e01b979f55#1 0.68 inv-2026-000789
invoice-merchant 0:8d05f5d55191 0.20 invoicedate:
invoice-merchant 0:dc9696f61d36 0.20 27may2026
invoice-merchant 0:0e0fb0fc0939 0.18 duedate:
invoice-merchant 0:93059e9a1c07 0.18 26june2026
+invoice-merchant 0:93059e9a1c07#1 0.85 26june2026
invoice-merchant 0:d39366fa1423 0.16 billingperiod:
invoice-merchant 0:ec215645f61e 0.16 01may2026–31may2026
invoice-merchant 0:18e2cca1098e 0.14 paymentterms:
@@ -2233,9 +2489,12 @@ invoice-merchant 0:967e0b6ca4b9 0.12 currency:
invoice-merchant 0:d60fbd8718ec 0.12 usd
invoice-merchant 0:aeba3a7b3598 -0.03 billto
invoice-merchant 0:45fe04dbae24 -0.07 brightfutureltd.
+invoice-merchant 0:45fe04dbae24#1 -0.07 brightfutureltd.
invoice-merchant 0:65405af34bf9 -0.08 45kingstreet
invoice-merchant 0:1f8da9c4e269 -0.07 manchester,m24wu
+invoice-merchant 0:1f8da9c4e269#1 -0.06 manchester,m24wu
invoice-merchant 0:2474519f77a9 -0.06 unitedkingdom
+invoice-merchant 0:2474519f77a9#1 -0.06 unitedkingdom
invoice-merchant 0:c7a9cfdd1c55 -0.07 vatid:gb987654321
invoice-merchant 0:725a8f5062e7 -0.03 shipto
invoice-merchant 0:5895c7cd8d5b -0.08 warehouse7
@@ -2249,10 +2508,15 @@ invoice-merchant 0:fe6b34582738 0.27 coastlineadvanced
invoice-merchant 0:46f3b0cea3bc 0.23 monthlysubscription
invoice-merchant 0:71738eb7126d 0.24 advancedplan
invoice-merchant 0:7b969356782c 0.24 399.00
+invoice-merchant 0:7b969356782c#1 0.24 399.00
invoice-merchant 0:0a9acaea6477 0.26 paymentprocessing
invoice-merchant 0:91809142f08f 0.21 transactionfee
invoice-merchant 0:358a7392afe6 0.22 asperusage
invoice-merchant 0:561b2814d3c0 0.22 0.00
+invoice-merchant 0:561b2814d3c0#1 0.22 0.00
+invoice-merchant 0:561b2814d3c0#2 0.19 0.00
+invoice-merchant 0:561b2814d3c0#3 0.19 0.00
+invoice-merchant 0:561b2814d3c0#4 0.64 0.00
invoice-merchant 0:3f9fea8c0fc5 0.24 additionalstaffaccounts
invoice-merchant 0:fbf7948d004d 0.20 staffaccount
invoice-merchant 0:7b476727faf3 0.21 additional
@@ -2290,15 +2554,19 @@ invoice-merchant 0:aaa4b5e2074f 0.27 ifyouhaveanyquestionsaboutthisin
invoice-metered 0:8a80987c409a 0.23 northwindcloud
invoice-metered 0:52d6e3de4fa0 0.20 invoice
invoice-metered 0:41305d2c2d3b -0.19 northwindcloudservicesltd.
+invoice-metered 0:41305d2c2d3b#1 0.29 northwindcloudservicesltd.
invoice-metered 0:c3f5f4cc9def -0.18 120riversideway
invoice-metered 0:5be08c6bee4c -0.19 bristol,bs16qt
invoice-metered 0:2474519f77a9 -0.20 unitedkingdom
+invoice-metered 0:2474519f77a9#1 -0.12 unitedkingdom
+invoice-metered 0:2474519f77a9#2 -0.16 unitedkingdom
invoice-metered 0:ec6d474a1bfc -0.21 vatid:
invoice-metered 0:b03c22d79b17 -0.21 gb412883027
invoice-metered 0:83e16ec72a3f -0.23 phone:
invoice-metered 0:bff9aeb5400b -0.23 +44(0)1174962280
invoice-metered 0:439961205ae6 -0.25 email:
invoice-metered 0:228e0a39fe6e -0.25 billing@northwind.example
+invoice-metered 0:228e0a39fe6e#1 0.16 billing@northwind.example
invoice-metered 0:294ed2cfe15e -0.26 website:https://northwind.exampl
invoice-metered 0:6282391a4cc1 -0.08 invoicenumber:
invoice-metered 0:0edf022238f1 -0.07 inv-2026-00041882
@@ -2306,6 +2574,7 @@ invoice-metered 0:8d05f5d55191 -0.05 invoicedate:
invoice-metered 0:52c8b7a9ee5f -0.04 31july2026
invoice-metered 0:0e0fb0fc0939 -0.05 duedate:
invoice-metered 0:6a077b4f161e -0.04 30august2026
+invoice-metered 0:6a077b4f161e#1 0.75 30august2026
invoice-metered 0:aa1e9c8092ab -0.05 billperiod:
invoice-metered 0:3e380076ca84 -0.04 01jul2026–31jul2026
invoice-metered 0:18e2cca1098e -0.04 paymentterms:
@@ -2314,8 +2583,10 @@ invoice-metered 0:967e0b6ca4b9 -0.04 currency:
invoice-metered 0:54f8e1b3fe44 -0.04 gbp
invoice-metered 0:aeba3a7b3598 0.01 billto
invoice-metered 0:45fe04dbae24 -0.05 brightfutureltd.
+invoice-metered 0:45fe04dbae24#1 -0.05 brightfutureltd.
invoice-metered 0:65405af34bf9 -0.04 45kingstreet
invoice-metered 0:1f8da9c4e269 -0.08 manchester,m24wu
+invoice-metered 0:1f8da9c4e269#1 -0.12 manchester,m24wu
invoice-metered 0:c7a9cfdd1c55 -0.16 vatid:gb987654321
invoice-metered 0:725a8f5062e7 0.01 shipto
invoice-metered 0:5895c7cd8d5b -0.04 warehouse7
@@ -2328,7 +2599,10 @@ invoice-metered 0:cf38d95c9c6b 0.28 amount
invoice-metered 0:f13d9c7c6f89 0.49 computeinstances
invoice-metered 0:d08426b31521 0.46 on-demandusage
invoice-metered 0:05313a23f706 0.50 london(eu-west)
+invoice-metered 0:05313a23f706#1 0.48 london(eu-west)
+invoice-metered 0:05313a23f706#2 0.47 london(eu-west)
invoice-metered 0:6e477a22f840 0.50 744hrs
+invoice-metered 0:6e477a22f840#1 0.47 744hrs
invoice-metered 0:352967434b63 0.50 gbp0.0710
invoice-metered 0:eec5f520909e 0.50 gbp52.82
invoice-metered 0:721ffa554e56 0.48 objectstorage
@@ -2343,12 +2617,14 @@ invoice-metered 0:baad0db43ed6 0.47 gbp122.76
invoice-metered 0:444858f5bf18 0.45 egresstraffic
invoice-metered 0:8b72bb875a83 0.42 datatransferout
invoice-metered 0:8001c2743965 0.45 global
+invoice-metered 0:8001c2743965#1 0.69 global
invoice-metered 0:847eb4cbbb42 0.45 310gb
invoice-metered 0:d651e46704f7 0.45 gbp0.0900
invoice-metered 0:4ecaa7313375 0.45 gbp27.90
invoice-metered 0:efa8771baad9 0.69 supportplan
invoice-metered 0:9e81cd6e653a 0.65 standardresponse
invoice-metered 0:a0443240c5ed 0.69 gbp0.91
+invoice-metered 0:a0443240c5ed#1 0.69 gbp0.91
invoice-metered 0:3c7ade679fdf 0.30 paymentdetails
invoice-metered 0:0ecb5847ffa7 0.29 accountname:
invoice-metered 0:944d398aea60 0.27 bankname:
@@ -2398,6 +2674,7 @@ invoice-modern 0:385cfdbc00ec 0.10 unit
invoice-modern 0:cf38d95c9c6b 0.10 amount
invoice-modern 0:987c6297d0a9 0.32 discoveryworkshop
invoice-modern 0:532674c6eb89 0.32 gbp1,450
+invoice-modern 0:532674c6eb89#1 0.32 gbp1,450
invoice-modern 0:08ec6deb1c40 0.32 templatearchitecture2
invoice-modern 0:d2e67c4b1cca 0.32 gbp980
invoice-modern 0:d6cdf6a05754 0.32 gbp1,960
@@ -2406,6 +2683,7 @@ invoice-modern 0:7e7398cbff7c 0.32 gbp320
invoice-modern 0:e23164e940c7 0.32 gbp960
invoice-modern 0:6047df51175c 0.32 developerenablement1
invoice-modern 0:c2ad01ea64ae 0.32 gbp780
+invoice-modern 0:c2ad01ea64ae#1 0.32 gbp780
invoice-modern 0:d6577e95efba 0.32 subtotal
invoice-modern 0:50cae0510231 0.32 gbp5,150
invoice-modern 0:a52611c9261b 0.32 vat(20%)
@@ -2449,6 +2727,7 @@ invoice-modern_long 0:385cfdbc00ec 0.13 unit
invoice-modern_long 0:cf38d95c9c6b 0.13 amount
invoice-modern_long 0:aa29f2f4fcb4 0.35 discoveryworkshop—sprint1
invoice-modern_long 0:ce4081aef7a1 0.35 gbp180
+invoice-modern_long 0:ce4081aef7a1#1 0.35 gbp180
invoice-modern_long 0:9c9a412f0a45 0.35 designsystemaudit—sprint1
invoice-modern_long 0:7be809cb1590 0.35 gbp217
invoice-modern_long 0:378b363c8601 0.35 gbp434
@@ -2460,6 +2739,7 @@ invoice-modern_long 0:dde0144b97b7 0.35 gbp291
invoice-modern_long 0:457a71636ad9 0.35 gbp1164
invoice-modern_long 0:6fcf7d6dd606 0.35 renderqapass—sprint1
invoice-modern_long 0:dda88f5786f5 0.35 gbp328
+invoice-modern_long 0:dda88f5786f5#1 0.35 gbp328
invoice-modern_long 0:ee18ad3bbb42 0.35 accessibilityreview—sprint1
invoice-modern_long 0:e681b4843ffb 0.35 gbp365
invoice-modern_long 0:1859c20b35dd 0.35 gbp730
@@ -2471,6 +2751,7 @@ invoice-modern_long 0:6109a2c30104 0.35 gbp439
invoice-modern_long 0:87e9fcb6151d 0.35 gbp1756
invoice-modern_long 0:a6bee1ec5e35 0.35 datamapping—sprint1
invoice-modern_long 0:df1f9d4443d8 0.35 gbp476
+invoice-modern_long 0:df1f9d4443d8#1 0.35 gbp476
invoice-modern_long 0:052c9f49a4b8 0.35 paginationhardening—sprint1
invoice-modern_long 0:9fba6332e489 0.35 gbp513
invoice-modern_long 0:6f805c9f78c3 0.35 gbp1026
@@ -2482,6 +2763,7 @@ invoice-modern_long 0:e7b406f24f04 0.35 gbp587
invoice-modern_long 0:74357ca6b30e 0.35 gbp2348
invoice-modern_long 0:9c6cf539f5bc 0.35 stakeholderdemo—sprint1
invoice-modern_long 0:cf79b5cdb735 0.35 gbp624
+invoice-modern_long 0:cf79b5cdb735#1 0.35 gbp624
invoice-modern_long 0:d2bde6642670 0.35 performanceprofiling—sprint1
invoice-modern_long 0:679f017f73c1 0.35 gbp661
invoice-modern_long 0:63985b524723 0.35 gbp1322
@@ -2493,6 +2775,7 @@ invoice-modern_long 0:70b393b5fb10 0.35 gbp735
invoice-modern_long 0:29edf7588a57 0.35 gbp2940
invoice-modern_long 0:82a9218b91ae 0.35 discoveryworkshop—sprint2
invoice-modern_long 0:c313f34b71b9 0.35 gbp772
+invoice-modern_long 0:c313f34b71b9#1 0.35 gbp772
invoice-modern_long 0:7e69fbffe3e2 0.35 designsystemaudit—sprint2
invoice-modern_long 0:e096e4fddf9a 0.35 gbp809
invoice-modern_long 0:c985a0123929 0.35 gbp1618
@@ -2508,6 +2791,7 @@ invoice-modern_long 1:385cfdbc00ec 0.30 unit
invoice-modern_long 1:cf38d95c9c6b 0.30 amount
invoice-modern_long 1:f12cbb7c274d 0.52 renderqapass—sprint2
invoice-modern_long 1:b813c73bc488 0.52 gbp920
+invoice-modern_long 1:b813c73bc488#1 0.52 gbp920
invoice-modern_long 1:12cd54b50187 0.52 accessibilityreview—sprint2
invoice-modern_long 1:377d92702316 0.52 gbp957
invoice-modern_long 1:e7c66f6cf477 0.52 gbp1914
@@ -2519,6 +2803,7 @@ invoice-modern_long 1:a4c7a6612c99 0.52 gbp1031
invoice-modern_long 1:1c83f0b47e27 0.52 gbp4124
invoice-modern_long 1:00de69c6e70f 0.52 datamapping—sprint2
invoice-modern_long 1:b9d5c56a2cfd 0.52 gbp1068
+invoice-modern_long 1:b9d5c56a2cfd#1 0.52 gbp1068
invoice-modern_long 1:eb628b5ea8ab 0.52 paginationhardening—sprint2
invoice-modern_long 1:db5327b47d0e 0.52 gbp205
invoice-modern_long 1:99d9b3b49da2 0.52 gbp410
@@ -2530,6 +2815,7 @@ invoice-modern_long 1:28ad00e76aef 0.52 gbp279
invoice-modern_long 1:fbb12fed0bbc 0.52 gbp1116
invoice-modern_long 1:5369a2c40ff8 0.52 stakeholderdemo—sprint2
invoice-modern_long 1:16562cbcd318 0.52 gbp316
+invoice-modern_long 1:16562cbcd318#1 0.52 gbp316
invoice-modern_long 1:611b258cb41e 0.52 performanceprofiling—sprint2
invoice-modern_long 1:e391d4e46366 0.52 gbp353
invoice-modern_long 1:7106c00cb009 0.52 gbp706
@@ -2541,6 +2827,7 @@ invoice-modern_long 1:909481a45a34 0.52 gbp427
invoice-modern_long 1:4e58d78d0958 0.52 gbp1708
invoice-modern_long 1:ddce236bccd7 0.52 discoveryworkshop—sprint3
invoice-modern_long 1:f8d17c11d834 0.52 gbp464
+invoice-modern_long 1:f8d17c11d834#1 0.52 gbp464
invoice-modern_long 1:c0986cd7b1d4 0.52 designsystemaudit—sprint3
invoice-modern_long 1:09c7aebd89f6 0.52 gbp501
invoice-modern_long 1:a61c7b6bdd20 0.52 gbp1002
@@ -2552,6 +2839,7 @@ invoice-modern_long 1:f6df6e8e8f30 0.52 gbp575
invoice-modern_long 1:7f7db0f4c1cf 0.52 gbp2300
invoice-modern_long 1:608e31719f07 0.52 renderqapass—sprint3
invoice-modern_long 1:e4fbc626999e 0.52 gbp612
+invoice-modern_long 1:e4fbc626999e#1 0.52 gbp612
invoice-modern_long 1:98bfb4deb0b7 0.52 accessibilityreview—sprint3
invoice-modern_long 1:7915a839b285 0.52 gbp649
invoice-modern_long 1:ca74221d78ad 0.52 gbp1298
@@ -2582,6 +2870,7 @@ invoice-obsidian 0:07f15cde5b18 0.14 kestrel
invoice-obsidian 0:52d6e3de4fa0 0.12 invoice
invoice-obsidian 0:5d1d1b79af09 0.02 invoicenumber
invoice-obsidian 0:3e62d1fbe5ec 0.06 inv-2026-1048
+invoice-obsidian 0:3e62d1fbe5ec#1 0.14 inv-2026-1048
invoice-obsidian 0:8feaf8016bab 0.02 issuedate
invoice-obsidian 0:4d49cb78b810 0.02 27august2026
invoice-obsidian 0:ac10f8c16320 -0.05 duedate
@@ -2592,10 +2881,14 @@ invoice-obsidian 0:466e5b9cd57f -0.19 currency
invoice-obsidian 0:54f8e1b3fe44 -0.19 gbp
invoice-obsidian 0:75857a458999 -0.26 from
invoice-obsidian 0:7d7385ecfbd9 -0.29 kestrelbusiness
+invoice-obsidian 0:7d7385ecfbd9#1 0.17 kestrelbusiness
+invoice-obsidian 0:7d7385ecfbd9#2 0.48 kestrelbusiness
invoice-obsidian 0:5f51304df361 -0.27 7harboursidewalk
invoice-obsidian 0:895a6b59f677 -0.29 bristolbs15ty
invoice-obsidian 0:2474519f77a9 -0.29 unitedkingdom
+invoice-obsidian 0:2474519f77a9#1 -0.29 unitedkingdom
invoice-obsidian 0:70ec69d2102f -0.31 ar@kestrel.example
+invoice-obsidian 0:70ec69d2102f#1 0.48 ar@kestrel.example
invoice-obsidian 0:aeba3a7b3598 -0.26 billto
invoice-obsidian 0:7bfc2b791f41 -0.29 northlineconsultingltd
invoice-obsidian 0:13dd937d2fe6 -0.27 21jubileeway
@@ -2604,11 +2897,13 @@ invoice-obsidian 0:c9046f7a37ad -1.75 description
invoice-obsidian 0:32e8369a9c4f -1.75 qty
invoice-obsidian 0:d1062d072acd -1.75 unitprice
invoice-obsidian 0:a52611c9261b -1.75 vat(20%)
+invoice-obsidian 0:a52611c9261b#1 0.53 vat(20%)
invoice-obsidian 0:cf38d95c9c6b -1.75 amount
invoice-obsidian 0:15345cbad705 -0.17 subscriptionsetup
invoice-obsidian 0:5100476d46bb -0.17 one-offaccountandworkspacesetup
invoice-obsidian 0:507f9f133059 -0.21 £150.00
invoice-obsidian 0:893d7480f763 -0.21 £30.00
+invoice-obsidian 0:893d7480f763#1 -0.38 £30.00
invoice-obsidian 0:629184210581 -0.21 £180.00
invoice-obsidian 0:3e8060178bc4 -0.21 internationalpaymentsupport
invoice-obsidian 0:33e4ab51097e -0.21 monthlysupportforcross-borderpay
@@ -2655,10 +2950,13 @@ invoice-obsidian 0:7b14b8d2c5c4 -0.03 page1of1
invoice-payments 0:b6c4ac412ac8 -0.02 meridian
invoice-payments 0:52d6e3de4fa0 0.41 invoice
invoice-payments 0:c0cc75b9cfdc -0.22 meridianpaymentsltd.
+invoice-payments 0:c0cc75b9cfdc#1 0.74 meridianpaymentsltd.
invoice-payments 0:5eeaa101da6c -0.19 1harbourexchange
invoice-payments 0:e3f6090f249b -0.23 canarywharf
invoice-payments 0:1bb9adbf32ff -0.26 londone149ge
invoice-payments 0:2474519f77a9 -0.30 unitedkingdom
+invoice-payments 0:2474519f77a9#1 0.04 unitedkingdom
+invoice-payments 0:2474519f77a9#2 0.04 unitedkingdom
invoice-payments 0:e89d810f7944 -0.32 companyno.09048900
invoice-payments 0:a3052fe78c6e -0.32 vatno.gb123456789
invoice-payments 0:5d1d1b79af09 -0.07 invoicenumber
@@ -2669,6 +2967,7 @@ invoice-payments 0:fb854bac39c8 -0.16 paymentterms
invoice-payments 0:ac10f8c16320 -0.19 duedate
invoice-payments 0:073c1634c496 -0.21 status
invoice-payments 0:052ff4dff688 -0.04 inv-2025-05-10472
+invoice-payments 0:052ff4dff688#1 0.54 inv-2025-05-10472
invoice-payments 0:23a4c624cbda -0.01 10may2025
invoice-payments 0:7b052c343b27 0.02 1-30april2025
invoice-payments 0:018052c1dd59 0.04 acct_4q8xtb2mkp
@@ -2677,6 +2976,7 @@ invoice-payments 0:1ade0cb4877f 0.10 14june2025
invoice-payments 0:e66d03af0bf1 0.09 unpaid
invoice-payments 0:aeba3a7b3598 0.13 billto
invoice-payments 0:98997fb707ef 0.05 northwindltd.
+invoice-payments 0:98997fb707ef#1 0.05 northwindltd.
invoice-payments 0:834834123752 0.13 attention:financeteam
invoice-payments 0:76b6fd2080ed 0.10 42bridgewaterstreet
invoice-payments 0:e031db0583eb 0.07 manchesterm154qt
@@ -2692,15 +2992,24 @@ invoice-payments 0:7c512b48ba8a 0.24 vat
invoice-payments 0:2da123241332 0.24 amount(gbp)
invoice-payments 0:3ab6c1099bcc 5.43 subscriptionbilling
invoice-payments 0:96d6b62c061d 0.40 £250.00
+invoice-payments 0:96d6b62c061d#1 0.41 £250.00
invoice-payments 0:dc934fe30a94 0.40 20%
+invoice-payments 0:dc934fe30a94#1 0.40 20%
+invoice-payments 0:dc934fe30a94#2 0.42 20%
+invoice-payments 0:dc934fe30a94#3 0.41 20%
+invoice-payments 0:dc934fe30a94#4 0.40 20%
+invoice-payments 0:dc934fe30a94#5 0.59 20%
invoice-payments 0:0a9acaea6477 5.43 paymentprocessing
invoice-payments 0:351704ebff51 0.40 £1,180.00
+invoice-payments 0:351704ebff51#1 0.41 £1,180.00
invoice-payments 0:b3bc34f90a55 0.42 fraudscreening
invoice-payments 0:ed051c6a1942 0.46 advancedfraudscreeningandrules
invoice-payments 0:a0a787efd867 0.42 £320.00
+invoice-payments 0:a0a787efd867#1 0.43 £320.00
invoice-payments 0:34b75c1d0234 0.41 companyformation
invoice-payments 0:bf45c494a8dc 0.45 incorporationandcompliancefiling
invoice-payments 0:629184210581 0.41 £180.00
+invoice-payments 0:629184210581#1 0.42 £180.00
invoice-payments 0:9427a01801d2 0.40 in-personterminals
invoice-payments 0:882be821cf2e 0.44 terminalrentalandfirmwareupdates
invoice-payments 0:3c4459a5e4ec 0.40 £39.00
@@ -2708,6 +3017,7 @@ invoice-payments 0:5d16afda896e 0.41 £156.00
invoice-payments 0:0036ebf2cfb2 0.59 prioritysupport
invoice-payments 0:7ef1d2ff5e3a 0.63 namedengineer,one-hourresponse
invoice-payments 0:cf02270203a4 0.59 £100.00
+invoice-payments 0:cf02270203a4#1 0.60 £100.00
invoice-payments 0:3c7ade679fdf 0.77 paymentdetails
invoice-payments 0:182748d2fece 0.81 bankname
invoice-payments 0:758f4a6f175f 0.82 accountname
@@ -2738,13 +3048,17 @@ invoice-payments 0:5b88ed40a689 1.07 support@meridianpayments.example
invoice-payments 0:2e3891f6ba2f 1.08 39661900
invoice-payments 0:7b14b8d2c5c4 -0.04 page1of1
invoice-platform 0:9817f28442bf 0.04 auroracloud
+invoice-platform 0:9817f28442bf#1 -0.56 auroracloud
invoice-platform 0:52d6e3de4fa0 0.61 invoice
invoice-platform 0:1cf61cdc6464 0.06 auroracloudinc.
+invoice-platform 0:1cf61cdc6464#1 -0.10 auroracloudinc.
+invoice-platform 0:1cf61cdc6464#2 -0.53 auroracloudinc.
invoice-platform 0:43315277b007 -0.40 500harbourstreet
invoice-platform 0:d9065bfb8f59 -0.40 vancouver,bcv6c2w2
invoice-platform 0:408c7c5887a0 -0.41 canada
invoice-platform 0:88a643f14708 0.18 aurora.example
invoice-platform 0:f2cfc804c0f3 0.18 billing@aurora.example
+invoice-platform 0:f2cfc804c0f3#1 -0.07 billing@aurora.example
invoice-platform 0:799715f2b96e 0.19 +1604-555-0180
invoice-platform 0:719c55c7e988 -0.44 vatid:cabn842137755
invoice-platform 0:6282391a4cc1 -0.31 invoicenumber:
@@ -2753,6 +3067,7 @@ invoice-platform 0:8d05f5d55191 -0.34 invoicedate:
invoice-platform 0:52c8b7a9ee5f -0.34 31july2026
invoice-platform 0:0e0fb0fc0939 -0.36 duedate:
invoice-platform 0:6a077b4f161e -0.36 30august2026
+invoice-platform 0:6a077b4f161e#1 -0.27 30august2026
invoice-platform 0:e26e182e1141 -0.39 billingaccountid:
invoice-platform 0:6d4b27b68226 -0.39 7c2d9e-b1f4a8-3k6m0p
invoice-platform 0:d39366fa1423 -0.41 billingperiod:
@@ -2763,9 +3078,12 @@ invoice-platform 0:967e0b6ca4b9 -0.46 currency:
invoice-platform 0:2afe5e26e9c8 -0.46 cad
invoice-platform 0:aeba3a7b3598 -0.39 billto
invoice-platform 0:45fe04dbae24 -0.41 brightfutureltd.
+invoice-platform 0:45fe04dbae24#1 -0.40 brightfutureltd.
invoice-platform 0:65405af34bf9 -0.37 45kingstreet
invoice-platform 0:1f8da9c4e269 -0.39 manchester,m24wu
+invoice-platform 0:1f8da9c4e269#1 -0.40 manchester,m24wu
invoice-platform 0:2474519f77a9 -0.41 unitedkingdom
+invoice-platform 0:2474519f77a9#1 -0.41 unitedkingdom
invoice-platform 0:c7a9cfdd1c55 -0.43 vatid:gb987654321
invoice-platform 0:725a8f5062e7 -0.41 shipto
invoice-platform 0:5895c7cd8d5b -0.36 warehouse7
@@ -2778,8 +3096,12 @@ invoice-platform 0:965711fdf178 -0.22 unitprice(cad)
invoice-platform 0:1742adf77d8c -0.22 amount(cad)
invoice-platform 0:b04a12f6483e -0.26 compute
invoice-platform 0:a2cd33d50126 -0.26 ca-central1
+invoice-platform 0:a2cd33d50126#1 -0.27 ca-central1
+invoice-platform 0:a2cd33d50126#2 -0.27 ca-central1
invoice-platform 0:ff5f15700bca -0.26 744.00
+invoice-platform 0:ff5f15700bca#1 -0.27 744.00
invoice-platform 0:404314b1f4bd -0.27 hours
+invoice-platform 0:404314b1f4bd#1 -0.27 hours
invoice-platform 0:456fa3bce642 -0.26 0.0685
invoice-platform 0:4249970361b2 -0.26 50.96
invoice-platform 0:f13d9c7c6f89 -0.32 computeinstances
@@ -2797,6 +3119,7 @@ invoice-platform 0:8152fd217e12 -0.32 manageddatabase
invoice-platform 0:3500adb3c8a1 -0.30 postgresqlinstance
invoice-platform 0:3009be769fb8 -0.27 network
invoice-platform 0:8001c2743965 -0.27 global
+invoice-platform 0:8001c2743965#1 -0.27 global
invoice-platform 0:3f6ae649df50 -0.27 260.00
invoice-platform 0:7775158f6d3a -0.27 0.0860
invoice-platform 0:f7650feb3574 -0.27 22.36
@@ -2804,6 +3127,7 @@ invoice-platform 0:444858f5bf18 -0.32 egresstraffic
invoice-platform 0:8b72bb875a83 -0.30 datatransferout
invoice-platform 0:a18603086e5b -0.27 support
invoice-platform 0:561b2814d3c0 -0.27 0.00
+invoice-platform 0:561b2814d3c0#1 -0.27 0.00
invoice-platform 0:efa8771baad9 -0.33 supportplan
invoice-platform 0:9e81cd6e653a -0.30 standardresponse
invoice-platform 0:13000a5d442c -0.25 paymentinformation
@@ -2840,11 +3164,14 @@ invoice-subscription 0:0a36c1665b7e 0.28 halsteadsoftwareltd.
invoice-subscription 0:6bc2056359b7 0.20 18chandlerrow
invoice-subscription 0:776a7e9eb92a 0.22 leedsls14qt
invoice-subscription 0:2474519f77a9 0.24 unitedkingdom
+invoice-subscription 0:2474519f77a9#1 -0.70 unitedkingdom
+invoice-subscription 0:2474519f77a9#2 -0.70 unitedkingdom
invoice-subscription 0:bfdec553b85a 0.24 billing@halstead.example
invoice-subscription 0:78acb3cb907b 0.27 www.halstead.example
invoice-subscription 0:f1c030eb4329 0.29 vatnogb418227603
invoice-subscription 0:77ead61b5875 0.29 invoiceno
invoice-subscription 0:0b0c0ee24de8 0.26 hs-inv-2026-0417
+invoice-subscription 0:0b0c0ee24de8#1 0.43 hs-inv-2026-0417
invoice-subscription 0:8feaf8016bab 0.34 issuedate
invoice-subscription 0:4d49cb78b810 0.32 27august2026
invoice-subscription 0:ac10f8c16320 0.39 duedate
@@ -2855,6 +3182,7 @@ invoice-subscription 0:466e5b9cd57f 0.50 currency
invoice-subscription 0:54f8e1b3fe44 0.47 gbp
invoice-subscription 0:aeba3a7b3598 0.51 billto
invoice-subscription 0:7bfc2b791f41 -0.76 northlineconsultingltd
+invoice-subscription 0:7bfc2b791f41#1 -0.76 northlineconsultingltd
invoice-subscription 0:bcb7024f74fe -0.75 attn:sarahmitchell
invoice-subscription 0:13dd937d2fe6 -0.73 21jubileeway
invoice-subscription 0:f9bab6a0b45b -0.72 londonse13ss
@@ -2870,14 +3198,20 @@ invoice-subscription 0:cf38d95c9c6b -0.61 amount
invoice-subscription 0:86705447c73d -0.32 halsteadworkspacepremium(10seats
invoice-subscription 0:0c8dc980db3f -0.32 £18.00
invoice-subscription 0:dc934fe30a94 -0.32 20%
+invoice-subscription 0:dc934fe30a94#1 -0.20 20%
+invoice-subscription 0:dc934fe30a94#2 -0.08 20%
+invoice-subscription 0:dc934fe30a94#3 0.04 20%
+invoice-subscription 0:dc934fe30a94#4 0.16 20%
invoice-subscription 0:629184210581 -0.32 £180.00
invoice-subscription 0:59df1d2b0f69 -0.20 hostedplatformservices
invoice-subscription 0:44c1ce3394d2 -0.20 £420.00
+invoice-subscription 0:44c1ce3394d2#1 -0.20 £420.00
invoice-subscription 0:217bada1d20f -0.08 analyticsprolicences(5seats)
invoice-subscription 0:599cd58953ce -0.08 £8.40
invoice-subscription 0:756b8c62fe05 -0.08 £42.00
invoice-subscription 0:b055bcc305ed 0.04 prioritysupportplan
invoice-subscription 0:1077d7cede59 0.04 £275.00
+invoice-subscription 0:1077d7cede59#1 0.04 £275.00
invoice-subscription 0:361537ef6a11 0.16 voiceadd-on(5seats)
invoice-subscription 0:8bf9ac7b27bd 0.16 £6.00
invoice-subscription 0:893d7480f763 0.16 £30.00
@@ -2906,14 +3240,18 @@ invoice-subscription 0:354ffeb2bbc3 0.47 paymentisdueby10september2026.if
invoice-subscription 0:7f7d98088133 0.48 foranyqueries,pleasecontactbilli
invoice-subscription 0:7b14b8d2c5c4 0.00 page1of1
invoice-workspace 0:07f15cde5b18 0.15 kestrel
+invoice-workspace 0:07f15cde5b18#1 1.76 kestrel
invoice-workspace 0:52d6e3de4fa0 -0.16 invoice
invoice-workspace 0:091019880d88 -0.37 kestrelcollaboration,inc.
+invoice-workspace 0:091019880d88#1 1.17 kestrelcollaboration,inc.
+invoice-workspace 0:091019880d88#2 1.36 kestrelcollaboration,inc.
invoice-workspace 0:9167e0470dae -0.31 500howardstreet,6thfloor
invoice-workspace 0:efa5e1529794 -0.28 sanfrancisco,ca94105
invoice-workspace 0:fd7321c405f8 -0.24 unitedstates
invoice-workspace 0:d3c6f273c22d -0.24 vatid:us77-0560185
invoice-workspace 0:6282391a4cc1 -0.31 invoicenumber:
invoice-workspace 0:b13757c9a6fc -0.30 inv-2024-0003521
+invoice-workspace 0:b13757c9a6fc#1 0.98 inv-2024-0003521
invoice-workspace 0:8d05f5d55191 -0.29 invoicedate:
invoice-workspace 0:8da43dd45024 -0.27 27may2024
invoice-workspace 0:d39366fa1423 -0.26 billingperiod:
@@ -2924,11 +3262,14 @@ invoice-workspace 0:18e2cca1098e -0.21 paymentterms:
invoice-workspace 0:98ec3d1fd5b9 -0.20 net30
invoice-workspace 0:0e0fb0fc0939 -0.19 duedate:
invoice-workspace 0:f1e2a60122bd -0.18 26june2024
+invoice-workspace 0:f1e2a60122bd#1 0.12 26june2024
invoice-workspace 0:aeba3a7b3598 -0.18 billto
invoice-workspace 0:45fe04dbae24 -0.22 brightfutureltd.
+invoice-workspace 0:45fe04dbae24#1 -0.22 brightfutureltd.
invoice-workspace 0:65405af34bf9 -0.17 45kingstreet
invoice-workspace 0:494f1a937311 -0.16 manchesterm27az
invoice-workspace 0:2474519f77a9 -0.16 unitedkingdom
+invoice-workspace 0:2474519f77a9#1 -0.16 unitedkingdom
invoice-workspace 0:c7a9cfdd1c55 -0.13 vatid:gb987654321
invoice-workspace 0:725a8f5062e7 -0.18 shipto
invoice-workspace 0:6d835e737af6 -0.17 unit4,riversidepark
@@ -2948,14 +3289,18 @@ invoice-workspace 0:3007667b4e18 0.29 enterprisekeymanagement
invoice-workspace 0:162e9c93c528 0.34 customer-managedencryptionkeys
invoice-workspace 0:a33a54a73112 0.35 add-on
invoice-workspace 0:d66c66a96157 0.35 100.00
+invoice-workspace 0:d66c66a96157#1 0.35 100.00
invoice-workspace 0:0036ebf2cfb2 0.27 prioritysupport
invoice-workspace 0:51833276172f 0.32 namedengineerandresponsetarget
invoice-workspace 0:fe6d3468cf5c 0.33 standard
invoice-workspace 0:a99210875f11 0.33 50.00
+invoice-workspace 0:a99210875f11#1 0.33 50.00
invoice-workspace 0:14209e8ccd53 0.45 workflowautomation
invoice-workspace 0:31be3ff05457 0.50 templatesandscheduledruns
invoice-workspace 0:7f0f70e643bc 0.51 included
invoice-workspace 0:561b2814d3c0 0.51 0.00
+invoice-workspace 0:561b2814d3c0#1 0.51 0.00
+invoice-workspace 0:561b2814d3c0#2 0.76 0.00
invoice-workspace 0:3c7ade679fdf 1.12 paymentdetails
invoice-workspace 0:944d398aea60 1.21 bankname:
invoice-workspace 0:a18e9fdf120e 1.21 bayunionbank,n.a.
@@ -2985,11 +3330,13 @@ invoice-workspace 0:3c72ba0e1eb8 1.33 500howardstreet,6thfloor,sanfran
invoice-workspace 0:9e2917e23527 1.32 kestrel.example
invoice-workspace 0:7b14b8d2c5c4 -0.05 page1of1
letter-blue_banner 0:8f1010120ed6 0.42 jordanrivera
+letter-blue_banner 0:8f1010120ed6#1 -0.02 jordanrivera
letter-blue_banner 0:8d7a2cca3060 -0.20 +442055551000|jordan.rivera@exam
letter-blue_banner 0:bef81b541365 -0.21 dearhiringteamatnorthwindsystems
letter-blue_banner 0:a71e98216baa -0.08 iwouldwelcometheopportunitytobri
letter-blue_banner 0:80a6a628ad52 -0.05 sincerely,
letter-boxed_sections 0:8f1010120ed6 0.46 jordanrivera
+letter-boxed_sections 0:8f1010120ed6#1 -0.37 jordanrivera
letter-boxed_sections 0:8d7a2cca3060 -0.12 +442055551000|jordan.rivera@exam
letter-boxed_sections 0:bef81b541365 -0.41 dearhiringteamatnorthwindsystems
letter-boxed_sections 0:ab54410ead82 -0.71 iamexcitedtosharemyinterestinthe
@@ -2999,6 +3346,7 @@ letter-boxed_sections 0:dab2d688b7ab -0.69 adoptioneasierfortherestofthetea
letter-boxed_sections 0:a71e98216baa -0.39 iwouldwelcometheopportunitytobri
letter-boxed_sections 0:80a6a628ad52 -0.38 sincerely,
letter-centered_headline 0:8f1010120ed6 -0.50 jordanrivera
+letter-centered_headline 0:8f1010120ed6#1 -0.06 jordanrivera
letter-centered_headline 0:2d58f0cadc2d -0.18 platformengineer
letter-centered_headline 0:8d7a2cca3060 -0.23 +442055551000|jordan.rivera@exam
letter-centered_headline 0:bef81b541365 -0.25 dearhiringteamatnorthwindsystems
@@ -3007,6 +3355,7 @@ letter-centered_headline 0:dab2d688b7ab 0.14 adoptioneasierfortherestofthetea
letter-centered_headline 0:a71e98216baa -0.12 iwouldwelcometheopportunitytobri
letter-centered_headline 0:80a6a628ad52 -0.09 sincerely,
letter-classic_serif 0:8f1010120ed6 -0.15 jordanrivera
+letter-classic_serif 0:8f1010120ed6#1 0.02 jordanrivera
letter-classic_serif 0:8d7a2cca3060 0.19 +442055551000|jordan.rivera@exam
letter-classic_serif 0:bef81b541365 0.20 dearhiringteamatnorthwindsystems
letter-classic_serif 0:ab54410ead82 -0.08 iamexcitedtosharemyinterestinthe
@@ -3016,6 +3365,7 @@ letter-classic_serif 0:dd474e249222 -0.15 makeadoptioneasierfortherestofth
letter-classic_serif 0:a71e98216baa 0.07 iwouldwelcometheopportunitytobri
letter-classic_serif 0:80a6a628ad52 0.05 sincerely,
letter-compact_mono 0:8f1010120ed6 0.31 jordanrivera
+letter-compact_mono 0:8f1010120ed6#1 -0.13 jordanrivera
letter-compact_mono 0:f9e4560bd641 -0.24 london,uk/+442055551000/jordan.r
letter-compact_mono 0:bef81b541365 -0.08 dearhiringteamatnorthwindsystems
letter-compact_mono 0:1382a6e37675 -0.35 ienjoytranslatingfuzzyworkflowre
@@ -3023,6 +3373,7 @@ letter-compact_mono 0:d8e633770b49 -0.38 easierfortherestoftheteam.
letter-compact_mono 0:a71e98216baa -0.13 iwouldwelcometheopportunitytobri
letter-compact_mono 0:80a6a628ad52 -0.12 sincerely,
letter-editorial_blue 0:8f1010120ed6 0.45 jordanrivera
+letter-editorial_blue 0:8f1010120ed6#1 8.86 jordanrivera
letter-editorial_blue 0:2d58f0cadc2d 0.22 platformengineer
letter-editorial_blue 0:1b28eb6a9a2e 0.14 +442055551000-london,uk
letter-editorial_blue 0:8817bf9310b6 0.11 jordan.rivera@example.com|linked
@@ -3031,6 +3382,7 @@ letter-editorial_blue 0:0c42fe9f3491 -0.15 ienjoytranslatingfuzzyworkflowre
letter-editorial_blue 0:dda41d31bb3c -0.15 thatmakeadoptioneasierfortherest
letter-editorial_blue 0:80a6a628ad52 8.86 sincerely,
letter-engineering_resume 0:8f1010120ed6 0.15 jordanrivera
+letter-engineering_resume 0:8f1010120ed6#1 -1.41 jordanrivera
letter-engineering_resume 0:2d58f0cadc2d -0.25 platformengineer
letter-engineering_resume 0:fbeea547d99e -0.21 london,uk
letter-engineering_resume 0:89674e6f130e -0.20 +442055551000
@@ -3041,6 +3393,7 @@ letter-engineering_resume 0:bef81b541365 -1.40 dearhiringteamatnorthwindsystems
letter-engineering_resume 0:a71e98216baa -1.40 iwouldwelcometheopportunitytobri
letter-engineering_resume 0:80a6a628ad52 -1.41 sincerely,
letter-executive 0:8f1010120ed6 -0.50 jordanrivera
+letter-executive 0:8f1010120ed6#1 -0.10 jordanrivera
letter-executive 0:89ff05847e96 -0.28 london,uk|+442055551000
letter-executive 0:8817bf9310b6 -0.30 jordan.rivera@example.com|linked
letter-executive 0:bef81b541365 -0.20 dearhiringteamatnorthwindsystems
@@ -3052,6 +3405,7 @@ letter-executive 0:7c5a9817c868 0.18 iwouldwelcometheopportunitytobri
letter-executive 0:4012eb4b05db 0.18 group.
letter-executive 0:80a6a628ad52 -0.10 sincerely,
letter-mint-editorial-letter 0:8f1010120ed6 -1.30 jordanrivera
+letter-mint-editorial-letter 0:8f1010120ed6#1 -0.16 jordanrivera
letter-mint-editorial-letter 0:2d58f0cadc2d -0.27 platformengineer
letter-mint-editorial-letter 0:bef81b541365 -0.16 dearhiringteamatnorthwindsystems
letter-mint-editorial-letter 0:ab54410ead82 0.29 iamexcitedtosharemyinterestinthe
@@ -3061,6 +3415,7 @@ letter-mint-editorial-letter 0:dd474e249222 0.29 makeadoptioneasierfortherestoft
letter-mint-editorial-letter 0:a71e98216baa -0.16 iwouldwelcometheopportunitytobri
letter-mint-editorial-letter 0:80a6a628ad52 -0.16 sincerely,
letter-modern_professional 0:8f1010120ed6 0.00 jordanrivera
+letter-modern_professional 0:8f1010120ed6#1 -0.13 jordanrivera
letter-modern_professional 0:89ff05847e96 0.14 london,uk|+442055551000
letter-modern_professional 0:8817bf9310b6 0.11 jordan.rivera@example.com|linked
letter-modern_professional 0:bef81b541365 -0.13 dearhiringteamatnorthwindsystems
@@ -3084,6 +3439,7 @@ letter-monogram_sidebar 0:a71e98216baa -0.23 iwouldwelcometheopportunitytobri
letter-monogram_sidebar 0:80a6a628ad52 -0.23 sincerely,
letter-monogram_sidebar 0:8f1010120ed6 -0.23 jordanrivera
letter-nordic_clean 0:8f1010120ed6 0.15 jordanrivera
+letter-nordic_clean 0:8f1010120ed6#1 -0.11 jordanrivera
letter-nordic_clean 0:2d58f0cadc2d -0.20 platformengineer
letter-nordic_clean 0:fbeea547d99e -0.20 london,uk
letter-nordic_clean 0:89674e6f130e -0.18 +442055551000
@@ -3098,6 +3454,7 @@ letter-nordic_clean 0:27c5581ffbbc -0.39 restoftheteam.
letter-nordic_clean 0:a71e98216baa -0.14 iwouldwelcometheopportunitytobri
letter-nordic_clean 0:80a6a628ad52 -0.14 sincerely,
letter-panel 0:8f1010120ed6 -0.40 jordanrivera
+letter-panel 0:8f1010120ed6#1 0.16 jordanrivera
letter-panel 0:2d58f0cadc2d 0.12 platformengineer
letter-panel 0:89ff05847e96 0.19 london,uk|+442055551000
letter-panel 0:8817bf9310b6 0.21 jordan.rivera@example.com|linked
@@ -3110,6 +3467,7 @@ letter-panel 0:7c5a9817c868 -0.09 iwouldwelcometheopportunitytobri
letter-panel 0:4012eb4b05db -0.07 group.
letter-panel 0:80a6a628ad52 0.15 sincerely,
letter-sidebar_portrait 0:8f1010120ed6 -0.73 jordanrivera
+letter-sidebar_portrait 0:8f1010120ed6#1 -0.13 jordanrivera
letter-sidebar_portrait 0:2d58f0cadc2d -0.23 platformengineer
letter-sidebar_portrait 0:8d7a2cca3060 -0.22 +442055551000|jordan.rivera@exam
letter-sidebar_portrait 0:bef81b541365 -0.28 dearhiringteamatnorthwindsystems
@@ -3121,6 +3479,7 @@ letter-sidebar_portrait 0:7c5a9817c868 -0.43 iwouldwelcometheopportunitytobri
letter-sidebar_portrait 0:4012eb4b05db -0.41 group.
letter-sidebar_portrait 0:80a6a628ad52 -0.14 sincerely,
letter-timeline_minimal 0:8f1010120ed6 0.15 jordanrivera
+letter-timeline_minimal 0:8f1010120ed6#1 1.52 jordanrivera
letter-timeline_minimal 0:2d58f0cadc2d -0.40 platformengineer
letter-timeline_minimal 0:fbeea547d99e -0.19 london,uk
letter-timeline_minimal 0:89674e6f130e -0.19 +442055551000
@@ -3199,13 +3558,15 @@ proposal-editorial 1:c51faa148557 -45.06 focus
proposal-editorial 1:caa79af4db67 -45.06 duration
proposal-editorial 1:e0ee8bb50685 -45.06 output
proposal-editorial 1:9a5c531db125 -44.88 01discover
-proposal-editorial 1:99b15ca862e5 -44.88 1week
+proposal-editorial 1:99b15ca862e5 32.62 1week
+proposal-editorial 1:99b15ca862e5#1 -122.18 1week
proposal-editorial 1:7817fa5085e2 -43.65 research,audit,insights,and
proposal-editorial 1:73dff70e25ad -45.15 strategy
proposal-editorial 1:ddfbc608570a -43.65 discoveryreport&creative
proposal-editorial 1:93c4abe27cf1 -45.15 direction
proposal-editorial 1:9285b279249c -44.78 02design
-proposal-editorial 1:b183847fe9f8 -44.78 2weeks
+proposal-editorial 1:b183847fe9f8 25.92 2weeks
+proposal-editorial 1:b183847fe9f8#1 -115.15 2weeks
proposal-editorial 1:1e0716635ae3 -43.55 brandrefinementandwebsite
proposal-editorial 1:80f5fb36f074 -45.05 ux/uidesign
proposal-editorial 1:ad5e8a376247 -43.55 designsystem&high-fidelity
@@ -3344,9 +3705,11 @@ proposal-modern 0:02195b8e9896 -0.47 phase
proposal-modern 0:caa79af4db67 -0.47 duration
proposal-modern 0:41ffd8b76afc -0.47 details
proposal-modern 0:fa44132b238e -0.25 discovery
+proposal-modern 0:fa44132b238e#1 0.25 discovery
proposal-modern 0:b183847fe9f8 -0.25 2weeks
proposal-modern 0:4b20bfb69ca7 -0.25 stakeholderinterviews+audit
proposal-modern 0:44575cf5b285 -0.15 build
+proposal-modern 0:44575cf5b285#1 0.25 build
proposal-modern 0:5a6b4bf425f2 -0.15 6weeks
proposal-modern 0:7a802048127d -0.15 engine+templatemigration
proposal-modern 0:f9b21c4bda58 0.09 investment
@@ -3437,12 +3800,14 @@ proposal-northline 1:caa79af4db67 0.11 duration
proposal-northline 1:e0ee8bb50685 0.11 output
proposal-northline 1:9a5c531db125 0.29 01discover
proposal-northline 1:99b15ca862e5 0.29 1week
+proposal-northline 1:99b15ca862e5#1 0.49 1week
proposal-northline 1:7817fa5085e2 0.87 research,audit,insights,and
proposal-northline 1:73dff70e25ad 0.17 strategy
proposal-northline 1:ddfbc608570a 0.87 discoveryreport&creative
proposal-northline 1:93c4abe27cf1 0.17 direction
proposal-northline 1:9285b279249c 0.39 02design
proposal-northline 1:b183847fe9f8 0.39 2weeks
+proposal-northline 1:b183847fe9f8#1 0.72 2weeks
proposal-northline 1:1e0716635ae3 0.97 brandrefinementandwebsite
proposal-northline 1:80f5fb36f074 0.27 ux/uidesign
proposal-northline 1:ad5e8a376247 0.97 designsystem&high-fidelity
@@ -3496,6 +3861,8 @@ receipt-modern 0:e885a92f5bb7 0.18 generatedon09august2026
receipt-modern 0:c288dd6df716 0.19 referencenwp-4821-0067
receipt-modern 0:9de2a2d7cd7a 0.18 amountcollected
receipt-modern 0:465691680b99 0.03 £66.62
+receipt-modern 0:465691680b99#1 0.29 £66.62
+receipt-modern 0:465691680b99#2 0.29 £66.62
receipt-modern 0:4260e5ae365d 0.20 directdebitcollectedbyharbourfin
receipt-modern 0:4ddb3e96801a 0.18 completed
receipt-modern 0:a22e6dacae05 0.24 valuedate07jul2026
@@ -3567,7 +3934,42 @@ rota-cobalt 0:cc96b22615e5 1.42 pianist19:00
rota-cobalt 0:bc14a4ce6407 2.17 statuslegend
rota-cobalt 0:1f58b9145b24 2.23 request
rota-cobalt 0:b4dc66dde806 2.23 off
+rota-cobalt 0:b4dc66dde806#1 2.24 off
+rota-cobalt 0:b4dc66dde806#2 2.24 off
+rota-cobalt 0:b4dc66dde806#3 2.35 off
+rota-cobalt 0:b4dc66dde806#4 2.35 off
+rota-cobalt 0:b4dc66dde806#5 2.40 off
+rota-cobalt 0:b4dc66dde806#6 2.40 off
+rota-cobalt 0:b4dc66dde806#7 2.40 off
+rota-cobalt 0:b4dc66dde806#8 2.60 off
+rota-cobalt 0:b4dc66dde806#9 2.60 off
+rota-cobalt 0:b4dc66dde806#10 2.81 off
+rota-cobalt 0:b4dc66dde806#11 2.81 off
+rota-cobalt 0:b4dc66dde806#12 2.92 off
+rota-cobalt 0:b4dc66dde806#13 3.03 off
+rota-cobalt 0:b4dc66dde806#14 3.03 off
+rota-cobalt 0:b4dc66dde806#15 3.13 off
+rota-cobalt 0:b4dc66dde806#16 3.13 off
+rota-cobalt 0:b4dc66dde806#17 3.13 off
+rota-cobalt 0:b4dc66dde806#18 3.08 off
+rota-cobalt 0:b4dc66dde806#19 3.09 off
+rota-cobalt 0:b4dc66dde806#20 3.09 off
rota-cobalt 0:cdc2def9aec4 2.23 hol
+rota-cobalt 0:cdc2def9aec4#1 2.91 hol
+rota-cobalt 0:cdc2def9aec4#2 2.91 hol
+rota-cobalt 0:cdc2def9aec4#3 2.91 hol
+rota-cobalt 0:cdc2def9aec4#4 2.91 hol
+rota-cobalt 0:cdc2def9aec4#5 2.91 hol
+rota-cobalt 0:cdc2def9aec4#6 2.91 hol
+rota-cobalt 0:cdc2def9aec4#7 2.92 hol
+rota-cobalt 0:cdc2def9aec4#8 3.03 hol
+rota-cobalt 0:cdc2def9aec4#9 3.08 hol
+rota-cobalt 0:cdc2def9aec4#10 3.08 hol
+rota-cobalt 0:cdc2def9aec4#11 3.08 hol
+rota-cobalt 0:cdc2def9aec4#12 3.09 hol
+rota-cobalt 0:cdc2def9aec4#13 3.30 hol
+rota-cobalt 0:cdc2def9aec4#14 3.30 hol
+rota-cobalt 0:cdc2def9aec4#15 3.30 hol
rota-cobalt 0:08c4242b5f58 2.23 stock
rota-cobalt 0:f8f8922da592 2.23 standby
rota-cobalt 0:c2fb788c7dee 2.23 training
@@ -3583,22 +3985,74 @@ rota-cobalt 0:1b4471920f01 2.22 l72/d83
rota-cobalt 0:288965a1f2c8 2.12 management
rota-cobalt 0:6a61eb7383e8 2.23 rosa
rota-cobalt 0:3bb0f0bb5552 2.24 09:00-18:00
+rota-cobalt 0:3bb0f0bb5552#1 2.40 09:00-18:00
+rota-cobalt 0:3bb0f0bb5552#2 2.40 09:00-18:00
+rota-cobalt 0:3bb0f0bb5552#3 2.92 09:00-18:00
rota-cobalt 0:9fff4d6be39d 2.24 16:00-01:00
+rota-cobalt 0:9fff4d6be39d#1 2.24 16:00-01:00
+rota-cobalt 0:9fff4d6be39d#2 1.67 16:00-01:00
+rota-cobalt 0:9fff4d6be39d#3 2.35 16:00-01:00
+rota-cobalt 0:9fff4d6be39d#4 2.35 16:00-01:00
+rota-cobalt 0:9fff4d6be39d#5 2.81 16:00-01:00
+rota-cobalt 0:9fff4d6be39d#6 2.81 16:00-01:00
+rota-cobalt 0:9fff4d6be39d#7 2.92 16:00-01:00
+rota-cobalt 0:9fff4d6be39d#8 3.03 16:00-01:00
+rota-cobalt 0:9fff4d6be39d#9 3.13 16:00-01:00
+rota-cobalt 0:9fff4d6be39d#10 3.13 16:00-01:00
+rota-cobalt 0:9fff4d6be39d#11 3.13 16:00-01:00
+rota-cobalt 0:9fff4d6be39d#12 2.41 16:00-01:00
+rota-cobalt 0:9fff4d6be39d#13 2.41 16:00-01:00
+rota-cobalt 0:9fff4d6be39d#14 2.41 16:00-01:00
+rota-cobalt 0:9fff4d6be39d#15 3.09 16:00-01:00
+rota-cobalt 0:9fff4d6be39d#16 2.41 16:00-01:00
+rota-cobalt 0:9fff4d6be39d#17 2.41 16:00-01:00
rota-cobalt 0:1017e02ccc77 2.24 08:00-18:00
rota-cobalt 0:e669544e9895 1.45 08:00-16:00
+rota-cobalt 0:e669544e9895#1 2.23 08:00-16:00
rota-cobalt 0:19c30663e8ef 1.51 16:00-21:00
+rota-cobalt 0:19c30663e8ef#1 2.30 16:00-21:00
rota-cobalt 0:c9affe7f7587 2.34 tomas
rota-cobalt 0:6d43df86fe4b 2.35 16:00-00:00
+rota-cobalt 0:6d43df86fe4b#1 2.35 16:00-00:00
+rota-cobalt 0:6d43df86fe4b#2 2.40 16:00-00:00
+rota-cobalt 0:6d43df86fe4b#3 2.60 16:00-00:00
+rota-cobalt 0:6d43df86fe4b#4 2.60 16:00-00:00
+rota-cobalt 0:6d43df86fe4b#5 2.24 16:00-00:00
+rota-cobalt 0:6d43df86fe4b#6 3.03 16:00-00:00
+rota-cobalt 0:6d43df86fe4b#7 2.35 16:00-00:00
+rota-cobalt 0:6d43df86fe4b#8 3.13 16:00-00:00
+rota-cobalt 0:6d43df86fe4b#9 3.09 16:00-00:00
+rota-cobalt 0:6d43df86fe4b#10 2.62 16:00-00:00
+rota-cobalt 0:6d43df86fe4b#11 3.30 16:00-00:00
+rota-cobalt 0:6d43df86fe4b#12 3.30 16:00-00:00
+rota-cobalt 0:6d43df86fe4b#13 2.62 16:00-00:00
rota-cobalt 0:5a5f719aae11 1.65 11:00-16:00
rota-cobalt 0:df9ba122242c 2.27 bartenders
rota-cobalt 0:dbaf86dd80e3 2.39 nadia
rota-cobalt 0:0cdd9d9e75dc 1.60 09:00-16:00
+rota-cobalt 0:0cdd9d9e75dc#1 1.81 09:00-16:00
+rota-cobalt 0:0cdd9d9e75dc#2 2.01 09:00-16:00
+rota-cobalt 0:0cdd9d9e75dc#3 2.01 09:00-16:00
rota-cobalt 0:f1e2ce9aa575 1.67 16:00-22:00
+rota-cobalt 0:f1e2ce9aa575#1 1.87 16:00-22:00
+rota-cobalt 0:f1e2ce9aa575#2 1.87 16:00-22:00
+rota-cobalt 0:f1e2ce9aa575#3 2.08 16:00-22:00
+rota-cobalt 0:f1e2ce9aa575#4 2.08 16:00-22:00
rota-cobalt 0:de7ee76e7373 2.60 elias
rota-cobalt 0:61587c4c0d6d 2.60 09:00-17:00
rota-cobalt 0:7195a8ed72b9 1.81 12:00-16:00
+rota-cobalt 0:7195a8ed72b9#1 2.22 12:00-16:00
+rota-cobalt 0:7195a8ed72b9#2 2.33 12:00-16:00
+rota-cobalt 0:7195a8ed72b9#3 2.39 12:00-16:00
+rota-cobalt 0:7195a8ed72b9#4 2.39 12:00-16:00
+rota-cobalt 0:7195a8ed72b9#5 2.39 12:00-16:00
+rota-cobalt 0:7195a8ed72b9#6 2.40 12:00-16:00
+rota-cobalt 0:7195a8ed72b9#7 2.40 12:00-16:00
+rota-cobalt 0:7195a8ed72b9#8 2.60 12:00-16:00
+rota-cobalt 0:7195a8ed72b9#9 2.60 12:00-16:00
rota-cobalt 0:953cb9ba8128 2.80 mirela
rota-cobalt 0:c1298a6e85c2 2.81 12:00-18:00
+rota-cobalt 0:c1298a6e85c2#1 2.92 12:00-18:00
rota-cobalt 0:86846e84f9bf 2.91 sofia
rota-cobalt 0:effcc54ba75f 2.91 karol
rota-cobalt 0:5c1e134d2d34 3.02 henrik
diff --git a/qa/src/test/resources/docx-fidelity/libreoffice-windows.tsv b/qa/src/test/resources/docx-fidelity/libreoffice-windows.tsv
index b55a7ea73..005c38990 100644
--- a/qa/src/test/resources/docx-fidelity/libreoffice-windows.tsv
+++ b/qa/src/test/resources/docx-fidelity/libreoffice-windows.tsv
@@ -1,64 +1,64 @@
-# libreoffice on windows
+# libreoffice build bce0998afefd on windows
document engine_pages editor_pages lines matched median p90 over2
-cv-blue_banner 2 2 53 41 0.12 0.20 0
+cv-blue_banner 2 2 54 42 0.12 0.20 0
cv-boxed_sections 2 2 58 55 0.29 0.46 0
-cv-centered_headline 2 2 57 51 0.20 0.59 0
-cv-charcoal_gold 1 1 81 79 2.94 3.28 79
-cv-classic_serif 2 2 56 52 0.24 12.20 8
+cv-centered_headline 2 2 58 52 0.20 0.62 0
+cv-charcoal_gold 1 1 85 83 2.94 3.29 83
+cv-classic_serif 2 2 57 53 0.24 12.20 9
cv-compact_mono 1 1 58 50 0.26 0.90 0
-cv-editorial_blue 2 2 81 75 0.41 10.06 9
+cv-editorial_blue 2 2 82 76 0.41 10.06 9
cv-engineering_resume 1 1 57 47 0.55 9.12 14
cv-executive 2 2 60 60 0.24 3.10 15
-cv-midnight_navy 1 1 83 76 3.20 17.12 70
+cv-midnight_navy 1 1 86 79 3.16 17.11 73
cv-minimal_underlined 2 2 59 57 0.69 13.40 9
cv-mint_editorial 2 2 59 59 0.27 0.60 0
-cv-modern_professional 2 2 60 58 0.12 0.54 5
+cv-modern_professional 2 2 61 59 0.12 0.59 5
cv-monogram_sidebar 1 1 53 50 3.57 5.69 50
-cv-navy_sidebar 1 1 68 68 2.82 3.03 68
+cv-navy_sidebar 1 1 71 71 2.81 3.03 71
cv-nordic_clean 1 1 63 53 0.38 9.61 21
-cv-orange_ops 1 2 107 5 81.97 81.97 5
+cv-orange_ops 1 2 108 5 81.97 81.97 5
cv-panel 1 1 79 69 0.37 0.78 0
-cv-professional_sidebar 1 1 66 60 2.72 2.90 60
-cv-serif_headline 1 1 101 93 0.40 1.47 8
+cv-professional_sidebar 1 1 68 62 2.72 2.90 62
+cv-serif_headline 1 1 103 95 0.40 1.47 7
cv-sidebar_portrait 1 1 49 47 2.78 3.02 47
cv-slate_orange 1 1 87 84 3.26 3.70 84
cv-teal_pulse 1 1 57 55 0.22 0.65 0
-cv-terracotta_rail 1 1 97 95 0.49 0.94 0
+cv-terracotta_rail 1 1 102 100 0.49 0.94 0
cv-timeline_minimal 2 2 89 84 1.40 1.40 0
-cv-violet_grid 1 2 78 74 3.98 21.80 38
-invoice-classic 1 1 52 52 0.47 1.17 0
-invoice-classic_long 2 2 154 154 0.47 0.87 0
-invoice-consulting 1 1 84 84 0.92 1.61 3
-invoice-consulting_long 2 2 119 119 0.72 1.24 3
-invoice-luma_studio 1 1 84 84 0.12 0.55 3
-invoice-luma_studio_long 3 3 120 120 0.22 11.90 23
-invoice-merchant 1 2 80 78 0.21 0.67 0
-invoice-metered 1 1 87 87 0.25 0.65 0
-invoice-modern 1 1 52 52 0.32 0.52 0
-invoice-modern_long 2 2 152 152 0.35 0.52 0
-invoice-obsidian 1 1 74 74 0.29 0.85 0
-invoice-payments 1 1 89 85 0.40 1.06 2
-invoice-platform 1 1 97 97 0.27 0.41 0
-invoice-subscription 1 1 71 71 0.42 0.73 0
-invoice-workspace 1 1 79 79 0.33 1.13 0
-letter-blue_banner 1 1 9 5 0.20 0.42 0
-letter-boxed_sections 1 1 9 9 0.46 0.70 0
-letter-centered_headline 1 1 10 8 0.18 0.25 0
-letter-classic_serif 1 1 9 9 0.13 0.19 0
-letter-compact_mono 1 1 9 7 0.24 0.35 0
-letter-editorial_blue 1 1 11 8 0.15 0.45 1
-letter-engineering_resume 1 1 14 10 0.21 1.40 0
-letter-executive 1 1 11 11 0.18 0.30 0
-letter-mint-editorial-letter 1 1 9 9 0.29 0.29 0
-letter-modern_professional 1 1 11 11 0.43 0.43 0
+cv-violet_grid 1 2 80 76 5.71 21.81 40
+invoice-classic 1 1 56 56 0.47 1.17 0
+invoice-classic_long 2 2 166 166 0.47 0.87 0
+invoice-consulting 1 1 92 92 0.93 1.61 3
+invoice-consulting_long 2 2 236 236 0.88 1.41 3
+invoice-luma_studio 1 1 97 97 0.12 0.52 2
+invoice-luma_studio_long 3 3 192 192 0.24 11.83 22
+invoice-merchant 1 2 94 90 0.21 0.67 0
+invoice-metered 1 1 99 99 0.25 0.69 0
+invoice-modern 1 1 54 54 0.32 0.52 0
+invoice-modern_long 2 2 162 162 0.35 0.52 0
+invoice-obsidian 1 1 81 81 0.29 0.84 0
+invoice-payments 1 1 104 100 0.41 0.91 2
+invoice-platform 1 1 111 111 0.27 0.43 0
+invoice-subscription 1 1 81 81 0.42 0.73 0
+invoice-workspace 1 1 90 90 0.35 1.17 0
+letter-blue_banner 1 1 10 6 0.20 0.42 0
+letter-boxed_sections 1 1 10 10 0.46 0.70 0
+letter-centered_headline 1 1 11 9 0.14 0.25 0
+letter-classic_serif 1 1 10 10 0.13 0.19 0
+letter-compact_mono 1 1 10 8 0.24 0.35 0
+letter-editorial_blue 1 1 12 9 0.15 8.86 2
+letter-engineering_resume 1 1 15 11 0.21 1.41 0
+letter-executive 1 1 12 12 0.18 0.30 0
+letter-mint-editorial-letter 1 1 10 10 0.29 0.29 0
+letter-modern_professional 1 1 12 12 0.43 0.43 0
letter-monogram_sidebar 1 1 12 12 0.23 0.37 0
-letter-nordic_clean 1 1 14 14 0.18 0.38 0
-letter-panel 1 1 12 12 0.15 0.21 0
-letter-sidebar_portrait 1 1 11 11 0.43 0.51 0
-letter-timeline_minimal 1 1 14 14 1.32 1.52 0
-proposal-editorial 2 2 130 117 43.27 45.15 66
+letter-nordic_clean 1 1 15 15 0.16 0.38 0
+letter-panel 1 1 13 13 0.15 0.21 0
+letter-sidebar_portrait 1 1 12 12 0.43 0.51 0
+letter-timeline_minimal 1 1 15 15 1.32 1.52 0
+proposal-editorial 2 2 132 119 43.27 45.18 68
proposal-indigo 1 1 72 68 0.48 27.88 16
-proposal-modern 1 1 42 42 0.41 0.75 0
-proposal-northline 2 2 130 129 0.87 10.47 34
-receipt-modern 1 1 55 55 0.26 0.30 0
-rota-cobalt 1 1 67 64 2.22 2.91 41
+proposal-modern 1 1 44 44 0.41 0.75 0
+proposal-northline 2 2 132 131 0.78 10.47 34
+receipt-modern 1 1 57 57 0.26 0.29 0
+rota-cobalt 1 1 154 151 2.39 3.09 124