diff --git a/CHANGELOG.md b/CHANGELOG.md index 435b3fbb0..ff5691996 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1475,6 +1475,19 @@ 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 — 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 + 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..2d90919f1 --- /dev/null +++ b/qa/src/test/java/com/demcha/compose/document/templates/fidelity/DocxFidelityCorpusTest.java @@ -0,0 +1,138 @@ +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); + // 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) { + 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 + " " + 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(regressions) + .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); + } + + 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<>(); + 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..58c7eddd8 --- /dev/null +++ b/qa/src/test/java/com/demcha/compose/document/templates/fidelity/DocxFidelityGateTest.java @@ -0,0 +1,240 @@ +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-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"); + } + + @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-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())) + .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..4d81aff8e --- /dev/null +++ b/qa/src/test/java/com/demcha/compose/document/templates/fidelity/FidelityBaseline.java @@ -0,0 +1,154 @@ +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 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 + * 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; + } + + /** + * 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 rows = new LinkedHashMap<>(); + if (!Files.exists(documents)) { + return new FidelityBaseline(rows); + } + Path lineFile = linesOf(documents); + 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); + } + } + 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); + } + + 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<>(); + 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) { + 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..5307d400e --- /dev/null +++ b/qa/src/test/java/com/demcha/compose/document/templates/fidelity/FidelityMeasurement.java @@ -0,0 +1,195 @@ +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. 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 + * @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 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) { + + /** 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)); + } + + /** 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 = grouped(engine); + Map> set = grouped(editor); + Map found = new LinkedHashMap<>(); + List drifts = new ArrayList<>(); + 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(), lines, drifts.size(), + quantile(drifts, 0.5), quantile(drifts, 0.9), over2, found); + } + + /** 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)); + 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) { + return key.codePointCount(0, key.length()) <= 32 ? key : key.substring(0, key.offsetByCodePoints(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..2e9389fa4 --- /dev/null +++ b/qa/src/test/java/com/demcha/compose/document/templates/fidelity/LibreOfficeConverter.java @@ -0,0 +1,112 @@ +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(directory + "/soffice"); + candidates.add(directory + "/soffice.exe"); + } + } + candidates.add("C:/Program Files/LibreOffice/program/soffice.exe"); + 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}. */ + 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..3324823b5 --- /dev/null +++ b/qa/src/test/java/com/demcha/compose/document/templates/fidelity/PdfLines.java @@ -0,0 +1,118 @@ +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.List; +import java.util.Locale; + +/** + * 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 (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 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; + + PdfLines(List lines, int pages) { + this.lines = List.copyOf(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; + } + + 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; + + 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 left = glyph.getXDirAdj(); + double size = Math.max(1, glyph.getFontSizeInPt()); + boolean sameLine = !Double.isNaN(baseline) + && Math.abs(y - baseline) < size * 0.5 + && left >= lastX - 1 + && left - lastEnd < size * 1.5; + if (!sameLine) { + endLine(); + baseline = y; + x = left; + } + String letters = glyph.getUnicode(); + if (letters != null) { + letters.codePoints() + .filter(c -> !Character.isWhitespace(c) && !Character.isSpaceChar(c)) + .forEach(key::appendCodePoint); + } + 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, x, baseline)); + } + key.setLength(0); + x = Double.NaN; + 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..3c6c8438c --- /dev/null +++ b/qa/src/test/resources/docx-fidelity/libreoffice-windows-lines.tsv @@ -0,0 +1,4065 @@ +# 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 +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: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 +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: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 +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: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 +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: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 +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: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 +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: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. +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: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 +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: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 +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: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 +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: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 +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: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 +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: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 +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 +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: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 +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: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 +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: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 +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 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 +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: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 +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: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 +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: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 +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: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 +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: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 +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 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 +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: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 +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: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%) +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: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 +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: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 +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: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 +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: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 +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: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 +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: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 +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: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 +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: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 +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: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 +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: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 +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: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 +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: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: +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: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 +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: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 +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: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 +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%) +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 -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 +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: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 +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: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. +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 -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 +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: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 +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: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. +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: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. +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: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: +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: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 +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: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 +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: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 +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: +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: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 +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: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 +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: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: +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: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 +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: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%) +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: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 +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: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 +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: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 +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: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 +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: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 +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: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 +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: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 +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: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 +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: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 +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: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 +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: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 +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: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 +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: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 +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: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 +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: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 +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: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 +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: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 +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 +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: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: +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: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: +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: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 +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: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 +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: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 +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 +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: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 +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: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 +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: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 +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: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: +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: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 +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: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. +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: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 +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: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 +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: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 +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: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 +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 +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: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 +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: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 +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: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 +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: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 +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: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 +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: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 +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: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 +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: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 +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 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 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 +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: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 +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: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 +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: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 +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: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 +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: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 +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..005c38990 --- /dev/null +++ b/qa/src/test/resources/docx-fidelity/libreoffice-windows.tsv @@ -0,0 +1,64 @@ +# libreoffice build bce0998afefd on windows +document engine_pages editor_pages lines matched median p90 over2 +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 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 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 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 61 59 0.12 0.59 5 +cv-monogram_sidebar 1 1 53 50 3.57 5.69 50 +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 108 5 81.97 81.97 5 +cv-panel 1 1 79 69 0.37 0.78 0 +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 102 100 0.49 0.94 0 +cv-timeline_minimal 2 2 89 84 1.40 1.40 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 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 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