Recued
Menu
← Back to recipes

Record an agreement

by recued-core v3 42 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 5 pinned recipes

Use Agreement Watch in Recued for contracts, renewals, notice period, and supplier. It includes 10 built-in actions and 4 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 v3

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 v3

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 v3

Use “One agreement” in Recued. Open one agreement from the list that names it, and read everything recorded about that agreement on one page.

pack:agreement-watchagreementdetailnavigation
by recued-core pinned v1
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_local date_format
Format as a date
■ today default
Apply default
■ started_on default
Apply default
◆ create recued-core.agreement-watch.agreement.create
Create agreement on agreement watch
■ card to_summary
Format results as a summary card
▼
Output
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 =

Uses (1 operation)

Pack operation Create agreement on agreement watch recued-core.agreement-watch.agreement.create

Trust & control

What installing this recipe would let it do. Recued grants these permissions at install — review them there before approving.

What it's allowed to do

Write Pack Agreement Watch external change
Write: agreement.create · No approval

About

Tags

pack:agreement-watchcontractsrenewalsrecordsv2

Details

30 steps 12 configurable settings recipe_id: add-agreement