Skip to content

Repository files navigation

TraceReady

Clean and validate messy farm CSV, KML, and GeoJSON files into buyer-ready coffee and cocoa handoff packs for exporters and EU importers.

MVP

  • Browser-side file analysis for CSV, KML, GeoJSON, and JSON GeoJSON.
  • Built-in sample runners for CSV, KML, and GeoJSON launch demos.
  • Multi-file cleanup check for up to 5 supplier files, with a batch readiness summary and copyable pilot summary.
  • Farm record normalization for supplier, country, commodity, batch, area, coordinates, and geometry.
  • EUDR readiness checks for missing traceability fields, invalid coordinates, duplicate farm IDs, and polygon requirements for plots over 4 hectares.
  • Downloadable ZIP pack with cleaned CSV, issue log, buyer summary, readiness report, normalized GeoJSON, structured EUDR checklist, and a paid-cleanup intake note.
  • Public representative sample output pack at /traceready-sample-output.zip.
  • Methodology, proof status, contact, and order intake pages for buyer due diligence before purchase.
  • Free issue-log triage page for prospects who want to share non-sensitive issue counts before sending raw farm coordinates.
  • Paid cleanup CTAs route through TraceReady checkout handoff pages before Stripe so buyers see the legal-operator disclosure before payment.
  • Privacy and terms pages linked from the product footer with retention, deletion, confidentiality, no-model-training, legal-operator, and no-certification language.

Local

npm install
npm run lint
npm run test
npm run build
npm run start
npm run check
npm run verify:launch
npm run dev

GitHub Pages

The site statically exports to out/ with output: "export" and deploys through .github/workflows/pages.yml.

Custom domain: traceready.online

Conversion

The paid CTAs open /checkout/cleanup/ and /checkout/pilot/ first. Those pages keep the TraceReady name visible, explain that Passive Print Labs LLC operates the payment workflow, and then link to TraceReady-labeled Stripe products.

NEXT_PUBLIC_STRIPE_PAYMENT_LINK is configured in GitHub Actions variables for the live $149 cleanup Payment Link. The checkout page also includes the public fallback link: https://buy.stripe.com/8x27sN6NW3qzb4d6df93y01.

The 5-file pilot uses NEXT_PUBLIC_STRIPE_PILOT_PAYMENT_LINK when configured. The checkout page also includes the public fallback Payment Link: https://buy.stripe.com/dRm6oH9SH8l671l59W8IU03.

Before checkout, the launch app asks customers to confirm scope and avoid sending raw farm coordinates. After scope confirmation and checkout, /order-intake/ prompts customers to email the scope thread, source file, receipt email, commodity, source country, deadline, and buyer requirements so the paid cleanup order can be fulfilled manually. TraceReady is operated by Passive Print Labs LLC, and the Stripe checkout surface is labeled as TraceReady.

See docs/launch-status.md for the current deployment and DNS checklist.

See docs/product-plan.md for future commodity presets, expansion options, and pivot paths.

See docs/investor-readiness.md for the buyability gates, commercial ladder, and evidence to capture before treating TraceReady as more than an MVP asset.

Use docs/sales-sprint.md, docs/fulfillment-runbook.md, and docs/order-ledger-template.csv to turn real cleanup orders into diligence-ready proof without committing private customer data.

Use docs/competitive-undercut.md for the current competitor map and undercut positioning.

Use docs/public-dataset-mini-audit.md for proof-led outreach based on a reproducible public cocoa dataset audit.

Run npm run render:public-pilot-pack after changing the public cocoa audit counts. It regenerates public/samples/traceready-public-cocoa-pilot/ and public/traceready-public-cocoa-pilot-pack.zip from derived issue counts only; do not put raw Kaggle rows, coordinates, customer files, or buyer material in the public pilot pack.

Use /pilot-proof/ when the goal is to recruit one permissioned real-world case. It asks for non-sensitive issue counts first and explicit approval before publishing anonymized before/after structure or a quote. The page links to the safe blank capture packet at /traceready-documented-pilot-template.txt; use docs/documented-pilot-evidence-template.md for the operator-side checklist, and keep any completed packet private unless every publishable field has written approval.

Use /field-notes/eudr-file-errors/ as the shareable public field note for LinkedIn, association, and reply-thread outreach when a prospect needs the practical issue list before trusting the tool.

Use docs/proof-led-outreach-sprint.md for company-level target tiers, message variants, and the 10-day proof-led outreach cadence.

Use docs/proof-led-outreach-batch-01.csv as the first 20 company/channel routes to contact. Each row has a b01-rNN route ID plus tracked proof, field-note, file-check, and documented-pilot URLs. Use docs/proof-led-outreach-send-pack-01.md for copy-pasteable first messages and follow-ups. The proof page preserves those UTM route IDs when visitors continue to the browser checker or documented-pilot request, and generated buyer summaries, ZIP packs, and cleanup handoffs stamp the route ID when present. Run npm run render:outreach after editing the CSV, then npm run verify:outreach so the committed batch and send packet stay sourced, proof-led, measurable, and free of personal contact data.

Use docs/proof-led-outreach-batch-02.csv when importer routes stall on CAPTCHA, mail-only pages, or wrong-fit forms. It targets EUDR service providers, consultants, and platforms with an overflow-cleanup angle, uses b02-rNN route IDs, and has its own generated send packet and initialized ledger at docs/proof-led-outreach-send-pack-02.md and docs/proof-led-outreach-results-batch-02.csv. Generate batch-specific files with node scripts/render-outreach-pack.mjs docs/proof-led-outreach-batch-02.csv docs/proof-led-outreach-send-pack-02.md and node scripts/init-outreach-results.mjs docs/proof-led-outreach-batch-02.csv docs/proof-led-outreach-results-batch-02.csv. Before manual browser/UI inspection, run npm run recon:outreach-contact -- --batch docs/proof-led-outreach-batch-02.csv --tier overflow --limit 20 --json-output private/outreach-contact-recon-batch-02.json; this is reconnaissance only, and ranks candidate forms/contact links without certifying sendability.

Use docs/proof-led-outreach-results-batch-01.csv as the prefilled 20-route tracking ledger. Run npm run audit:outreach-routes -- --tier importer --limit 15 --json-output private/outreach-route-audit-importer.json before an importer send block to check which public source routes are currently reachable from the CLI and which need manual inspection. Keep a separate ignored sendability audit at private/outreach-sendability-audit-importer.json when browser/UI inspection shows which reachable routes are actually fit for this outreach without personal contacts, CAPTCHA-heavy forms, inaccurate roaster/customer answers, or mail-only fallback, then run npm run verify:outreach-sendability before using it. Run npm run prepare:outreach -- --today 2026-06-16 --send-limit 8 --send-tier importer to seed an ignored private working copy at private/outreach-results-batch-01.csv and render private/outreach-day-pack.md from the first unsent importer routes. Keep the route_id, proof_url, field_note_url, file_check_url, and pilot_proof_url columns intact. Run npm run init:outreach-results after changing the batch CSV, and run npm run summarize:outreach -- path/to/private-results.csv to calculate reply, field-note click, file-check, pilot, and paid-order rates without committing private replies. Use npm run next:outreach -- --results path/to/private-results.csv --send-limit 8 --send-tier importer to print the next importer send/follow-up queue, then npm run render:outreach-day -- --results path/to/private-results.csv --send-limit 8 --send-tier importer --today 2026-06-16 --output path/to/day-pack.md to render the exact first-message and follow-up copy for that block. Use npm run render:outreach-send-checklist -- --results path/to/private-results.csv --send-limit 3 --send-tier importer --today 2026-06-16 --route-audit private/outreach-route-audit-importer.json --sendability-audit private/outreach-sendability-audit-importer.json --output path/to/send-checklist.md as the route-health-and-sendability-gated one-by-one send console. For any queued browser-form route, run npm run render:outreach-send-ready -- --results path/to/private-results.csv --sendability-audit private/outreach-sendability-audit-importer.json --route b01-rNN --today 2026-06-16 --output private/send-ready-b01-rNN.md before typing into a third-party form; that private packet carries the exact message, form-field mapping, and action-time confirmation text. Use npm run render:outreach-replies -- --results path/to/private-results.csv --route b01-r06 --output path/to/replies-b01-r06.md before answering objections or file-check replies. Use npm run update:outreach-result -- --results path/to/private-results.csv --route b01-r06 --status sent --response-type none --date-sent 2026-06-16 --notes "sent via company contact form" --visible-success to update a send, or add --field-note-clicks 1 when a routed field-note visit is visible in analytics.

Run npm run verify:outreach-email before treating cold-email non-response as market evidence. It checks TraceReady outreach-domain MX, forwarding SPF, DMARC, DKIM, and reply-capture signals, and fails until the route is proven enough for outreach measurement. DNS still cannot prove the founder@traceready.online alias reaches a controlled inbox, so create the private challenge with npm run prepare:reply-capture -- --output private/reply-capture-challenge.json --contact founder@traceready.online --handoff-output private/reply-capture-handoff.md --email-draft-output private/reply-capture-email.eml, send the generated subject from a separate mailbox, and save the received message source as private/reply-capture-received.eml. The saved .eml must show founder@traceready.online in To, Delivered-To, X-Original-To, Envelope-To, or another recipient/delivery header. Manually typed timestamps are not enough for challenge-bound reply capture; use the saved .eml message source so TraceReady can verify the alias delivery headers. Record the received inbox evidence with npm run record:reply-capture -- --output private/reply-capture-evidence.json --contact founder@traceready.online --from-eml private/reply-capture-received.eml --challenge private/reply-capture-challenge.json --confirm-controlled-inbox, then rerun npm run verify:outreach-email -- --reply-capture-evidence private/reply-capture-evidence.json --reply-capture-challenge private/reply-capture-challenge.json. The recorder accepts raw message-source exports as well as quoted-printable, base64, and multipart MIME .eml bodies. Run npm run render:reply-capture-unblock to generate the ignored one-page unblock packet at private/reply-capture-unblock.md; it shows the exact challenge subject/body and the browser-form routes waiting behind reply capture. Once private/reply-capture-received.eml exists, npm run finalize:reply-capture can record it automatically, regenerate the private traction scorecard, and refresh the submit preflight queue. Run npm run render:outreach-email-runbook to regenerate the ignored private DNS/reply-capture runbook for the remaining external email setup, then run npm run score:traction -- --reply-capture-evidence private/reply-capture-evidence.json --reply-capture-challenge private/reply-capture-challenge.json --output private/traction-readiness-scorecard-2026-06-17.md --today 2026-06-17 to regenerate the private traction-readiness scorecard that separates public proof, send-ready routes, email risk, and real market signals.

Use docs/stripe-branding-runbook.md for the external Stripe Dashboard branding record. The current cleanup and pilot Payment Links were visually verified in the rendered Stripe checkout UI on 2026-06-14.

Use npm run verify:launch -- --strict-dns after the registrar records are changed to fail fast until traceready.online resolves to GitHub Pages.

About

Browser-side CSV, KML, and GeoJSON cleanup into buyer-ready traceability evidence packs.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages