AMA

Mierakigai CRM Reference

Mierakigai CRM

Customer + recurring-service operations — invoicing, commission, daily tracking, landing pages, and customer portals — for service businesses with retainer revenue.

Mierakigai CRM ties a customer record to one or more Running Services (the engagement entity), produces invoices automatically each cycle, computes commission with a transparent formula, and provides customer-facing landing pages and a self-service portal. Originally built in-house for an agency, now used by service businesses with retainer or recurring-engagement revenue — IT consultancies, training providers, B2B advisory, managed service teams, and agencies of any specialty.

Who it's for

Any service business that bills monthly retainers or per-engagement fees and wants invoicing, commission, daily KPI tracking, landing pages, and a customer portal in one place — without stitching together separate accounting, CRM, and marketing tools.

Key features

11 features

Quick start

5 sections

Initial setup

Onboarding flow when opening a new tenant.

  1. 01.

    1. Sign in & create profile

    Sign in with Google or magic link. The first owner becomes the tenant's owner role and the only admin until others are invited.

  2. 02.

    2. Configure letterhead

    Master Data → Letterhead. Fill in brand name, address, contact, bank account, and signatory. A default logo is bundled; replace the path if you have your own asset in /public/brand.

  3. 03.

    3. Add the services you sell

    Master Data → Services. Each service has a name and a default monthly rate. That rate is the base for discount/premium adjustments inside Running Service.

  4. 04.

    4. Invite the team

    HR → Employees → Invite. The invite creates a login and an HR record in one step. Set role admin or staff.

  5. 05.

    5. Complete customer profiles

    Master Data → Customers. The 'for SPK' fields (City, PIC Title, PIC Occupation, PIC ID Number) are required if you want to generate a cooperation agreement (SPK) for that customer.

Add a Running Service (start an engagement)

  1. 01.

    1. Open Running Service

    Master Data → Customers → Running Service tab. Click + Add Running Service.

  2. 02.

    2. Fill in name, customer, industry

    Name format is typically '<Brand> — <Workstream>'. Customer is the company that pays.

  3. 03.

    3. Tick services with discount / premium

    Each ticked service generates one invoice line. Set discount or premium % if there's a customer-specific deal. Live preview shows the resulting amount.

  4. 04.

    4. Enable Daily Tracking / Leads if applicable

    Tick Daily Tracking and the channels the customer uses. The Daily Tracking tab in the sidebar will surface this customer afterwards.

  5. 05.

    5. Save

    Invoice lines appear in the Invoice tab. PDF Invoice / SPK / Quotation are ready to generate.

Generate documents

  1. 01.

    Invoice

    Invoice tab → click PDF on a row. The file 'INV/<TENANT-PREFIX>/<YYYY>/<roman-month>/<seq>.pdf' downloads. Sequence is atomic per tenant per month.

  2. 02.

    SPK (Cooperation Agreement)

    Running Service tab → click SPK in the Documents column. The button is disabled if the customer profile is incomplete. PIHAK PERTAMA (First Party) is filled from the signatory in Letterhead config; PIHAK KEDUA (Second Party) is filled from the customer's PIC fields (ID, title, city, phone).

  3. 03.

    Quotation

    Quote button in the Running Service row. Lists the standard service catalog plus the customer name. Useful as a first-touch proposal document.

Commission

  1. 01.

    1. Add a commission row

    HR → Commission → + Add Commission. Pick employee, optionally pick a source invoice, set percent and flat add-on. The Final Commission preview updates live.

  2. 02.

    2. Pay commission

    Tick the rows to pay → 'Pay X Selected'. The payment lands in the journal. Rows that are flagged (commission inactive or parent invoice inactive) cannot be selected.

  3. 03.

    3. Toggle inactive

    Each commission row has its own active/inactive toggle. Inactive rows turn red and drop out of the outstanding total.

Customer onboarding

  1. 01.

    1. Add a customer

    Master Data → Customers → + Add.

  2. 02.

    2. Click Invite

    The customer receives a sign-in link. After signing in, their sidebar shows only Dashboard, Tagihan, Marketplace Reports, and Bug Report — no internal data.

  3. 03.

    3. They view their invoices

    /tagihan shows invoice cards (one per Running Service) with monthly totals and status. Read-only.

Full manual

14 modules

Module-by-module reference for Mierakigai CRM. Each module names the route inside the app, what it does, the workflow inside, the key fields, and the common mistakes we've seen in production. Use this as a daily handbook — not just an onboarding doc.

Master Data

Configure these before any transactional module. Most everyday flows depend on master records being correct.

Customers

/database/pelanggan

The customer master. Holds basic identity (name, email, phone) plus the extended PIC fields used by the SPK document generator.

Workflow

  1. 01.Click + Add Customer. Name and primary contact are mandatory.
  2. 02.Fill the 'for SPK' block (City, PIC Title, PIC Occupation, PIC ID Number) if you intend to generate a cooperation agreement for this customer.
  3. 03.Save. The customer is now eligible to be linked to a Running Service.
  4. 04.Optionally click Invite to give the customer access to /tagihan with view-only scope.

Key fields

Name
Required. Used as the customer label across every screen and document.
Email / Phone
Phone is required for SPK; email is required to send the portal invite.
City / PIC Title / PIC Occupation / PIC ID Number
Required only if you want to generate SPK from this customer. Without these, the SPK button is disabled.

Common mistakes

  • Two records for the same legal entity (PT ABC vs PT. ABC) → check duplicates first; commission and reporting stay clean.
  • Inviting a customer before completing their profile → the portal works but invoice cards may show placeholders.

Services

/database/service

The catalog of recurring services you sell. A Service has a default monthly rate; that rate is the basis for discount/premium adjustments per Running Service.

Workflow

  1. 01.Click + Add Service. Set name and default rate.
  2. 02.Save. Services appear as ticked options inside Running Service.

Common mistakes

  • Editing the default rate later doesn't propagate to existing Running Services — those carry their own snapshot. If you want to apply a new rate to an existing engagement, edit the Running Service line.

Letterhead

/database/surat

Brand identity used on every PDF document — letterhead block, address, contact, bank details, signatory. The signatory dropdown is populated from HR Employees with role owner or admin.

Workflow

  1. 01.Master Data → Surat. Fill brand name, address line 1 + 2, phone, email, website.
  2. 02.Bank: bank name, account number, account holder name.
  3. 03.Signatory: pick from the dropdown of owners and admins. Their ID number, title, and phone load automatically from HR.
  4. 04.Document prefix: a short tenant code (e.g. MKG) used in invoice / SPK / quotation numbers.
  5. 05.Save. All future generated PDFs use this configuration.

Common mistakes

  • Empty signatory → SPK falls back to the first owner; clean but may not reflect the right person.
  • Document prefix changed mid-year → number sequences continue with the new prefix; auditors will need to know.

Employees

/database/sdm

HR master with employee identity, role, and login state. Inviting an employee here both creates the login and the HR record in one step. Owner / admin roles are eligible to appear as document signatories.

Workflow

  1. 01.Click + Invite Employee. Name, email, role, title.
  2. 02.The invite email goes out; on first sign-in the employee record is materialized.
  3. 03.Edit later for ID number, phone, photo — these are referenced by Letterhead and Commission.

Common mistakes

  • Inviting an existing email twice → second invite is silently de-duplicated; no harm, no second account.
  • Role mismatch (admin vs staff) → admin sees full menus; staff sees only the operational tabs.

Engagement & billing

The Running Service → Invoice chain is the heart of the CRM. Get this right and the rest follows.

Running Service

/database/pelanggan

The engagement entity. Links a customer to one or more services with discount/premium, a start date, and an active/inactive toggle. Each ticked service produces one invoice line per cycle. Pausing the Running Service pauses all linked invoice lines and flags any commission rows tied to it.

Workflow

  1. 01.Open the Running Service tab inside Master Data → Customers.
  2. 02.Click + Add. Fill name, customer, industry.
  3. 03.Tick services. For each ticked service, set discount % or premium %. Live preview shows the resulting line amount.
  4. 04.Tick Daily Tracking + channels if you want this customer to appear in the Daily Tracking tab.
  5. 05.Set status (active by default).
  6. 06.Save. Invoice lines appear in the Invoice tab.

Key fields

Active / Inactive toggle
Controls all linked invoice lines. Inactive rows turn red, drop to the bottom, and are excluded from outstanding totals.
Discount / Premium %
Per-service adjustment to the master rate. Discount reduces, premium adds. Stored on the Running Service line, so changing the master rate doesn't retroactively shift active engagements.

Common mistakes

  • Changing services on an active engagement mid-cycle → existing invoice for that month doesn't auto-update; create a manual adjustment if needed.
  • Toggling inactive at month-end → the next invoice cycle won't generate; reactivate before cycle close.

Invoice

/database/pelanggan

Auto-generated invoice lines from active Running Services. One row per Running Service per cycle. Each row has a PDF button that triggers the document generator with the customer's letterhead config.

Workflow

  1. 01.Open the Invoice tab. Each row corresponds to one Running Service for the current cycle.
  2. 02.Click PDF on a row → the invoice downloads with format INV/<prefix>/<YYYY>/<roman-month>/<seq>.pdf.
  3. 03.Sequence (seq) is atomic per tenant per month — no collisions even with concurrent clicks.
  4. 04.Toggle a row inactive → corresponding Running Service also flips inactive (cascade is bidirectional).

Key fields

Sequence number
From an atomic counter table next_invoice_seq(tenant_id, year, month) — increments only on successful generation.
Roman month
Indonesian convention. I = January, II = February, etc.

Common mistakes

  • Generating PDF, then editing customer name in Master Data → the already-downloaded PDF shows the old name; regenerate if the change is material.
  • Manually creating an invoice row → not supported; the system requires the parent Running Service.

Document generators (Invoice / SPK / Quotation)

Three PDF document types backed by the same letterhead and atomic-sequence infrastructure. All three use jspdf + jspdf-autotable, dynamic-imported on demand to keep first-load light.

Workflow

  1. 01.Invoice: Invoice tab → PDF button per row.
  2. 02.SPK: Running Service tab → SPK button per row. Disabled if the customer's PIC fields are missing.
  3. 03.Quotation: Running Service tab → Quote button per row. Always enabled.
  4. 04.All three pull letterhead, signatory, and bank details from Master Data → Surat at generation time — edits to letterhead apply immediately to new generations.

Common mistakes

  • SPK button greyed out → check the customer's City / PIC Title / Occupation / ID Number fields.
  • Logo missing on the PDF → check that the signatory's photo and the brand logo paths in Letterhead point to files that exist in /public/brand.

Commission

/sdm/komisi

Per-employee commission with the formula: (invoice total × percent) + flat add-on. Each row picks a source invoice (the Running Service it's tied to) — when that invoice is paused, the commission row is flagged but not deleted.

Workflow

  1. 01.Click + Add Commission. Pick employee, source invoice (optional), percent, flat add-on.
  2. 02.Live preview computes Final Commission as (invoice live total × %) + add-on.
  3. 03.Save. The row appears in the commission ledger.
  4. 04.Pay: tick rows → Pay X Selected. The payment lands in the journal.

Key fields

Source invoice
The Running Service whose live total drives the percent calculation. Optional — if blank, only the flat add-on is paid.
Percent
Applied to the source invoice's current month-to-date total. Editing the parent invoice changes the commission preview live.
Flat add-on
Fixed amount added on top of the percent. Useful for one-off bonuses.
Active / Flagged
Inactive = manually paused. Flagged = parent invoice is inactive. Both are excluded from the outstanding total.

Common mistakes

  • Editing percent after paying → only future cycles use the new value; prior payments are immutable.
  • Source invoice paused → row turns flagged; it isn't auto-resumed when the invoice reactivates.

Daily operations & analytics

Daily Tracking

/daily-tracking

Log revenue and cost per channel per customer per day. Channels include Meta, TikTok, Shopee, Tokopedia, Lazada, Google Ads, WhatsApp, etc. Aggregation by customer or channel is built in; filter by date range or channel.

Workflow

  1. 01.Pick the customer in the sidebar.
  2. 02.For each channel ticked at Running Service creation, enter today's revenue and cost.
  3. 03.Save. The dashboard updates the customer's MTD totals.
  4. 04.Export to Excel for client reports.

Common mistakes

  • Customer without channels ticked at Running Service → won't appear here; toggle channels on the Running Service line first.
  • Entering cost as negative → flips the sign convention; use the positive cost field, the dashboard handles the math.

Leads

/leads

Daily Tracking variant for inbound leads with status tags (new, qualified, contacted, won, lost). Suited to sales teams following up prospects without a heavy pipeline tool.

Common mistakes

  • Leads tab not appearing → tick Leads on the Running Service of the customer driving sales activity, or use the global leads workspace.

Marketplace research extension

/marketplace/riset-produk

A Chrome / Edge browser extension scrapes Tokopedia and Shopee product pages; results land in a researchable table inside the CRM. Useful when service teams need to advise on hero products or competitive positioning.

Workflow

  1. 01.Install the extension (link inside /marketplace/riset-produk).
  2. 02.Browse the marketplace product page. Click the extension icon → scrape.
  3. 03.Open /marketplace/riset-produk to view the captured rows.

Common mistakes

  • Marketplace HTML changes break the scraper occasionally; report via the bug FAB so the selector updates can ship quickly.

Public surfaces

Landing Page Builder (V2)

/landing-pages

Framer-style canvas for building marketing pages. Drag, resize, rotate, layer. Section content renders at DESIGN_WIDTH 1280 px with container queries — no drift on browser resize. Publish exports static HTML/CSS/JS deployed to Cloudflare Workers, edge-cached at no extra cost.

Workflow

  1. 01.Click + New Page. Pick a starting template or empty canvas.
  2. 02.Drag section blocks (hero, features, testimonials, contact form, etc.) onto the canvas.
  3. 03.Resize, rotate, layer. The canvas is real desktop pixels at 1280 px.
  4. 04.Click Publish. The page deploys to Cloudflare Workers under a generated URL or your custom domain.

Common mistakes

  • Canvas resize triggers visible drift → make sure section width is set in absolute px, not %.
  • Custom domain not resolving → check that the domain's CNAME points to the workers route (instructions inside the page settings).

Link Pages

/link-pages

Mobile-first bio-link pages (Linktree-style) for customers. Eleven section types: link button, profile, embed, image, divider, etc. Meta Pixel fires on both page view and button click. Custom domain support with auto cache purge on publish.

Workflow

  1. 01.Click + New Link Page. Set slug (the URL suffix).
  2. 02.Add sections from the eleven types. Drag to reorder.
  3. 03.Optional: connect a custom domain. The UI walks through the DNS step.
  4. 04.Publish. The page goes live at the assigned URL.

Customer portal (/tagihan)

/tagihan

Customer-facing read-only view of their own invoices. Cards show invoice + project + monthly totals + status. Server-side write blocks enforce read-only on every endpoint exposed to customer-role users.

Common mistakes

  • Customer asking to edit their invoice → not supported by design; corrections go through the internal team.
  • Customer signed in but seeing an empty list → check that they're invited (Master Data → Customers) and that there's an active Running Service for them.

Other apps

Questions or feature requests for Mierakigai CRM? Post on the forum — we read everything.