Auto
Skip to Content

Streamlining Export Sales & Documentation with Odoo ERP for Unicorn Petro

Unicorn Petro: Odoo Export Documentation | KoderXpert

Industrial lubricants & petroleum exports · Odoo ERP implementation

Unicorn Petro: from paperwork rebuilt every shipment to one export engine

enquiry in, container out

Unicorn Petro manufactures and exports industrial lubricants, specialty oils, greases and petroleum products across domestic and international markets. As export volumes grew, the systems holding the business together did not grow with them. KoderXpert mapped the real export process document by document, then built a customized Odoo ERP that carries an order from the moment an enquiry lands to the moment the container ships.

A marketplace enquiry flowing into a CRM card, on into an export document pack and a shipping container, representing the connected Odoo ERP built for Unicorn Petro marketplace lead ✓ PI · CI · PL shipped
one record, enquiry to container ✨
zero!0manual re-entry of marketplace leads
0export documents generated from order data
0Odoo modules unified on one platform
0marketplace feeds wired in by API
Client
Unicorn Petro
Industry
Industrial lubricants, petroleum products, export manufacturing
Platform
Odoo ERP, end to end implementation
Implementation partner
KoderXpert Technologies
Headline result
Zero manual re-entry of marketplace leads

01 · Overview

The 30-second version

  • Unicorn Petro is a leading manufacturer and exporter of industrial lubricants, specialty oils, greases and petroleum products, serving both domestic and international markets.
  • Growth outran the systems: enquiries from IndiaMART and TradeIndia were retyped by hand one at a time, export paperwork was rebuilt from scratch for every shipment, and domestic and export sales ran as two disconnected businesses on separate rails.
  • KoderXpert mapped the real export process before touching configuration, then delivered a customized Odoo ERP connecting the whole order lifecycle: marketplace leads captured by API, one pipeline for both sales motions, procurement tied to confirmed demand, and proforma invoice, commercial invoice, packing list, shipping instructions and bill of lading generated from order data.

02 · Where the old way broke down

What was going wrong before Odoo?

Six cracks between the enquiry and the container

Every team was running its own workaround: sales retyped leads out of an inbox, documentation rebuilt a shipment pack from a spreadsheet template, purchasing guessed at demand, and leadership waited for month end to learn what had happened.

Leads slipping away

Enquiries from IndiaMART and TradeIndia lived in inboxes and were typed into the system by hand, one at a time: slow, inconsistent and easy to lose.

The cost → a warm buyer, cold by Monday

Export paperwork rebuilt every time

Proforma invoices, commercial invoices, packing lists and shipping instructions were assembled manually in spreadsheets for every single shipment.

The cost → the same document, retyped forever

Inconsistent documents

Every buyer wanted a different format, and each hand-built variation was another chance for a compliance problem at the port.

The cost → a customs risk per shipment

CRM with no visibility

Follow-ups depended on whoever remembered them. There was no shared pipeline showing which enquiry was at which stage, or who owned it.

The cost → memory as a sales process

No live order visibility

Answering the question "where is this export order right now" took three phone calls across three teams.

The cost → three calls for one answer

Two businesses, two rails

Domestic and export sales ran as separate operations with no shared source of truth, so nobody had one clear view of an order from enquiry to shipment.

The cost → one company, two versions of it
exporting on spreadsheets? this is where the rebuild starts…

03 · The turnaround

Drag it and see the before & after yourself

Slide the orange handle. Left is the inbox-and-spreadsheet era, right is the connected export engine.

✗ Before the implementation
  • Marketplace enquiries retyped by hand, one at a time
  • Export packs rebuilt from scratch for every shipment
  • Follow-ups depending on individual memory
  • Domestic and export running on separate rails
  • Order status confirmed by phone call

the retyping era 😵

one export engine ✨

✔ After the implementation
  • Enquiries landing in the CRM automatically, by API
  • PI, CI, packing list & SLI from order data, one click
  • One pipeline with stages, owners and reminders
  • Domestic and export flows on a single platform
  • Live export order status on one dashboard

← drag toward the paperwork · drag toward the platform →

04 · The plan

What "one system" had to actually mean

The brief in one line: never retype an enquiry, never rebuild a document, and always be able to answer where an order is. Hover any goal to tick it off.

Zero-touch lead capture: pull every enquiry automatically from IndiaMART and TradeIndia, with no manual entry at all.

One pipeline: centralize CRM and sales so every enquiry has a stage, an owner and a visible follow-up.

Two motions, one platform: unify export and domestic workflows without forcing either one to behave like the other.

Demand-driven purchasing: connect procurement to sales so buying follows confirmed orders, not guesswork.

Automated documentation: generate the full export pack end to end, in each buyer's required format.

Real dashboards: give leadership live reporting instead of a month-end spreadsheet exercise.

05 · What we delivered

What did KoderXpert build?

A platform built around the real workflow

KoderXpert delivered a customized Odoo ERP that connects the entire order lifecycle, from the moment an enquiry lands to the moment the container ships. Marketplace enquiries flow straight into Odoo CRM, auto-assigned and tracked through a single pipeline into quotation and sales order, while documentation, purchasing, accounting and reporting run on the same connected platform.

Block 01

IndiaMART & TradeIndia integration

Both marketplaces connected by direct API, so enquiries land in the CRM automatically with buyer details, product interest and source intact. No re-typing, no copy-paste, no lost lead.

zero-touch capture
Block 02

Automated lead management

Automatic assignment to the right salesperson, defined pipeline stages, scheduled follow-up reminders and conversion tracking from enquiry through to won order.

a pipeline, not a memory
Block 03

Dual sales workflows

Purpose-built domestic and export flows on one platform: each keeps the fields, pricing logic, terms and document set its market actually needs, while sharing one customer and product master.

two motions, one truth
Block 04

Purchase & vendor management

Requisitions and procurement tied directly to sales demand, so raw material and packaging buying follows confirmed orders instead of a monthly estimate.

buying that follows demand
Block 05

One-click export documents

Proforma invoice, commercial invoice, packing list and shipper's letter of instruction generated directly from order data, with the bill of lading pack built on the same engine.

5 documents, one click
Block 06

Executive dashboards & MIS

Live reporting on sales performance, order status and export throughput, so leadership reads the current position rather than reconstructing last month's.

answers without a spreadsheet
enquiry CRM lead quotation doc pack shipped
the whole lifecycle, one flow: nothing retyped between two of these steps ✨

06 · Functional deep dive

How the connected system actually works

The delivery summary says what was built. This is the functional detail underneath it: how a lead arrives, how the two sales motions differ, what each export document contains, and how purchasing hears about a confirmed order.

Marketplace capture, end to end

The single biggest source of lost revenue was the gap between an enquiry arriving and someone typing it in. That gap was closed at the source rather than shortened.

  • Direct API integration: IndiaMART and TradeIndia connect straight to Odoo CRM, so an enquiry becomes a lead record without a human touching a keyboard.
  • Field mapping at ingest: buyer name, contact details, product interest, quantity and enquiry text map to structured CRM fields, so the lead is searchable and reportable from the first second.
  • Source tagging: every lead carries the marketplace it came from, which finally makes channel performance a measurable number rather than an impression.
  • Deduplication: repeat enquiries from a known buyer attach to the existing customer record instead of creating a parallel one.

The lead lifecycle, staged

Once leads land automatically, the question becomes whether anyone acts on them. The pipeline was built to make inaction visible.

  • Automatic assignment: incoming leads route to the right salesperson by rule, so ownership is set before anyone opens the record.
  • Defined stages: new, qualified, quoted, negotiation, won and lost, with each stage carrying its own expectations rather than being a label.
  • Follow-up reminders: scheduled activities sit on the lead itself, so a pending follow-up is a system fact instead of a personal note.
  • Conversion tracking: lead to quotation to sales order measured as one chain, which is what makes response time an improvable metric.

Domestic and export, side by side

The two sales motions genuinely differ, so the system does not pretend otherwise. They share masters and diverge where the business actually diverges.

  • Shared foundation: one customer master, one product master, one pricing engine, so a buyer is the same record whichever market they sit in.
  • Export-specific data: incoterms, port of loading and discharge, country of origin, HS codes, container and packing details captured on the order, not appended later.
  • Domestic simplicity preserved: the domestic flow keeps its shorter path, so local orders are not slowed down by export fields they do not need.
  • One order view: whichever motion an order belongs to, its status is readable from the same place, which is what ended the three-phone-call question.

The export document set, specified

Export compliance leaves no room for improvisation, so each document was specified against the real process rather than assembled from a generic template.

  • Proforma invoice: generated from the quotation with buyer terms, incoterms, currency and validity, so the buyer's first formal document is already system data.
  • Commercial invoice: built from the confirmed order, carrying the values, terms and declarations customs expects to read.
  • Packing list: line-level packing detail with net and gross weights, package counts, marks and numbers, drawn from the same order lines as the invoice so the two can never disagree.
  • Shipper's letter of instruction: the freight forwarder's instruction set produced from order and shipment data instead of retyped into an email.
  • Bill of lading pack: the same document engine drives the BL data set, keeping one shipment described identically everywhere.

Buyer-specific formats as templates

Different buyers require different layouts. That requirement was turned from a per-shipment risk into a configuration.

  • Reusable QWeb templates: each buyer's required format exists as a named, reusable template rather than a manually restyled spreadsheet.
  • One data source, many faces: the layout changes per buyer while the underlying order data stays identical, so a format preference can never alter a declared value.
  • Template selection on the order: the correct format is chosen from the customer record, so the documentation team is not remembering which buyer wants what.
  • Consistency as compliance: because the pack is generated rather than assembled, every shipment for a given buyer looks the same as the last one.

Sales to procurement, connected

The last disconnect was between what had been sold and what was being bought. Both loops now run on the same records.

  • Demand-linked requisitions: confirmed orders drive purchase requirements, so procurement reacts to real commitments rather than a forecast someone maintained separately.
  • Vendor management: suppliers, pricing and lead times held in the system, so purchasing decisions are made against recorded terms.
  • Inventory in the loop: stock movements for raw material, packaging and finished goods update against the same transactions, keeping availability honest.
  • Accounting downstream: invoicing and payments flow from the same orders, so commercial documents and books describe one event.
one order proforma invoice packing SLI one click

Why the pack can never disagree with itself

The proforma invoice, commercial invoice, packing list and shipping instruction are four views of one order record, not four documents someone keeps in sync. Change a quantity on the order and every document that mentions it changes with it, which is exactly why generated paperwork survives a customs check that assembled paperwork does not.

07 · How we built it

How was the Odoo project delivered?

Map the process first, configure second

Every buyer required a different document format and export compliance leaves no room for improvisation, so nothing was configured until the real process was mapped document by document. Seven phases from requirement analysis to a supported go-live.

1

Requirement analysis map the real process

The actual export process walked and documented, shipment by shipment and document by document, before any Odoo configuration began.

2

ERP solution design architect around the workflow

Modules, data flow and document logic architected around Unicorn Petro's real workflow rather than a generic implementation template.

3

Configuration & custom development build it

Odoo setup plus custom development in Python and the Odoo ORM, with QWeb templates for the document layer.

4

CRM integrations close the lead gap

IndiaMART and TradeIndia lead feeds connected via direct API, removing the single biggest source of lost enquiries.

5

Document automation build the engine

The proforma invoice, commercial invoice, packing list, shipping instruction and bill of lading document engine built and wired to order data.

6

User acceptance testing prove it on real data

Every workflow validated against the client's live data, including full export cycles with their actual buyers and formats.

7

Training & go-live hand over the keys

Sales, purchase and documentation teams trained on their own flows, then launched with hands-on support through the first live shipments.

08 · Engineering notes

The technical decisions behind the build

For the technically curious: how the integration, the document engine and the data model were engineered to survive upgrades, volume and a customs officer.

Custom addons, zero core edits

Everything built for Unicorn Petro lives in namespaced custom modules on Python and the Odoo ORM, extending Odoo rather than editing it.

  • Inheritance, not modification: models and views extend through Odoo's inheritance mechanisms, so a future Odoo upgrade does not bury the export logic.
  • Configuration as data: document templates, pipeline stages and workflow rules ship as XML data records, making the setup reproducible and reviewable.
  • PostgreSQL underneath: one database as the single source of truth for leads, orders, stock, documents and accounting, with no export-and-reconcile step anywhere.

How the marketplace integration holds up

An integration that drops enquiries silently is worse than no integration, so the lead feed was engineered defensively.

  • Scheduled polling: Odoo cron jobs pull from the IndiaMART and TradeIndia endpoints on a fixed cadence, so capture does not depend on anyone being logged in.
  • Idempotent ingest: each enquiry carries its marketplace identifier, so a retried or overlapping fetch updates the existing lead instead of creating a duplicate.
  • Failure is visible: API errors and rejected payloads are logged rather than swallowed, so a broken feed surfaces as an alert instead of a quiet drought of leads.
  • Raw payload retained: the original enquiry text is kept on the record, so nothing is lost to an imperfect field mapping.

How the document engine is built

The export pack is a set of native Odoo report artifacts reading live order data, not files stored beside the order.

  • QWeb templates: each document is a QWeb template rendered to PDF, so what the documentation team prints is what the order currently says.
  • Buyer format resolution: the template applied is resolved from the customer record at print time, keeping format choice out of human hands.
  • Computed shipment fields: package counts, net and gross weights and totals are computed from order lines rather than entered twice.
  • Regeneration over editing: a corrected order regenerates its pack, which is what keeps the invoice, packing list and instruction permanently consistent.

The data migration pipeline

Existing customers, products and open orders moved through a staged pipeline rather than a bulk import.

  • Extract & cleanse: legacy records exported, deduplicated and normalized in a staging environment before anything touched production.
  • Ordered loading: imports run in dependency order (partners, products, price lists, then open orders and balances) through the ORM, so every business rule still applies.
  • Verified counts: record counts and open-order values reconciled against the source before sign-off.

Testing, cutover & training

The system landed on a live exporting business, so the rollout was engineered to be boring.

  • Staging mirror: every change proven on a copy of the real database before reaching production.
  • Role-based UAT: sales, purchase and documentation teams each walked scripted end-to-end scenarios on the client's live data, including full export cycles.
  • Format sign-off: each buyer-specific document template validated against a real historical shipment before go-live.
  • Supported launch: teams trained on their own workflows and supported through the first live shipments rather than handed a manual.

Reporting & performance

Dashboards only replace spreadsheets if they stay fast and answer the question being asked.

  • Aggregated reads: dashboards read grouped, indexed data rather than scanning rows, so they stay responsive as order volume grows.
  • Filters as first-class citizens: period, market, salesperson and buyer filters are part of the report definitions, so a new cut of the data is a click.
  • Scheduled automations: cron jobs refresh feeds and snapshot reporting data, so leadership reads prepared, consistent figures.
  • Change discipline: every module version-controlled in Git, moving dev to staging to production, with nothing reaching live that did not pass staging.
2 feeds cron CRM no duplicates ✓

The lead feed, drawn end to end

Two marketplaces, one scheduled job, one CRM. Each enquiry carries its marketplace identifier all the way through, so an overlapping fetch updates a lead instead of duplicating it, and an API failure raises an alert instead of quietly producing a slow week.

09 · The impact

What changed after go-live?

The results, in numbers

the part clients screenshot
0manual re-entry of marketplace leads
0export documents generated from order data
0sales motions unified on one platform
0delivery phases, analysis to go-live
  • Zero-touch lead capture: enquiries reach the right salesperson the moment they arrive
  • Faster customer response: quotations go out while the enquiry is still warm
  • Export documentation automated from order data, not rebuilt per shipment
  • Consistent, compliant documents: every buyer gets their required format, every time
  • Faster quotation to order conversion through a single pipeline
  • Sales and procurement in sync, with purchasing following confirmed demand
  • Real-time export order visibility on one dashboard

10 · Under the hood

Technologies & core skills

ERP · Odoo ERP (CRM, Sales, Purchase, Inventory, Accounting, Documents, Dashboards) Backend · Python, Odoo ORM (models, inheritance, server actions) Frontend · XML views, QWeb templates, HTML5, CSS3, JavaScript Database · PostgreSQL (single source of truth, indexed & constrained) Integrations · IndiaMART & TradeIndia lead APIs, scheduled and idempotent Reporting · QWeb PDF report engine + aggregated dashboards & MIS Automation · Odoo cron (lead polling, reporting snapshots), scheduled backups DevOps · Git version control · dev → staging → production · Linux + reverse proxy, HTTPS
CRM automation Export documentation Sales automation Procurement management Accounting Workflow automation ERP consulting API integration Data migration
the rule the whole build followed
"Every buyer required a different document format, and export compliance leaves no room for improvisation. So we mapped the real export process document by document before touching a single line of Odoo configuration, and connected the marketplaces by API rather than by hand."
The delivery principle · KoderXpert × Unicorn Petro

11 · Quick questions, honest answers

Thinking about a similar build?

Yes. For Unicorn Petro both marketplaces connect to Odoo CRM by direct API, so an enquiry becomes a structured lead with buyer details, product interest and source tagging without anyone retyping it. Scheduled polling means capture does not depend on someone being logged in, and each enquiry carries its marketplace identifier so a repeated fetch updates the lead instead of duplicating it.

The full working pack. Unicorn Petro generates the proforma invoice, commercial invoice, packing list and shipper's letter of instruction directly from order data, with the bill of lading data set built on the same engine. Because all of them read one order record, the quantities, weights and values can never drift apart between documents.

Each buyer-specific format is built once as a reusable QWeb template and linked to the customer record, so the correct layout is resolved automatically at print time. The layout changes per buyer while the underlying order data stays identical, which turns a per-shipment compliance risk into a one-time configuration.

Yes, and that was an explicit goal here: unify the two without forcing one to behave like the other. They share one customer master, product master and pricing engine, then diverge where the business actually diverges. Export orders carry incoterms, ports, country of origin, HS codes and packing detail, while the domestic flow keeps its shorter path.

Manual documents are rebuilt per shipment, and every hand-built variation is a chance for a mismatch. Generated documents are views of one order record, so an invoice and its packing list describe the same goods by construction. Correcting an order regenerates the pack rather than requiring four separate edits, which is what keeps a shipment consistent at the port.

Seven working together: CRM, Sales, Purchase, Inventory, Accounting, Documents and Dashboards, all on a single database. That shared foundation is what allows a lead, an order, a stock movement, an export document and a management report to be different views of the same transaction rather than separate systems kept in step by hand.

Yes. Requisitions and purchasing are tied to sales demand, so raw material and packaging buying follows confirmed orders rather than a monthly estimate maintained on the side. Vendor terms and lead times sit in the same system, so purchasing decisions are made against recorded data.

Response time and lead survival. Enquiries reach the right salesperson the moment they arrive instead of after someone works through an inbox, so quotations go out while the enquiry is still warm. It also makes channel performance measurable, because every lead carries the marketplace it came from.

Yes, by design. All custom work lives in namespaced addons that extend Odoo through inheritance, with the core never edited. Document templates, pipeline stages and workflow rules ship as XML data records, so the whole setup is reproducible, reviewable and upgrade-safe.

It is the riskiest part, which is why it runs as a staged pipeline rather than a bulk import: extract and cleanse in staging, load in dependency order through the Odoo ORM so business rules still apply, then reconcile record counts and open-order values against the source before sign-off.

It depends on how many document formats and workflows are in play, which is exactly why requirement analysis comes first: mapping the real process document by document fixes the scope before configuration starts. Unicorn Petro ran seven phases, from requirement analysis and solution design through custom development, CRM integrations, document automation, user acceptance testing on live data, and a supported go-live.

KoderXpert is an Odoo Ready Partner that maps the real process before configuring anything, builds upgrade-safe custom modules with zero core edits, and treats export documentation as an engineering problem rather than a template exercise. Unicorn Petro's outcome: zero manual re-entry of marketplace leads and a five-document export pack generated from order data. Talk to KoderXpert about your export workflow.

stop rebuilding the same document

Still running exports on inboxes and spreadsheets?

Tell us where the paperwork starts repeating itself: lead capture, quotations, packing lists or shipping instructions. KoderXpert will map the real process first and configure second, until an order carries itself from enquiry to container.



the story continues...

More client stories

All case studies

Your business could be the next story here.

Same process, already proven across 20+ industries.

Your business is not a template. Your ERP should not be either.

Every project on this page started the same way: a conversation about how the business actually runs today, and where the manual hand-offs are. That is a good place to start yours too.