Recued
Menu
← Back to recipes

Record an agreement

by recued-core v2 7 views

Use “Record an agreement” in Recued. Record a contract you are inside, with the notice you owe — the pack derives the date you actually have to decide by.

Complete workflow

Agreement Watch 4 pinned recipes

Use Agreement Watch in Recued for contracts, renewals, notice period, and supplier. It includes 10 built-in actions and 3 ready-to-run workflows. Actions that change data use Recued's approval controls.

You are viewing one recipe in this workflow. Installing it opens the complete pack so its other recipes and background automations arrive together.

Record an agreement
This recipe

Use “Record an agreement” in Recued. Record a contract you are inside, with the notice you owe — the pack derives the date you actually have to decide by.

pack:agreement-watchcontractsrenewalsrecords
by recued-core pinned v2

Use “What needs a decision” in Recued. Active agreements ordered by the date you have to decide by, split into missed, due within the window, and later.

pack:agreement-watchcontractsrenewalsrecords
by recued-core pinned v2

Use “Record what you decided” in Recued. Renew, cancel or renegotiate. Renewing rolls the renewal date forward and recomputes the next decision deadline from it.

pack:agreement-watchcontractsrenewalsrecords
by recued-core pinned v2
View pack details, dependencies, and permissions →

Recording one

What it is, who with, what it costs a term, when it renews, and how much notice you owe them.

⛔⛔ THE DATE THAT MATTERS IS NOT THE RENEWAL DATE. It is renews_on minus the notice you owe, and this pack stores it as decide_by so it can be sorted and warned on. A deadline shown EARLIER than the truth costs you nothing — you decide with days to spare. A deadline shown LATER means you were told you had time when you did not, and you are in for another term. The two errors are not symmetric, so the arithmetic is pinned by a test and decide_by is recomputed on every write that touches either input.

⛔⛔ CALENDAR DATES HERE ARE UTC DATES, AND THEY NEVER GO THROUGH date_format. A renewal date a supplier gave you is a calendar date with no timezone; date_format renders an INSTANT in the server's local time, so a UTC-midnight date formatted west of Greenwich comes back a day earlier — verified: date_format('2026-12-31') returns 2026-12-30 at UTC−7. Every date in this pack is taken as the part before the T of an ISO timestamp, which no timezone can move. ⚠ The consequence is that “today” is the UTC day, so it rolls over during the afternoon for users well west of Greenwich. Against a notice period measured in weeks that is immaterial; against a same-day deadline it would not be, and this pack does not have those.

Cost is a plain number, not a fixed-point decimal. It is summed for a headline figure but is never a balance and never compared for equality, so the precision a decimal buys would cost every recipe the fixed-point dance for nothing. Money is not automatically a decimal — stored amounts that accumulate or are compared are.

It reminds you of nothing. Nothing is scheduled, nothing is emailed. Run list-agreements to see what is due.

How it works 30 steps

Inspect the data fetches, transforms, gates, and output this recipe runs.

Process (30 steps)
label trim
Trim whitespace from setting label
counterparty trim
Trim whitespace from setting counterparty
contact_raw trim
Trim whitespace from setting counterparty contact
counterparty_contact lowercase
Convert contact raw to lowercase
currency_raw trim
Trim whitespace from setting currency
currency uppercase
Convert currency raw to uppercase
term trim
Trim whitespace from setting term
reference trim
Trim whitespace from setting reference
note trim
Trim whitespace from setting note
renews_in trim
Trim whitespace from setting renews on
renews_len string_length
Apply string_length
notice_ok compare
Check if setting notice days is at least 0
renews_seg split
Split renews in into parts
renews_seg_count count
Count items in renews seg
renews_year_len string_length
Apply string_length
inputs_valid all
Check if all conditions are true
inputs_guard guard
Stop if inputs valid equals
renews_on_parts split
Split renews in into parts
renews_on default
Apply default
notice_negative math
Calculate setting notice days times -1
decide_iso date_add
Add notice negative days to
decide_by_parts split
Split decide iso into parts
decide_by default
Apply default
started_in trim
Trim whitespace from setting started on
now_iso date_add
Add 0 seconds to
today_parts split
Split now iso into parts
today default
Apply default
started_on default
Apply default
create ?
card to_summary
Format results as a summary card
Settings 12 configurable

Configurable at install. Defaults shown — change them anytime in Recued.

note setting =
term setting = year
label setting = [object Object]
currency setting = GBP
reference setting =
renews on setting =
started on setting =
auto renews setting = true
notice days setting = 30
counterparty setting = [object Object]
cost per term setting = 0
counterparty contact setting =

About

Tags

pack:agreement-watchcontractsrenewalsrecordsv2

Details

30 steps 12 configurable settings recipe_id: add-agreement