@@ -26,6 +26,19 @@ Implications:
|
|||||||
5. **Outcome** - the concrete result (eliminated ETL flows, reduced OpEx, full lineage).
|
5. **Outcome** - the concrete result (eliminated ETL flows, reduced OpEx, full lineage).
|
||||||
6. **CTA** - single call to action, typically "book a Discovery Call - link in the comments below 👇". LinkedIn deprioritises posts with external links, so put URLs in the first comment, not the body.
|
6. **CTA** - single call to action, typically "book a Discovery Call - link in the comments below 👇". LinkedIn deprioritises posts with external links, so put URLs in the first comment, not the body.
|
||||||
|
|
||||||
|
## Formatting capabilities and tricks
|
||||||
|
|
||||||
|
LinkedIn posts are plain text - there is no rich-text editor, so **no markdown**. Bold, italics and other styling you see in posts are faked with Unicode characters:
|
||||||
|
|
||||||
|
- **Faux bold / italic / monospace via Unicode Mathematical Alphanumeric Symbols** - e.g. `𝐛𝐨𝐥𝐝` (U+1D401+), `𝑖𝑡𝑎𝑙𝑖𝑐` (U+1D456+), `𝚖𝚘𝚗𝚘𝚜𝚙𝚊𝚌𝚎` (U+1D670+). Tools like YayText / LingoJam generate these. **Use with extreme restraint:** they break screen readers and accessibility tools, are not searchable (LinkedIn search treats them as different characters, so keywords in faux-bold won't be found), and can render as boxes on some devices. Our default: avoid them; use CAPS sparingly for emphasis instead. If a hook or single key term really needs to pop, one short faux-bold phrase is the acceptable ceiling.
|
||||||
|
- **Bullets** - no native lists; use literal characters: `-`, `•`, `✓`, `→`, numbered `1.` etc. Each on its own line.
|
||||||
|
- **Whitespace** - blank lines survive and are the primary layout tool; use them aggressively (1-3 sentence paragraphs). LinkedIn collapses multiple blank lines beyond one, so a single blank line is the unit.
|
||||||
|
- **Emoji** - work natively and render fine; use sparingly and professionally (👇 for the CTA, occasional ✅). Avoid emoji walls.
|
||||||
|
- **Links** - URLs in the body get auto-linked but LinkedIn deprioritises posts containing external links; put the URL in the first comment and point to it ("link in the comments 👇"). Tag people/companies with `@mention` (native, drives reach) where relevant.
|
||||||
|
- **Truncation** - only the first ~3 lines (~210 characters on mobile) show before "…see more". The hook must earn the click; never waste the first line on a greeting or context-setting.
|
||||||
|
- **Special characters** - Unicode symbols like → ✅ ⏱ work fine and can structure a post; avoid exotic characters that some fonts render as tofu (□).
|
||||||
|
- **No nested structure** - no headings, tables, quotes or code blocks. Simulated section breaks (a line of `—` or just blank space) are the only separators.
|
||||||
|
|
||||||
## Formatting rules
|
## Formatting rules
|
||||||
|
|
||||||
- **Hashtags are written as `#tag`** (e.g. `#endusercomputing`, `#excel`, `#datagovernance`, `#sas`, `#masterdata`). Never write `hashtag#tag` - that is an artefact of copy-pasting from LinkedIn's editor UI and must be stripped/normalised to `#tag` before posting or republishing.
|
- **Hashtags are written as `#tag`** (e.g. `#endusercomputing`, `#excel`, `#datagovernance`, `#sas`, `#masterdata`). Never write `hashtag#tag` - that is an artefact of copy-pasting from LinkedIn's editor UI and must be stripped/normalised to `#tag` before posting or republishing.
|
||||||
@@ -39,6 +52,7 @@ Implications:
|
|||||||
## Media
|
## Media
|
||||||
|
|
||||||
- Always attach an image - posts with images get substantially more reach. Use the same image as the feed post's `previewImg` where one exists.
|
- Always attach an image - posts with images get substantially more reach. Use the same image as the feed post's `previewImg` where one exists.
|
||||||
|
- **Optimum image size: 1200 x 627 px (1.91:1 landscape)** - LinkedIn's recommended size for feed images and link previews, displays uncropped on desktop and mobile. Square (1080 x 1080) and portrait (1080 x 1350, 4:5) also work and take up more feed real estate on mobile; avoid narrow/tall images beyond 4:5 as they get cropped. Keep key content away from the edges.
|
||||||
- Product screenshots work well for feature announcements; flat branded illustrations for thought-leadership posts.
|
- Product screenshots work well for feature announcements; flat branded illustrations for thought-leadership posts.
|
||||||
|
|
||||||
## Relationship to the site Feed
|
## Relationship to the site Feed
|
||||||
|
|||||||
@@ -0,0 +1,102 @@
|
|||||||
|
# Data Controller - Sales & Positioning Playbook
|
||||||
|
|
||||||
|
Reference for writing marketing, blog, feed, and sales copy. Covers pain points, target audience, value proposition, packaging, sales motion, and objection handling. Synthesised from the marketing site (`datacontroller.io`), product docs (`docs.datacontroller.io`), and product glossary (`dc/CONTEXT.md`).
|
||||||
|
|
||||||
|
## The product in one paragraph
|
||||||
|
|
||||||
|
Data Controller for SAS® is a SAS-Powered web application that lets business users safely add, modify and delete data in SAS datasets and databases. Every change goes through an edit-stage-approve workflow: edits are staged, validated at the point of entry, reviewed as a diff (new / changed / deleted rows), approved by a data owner, then loaded - with a full audit trail of who changed what, when, and why. It runs on SAS Viya, SAS 9 EBI and SASjs Server, entirely on-prem / offline (no external network calls). It can write to any database reachable via a SAS libname engine.
|
||||||
|
|
||||||
|
## The problem (pain points)
|
||||||
|
|
||||||
|
SAS users routinely need to load or fix data manually - steering tables, parameters, mappings, corrections, regulatory adjustments. The status-quo approaches all hurt:
|
||||||
|
|
||||||
|
- **Network drive + batch job** - drop a CSV/Excel on a share, wait for a nightly job. Every new input means a new job to build, test, document and deploy. File-format drift breaks batches at the worst times (month end).
|
||||||
|
- **Direct SAS code / Enterprise Guide edits** - requires granting end users MODIFY access to sensitive data locations. High risk of locking datasets, no audit trail, no approval.
|
||||||
|
- **Asking a DBA / IT to run a script** - change requests, queues, delays, blame games between business and IT.
|
||||||
|
- **Bespoke in-house capture apps** - years of development and testing, and a "black box" nobody wants to maintain.
|
||||||
|
- **EUC sprawl** - uncontrolled Excel/VBA applications on network shares: opaque access, no version control, no lineage, audit failure. Regulators care (SOX, BCBS, national DQ circulars). Fines are real: Morgan Stanley $5m (2020), Citibank $400m (2020), DTCC £350k (2021).
|
||||||
|
|
||||||
|
The five measurable cost areas (see blog post "ROI and Payback"):
|
||||||
|
|
||||||
|
1. **Development time** - reduced to zero (zero-code, config-driven; the grid is generated dynamically from table metadata).
|
||||||
|
2. **Deployment time** - reduced to zero (config change in the UI, not a code release).
|
||||||
|
3. **Batch incidents** - invalid data cannot be submitted (validated on arrival).
|
||||||
|
4. **Data quality issues** - schema-based automatic rules plus configurable frontend validations and backend hook scripts.
|
||||||
|
5. **Compliance costs** - single source of truth, full audit trail, Excel originals retained with each submission; no reperformed audits of unsecured EUC code.
|
||||||
|
|
||||||
|
## Target audience
|
||||||
|
|
||||||
|
**Verticals:** regulated industries with large SAS estates - Banking, Insurance, Pharma / Life Sciences. Typical use cases: regulatory reporting adjustments, actuarial / bitemporal reporting (Allianz), DWH steering-table management (AFA försäkring), data catalogs and lineage (Siemens Healthineers), BICC / BI competency centres (DER Touristik).
|
||||||
|
|
||||||
|
**Personas:**
|
||||||
|
|
||||||
|
- **Economic buyer:** Head of BI / Data Platform owner, CDO, Head of Regulatory Reporting. Cares about OpEx, risk reduction, audit outcomes, compliance.
|
||||||
|
- **Champion:** SAS platform owner / technical manager drowning in ad-hoc data-load requests.
|
||||||
|
- **End users:** business users (Editors) submitting data; data owners (Approvers) signing off; Auditors reviewing history. Roles: Viewer, Editor, Approver, Auditor, Administrator.
|
||||||
|
- **Gatekeepers:** IT security (satisfied by: on-prem, no external calls, uses existing SASLogon auth, row & column level security, end users never get direct write access to target tables).
|
||||||
|
|
||||||
|
**Audience tone (from the LinkedIn guide):** assume competence - don't explain ETL or data warehouses. Speak to their pains: reporting deadlines, audit trails, hand-cranked ETL, EUC risk, OpEx. Professional and direct; no hype.
|
||||||
|
|
||||||
|
## Value proposition / key messages
|
||||||
|
|
||||||
|
- **Zero code** - adding a new editable table is configuration, done in the tool itself. Column types, lengths, dropdowns are derived from the target table at runtime.
|
||||||
|
- **Review / approve workflow** - nothing is applied without 1+ approvals; approvers see only the diff.
|
||||||
|
- **Full audit history** - who, when, why, what; original uploaded files retained.
|
||||||
|
- **Secure** - existing SAS authentication; RLS and CLS enforced server-side; no end-user write access to targets.
|
||||||
|
- **Real-time** - intra-day concurrent updates via lock table and queuing; loads abort if the table changed since the diff.
|
||||||
|
- **Any database** - via SAS libname engines; supports retained keys, composite keys, SCD2 (TXTEMPORAL) and full BITEMPORAL history.
|
||||||
|
- **Validation at point of entry** - HARDREGEX/SOFTREGEX, dropdowns, min/max, NOT NULL, plus hook scripts to run arbitrary SAS programs before/after edit or approve.
|
||||||
|
- **Saves vs alternatives** - years of dev/test vs bespoke build; no black box.
|
||||||
|
|
||||||
|
## Packaging & pricing
|
||||||
|
|
||||||
|
Four packages, all with **unlimited users** (since v6), all flavours of SAS (Viya / EBI / SASjs Server):
|
||||||
|
|
||||||
|
| Package | Price | Shape |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| Community | FREE | 35 tables/library, 15 view rows, 5 upload rows, 1 viewbox, best-endeavours support |
|
||||||
|
| Bronze | 12k EUR pa | 1 production env, 100 tables/library, 100 rows, 8hr SLA, SASjs support |
|
||||||
|
| Silver | 21k EUR pa | 2 production envs, unlimited tables/rows, 6 viewboxes, in-house SAS app support |
|
||||||
|
| Gold | Contact us | Unlimited envs, 4hr SLA, developer + consulting days, **perpetual licence option** |
|
||||||
|
|
||||||
|
- Add-on: Developer Days (new product features) at 600 EUR/day for all plans; consulting rates at sasapps.io/pricing.
|
||||||
|
- Pricing goals: Transparent, Simple, Fair. Full public price list on the site - a differentiator; use it.
|
||||||
|
- Support: tickets via support.4gl.io or support@datacontroller.io, severity levels 1-4, SLAs per package, escalation by video call between managers.
|
||||||
|
|
||||||
|
## Sales motion / execution strategy
|
||||||
|
|
||||||
|
1. **Land with the free tier.** The Community package and the evaluation SPK (single-file import, ~minutes to install on SAS 9) make trying the product nearly frictionless. Since v6.1 the source is also available for anyone to build and evaluate. Push evaluation hard - it is the top of funnel. The eval version is deliberately not production-grade (BASE-engine config tables, table-lock risk, unlicensed interface) - the natural upgrade path is built in.
|
||||||
|
2. **Discovery call as the primary CTA.** Marketing (LinkedIn, blog, feed) always ends with "book a Discovery Call". Content strategy: hook with the pain (EUC risk, ETL sprawl, audit pain), not the product.
|
||||||
|
3. **Expand from one use case.** Typical wedge: steering tables / mapping tables / parameter tables in a reporting team. Expansion levers: more tables, more environments, more business units, API-driven submissions (API Explorer since v6).
|
||||||
|
4. **Sell the business case, not features.** Use the ROI/Payback blog post (five cost areas + calculator) so the champion can build an internal business case. Quantify dev hours, batch incidents, audit effort.
|
||||||
|
5. **Partner channel.** Resellers exist (e.g. SaasNow in the Netherlands); partner-purchased deals may have partner first-line support.
|
||||||
|
6. **Roadmap as a sales tool.** The public roadmap is customer-driven - "features requested by customers get built" - and Gold includes Developer Days. Position the product as one that listens.
|
||||||
|
7. **Proof points.** Named customer stories (AFA, Allianz, Siemens Healthineers, DER Touristik), SAS 2021 Excellence in Innovation Award finalist.
|
||||||
|
|
||||||
|
## Getting it installed (technical ease-of-adoption)
|
||||||
|
|
||||||
|
- Deploys entirely inside the customer's existing SAS platform - no new infrastructure, no external assets or network calls at runtime (passes strict security reviews).
|
||||||
|
- SAS 9 EBI: SPK import via SAS Management Console / DI Studio; run the configurator stored process; done. Requirements documented at docs.datacontroller.io (`dci-requirements`, `dci-deploysas9`, `dci-stpinstance`).
|
||||||
|
- Viya and SASjs Server deployments also documented (`deploy-viya`).
|
||||||
|
- Instillation/deployment support is in-scope for all paid support plans.
|
||||||
|
|
||||||
|
## Licensing
|
||||||
|
|
||||||
|
- Annual subscription per package (Bronze/Silver/Gold); perpetual licence available at Gold.
|
||||||
|
- Community tier is free; the evaluation build is governed by an evaluation agreement (Bowe IO Ltd) - evaluation/non-production use only, no redistribution, no reverse engineering, "as is".
|
||||||
|
- Embedded Handsontable requires a licence key for commercial use - handled as part of paid deployments.
|
||||||
|
|
||||||
|
## Objection handling (from the FAQ)
|
||||||
|
|
||||||
|
- **"Can it change our data model?"** - No; it updates data, not structure. Positioned as a safety feature.
|
||||||
|
- **"Our preferred database?"** - Yes, any engine SAS can reach (incl. Snowflake, Redshift support announcements).
|
||||||
|
- **"Retained / surrogate keys?"** - Supported, along with composite primary keys, SCD2 and bitemporal loads.
|
||||||
|
- **"Security review will block it."** - On-prem, offline, existing SASLogon, RLS/CLS, no direct target access, no metadata modification after install.
|
||||||
|
- **"We could build this."** - Yes, at the cost of years of dev/test plus an unmaintainable black box; DC is proven, supported, documented, and source-available for evaluation.
|
||||||
|
|
||||||
|
## Copy rules when writing sales-adjacent content
|
||||||
|
|
||||||
|
- Regular dashes, not em-dashes. No hard-wrapped Markdown.
|
||||||
|
- Use product glossary terms exactly (submission, staging, target table, load type, etc. - see `dc/CONTEXT.md`).
|
||||||
|
- ® on first mention of SAS®.
|
||||||
|
- CTA conventions per channel: site content may link directly; LinkedIn puts links in the first comment (see `.agents/docs/linkedin.md`).
|
||||||
@@ -47,10 +47,16 @@ Front matter fields:
|
|||||||
| `author` | Yes | Displayed under the post title. |
|
| `author` | Yes | Displayed under the post title. |
|
||||||
| `authorLink` | No | If set, the author name links out (e.g. to a LinkedIn profile). |
|
| `authorLink` | No | If set, the author name links out (e.g. to a LinkedIn profile). |
|
||||||
| `tags` | Yes | One or more tags. Drives the sidebar category list and RSS category. |
|
| `tags` | Yes | One or more tags. Drives the sidebar category list and RSS category. |
|
||||||
| `previewImg` | No | Relative path to an image in the same folder (e.g. `'./cover.png'`). Feed posts usually omit this since they're short-form. |
|
| `previewImg` | No | Relative path to an image in the same folder (e.g. `'./cover.png'`). The template renders this image on the post page automatically - do NOT also embed the same image in the markdown body. |
|
||||||
|
|
||||||
Use regular dashes (`-`) in content, not em-dashes.
|
Use regular dashes (`-`) in content, not em-dashes.
|
||||||
|
|
||||||
|
If the post is adapted from source copy the user provided (e.g. a LinkedIn post), paste the original text into an HTML comment (verbatim, except strip the literal `hashtag` prefix that LinkedIn sometimes adds before `#tags`, e.g. `hashtag#sas` -> `#sas`) (`<!-- ... -->`) at the bottom of the markdown file, labelled (e.g. `Source LinkedIn post:`). This preserves the original - including hashtags and checkmarks that get dropped/adapted in the site version - for future reuse.
|
||||||
|
|
||||||
|
When editing an existing feed post that has a `Source LinkedIn post:` comment, update the LinkedIn version too, so the overall message stays consistent (same points, same claims, same ordering of any lists). Wording does not need to be identical, and formatting will differ: the article uses Markdown, while LinkedIn is plain text with `✓`-style bullets, hashtags, and a comment-based CTA (see `.agents/docs/linkedin.md`).
|
||||||
|
|
||||||
|
Likewise, if an image was generated for the post (e.g. the `previewImg`), record the full image-generation prompt in the same HTML comment block, labelled (e.g. `Image prompt:`), so it can be tweaked and regenerated later.
|
||||||
|
|
||||||
### 3. Add images (optional)
|
### 3. Add images (optional)
|
||||||
|
|
||||||
If you set `previewImg` or reference images in the body, place the image files in the same post directory and reference them with a relative path.
|
If you set `previewImg` or reference images in the body, place the image files in the same post directory and reference them with a relative path.
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ When writing marketing/blog/feed copy about a feature, treat `docs.datacontrolle
|
|||||||
All agent-facing material lives under `.agents/`:
|
All agent-facing material lives under `.agents/`:
|
||||||
|
|
||||||
- `.agents/skills/` - pi-discovered skills (e.g. `add-feed-post`).
|
- `.agents/skills/` - pi-discovered skills (e.g. `add-feed-post`).
|
||||||
- `.agents/docs/` - reference docs consumed by skills and these instructions.
|
- `.agents/docs/` - reference docs consumed by skills and these instructions. Notably `sales.md` (product positioning, pain points, audience, pricing and sales motion) - consult it when writing marketing, blog, feed or sales copy.
|
||||||
|
|
||||||
### Issue tracker
|
### Issue tracker
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,90 @@
|
|||||||
|
---
|
||||||
|
title: 'Data Controller for SAS® - Use Cases and Features'
|
||||||
|
description: A rundown of Data Controller use cases and features - from secure data capture and approval workflows to SCD2 load routines, validation rules, and data lineage.
|
||||||
|
date: '2026-08-12 09:00:00'
|
||||||
|
author: 'Data Controller'
|
||||||
|
authorLink: https://www.linkedin.com/showcase/data_controller
|
||||||
|
tags:
|
||||||
|
- Announcements
|
||||||
|
previewImg: './usecases.jpeg'
|
||||||
|
---
|
||||||
|
|
||||||
|
# Data Controller for SAS® - Use Cases and Features
|
||||||
|
|
||||||
|
What can you actually *do* with Data Controller? Here's the rundown:
|
||||||
|
|
||||||
|
- Data viewer with search, filter, and URL links - without table locks
|
||||||
|
- Secure data (stop end-user write access to production tables)
|
||||||
|
- Configure inputs in seconds (vs days or weeks for ETL jobs)
|
||||||
|
- Preconfigured load routines including SCD2 and Bitemporal
|
||||||
|
- Avoid exposing sensitive data in unsecured staging areas
|
||||||
|
- Enable SAS workflows (trigger a SAS job on data change)
|
||||||
|
- Prevent spreadsheet changes from halting batch flows
|
||||||
|
- Email alerts when data is changed / about to change
|
||||||
|
- Audit manual overrides on regulatory reporting data
|
||||||
|
- Four-eyes (or more) approval for all data changes
|
||||||
|
- View and amend formats in SAS format catalogs
|
||||||
|
- Export DDL in SAS, TSQL or PGSQL format
|
||||||
|
- Explore SAS 9 metadata and data lineage
|
||||||
|
- Work with special SAS missing numerics
|
||||||
|
- Upload password-protected Excel files
|
||||||
|
- Upload directly from CSV or Excel
|
||||||
|
- Composite / retained key support
|
||||||
|
- Enforce data quality at source
|
||||||
|
- Column and Row Level Security
|
||||||
|
- Advanced validation rules
|
||||||
|
|
||||||
|
Our software is used and trusted (in production) by:
|
||||||
|
|
||||||
|
- Governments
|
||||||
|
- Insurers
|
||||||
|
- Pharma
|
||||||
|
- Banks
|
||||||
|
|
||||||
|
Plus various other industry sectors - references available.
|
||||||
|
|
||||||
|
Would you like to kick the tyres? [Get in touch](/contact) for details.
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Source LinkedIn post:
|
||||||
|
|
||||||
|
Data Controller for SAS® Use Cases and Features:
|
||||||
|
|
||||||
|
✓ Data viewer with search, filter, and URL links - without table locks
|
||||||
|
✓ Secure data (stop end-user write access to production tables)
|
||||||
|
✓ Configure inputs in seconds (vs days or weeks for ETL jobs)
|
||||||
|
✓ Preconfigured load routines including SCD2 and Bitemporal
|
||||||
|
✓ Avoid exposing sensitive data in unsecured staging areas
|
||||||
|
✓ Enable SAS workflows (trigger a SAS job on data change)
|
||||||
|
✓ Prevent spreadsheet changes from halting batch flows
|
||||||
|
✓ Email alerts when data is changed / about to change
|
||||||
|
✓ Audit manual overrides on regulatory reporting data
|
||||||
|
✓ Four-eyes (or more) approval for all data changes
|
||||||
|
✓ View and amend formats in SAS format catalogs
|
||||||
|
✓ Export DDL in SAS, TSQL or PGSQL format
|
||||||
|
✓ Explore SAS 9 metadata and data lineage
|
||||||
|
✓ Work with special SAS missing numerics
|
||||||
|
✓ Upload password-protected Excel files
|
||||||
|
✓ Upload directly from CSV or Excel
|
||||||
|
✓ Composite / retained key support
|
||||||
|
✓ Enforce data quality at source
|
||||||
|
✓ Column and Row Level Security
|
||||||
|
✓ Advanced validation rules
|
||||||
|
|
||||||
|
Our software is used and trusted (in production) by:
|
||||||
|
|
||||||
|
- Governments
|
||||||
|
- Insurers
|
||||||
|
- Pharma
|
||||||
|
- Banks
|
||||||
|
|
||||||
|
Plus various other industry sectors - references available.
|
||||||
|
|
||||||
|
Would you like to kick the tires? DM for details.
|
||||||
|
|
||||||
|
#sas #sasviya #dataquality #datacapture
|
||||||
|
|
||||||
|
Image prompt:
|
||||||
|
|
||||||
|
Flat vector illustration, dark slate blue background (#314351), wide 1.91:1 banner. A clean modern data dashboard interface floating in the centre showing a data grid/table with a search bar and filter icons. Around it, a neat ring of small white and light-grey icons representing governance features: a padlock (security), a magnifying glass over rows (audit), two checkmarks side by side (4-eyes approval), an envelope (email alerts), an Excel/spreadsheet icon with an upward arrow (upload), a branching flow diagram (workflow/lineage), and a shield with a tick (data quality). Thin connecting lines link the icons to the central dashboard, suggesting control and flow. Minimal, professional, corporate SaaS style; subtle depth with soft shadows; accent colour a muted red-orange (#d3531a) used sparingly on one or two icons. No text, no words, no letters. High contrast, crisp edges, suitable as a LinkedIn post image.
|
||||||
|
-->
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 353 KiB |
Reference in New Issue
Block a user