Starter
Brands starting a steady short-form presence
$1,500/mo
- 8 short clips a month
- From a half-day shoot or your own footage
- Captions, color grade and a cut for each platform
- Posted to 2 platforms
- Monthly metrics report
Services / Eight chapters
Architecture, AI, security, infrastructure and the store that pays for it. One team owns it end to end, and every chapter below shows the work, not a list.
01 / Architecture & integration
We design how your store, CRM, email, analytics and books fit together, then build the connections so data moves once and lands right.
Front of house Sources · signals
Back office Systems of record
8 systems · 1 bus · 3 routes Vendor names show the pattern · ILLUSTRATIVE DATA
POST /webhooks/orders-create 200 · 182 ms
{
"id": 5124703918,
"name": "#1042",
"email": "[email protected]",
"created_at": "2026-10-25T14:02:11Z",
"currency": "USD",
"subtotal_price": "64.00",
"total_tax": "5.12",
"total_price": "69.12",
"line_items": [
{
"sku": "TEE-BLK-M",
"quantity": 2,
"price": "32.00"
}
]
} Fan-out · 6 deliveries 0 failed
Typical stack · events, payload and counts are ILLUSTRATIVE DATA
Who it is for Teams whose tools do not talk to each other
Includes
02 / AI & operations
Assistants and agent workflows wired into the tools you already use. Nothing leaves the building until a person approves it, and every job runs on a project board your team can see.
No tracking update since Saturday. If it's lost, I'd like a refund.
#1942 · 2 items · $120.00 paid · shipped Oct 21
In transit · last scan 3 days ago · new estimate Thursday
#1942 paid $120, shipped Oct 21. In transit, new estimate Thursday.
In the Northline voice, with live tracking. Past orders set the tone.
Reply drafted in the Northline voice. 6 of 6 checks passed.
Refund $120 blocked · over the $50 limit · sent to a person
The reply and the refund request wait in Review. Nothing goes out yet.
The reply waits in Review. Nothing goes out until a person says so.
The support lead edited one line, then approved the reply.
The support lead edited one line and approved it. Sent 7 min 38 s after it came in.
Reply out from support. The run log is saved to the task.
8 STEPS · 1 GATE · 1 STOP · 5 TOOLS 7 MIN 38 S, INBOX TO SENT
Approval before anything leaves
Emails, refunds and price changes wait for a person.
Least-privilege keys
One least-privilege key per tool
One scoped key per tool, read-only by default.
Every action logged and replayable
Each step and tool call is kept, so any run replays.
Data stays in your accounts
Your accounts, your keys. If we part ways, it all stays.
Changes tested before they ship
Model and prompt changes tested first
New models and prompts run against saved cases first.
Intake
In progress
Review
Done
Agent filedPerson filedPeople move every card
Set up in ClickUp, Asana, Monday or Basecamp.
Audit
$1,500
1 to 2 weeks, credited toward a build.
Build
from $4,500
One or two workflows wired in, with approvals.
Ongoing
from $1,500/mo
Monitoring, tuning and new workflows.
Model usage and tool seats billed at cost, on your accounts.
CONCEPT BRAND · RUN, TIMES, AMOUNTS AND BOARD ARE ILLUSTRATIVE · NO CLIENT SYSTEMS SHOWN
Who it is for Teams drowning in repeat work that still needs a person to sign off
Includes
Typical fits
03 / Security & care
Assessments, hardening and incident response. Every change is tested on a private copy first, then shipped, then checked on the live site.
4 layers · 9 contacts Stopped 3 at L1 · 1 at L2
| ID | SEV | FINDING | HOST | STATUS |
|---|---|---|---|---|
| F-01 | CRITICAL | Old plugin runs attacker code | web-01 | PATCHED |
| F-02 | HIGH | Admin login on the open web | edge | CLOSED |
| F-03 | HIGH | Shared admin login, no MFA | web-01 | CLOSED |
| F-04 | MED | Backups never restore-tested | storage | VERIFIED |
| F-05 | LOW | Debug log open to visitors | staging | WATCHING |
Posture, events and findings are ILLUSTRATIVE DATA · no client systems shown
01 / Scan
We look before we touch anything. We find what is there and what is at risk.
02 / Stage
Every change is tested on a private copy first, so your live site stays safe.
03 / Patch
Once it passes, we ship the change to your live site.
04 / Verify
Then we check the live site to make sure it works.
Who it is for Any business that wants to find weak spots before someone else does
Includes
04 / IT & infrastructure
Servers, networks, backups and access. Every service has a name, admin stays off the public internet, and restores get tested, not assumed.
PRIVATE MESH · NO PUBLIC ADMIN PORTS
8 devices · WireGuard Public web · :443 only Keys rotate · 90 d
ILLUSTRATIVE ESTATE · GENERIC DEVICE NAMES · NOT A CLIENT NETWORK
Who it is for Businesses that need their servers, network and backups owned by someone
Includes
05 / E-commerce management
The same playbook I designed, built and shipped for a multi-million-dollar direct-to-consumer store, shown on a concept brand.
CONCEPT BRAND · NORTHLINE IS NOT A CLIENT
Hydrate
Rated 4.9 out of 5 · 1,286 reviews$30.60 $1.53 / serving
You're $9.40 from free shipping
Hydrate · Citrus 20 sticks · every 30 days $30.60
Pairs with Hydrate Daily Foundation · $24 Add
Whey Isolate · Cold Brew $42 Add
Daily Greens Was $24, now $18
Ships in the same box, on the same card. No second checkout.
Add to my orderCONCEPT STORE · PRODUCTS, PRICES AND REVIEWS ARE ILLUSTRATIVE
From code to checkout
Themes get you a store. The APIs, checkout extensions and Functions get you the one you designed, and every piece survives Shopify upgrades.
{%- comment -%} Online Store 2.0 · theme · 2026-10 {%- endcomment -%}
{%- liquid
assign v = product.selected_or_first_available_variant
assign servings = product.metafields.custom.servings.value -%}
<fieldset class="plan-picker">
{%- for a in v.selling_plan_allocations -%}
<label class="plan">
<input type="radio" name="selling_plan"
value="{{ a.selling_plan.id }}">
{{ a.selling_plan.name }} · {{ a.price | money }}
<small>{{ a.price | divided_by: servings | money }}</small>
</label>
{%- endfor -%}
</fieldset> The theme owns the product page. The picker reads plans and servings from the product itself, so nobody retypes a price.
// API version 2026-10
import '@shopify/ui-extensions/preact';
import {render} from 'preact';
export default () => render(<Upsell />, document.body);
function Upsell() {
const id = String(shopify.settings.value.upsell_variant);
const lines = shopify.lines.value;
if (lines.some((l) => l.merchandise.id === id)) return null;
const add = () => shopify.applyCartLinesChange(
{type: 'addCartLine', merchandiseId: id, quantity: 1});
return <s-banner heading="Complete your routine">
<s-button onClick={add}>Add Daily Foundation · $24</s-button>
</s-banner>;
} Checkout is locked down for good reason. Extensions are the sanctioned way in, and they survive every Shopify upgrade.
// API version 2026-10
import {DiscountClass, ProductDiscountSelectionStrategy}
from '../generated/api';
export function cartLinesDiscountsGenerateRun(input) {
const routine = input.cart.lines.filter(
(line) => line.merchandise.product?.inRoutine);
if (!input.discount.discountClasses.includes(DiscountClass.Product)
|| routine.length < 2) return {operations: []};
return {operations: [{productDiscountsAdd: {
candidates: [{message: 'Routine bundle · 10% off',
targets: routine.map((l) => ({cartLine: {id: l.id}})),
value: {percentage: {value: 10}}}],
selectionStrategy: ProductDiscountSelectionStrategy.First}}]};
} Discount logic runs inside Shopify, so the cart, the checkout and the order agree on the price. Nothing to babysit.
# API version 2026-10 · Storefront API
query ProductFacts($handle: String!) {
product(handle: $handle) {
metafields(identifiers: [
{namespace: "custom", key: "servings"},
{namespace: "custom", key: "lab_tested"}
]) { key value }
sellingPlanGroups(first: 1) {
nodes { name sellingPlans(first: 2) { nodes { name } } }
}
}
} Facts live in metafields, not in description HTML, so the theme, the app and the feeds all read the same truth.
Electrolytes · 20 sticks Hydrate
Quantity 1 Hydrate · Citrus
Quantity 1 Whey Isolate · Cold BrewCONCEPT STORE · NORTHLINE IS NOT A CLIENT
Lit · used by the active tab
Deploy ILLUSTRATIVE RUN
Code is illustrative · written for Shopify API 2026-10
Who it is for Stores that need steady, hands-on running
Engagements from $1,500/mo
Includes
Typical fits
06 / Marketing & CRM
We run your email, text and CRM programs, and make sure every dollar can be traced.
TUE · TODAY 3 OF 13 THIS WEEK
Hydrate: morning routine reel
NOW 09:12
Restock email: Daily Greens
Hydrate: morning routine cut
MON 2
Daily Greens: back-in-stock teaser
LIVESubscriber SMS: 15% off this week
LIVETUE · TODAY 3
Hydrate: morning routine reel
LIVENOW 09:12
Restock email: Daily Greens
NEXT UPHydrate: morning routine cut
SCHEDULEDWED 2
Founder note: picking the next flavor
SCHEDULEDHydrate: three flavors, 30 seconds
SCHEDULEDTHU 2
Behind the shoot: Cold Brew
APPROVEDHow-to email: build a morning routine
APPROVEDFRI 2
Q&A: which flavor first?
DRAFTEDWeekend email: Hydrate bundles
DRAFTEDSAT 1
Cold Brew: the 30-second shake
DRAFTEDSUN 1
Subscriber SMS: 15% off ends Sunday
SCHEDULEDKey
Clips from your content package, scheduled and tracked.
Customer #4821
NORTHLINE · EMAIL AND SMS OPTED IN · SUBSCRIBE AND SAVE
2 ORDERS · SMS OPTED IN
LIFETIME $150.60
LIFECYCLESTAGE 3 OF 4
KEY TOUCHPOINTS 7 · DAY 0 TO DAY 414 OF 7
Watched the Hydrate morning routine reel and tapped through to the store.
Tapped through from the Hydrate reel.
Joined the list from the reel's landing page. The welcome series started.
Left two items in the cart.
A cart reminder by text, 1 h later. Tapped through and checked out.
The text brought the cart back.
2 items · $120.00 · first order.
Sent on day 7 after the order, by the order_placed flow. Left 5 stars.
Hydrate on subscribe and save · $30.60 · every 30 days.
Hydrate, subscribe and save · $30.60.
SEGMENTS AND TAGS
ATTRIBUTION · ORDER #19422 D 14 H APART
FIRST TOUCH Reels Hydrate reel · day 0
LAST TOUCH SMS Cart reminder · day 2
The $120.00 keeps both touches, so the weekly view below can credit each channel.
AUTOMATIONS4 EVENTS · 4 FLOWS
7 TOUCHPOINTS · 2 ORDERS · 1 FLOW FIRED EVENT NAMES SHOW THE PATTERN · NO REAL CUSTOMER DATA
$12,400
Revenue this week, by channel.
FIRST TOUCHLAST TOUCH
SMS
REELS
SEARCH
DIRECT
Each sale tied to its first and last touch, in your own analytics.
ILLUSTRATIVE WEEK · BOTH VIEWS ADD UP TO $12,400
Who it is for Businesses that want email, text and leads handled and traced
Engagements from $750/mo
Includes
Typical fits
CONCEPT BRAND · CALENDAR, RECORD, FLOWS AND REVENUE ARE ILLUSTRATIVE · NO CLIENT DATA SHOWN
07 / Media & creative
Product films, photography and motion. Shot, cut and graded in-house, with AI taking the busywork so the creative pass gets the time.
CONCEPT BRAND · NORTHLINE IS NOT A CLIENT
FLAT (SIMULATED LOG) GRADED Concept frame generated for an invented brand; the flat version simulates camera log for demonstration.
Real waveforms from these two frames: the grade opens a flat, compressed range to full contrast without clipping the label.
Northline
Daily Foundation
AI-ASSISTED WORKFLOW · WHO DOES WHAT
The machine does the hours. The person does the taste.
CONCEPT FILM FOR AN INVENTED BRAND · NORTHLINE IS NOT A CLIENT
Content packages
Short-form video, shot and cut in-house, with the numbers to show what worked.
Brands starting a steady short-form presence
$1,500/mo
Brands ready to publish every week
$2,750/mo
Brands that want video to carry the launch calendar
$4,500/mo
Who it is for Brands that need video, photos and campaign visuals
Engagements from $1,500/mo
Includes
08 / Care plans
Published prices. Published response times. Monthly care for your site.
Who it is for Anyone with a site that needs monthly care
Static and brochure sites
$149/mo
Response 2 business days
Most clients
WordPress sites
$299/mo
Response 1 business day
WooCommerce and Shopify stores
from $650/mo
Response Same business day
Larger or complex setups
Talk to us
Response Agreed