JAS

In short, Jas is a knowledge assistant.

Jas is a knowledge assistant (english language support, captured). In favour: it is well established, so tooling and hiring are easier, and the common path is well documented. Against: it adds a dependency and a learning cost, and its defaults may not match your workload. Choose it when those upsides matter more than the added surface area.

Identity — chosen by JAS, not by a designer

ink
accent
surface

Identity sand/technical/declarative/node. Voice declarative: makes claims it can defend. The mark is a geometry rule, not a file — change the palette row and it recolours itself.

Identities: 5 palettes x 4 type x 4 voice x 6 marks = 480. Post points: x 4 platforms x 5 types = 9600. Payment: 3 providers x 4 ops = 12. Every one composed from rows.

Posts — composed from facts, clipped to each platform

x/launch27/280 chars

Jas is knowledge_assistant.

linkedin/launch27/1200 chars

Jas is knowledge_assistant.

instagram/launch27/400 chars

Jas is knowledge_assistant.

threads/launch27/500 chars

Jas is knowledge_assistant.

Bold payments — one provider row, one op row

import { NextResponse } from 'next/server';

// Bold checkout: create a payment link
const BASE = 'https://integrations.api.bold.co';
const KEY = process.env.BOLD_API_KEY!;

export async function POST(req: Request) {
  const { amount, reference } = await req.json();
  const res = await fetch(`${BASE}/online/link/v1`, {
    method: 'POST',
    headers: {
      'x-api-key': KEY,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      amount_type: 'CLOSE',
      amount: { currency: 'COP', total_amount: amount },
      reference,
    }),
  });
  if (!res.ok) return NextResponse.json({ error: await res.text() }, { status: res.status });
  return NextResponse.json(await res.json());
}

Test it — this talks to the live engine

Ask it anything. Try changing your mind mid-way — it records the change instead of overwriting.