# Use Case: ELV Recycling

### Overview

End-of-Life Vehicle (ELV) recycling is a critical area in sustainability, presenting complex challenges for managing data, approvals, and certifications. The DOVU Template Language provides a lightweight yet powerful way to address these challenges by modeling workflows that integrate seamlessly with third-party systems like the **Hedera Hashgraph Guardian**.

In this use case, we illustrate how the template language simplifies the ELV recycling process by defining roles, actions, and approvals while ensuring traceability and interoperability.

Find out more by reading our [case study on DOVU.earth.](https://dovu.earth/en/dovuos/)

## An example configuration

Below, you can see the configuration that we used to model data or more specifically model the actual process for managing the entire project.

One of the exciting features about this configuration is that it is data and schema agnostic, so that any process that uses three stages of data ingestion, followed by approvals can be consumed by simply duplicating this configuration for a given use case.

```clojure
;; EXPERIMENTAL (DOVU OS) Configuration Language v0.0.2
;;
;; Minimise cost for getting credits to market through a simple and repeatable template process.
;;
;; Encapsulate the overarching process of how credits are created and managed, use this process to branch
;; for specific methodologies.
;;
;; This is an example template that would encapsulate policies for a particular registries
;; The goal here would be to describe how a policy process can be navigated where the schema don't matter
[
    {
        :role :supplier
        :tag :create_ecological_project
        :type :data
        :key :create-project
    }
    {
        :role :owner
        :require {
           :status :waiting
        }
        :filter {
            :tag :supplier_grid_filter
            :key :uuid
        }
        :source_tag :supplier_grid
        :tag :approve_supplier_btn
        :options [
            :approve.template
            :reject.template
        ]
        :type :approval
        :key :approve-project
    }
    {
        :role :supplier
        :require {
            :status :approved
        }
        :tag :create_site_form
        :source_tag :create_site_form
        :type :data
        :key :register-site
    }
    {
        :role :owner
        :require {
           :status :waiting
        }
        :filter {
            :tag :site_grid_owner_filter
            :key :uuid
        }
        :source_tag :approve_sites_grid
        :tag :approve_site_button
        :options [
            :approve.template
            :reject.template
        ]
        :type :approval
        :key :approve-site
    }
    {
        :role :supplier
        :require {
           :status :approved
        }
        :tag :create_claim_request_form
        :filter {
            :tag :site_grid_supplier_filter
            :key :uuid
        }
        :source_tag :sites_grid
        :type :data
        :key :create-claim
    }
    {
        :role :verifier
        :require {
           :status :waiting
        }
        :filter {
            :tag :claim_request_verifier_filter
            :key :uuid
        }
        :source_tag "claim_requests_grid(verifier)"
        :tag :approve_claim_requests_btn
        :options [
            :approve.template
            :reject.template
        ]
        :type :approval
        :key :approve-claim
        :hooks [
            {
                :action :audit_trail
                :async {
                     :wait 5 ;; seconds
                     :retries 10
                 }
                :field :uuid
            }
            {
                :action :asset_provenance
                :async {
                    :wait 30
                    :retries 25
                }
                :field :uuid
            }
        ]
    }
]

```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.dovu.earth/template-language/use-case-elv-recycling.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
