Whitepaper  ·  Partner enablement

Building industry & vertical solutions with Nova Forms (Odoo app)

Most of what makes a vertical form solution vertical is capture, integration and evidence.
It is the part that changes per customer, per region and per regulation.
Not everything needs to be implemented in Odoo modules.

This paper sets out where that line sits, what the Nova Forms app gives on the far side of it, and four blueprints for solar, construction, field service and signed agreements.

Everything that follows is in the app today, not on a roadmap.

In short:

The same app also covers the everyday cases: customer satisfaction surveys, quotation and service requests, onboarding and calculations among them.

One form design, four contexts: the same form runs in the Odoo backend, on the portal, on the website, or embedded on a third-party site.

Prepared for
Odoo partners
Product basis
Nova Forms · Odoo >= 19
Author
Bob Leers
Issued
September 2026
01The case

Form-based data capture is the wrong part of a vertical to fork into a module

An Odoo partner that serves several industries can end up building the same thing again and again: a set of models for each vertical, then a fork of that set for every customer whose intake, checklist or sign-off document differs from the template.

The models are rarely the problem. A work order is a work order. Project tasks, pickings, leads, invoices: Odoo already has all of it, and the semantics are stable across every customer in the vertical. What differs, customer by customer, is the surface where and how reality gets recorded: which 28 fields the roof survey asks, which photo is mandatory before the crew may start, which inverter certificate number the regional grid operator insists on, which of the fourteen checklist items is a legal requirement this year and a recommendation the next, and whether any of it is answered on the website, in the portal or in the Odoo backend.

Put that surface in module(s) and every one of those differences becomes a field, a view override, a migration script and a line in the upgrade budget — repeated across every database under maintenance. The cost is not the first build. It is that the variable part and the stable part are now welded together, so the variable part's churn rate is inherited by the whole thing.

Nova Forms separates them. The capture surface becomes a form design (SurveyJS JSON stored in an Odoo record) that a consultant, or the customer, can change without a deployment. What the form produces stays where it belongs: real Odoo records, created and updated by configured mappings or by a server action the partner controls.

The claim

This does not replace a vertical module. It changes what has to be in it. The module carries the models, the business rules, the automations and the reports that are true for every customer in the industry. The forms carry everything downstream of "what exactly do we ask, and what must be attached" — and that is where the per-customer variance lives.

02Where the line sits

A scoping assessment

The dividing question is whether anyone has to be asked to provide a value. If a person supplies it, that is form or data intake, and the form captures it. It stays the intake layer even when the answer has work to do afterwards: a record mapping writes it onto the contact, the order line or the task in the ERP, where it can be summed, invoiced, scheduled or reported on like any other field. Intake and downstream processing are not a choice between two places. Nor does the channel move the line: the same form design runs in the Odoo backend, on the portal, on the website or embedded on a third-party site.

What belongs in a module is what nobody is ever asked: the models those records live in, the constraints that protect them, the business logic that runs on them, and the values the ERP derives for itself. A requirement someone has to answer is intake; one the ERP has to enforce or derive for itself is business logic.

SignalBelongs in a moduleBelongs in the form layer
AuthorshipOnly a developer should ever change it.A consultant, or a trained key user, should be able to add and change it.
VarianceIdentical for every customer in the vertical.Differs per customer, region, subsidy or certification scheme, or type of asset.
LifetimeThe concept outlives any particular questionnaire.The question exists because a regulation, standard or customer asked for it this year.
AutomationDrives scheduling, stock, accounting or a deadline that escalates.Triggers a downstream record when submitted, then stops.
ConstraintsNeeds a database constraint, a unique key, or must not be writable after approval.Validation is per-submission and per-question; rules change as often as the form does.
AggregationValues that get summed, grouped or charted across many records: quantities, hours, amounts.Values read one record at a time: observations, notes, conditions found on site.

Many of the custom fields added to res.partner, sale.order, sale.order.line or project.task exist only so that something can be asked. Those move into the form. The few that feed logic stay as fields, written by the form's record mapping, so the capture surface still changes without a deployment.

Design it as a one-way door

Start a question in the form layer. If it later turns out that reporting needs it, add the field to the module and populate it from the mapping. Existing submissions already hold the value, so the migration is a backfill, not a re-collection. Going the other way is far more expensive. When in doubt, form first.

03The capability map

What lies on the far side of that line

Grouped by the questions a solution architect asks.

Build

  • Drag-and-drop builder (SurveyJS Creator) with 30+ question types: text, dropdown, checkboxes, date/time, rating, slider, file upload, signature, address, image marker, image picker, rich text editor, matrix and dynamic matrix (repeating rows, like a One2many).
  • Logic without code: show/hide, skip and branching conditions, validators, calculated values, and dynamic panels and matrices for repeating rows.
  • Connect fields with Odoo: go further with built-in APIs to connect form fields to Odoo: pre-fill, change, validations and domain filters.
  • Evidence-grade question types: signature pad with anti-blank validation, image marker (place weighted markers on a default or uploaded image: a roof, a floor plan, a schematic).
  • Structured data in answers, not blobs: even the rich types are stored as structured JSON: rich text as a document tree rather than an HTML string, image marker as placed coordinates with their weights. An answer can therefore be parsed, mapped onto a record and reported on.
  • Multilingual by default: builders and forms carry translations; language follows the website or the logged-in user, with a switcher in the form.
  • Theming, built in: style forms to the customer's brand from inside the builder: background, colours, fonts, header and logo, no CSS required. Start from a supplied theme or save a custom one, and apply it across many builders at once.
  • AI authoring: build or edit a design from a prompt, every prompt recorded as a revision with one-click undo. It also covers porting an existing form from another tool: describe it, or paste its definition.

Publish

One design, four rendering contexts. Build once, deploy anywhere it is needed:

Context 01Backend

Internal users, on the Forms app or bound to a record.

Context 02Portal

Assigned to a portal user, or selected and filled in by them, with their history and in the company’s own branding.

Context 03Website

Drag-and-drop Form block on any page.

Context 04Embedded

Copy-paste snippet on a third-party site.

Technically, rendering happens in an encapsulated DOM rather than an iframe:
The form’s (and form builder’s) markup and styles are encapsulated from the page around it.
So the form designer and form are part of the Odoo page itself (backend, portal, website).
Neither leaks into the other: no resizing, no style collisions with the host site, no cross-origin friction, and the same behaviour in all four contexts.
Public forms get a built-in proof-of-work captcha: no external service, no cookies, invisible to the visitor, verified server-side.

Bind to Odoo

  • Record Mapping: configure, in the builder, that a submission creates or updates records. Dropdowns resolve to Many2one by lookup; dynamic matrix and panel rows become One2many children. Chain several mappings so a later one uses the record an earlier one created.
  • Field APIs: Prefill loads values from Odoo records or any source; Change reacts to a field change and updates others; Domain filters a dropdown's choices dynamically. This is how a form shows live (for example) product, serial, picking or contact data instead of a frozen copy.
  • Server actions: Python on submit for anything beyond configuration, with the submission data available as ordinary values.
  • PDF generation: Odoo's own report engine, printed or emailed on submission, in the user's or the customer's language.
  • Form receipt: a PDF report of the submission sent back to whoever filled it in, as confirmation of what was recorded and when.
  • App integrations: ready-made bindings for CRM, Contacts, Sales, Purchase, Projects, Inventory, Helpdesk, Employees, Events and eCommerce.

Operate

  • Drafts and autosave: save on page change, on value change, or "save in progress", so a long form survives an interruption (even with required fields unanswered).
  • Reminder rules: per builder, with mail templates, on an interval: the mechanism behind any recurring inspection or periodic declaration.
  • Recurring forms, prefilled from last time: a periodic form can be copied with the previous submission’s data already in it (field exclusion by a property in the builder), so each round starts from what was recorded last time and the answers that changed are the only ones to enter.
  • Concurrent-edit protection: a builder being edited is claimed by that user, with a heartbeat and automatic release, so two consultants cannot silently overwrite each other.
  • Versions and revisions: a published form resolves to whichever version is live; superseded versions are refused.
  • AI document extraction: a photo or PDF of a filled-in paper form becomes a draft submission mapped to the form's own fields, with per-field confidence, review flags and optional auto-completion. Engines: Anthropic, OpenAI, Mistral, self-hosted Ollama, or any OpenAI-compatible endpoint.

Analyse

The ETL interface generates a model, table, views and menu from a form design and loads submissions into it as ordinary records that can be queried, exported and reached by any BI tool. Useful for trend reporting across many submissions of the same form.

Why not the Survey app, or Studio?

Neither carries the question types this work needs (signature, file upload, image marker, repeating matrices and panels), which on its own rules them out for evidence capture. Thirty-plus against nine, each one wired to Odoo through the field APIs: an image picker that lists a product’s own images for one or several to be chosen, a dropdown filtered against live records, a rating or slider whose value maps onto a field like any other.

Survey is built for questionnaires: nine question types, all of them choice, text, number, date, scale or matrix. Choices are typed into the survey, so a dropdown cannot show live products, contacts or assets, and logic is display-only: a question appears because an earlier answer was picked, with no calculated values and no API-driven rules.

Nor is a survey an artefact you ship. A submission links to a contact, but beyond saving an answer as the respondent’s email or nickname, nothing writes answers onto that contact, a task or an asset; they stay in the survey’s own tables. And there is no pack to version alongside the module and import into the next customer’s database, which is the whole of §04.

Studio is the module side of the §02 line: every question becomes a field and a view change in that database. It is not the tool for extensive logic, and each customisation is weight carried into the next Odoo upgrade. Right for what the ERP must enforce or derive; wrong for the twenty-eight questions a roof survey asks this year.

04Shipping a pack

How a vertical form pack travels

Export and import are what turn "we use forms" into a repeatable product. Nova Forms exports form builders and their surrounding configuration, and imports them into another database. That gives an owned template repository and/or reference database, and a distributable artefact.

Step 01Reference database

The vertical pack is built and maintained once, in the partner’s own template repository and/or reference database.

Step 02Export the pack

Builders plus their settings, actions and translations, in one export.

Step 03Version it

Commit the pack, alongside the vertical module if there is one. It is the form-layer release.

Step 04Import & tune

Into the customer database, then adapt on site without a deployment.

What the export carries

What travels (among others)

  • General settings: title, name, version
  • The form design JSON (with branching, logic, validators, field configurations, theme, ets)
  • Portal and public/website settings (eg redirect after submit)
  • Theme record: palette and theme JSON, matched or recreated
  • Resource model (the record the form acts on)
  • Autosave and draft behaviour
  • Display and header settings; embed settings
  • Field API configurations
  • Record mappings
  • Server and automated actions assigned in the builder
  • Reminder rules with their mail templates

Does not travel: plan for it

  • Submissions. The pack is a template, not data.
  • The models the actions and mappings reference. They must exist in the target database first, which is what standard Odoo, or the vertical module, provides.
  • Master data the forms look up: products, asset categories, checklist reference records.
  • Access groups the forms are published to.

The practical shape of a vertical release is therefore standard Odoo, extended by a vertical module where the vertical needs one, with the form pack on top. A module carries what must be code: models, groups, master data, reports and automations. The pack is the capture surface. Odoo and the module, where there is one, form the contract; the pack is what plugs into it.

Set the customisation policy on day one

Once a customer edits an imported builder, a later re-import needs a decision each time. Agree upfront which builders the partner updates and which the customer owns; ship the customer-owned ones as starting points and keep the maintained set separate. This is a governance choice, and the cheapest time to make it is before the first go-live.

05Blueprint · Solar

Solar and PV installation

The vertical with a high ratio of capture to transaction: every installation is a survey, a design, a permission, an execution and a certificate, and almost all of it is evidence that must be kept and produced on demand.

Lead→Site survey→Design & quote→Grid application→Installation→Commissioning→Handover→O&M
FormRuns inBecomes / updates in OdooRelies on
Rooftop intakeWebsite + embeddedContact and CRM lead, with roof type, consumption and address prefilled onto the lead.Record mapping · CRM & contacts · website form block
Site surveyBackend / portal, on a tabletAttached to the lead; one row per roof plane (orientation, pitch, area) as One2many children.Record mapping · image marker
Electrical & meter checkBackendPhotos of the meter cabinet and the main fuse rating, stored with the survey.File upload
System configuratorPortalQuotation lines: panel, inverter and mounting filtered by the Domain API, prices updated by the Change API.Domain & change APIs · sales integration
Grid-connection applicationBackendPDF in the operator's required layout, prefilled from the contact and installation address, emailed on submit.Prefill API · PDF generation
Installation checklistPortal, per crewCloses the task; string layout as a dynamic matrix; panel and inverter serials passed to a server action.Dynamic matrix · projects & inventory
Commissioning reportPortalTest values plus technician and customer signature; a certificate PDF emailed and archived.Signature · PDF generation
Annual O&M inspectionPortalScheduled by reminder rule; a failed check opens a helpdesk ticket.Reminder rules · helpdesk

Design notes

  • One survey, two audiences. Do not build a homeowner version and a surveyor version. Build one, and drive the difference with visibility conditions and the Prefill API on the logged-in user — otherwise the divergence has to be maintained forever.
  • Roof geometry belongs in the image marker. A photo or plan with placed markers records obstructions, panel zones and cable routes in a way no set of numeric fields does, and it is what the installer looks at on the day.
  • Serials are the exception that proves the rule. They fail the §02 assessment (traceability has to reason about them), so write them through a server action to stock.lot, not only into the submission JSON.
  • The certificate is the product. Design the commissioning PDF before the form; the questions follow from what the certificate and the subsidy scheme must show.
06Blueprint · Construction

Construction and installation

Here the driver is not efficiency but defensibility. Safety and quality records must exist, be timestamped, carry evidence, and be producible years later. The failure mode of a paper or spreadsheet process is not slowness. It is a record nobody can find or interpret well.

Work request→Preparation→Daily site→Inspection→Snagging→Handover→Aftercare
FormRuns inBecomes / updates in OdooRelies on
Work request / RFQWebsite + embeddedLead or draft quotation, with scope, site address and desired dates.Record mapping · CRM & sales
Subcontractor onboardingPortalContact plus certificates and insurance as attachments; reminder rules chase expiry.File upload · reminder rules · contacts
Start-of-shift risk check (LMRA)Portal, phoneLogged against the task; a flagged hazard makes an evidence photo mandatory and raises a blocking activity.Conditional logic · projects
Toolbox talkPortalOne row per attendee in a dynamic panel, each with its own signature.Dynamic panel · signature · PDF generation
Quality inspection roundPortal, tabletObservations pinned on the floor plan with the image marker; each becomes a task with a photo.Image marker · record mapping · projects
Snag / punch listPortal, client-visibleOne task per snag; closing requires an evidence photo; the client sees status in their portal.Dynamic panel · portal · projects
Site delivery notePortalConfirms or corrects a receipt, with damage photos, and validates the picking.File upload · inventory
Handover certificatePortalClient signature, reservations list and a countersigned PDF stored on the project.Signature · PDF generation

Design notes

  • Raise the upload retention on evidence forms. The 24-hour default suits a contact form. A safety or snagging form that a foreman starts on site and finishes that evening must not lose its photos — set the builder's retention to match the process, or to 0 to keep them indefinitely.
  • A signature inside a dynamic panel is what makes attendance registers work: one row per person, each signing for themselves, all in one submission.
  • Let the snag list be the One2many. Model observations as dynamic panel rows mapped to child records, so a single inspection produces the right number of follow-up tasks without a line of code.
  • Publish the client-facing forms to the portal, not to email. The portal gives the client their own history of what they signed, which is the record disputes turn on.
07Blueprint · Service

Field service and maintenance

Field service sits across verticals: the solar installer and the contractor both end up here once the asset is theirs to maintain. What is distinctive is recurrence against an asset: the same checklist, at intervals, over a fleet of installations, where the value is in the comparison across visits.

Asset register→Scheduled round→On-site execution→Findings→Follow-up→Sign-off
FormRuns inBecomes / updates in OdooRelies on
Asset condition checklistPortal, phoneBound to the asset record; identification, location and last-visit data prefilled by the Prefill API.Prefill API · form bound to a record
Periodic inspectionPortalIssued on an interval by reminder rule with its mail template; completion closes the cycle.Reminder rules · mail templates
Defect reportPortal + publicHelpdesk ticket with severity, fault photos and the asset reference.Reminder rules · helpdesk
Measurement roundPortalReadings as dynamic matrix rows, mapped to child records so values can be compared visit over visit.Dynamic matrix · record mapping
Customer sign-offPortal, at the doorSignature and work summary; service report PDF emailed on submit.Signature · PDF generation
Warranty / RMA intakeWebsite + portalTicket with proof of purchase and fault description; captcha on the public form.Reminder rules · helpdesk

Design notes

  • Decide the connectivity strategy early. Nothing offline ships in the box, and the answer differs by site. For patchy coverage, save-on-value-change means a dropped signal costs the last answer rather than the visit. For sites with no coverage at all, either keep a paper fallback and pull it back in with AI document extraction, or build an offline front end (one customer has built one as a PWA) and budget the sync rules as custom development.
  • Bind the form to the asset, not to a free-text reference. A form that acts on a record can prefill from it and write back to it, which is what makes visit-over-visit comparison possible at all.
  • Paper is a supported input. Where a customer's technicians will not use a phone, extraction from a photo of the completed sheet still lands a structured submission — with per-field confidence and a review step before it counts.
  • Design the recurrence, then the form. Interval, recipient and mail template are builder configuration; getting them right is most of what makes a maintenance programme run itself. Each round can open as a copy of the previous submission, so the technician only confirms what has not changed.
08Blueprint · Agreements

From contact to signed service agreement

This is a pattern that spans industries, and the one that most often gets built twice: the deliverable is a signed legal document whose contents only the customer can supply. A signature is worth little if the details in the document were typed by somebody guessing, so capture and signing have to be one unbroken chain: from a known person, through a form, into the agreement they sign.

Contact→Portal invitation→Sign-up or log in→Form, prefilled→Submission→Signature request→Signed

Worked example: registering a device or vehicle

A provider takes a vehicle or a device under a legal service agreement. The provider knows who the customer is and what the terms say. It does not know the registration plate, the VIN or serial number, the odometer or usage reading, or the condition of the item on the day it is taken on. Those come from the customer, and they have to appear verbatim in the agreement, because they are what defines the item the agreement covers.

StepRuns inBecomes / updates in OdooRelies on
Portal invitationBackendA name and an email address are what's necessary. A wizard (eg by automation rule) does the rest: the invitation, the sign-up or log-in, and the landing on the assigned form.Portal (form) invitation wizard · automation rule
Registration formPortalName and address arrive already filled from the contact. Plate, VIN or serial and other details are captured, and the record mapping creates the fleet.vehicle record from them.Prefill API · record mapping
Condition evidencePortalPhotos and documents kept with the submission, timestamped against a known user.File upload
Signature requestOn submitThe agreement (sign document request) is created and the customer lands on it. It's raised with its placeholders filled from the submission and other records, ready to sign.Odoo Sign · Forms integration
Signed agreementOdoo SignThe executed document filed against the contact and the registered item; the form submission stays as the record of what was asked and answered.Odoo Sign

Design notes

  • Identity first, then capture. The invitation is what makes the chain hold up: the submission is bound to a portal user who logged in, so there is no question later about who supplied the values a signature sits on. A public form cannot make that claim, and the chain costs nothing to build, since a name and an email are the only inputs the wizard needs.
  • Two prefills, in opposite directions. The form is prefilled from the contact record so the customer is not asked what the provider already knows; the agreement is then prefilled from the submission. Nobody re-keys anything, which is where transcription errors get into signed documents.
  • Keep the submission after signing. The signed PDF shows the values but not the questions, the order they were asked in, or the photos taken that day. In a dispute, the submission is the audit trail behind the signature.
  • Registration data outlives the agreement. A plate or a serial identifies the item for every later service visit, so by the §02 assessment it belongs on a record, not only in the submission — map it, and the recurring inspections in §07 can bind to the same asset.
09Adjacent branches

Where the same pack shape travels next

Which other branches the same pack shape fits is better answered by a shape than by a list of industries, because a shape can be held against a branch already in the portfolio. It fits when four things are true at once: capture is regulated and must be evidenced; it recurs against a physical asset or site; the exact questions vary by region, by which subsidy or certification rules apply, and by which version of those rules is current; and the result has to end up as a record, not a PDF in a folder.

Every blueprint above matches it. So do these, starting with the branches closest to those blueprints:

Nearest adjacency
EV charging infrastructure

Site qualification, grid-capacity survey, installation and commissioning, periodic safety inspection.

The same crews, the same customers and the same certificate-driven paperwork as solar, so most of the pack shape carries over unchanged.

Subsidy-driven
Heat pumps & building retrofit

Pre-installation survey, noise and placement declaration, subsidy dossier, commissioning record.

A national subsidy scheme is a form with mandatory evidence attached, and it is rewritten every year or two — churn the form layer absorbs without a deployment.

Emerging
Battery storage & grid services

Safety dossiers, commissioning protocols, grid-operator submissions, periodic checks.

Young enough that the paperwork is still changing shape, which favours a configurable capture layer over a fixed data model.

Pure fit
Inspection & certification bodies

Periodic legal inspections (electrical safety, fire systems, lifting equipment, refrigerant handling) ending in an issued certificate.

Their entire product is a completed form and the document it produces. Portal, reminder rules and PDF generation cover the process almost end to end.

Growth area
ESG & supply-chain reporting

Recurring non-financial data collection from sites, subsidiaries and suppliers.

Multilingual, portal-based, chased on an interval, and landing as records instead of returned spreadsheets. The reporting standards change annually: the same argument as subsidies, at group scale.

Sector variants
Housing, agri-food, water

Condition surveys and tenant intake; farm and food-safety audits; sampling and permit-compliance rounds.

Different words, identical mechanics: a recurring evidenced checklist against an asset, under a standard someone else revises.

Whether that reads as six vertical products or as one delivery capability (a template repository or reference database, a pack format, a mapping convention and a review discipline) pointed at one branch after another is a judgement each partner makes on its own portfolio. Either way, the machinery and the method carry across; the domain knowledge does not, and that is where the real cost of a vertical sits. The saving on a second branch is that the delivery layer does not have to be rebuilt; the forms still have to be written.

10Limits

What the form layer is not

Scoping goes wrong when a capable tool is assumed to be an unlimited one. These are the boundaries to put in the estimate, before they turn up in the retrospective:

  • Odoo 19.0 and later. Odoo 17 and 18 are out of scope. Where a customer fleet is still on an earlier release, this conversation comes after the upgrade.
  • No offline capture out of the box. Forms require a connection, and drafts are saved server-side rather than on the device. For sites without coverage, plan a fallback: the extraction path, or a later desk entry. Nothing in the architecture prevents it, though: offline capture with local storage can be implemented as a PWA on top of Nova Forms. One customer has built this, and Nova Code prototyped the approach earlier.
  • No native mobile app. Forms are responsive web, opened in a browser. That is usually enough for a tablet or phone on site; it is not an app-store deliverable.
  • Not a transaction engine. A form submits once and hands off. Multi-party approval chains, state machines and anything with a deadline that escalates belong in Odoo models and automations — the form starts them, it does not run them.
  • Designs migrate; integration needs review. Form designs and submissions are JSON and carry across Odoo versions. Record mappings, custom API logic and server actions need review on a major upgrade.

What a compliance review will ask about

Two things are worth having ready for a customer's IT or compliance review, because they are unusual enough to be asked about. First, data location and portability: designs and submissions are stored as standard SurveyJS JSON in the customer's own Odoo database, with no external form service, no third-party processor in the submission path, and a documented exit to any SurveyJS-based stack. Second, the public-form posture: for example, the captcha is proof-of-work with no external calls, no cookies and WCAG 2.2 AA behaviour; uploaded images are validated by decoding them rather than by trusting a filename or declared type, with SVG refused outright; and rich text is stored as a validated document tree against an explicit allow-list rather than sanitised HTML.

11First engagement

The decisions in a first engagement

Three decisions a first engagement makes, deliberately or by default. The order below is the one we see most often, not a method to follow.

  1. Where the pack is built. In an owned template repository and/or reference database it is an asset that travels to the next customer; built inside a customer database it stays with that engagement, and the copy that gets maintained is usually the one nearest a deadline. Neither choice is final: what sits in a customer database (form designs, record mappings, field API configuration, server and automated actions, themes and translations) can be exported and reused, so a pack that began as one customer’s work can become the template the next one starts from.
  2. How much of the mapping stays configuration. Record Mapping is maintainable by a consultant, a server action only by a developer, so the line between them sets who can change the pack later. It is a judgement per mapping, and where it falls is best known before the estimate.
  3. How the pack is versioned and released. Committing the pack alongside the vertical module, where there is one, keeps the two in step. Whether a rehearsed import into a clean database is part of the release depends on what the engagement can carry — it is the one step that exercises the pack the way the customer will first meet it.

A demo shows more than words. The introduction video and the screenshots on the Odoo Apps Store, both linked below, give a first impression; a walkthrough demonstrates the capabilities and answers the questions this document cannot.

I recommend working through every consideration and implementation point in this paper together. Take a simple process you have planned, are building or already deliver, and walk it through. It is worth the time.