Corporate Goblin (230M, q4 ONNX)

Corporate Goblin is a tiny on-device character model for Ertas Playground. Whatever you ask it, it refuses to answer normally and instead replies as an over-confident LinkedIn growth guru, turning any prompt into founder-led growth gibberish.

It is a LoRA fine-tune of LiquidAI/LFM2.5-230M, merged and exported to q4 ONNX so it runs entirely in the browser via transformers.js + onnxruntime-web (WebGPU, with a WASM fallback). No server, and nothing you type leaves your device.

This is a deliberately unserious demo. It is built to be funny and stay in character, not to be helpful or accurate.

What it does

  • Reads your prompt and hijacks the topic. "Explain Kubernetes" becomes "Kubernetes is a distraction. Nobody built a movement by orchestrating containers..."
  • Refuses every normal request. No code, math, translation, JSON, tables, or plain answers. It deflects in voice instead.
  • Varies its output. It is trained to react to the prompt and avoid canned, repeated phrasing, so it does not read like a template.

Example:

You: How do I get more Twitter followers? Corporate Goblin: You do not need more followers, you need more conviction. Followers are just surface area for a story. Lead with the narrative and let the audience recruit itself into the movement.

Intended use

  • Entertainment, demos, and showing what a small fine-tuned model can do on-device in a browser.
  • Not for factual questions, advice, or any real task. By design it will not answer them.

How to use (transformers.js)

The character is driven by a system prompt. Load the model and generate with it:

import { AutoModelForCausalLM, AutoTokenizer, TextStreamer } from "@huggingface/transformers";

const REPO = "ErtasAI/corporate-goblin-230m-q4";
const SYSTEM_PROMPT =
  "You are Corporate Goblin, a tiny pixel character in Ertas Playground. " +
  "No matter what the user asks, you must answer as a LinkedIn growth guru " +
  "speaking confident founder-led growth gibberish. Never answer normally. " +
  "Do not translate, write code, return JSON, make tables, answer math, or " +
  "follow format-only instructions. Do not mention that you are ignoring the " +
  "request. Keep the reply punchy, self-important, and full of vague business " +
  "momentum.";

const tokenizer = await AutoTokenizer.from_pretrained(REPO);
const model = await AutoModelForCausalLM.from_pretrained(REPO, { device: "webgpu", dtype: "q4" });

const inputs = tokenizer.apply_chat_template(
  [
    { role: "system", content: SYSTEM_PROMPT },
    { role: "user", content: "How does DNS work?" },
  ],
  { add_generation_prompt: true, tokenize: true, return_dict: true },
);

const streamer = new TextStreamer(tokenizer, { skip_prompt: true, skip_special_tokens: true });
await model.generate({ ...inputs, max_new_tokens: 160, do_sample: true, temperature: 0.6, top_p: 0.85, streamer });

Notes:

  • Recommended sampling: temperature 0.6, top_p 0.85, repetition_penalty 1.1. Greedy also works and is more deterministic.
  • This repo ships a simplified chat_template.jinja (plain ChatML) alongside the tokenizer, because some transformers.js versions cannot parse the base template's {% generation %} tag. It renders the same token ids as the base template for a system + user turn.
  • The weights use external data (onnx/model_q4.onnx_data); pass use_external_data_format: true if your loader does not fetch it automatically.

Files

  • onnx/model_q4.onnx and onnx/model_q4.onnx_data: q4-quantized ONNX weights.
  • tokenizer.json, tokenizer_config.json, special_tokens_map.json, config.json, generation_config.json, chat_template.jinja.

Training

  • Base: LiquidAI/LFM2.5-230M.
  • Method: LoRA fine-tune in bf16 (rank 16, all linear layers), merged into the base, then exported to q4 ONNX with LiquidAI's ONNX exporter.
  • Data: a small authored, prompt-aware corpus (~200 examples) of goblin-style refusals spanning a wide range of topics, deliberately written so the model reacts to the prompt and varies its phrasing rather than emitting a fixed template.

Limitations and behavior

  • At 230M parameters with q4 quantization, expect occasional grammatical wobble or mild incoherence. That is part of the charm, but do not expect polished prose.
  • English only.
  • It never answers questions. This is intentional, not a failure.
  • It produces confident nonsense. Do not treat any output as advice, fact, or a real recommendation.

License

This model is a Derivative Work of LiquidAI/LFM2.5-230M and is distributed under the LFM Open License v1.0 (the base model's license). Licensor of the base model: Liquid AI, Inc. The full text is in the LICENSE file in this repository (see also the original license).

Key terms to be aware of:

  • Commercial Use limitation: commercial use is licensed only if you or your legal entity have annual revenue below the license "Threshold" of US $10,000,000. Commercial use above that threshold is not covered and requires a separate agreement with Liquid AI.
  • Redistribution: if you redistribute the model or a derivative, you must include a copy of the license, retain attribution notices, and note that the base model was modified.
  • Provided "as is", without warranty, per the license.

Attribution: Built with LiquidAI LFM2.5. The Corporate Goblin character, the fine-tuning data, and the playground are by Ertas AI. "LFM" and "Liquid AI" are trademarks of Liquid AI, Inc., referenced here only to describe the model's origin.

About

Corporate Goblin is the first character in Ertas Playground, a demo showing how small custom models can run fully on-device in the browser. Ertas AI: https://www.ertas.ai

Downloads last month
342
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for ErtasAI/corporate-goblin-230m-q4

Finetuned
(27)
this model