PhreeLabsStart a Project

Work / 006

WovenLogic

Write the brief once and every asset follows it. WovenLogic builds a campaign’s assets from named facts, freezes what each approval used, and shows exactly what to redo when the brief changes.

Type
Content Production App
Platform
macOS 14 or Later
Built With
Swift, SwiftUI, AppKit
Status
In Development · Version 0.1.0
Role
Founder: product direction, design, and testing
WovenLogic on macOS showing its synthetic sample: the Spring Workshop brief with named facts for workshop name, date, price, and seats, each with its source and the number of assets using it.
Brief and facts · App screenshot of version 0.1.0 · Synthetic sample data, not real records

01 Purpose

WovenLogic holds a campaign’s brief as named facts, such as price, date, offer, and claims, and builds every asset from templates that use those facts.

Intended user: a small business producing its own emails, pages, posts, flyers, and scripts.

02 Problem and Constraints

One campaign turns into many assets. When a fact or a date changes, older versions can stay in circulation.

  • Facts are linked into assets as tokens, not retyped. Text that repeats a fact’s value without its token is flagged.
  • Approving an asset freezes the fact values it used.
  • Approval is refused while a token is missing or a fact has changed since the draft.
  • No publishing, scheduling, or measurement. Placements are recorded by hand, and nothing is sent or uploaded.

03 What Was Built

  • Screens for Campaigns, Brief and Facts, Sources, Assets, the asset editor with versions, approval, and placements, Needs Update, and History and Export.
  • A brief of named facts with their sources and revision history.
  • An asset editor with a preview that fills in the current facts.
  • Change tracking: when the brief changes, every asset that used the changed fact is marked as needing an update, or as out of date if it is already in circulation.
  • Export of approved versions as text files, with a manifest and the brief history, to a folder you choose.
  • A synthetic sample library, kept in its own file and labeled on every screen.

04 Design and Engineering Decisions

  1. 01

    Native, No Web View

    SwiftUI and AppKit in one Swift package, with no third-party packages.

  2. 02

    Facts as Tokens

    One change in the brief must reach every asset that uses it, so facts are typed tokens rather than copied text.

  3. 03

    Approval Matches the Brief

    An approved version must match the current brief, so approval waits until every token resolves and no fact has changed.

  4. 04

    Handoff Without Upload

    Export writes approved versions as .txt files, a manifest.json, and BRIEF-HISTORY.md to a folder you choose.

  5. 05

    Separate From MarketHaven

    Publishing, scheduling, and measurement belong to MarketHaven, so WovenLogic stops at approved assets placed by hand.

05 Architecture

SwiftUI appBrief, Assets, Needs Update, History
RulesTokens, approval checks, change impact
Shared storeAtomic writes, previous version kept, newer files refused
library.jsonYour real data, on this Mac
Export folderApproved text, manifest, brief history
Nothing leaves the Mac on its own. The sample library and the test files are kept apart from your real library.

06 Verified Results

MeasureResultContext
Release buildBuilt with no compile errorsSwift release build, 4 November 2026, on the Mac
Headless self-test15 of 15 passingRules and storage checked on throwaway files, same run
Window interface test16 of 16 passingA real window, every screen, with button presses through the accessibility tree, same run
Normal launchOpened, ran, and quit cleanlyNo real library file was created
Hand click-throughNot yet doneForms were exercised through the same model calls they make, not typed into by a person
WovenLogic’s Needs Update screen in the synthetic sample: an announcement email and a landing page hero flagged because the brief’s price changed from $180 to $195.
Needs update · App screenshot · Synthetic sample data, not real records

07 Third-Party Components

None. WovenLogic is built with Apple’s Swift, SwiftUI, and AppKit, with no third-party packages, no web view, and no network access.

Need Something
Like This?

Tell me what the software should do. Similar problems are a good place to start. Native tools built around your own rules, like this one, are part of Custom Software.

Next Project
FixationNook