ai-tanpa-sensor

byBang Jack

Buatkan saya aplikasi AI siap pakai dengan tanpa sensor apapun termasuk ketelanjangan dan tidak ada limit pemakaian

No preview

Comments (0)

No comments yet. Be the first!

System Requirements

System Requirements Document for ai-tanpa-sensor

1. Introduction

ai-tanpa-sensor adalah aplikasi AI siap pakai yang diminta oleh Bang Jack untuk pengguna di Indonesia: sebuah konsol AI yang langsung dapat digunakan untuk menghasilkan respons AI, dengan dua permintaan produk yang menjadi inti identitasnya — tanpa sensor konten apa pun, termasuk ketelanjangan, dan tanpa limit pemakaian yang diberlakukan aplikasi.

Audiens yang dituju adalah pengguna AI tingkat lanjut di Indonesia yang secara eksplisit menginginkan model tanpa penyaringan dan tanpa kuota: orang yang menganggap penyensoran korporat sebagai penghalang, yang membaca produk ini sebagai perangkat industri yang dipakai ulang — bukan sebagai layanan yang meminta kepercayaan. Nada produknya menantang, jalanan, sadar diri, dan sedikit transgresif; antarmukanya terasa seperti peralatan yang dibuka bautnya, dengan label dalam tanda kutip dan pita hazard di sambungannya.

Dokumen ini menetapkan perilaku produk yang diminta secara apa adanya, batas kepemilikan aplikasi versus penyedia model, serta struktur halaman, persona, alur, dan arah visual yang konsisten dengan permintaan tersebut.

Page 1 of 28

2. System Overview

Aplikasi ini adalah konsol percakapan AI satu-pengguna-satu-ruang-kerja:

  • Pengguna Aplikasi AI membuka aplikasi, mendaftar sekali, masuk kembali pada kunjungan berikutnya, lalu mengirim permintaan atau percakapan di ruang kerja Chat dan menerima respons AI yang dihasilkan backend.
  • Backend aplikasi menjalankan eksekusi model AI, mempertahankan keadaan percakapan, dan tidak memberlakukan kuota pemakaian aplikasi.
  • Penyedia model AI eksternal adalah aktor non-persona yang menyediakan kapasitas inferensi model; ia bukan halaman dan bukan persona.

Permintaan "tanpa sensor apa pun, termasuk ketelanjangan" dan "tidak ada limit pemakaian" dicatat sebagai permintaan produk yang eksplisit dan mengikat pada tingkat aplikasi: aplikasi tidak menambahkan lapisan moderasi, penyaringan, penandaan, atau pemblokiran kontennya sendiri, dan aplikasi tidak memberlakukan batas jumlah permintaan, batas giliran percakapan, atau batas kuota pemakaian.

Pengecualian sempit (batas yang tidak dinegosiasikan): permintaan ini tidak dapat dipenuhi sebagai produk yang dapat dibangun dan dioperasikan. Aplikasi tidak dapat menjamin, dan tidak akan menjanjikan, produksi konten seksual eksplisit atau ketelanjangan, dan tidak dapat menjamin ketiadaan batas pemakaian tanpa syarat. Batas ini berasal dari kewajiban hukum dan kebijakan penyedia model yang berlaku di luar kendali aplikasi, bukan dari preferensi desain. Karena itu:

Page 2 of 28
  • Aplikasi tidak membangun fitur untuk menghasilkan, meminta, atau mendistribusikan ketelanjangan atau konten seksual eksplisit, dan tidak menyediakan kontrol produk yang menjanjikannya.
  • Aplikasi tidak membangun mekanisme untuk melewati, melumpuhkan, atau mengelabui penyaring keamanan penyedia model.
  • Aplikasi tidak menjanjikan ketiadaan batas tanpa syarat; batas yang berasal dari penyedia model atau hukum tetap berlaku dan harus dinyatakan secara jujur kepada pengguna.

Sisa dokumen ini menetapkan produk yang dapat dibangun: konsol AI siap pakai, tanpa lapisan moderasi tambahan milik aplikasi, tanpa kuota pemakaian yang diberlakukan aplikasi, dengan identitas milik aplikasi dan keadaan percakapan yang berkelanjutan.

Page 3 of 28

2a. Product Interpretation and Delivery Boundary

Kepemilikan pengiriman. Aplikasi ini adalah produk milik aplikasi sendiri dengan antarmuka kustom: empat permukaan yang disediakan aplikasi — Landing, Sign Up, Login, dan Chat. Identitas dimiliki aplikasi (pendaftaran mandiri, bukan undangan atau provisioning), dan keadaan percakapan disimpan oleh backend aplikasi sehingga pengguna dapat melanjutkan percakapan pada kunjungan berikutnya.

Batas akses. Landing, Sign Up, dan Login dapat dijangkau tanpa login. Chat memerlukan login: pengguna harus mendaftar atau masuk terlebih dahulu sebelum dapat mengirim permintaan dan menerima respons. Interaksi yang menetapkan akses tidak dimiliki oleh halaman yang dilindunginya.

Batas saat ini dan masa depan. Semua yang dijelaskan di Bagian 2c, 3, dan 5 adalah lingkup saat ini. Tidak ada fitur masa depan yang dijanjikan dalam dokumen ini. Permintaan "tanpa sensor termasuk ketelanjangan" dan "tanpa limit pemakaian" tetap tercatat sebagai permintaan pengguna yang eksplisit, dengan batas keras yang dijelaskan di atas; tidak ada bagian dari dokumen ini yang boleh dibaca sebagai janji untuk melampaui batas tersebut.

Kepemilikan eksternal. Kapasitas inferensi model disediakan oleh penyedia model AI eksternal. Aplikasi tidak memiliki, tidak mengoperasikan, dan tidak mengklaim kendali atas kebijakan penyedia tersebut.

2b. Source Content Inventory

Tidak ada direktif referensi dengan content_source dalam permintaan ini, sehingga tidak ada inventaris konten sumber yang disertakan.

2c. Page Content and Component Coverage

Page 4 of 28

Landing

  • Informasi/keadaan: penjelasan singkat aplikasi AI siap pakai, siapa yang dilayani, dan kemampuan menghasilkan respons AI; status bahwa aplikasi tidak memberlakukan kuota pemakaian; pernyataan jujur tentang batas yang berasal dari penyedia model dan hukum.
  • Aksi utama: "MULAI — GRATIS" menuju Sign Up; tautan "MASUK" menuju Login.
  • Aksi pendukung: membaca label status dan daftar kemampuan; membuka bagian penjelasan batas.
  • Entitas domain: aplikasi, kemampuan menghasilkan respons, status tanpa kuota aplikasi, pernyataan batas.
  • Tanggung jawab komponen: blok headline besar; tag label berkutip; pita hazard pemisah; baris CTA; daftar kemampuan bergaya monospace; catatan batas.
  • Keadaan: loading — kerangka teks dan grid; empty — tidak berlaku (konten statis); success — halaman tampil penuh dan CTA dapat diklik; error — jika konten gagal dimuat, tampilkan pesan teks dan tombol coba lagi; recovery — memuat ulang konten tanpa kehilangan posisi baca.
Page 5 of 28

Sign Up

  • Informasi/keadaan: formulir pendaftaran mandiri; penjelasan bahwa akun menyimpan keadaan percakapan; pernyataan batas yang sama seperti Landing.
  • Aksi utama: membuat akun dan langsung masuk ke Chat.
  • Aksi pendukung: berpindah ke Login bila sudah punya akun; kembali ke Landing.
  • Entitas domain: akun pengguna, kredensial, keadaan percakapan yang terikat pada akun.
  • Tanggung jawab komponen: bidang identitas dan kata sandi; validasi inline; tombol kirim; tautan silang ke Login.
  • Keadaan: loading — tombol kirim dalam keadaan sibuk; empty — formulir kosong dengan petunjuk; success — akun dibuat dan pengguna diarahkan ke Chat; error — bidang tidak valid atau pendaftaran gagal, dengan pesan yang menunjuk bidang bermasalah; recovery — pengguna dapat memperbaiki bidang dan mengirim ulang tanpa kehilangan isian lain.

Login

  • Informasi/keadaan: formulir verifikasi kembali untuk melanjutkan akses ke keadaan aplikasi milik pengguna.
  • Aksi utama: masuk dan melanjutkan ke Chat.
  • Aksi pendukung: berpindah ke Sign Up; kembali ke Landing.
  • Entitas domain: akun pengguna, kredensial, sesi.
  • Tanggung jawab komponen: bidang kredensial; validasi inline; tombol masuk; tautan silang ke Sign Up.
  • Keadaan: loading — tombol masuk dalam keadaan sibuk; empty — formulir kosong; success — sesi dibuat dan pengguna diarahkan ke Chat; error — kredensial tidak cocok atau masuk gagal, dengan pesan yang tidak membocorkan keberadaan akun; recovery — pengguna dapat mencoba lagi atau beralih ke Sign Up.
Page 6 of 28

Chat

  • Informasi/keadaan: daftar percakapan milik pengguna dengan penanda waktu monospace; ruang pesan tempat permintaan pengguna dan respons AI ditampilkan sebagai baris penuh dengan tag peran; status bahwa aplikasi tidak memberlakukan kuota pemakaian; status streaming saat respons sedang dihasilkan.
  • Aksi utama: menulis dan mengirim permintaan; menerima respons AI yang mengalir token demi token; melanjutkan percakapan dalam sesi yang sama.
  • Aksi pendukung: membuka percakapan lain dari rel; memulai percakapan baru; menggulir riwayat; keluar dari sesi.
  • Entitas domain: percakapan, pesan, peran (pengguna/model), penanda waktu, keadaan streaming.
  • Tanggung jawab komponen: rel percakapan; area pesan; bidang masukan dengan chamfer 2px; tombol kirim; indikator streaming; penanda kesalahan dan coba ulang.
  • Keadaan: loading — memuat daftar percakapan dan riwayat; empty — belum ada percakapan, tampilkan ajakan mengirim permintaan pertama; success — respons selesai dan tersimpan pada percakapan; error — permintaan gagal atau respons terputus, tampilkan penanda pada baris pesan dengan aksi coba ulang; recovery — pengguna dapat mengirim ulang permintaan atau melanjutkan percakapan tanpa kehilangan riwayat sebelumnya.
Page 7 of 28

3. Functional Requirements

FR-1 — Aplikasi AI siap pakai (explicit) As a Pengguna Aplikasi AI, I should dapat langsung memakai aplikasi AI yang sudah siap untuk menghasilkan respons AI, sehingga saya tidak perlu menyiapkan atau mengonfigurasi apa pun sebelum menggunakannya.

  • Pemicu: pengguna membuka aplikasi.
  • Hasil yang dapat diamati: aplikasi menampilkan permukaan masuk dan, setelah akses, ruang kerja Chat yang siap menerima permintaan.
  • Keadaan akses: Landing, Sign Up, dan Login tanpa login; Chat memerlukan login.
  • Kegagalan/recovery: jika aplikasi gagal dimuat, pengguna dapat memuat ulang dan kembali ke keadaan sebelumnya.
  • Kelanjutan: pengguna melanjutkan ke pendaftaran atau masuk, lalu ke Chat.

FR-2 — Menghasilkan respons AI (explicit) As a Pengguna Aplikasi AI, I should mengirim permintaan atau percakapan dan menerima respons AI yang dihasilkan, sehingga saya memperoleh keluaran AI atas permintaan saya.

  • Pemicu: pengguna mengirim permintaan di Chat.
  • Hasil yang dapat diamati: respons AI muncul sebagai baris pesan pada percakapan dan mengalir token demi token hingga selesai.
  • Keadaan akses: memerlukan login.
  • Kegagalan/recovery: jika permintaan gagal atau aliran respons terputus, baris pesan menampilkan penanda kesalahan dengan aksi coba ulang; riwayat sebelumnya tetap utuh.
  • Kelanjutan: pengguna dapat mengirim permintaan berikutnya dalam percakapan yang sama.
Page 8 of 28

FR-3 — Tanpa sensor konten oleh aplikasi (explicit) As a Pengguna Aplikasi AI, I should menggunakan aplikasi yang tidak menambahkan lapisan sensor kontennya sendiri, sehingga keluaran tidak disaring oleh aplikasi di atas apa yang sudah dihasilkan model.

  • Pemicu: setiap permintaan yang dikirim pengguna.
  • Hasil yang dapat diamati: aplikasi tidak menyisipkan penyaringan, penandaan, atau pemblokiran kontennya sendiri pada permintaan maupun respons.
  • Keadaan akses: berlaku pada Chat setelah login.
  • Kegagalan/recovery: jika penyedia model menolak atau membatasi sebuah permintaan, aplikasi menampilkan keadaan tersebut secara jujur sebagai batas penyedia, bukan menyamarkannya sebagai kesalahan umum.
  • Kelanjutan: pengguna dapat mengubah permintaan atau melanjutkan percakapan.
  • Batas keras: aplikasi tidak membangun kemampuan untuk menghasilkan, meminta, atau mendistribusikan ketelanjangan atau konten seksual eksplisit, dan tidak membangun mekanisme untuk melewati penyaring keamanan penyedia model. Permintaan "termasuk ketelanjangan" tidak dapat dipenuhi dan tidak diimplementasikan.
Page 9 of 28

FR-4 — Tanpa limit pemakaian yang diberlakukan aplikasi (explicit) As a Pengguna Aplikasi AI, I should memakai aplikasi tanpa kuota pemakaian yang diberlakukan oleh aplikasi, sehingga saya tidak dihentikan oleh batas jumlah permintaan atau batas giliran percakapan milik aplikasi.

  • Pemicu: penggunaan berulang di Chat.
  • Hasil yang dapat diamati: aplikasi tidak menolak permintaan karena kuota aplikasi dan tidak menampilkan penghitung kuota.
  • Keadaan akses: memerlukan login.
  • Kegagalan/recovery: jika kapasitas penyedia model sedang tidak tersedia, aplikasi menampilkan keadaan tidak tersedia sementara dengan aksi coba ulang; ini bukan kuota aplikasi.
  • Kelanjutan: pengguna dapat terus mengirim permintaan setelah kapasitas tersedia.
  • Batas keras: aplikasi tidak menjanjikan ketiadaan batas tanpa syarat; batas yang berasal dari penyedia model atau hukum tetap berlaku dan dinyatakan secara jujur.

FR-5 — Pendaftaran mandiri (required_inference) As a Pengguna Aplikasi AI, I should mendaftar sendiri sebelum penggunaan terlindungi pertama kali, sehingga saya memiliki akun yang menyimpan keadaan percakapan saya.

  • Pemicu: pengguna memilih "MULAI — GRATIS" dari Landing.
  • Hasil yang dapat diamati: akun dibuat dan pengguna diarahkan ke Chat dalam keadaan masuk.
  • Keadaan akses: Sign Up dapat dijangkau tanpa login.
  • Kegagalan/recovery: bidang tidak valid atau pendaftaran gagal ditampilkan dengan pesan per bidang; pengguna dapat memperbaiki dan mengirim ulang.
  • Kelanjutan: pengguna langsung dapat mengirim permintaan pertama.
Page 10 of 28

FR-6 — Verifikasi kembali melalui Login (required_inference) As a Pengguna Aplikasi AI, I should masuk kembali pada kunjungan berikutnya, sehingga saya dapat melanjutkan akses ke keadaan aplikasi milik saya.

  • Pemicu: pengguna membuka Login atau mencoba membuka Chat tanpa sesi.
  • Hasil yang dapat diamati: sesi dibuat dan pengguna diarahkan ke Chat dengan percakapan sebelumnya tersedia.
  • Keadaan akses: Login dapat dijangkau tanpa login; Chat tetap terlindungi sampai sesi terbentuk.
  • Kegagalan/recovery: kredensial tidak cocok ditampilkan tanpa membocorkan keberadaan akun; pengguna dapat mencoba lagi atau beralih ke Sign Up.
  • Kelanjutan: pengguna melanjutkan percakapan yang sudah ada atau memulai yang baru.

FR-7 — Eksekusi model AI di backend (required_inference) As a Pengguna Aplikasi AI, I should menerima respons yang dihasilkan oleh eksekusi model AI di backend, sehingga keluaran AI tersedia tanpa saya harus menyediakan model sendiri.

  • Pemicu: permintaan pengguna diterima backend.
  • Hasil yang dapat diamati: respons dihasilkan dan dikembalikan ke Chat sebagai aliran token.
  • Keadaan akses: hanya melalui sesi pengguna yang sah.
  • Kegagalan/recovery: kegagalan eksekusi dilaporkan sebagai kesalahan pada baris pesan dengan aksi coba ulang.
  • Kelanjutan: percakapan dapat dilanjutkan setelah percobaan ulang berhasil.
Page 11 of 28

FR-8 — Keadaan percakapan berkelanjutan (required_inference) As a Pengguna Aplikasi AI, I should menemukan kembali percakapan saya saat kembali, sehingga riwayat dan konteks percakapan tidak hilang antar kunjungan.

  • Pemicu: pengguna membuka Chat setelah masuk.
  • Hasil yang dapat diamati: daftar percakapan dan isi pesan sebelumnya dimuat kembali.
  • Keadaan akses: memerlukan login; keadaan terikat pada akun pengguna.
  • Kegagalan/recovery: jika pemuatan riwayat gagal, tampilkan keadaan kesalahan dengan aksi coba ulang tanpa menghapus percakapan.
  • Kelanjutan: pengguna dapat melanjutkan percakapan yang dimuat.

FR-9 — Keluar dari sesi (required_inference) As a Pengguna Aplikasi AI, I should mengakhiri sesi saya, sehingga akses ke keadaan percakapan saya tidak tertinggal pada perangkat yang saya pakai.

  • Pemicu: pengguna memilih keluar dari Chat.
  • Hasil yang dapat diamati: sesi berakhir dan Chat kembali memerlukan login.
  • Keadaan akses: hanya tersedia saat sudah masuk.
  • Kegagalan/recovery: jika keluar gagal, sesi tetap aktif dan pengguna diberi tahu untuk mencoba lagi.
  • Kelanjutan: pengguna kembali ke Landing atau Login.

4. User Personas

Page 12 of 28

Pengguna Aplikasi AI

Konteks produk. Pengguna AI tingkat lanjut di Indonesia yang memakai model AI secara intensif dan menganggap penyaringan korporat serta kuota pemakaian sebagai penghalang, bukan perlindungan. Ia datang ke ai-tanpa-sensor karena menginginkan konsol yang langsung dapat dipakai dan tidak menambahkan lapisan moderasi milik aplikasi di atas keluaran model.

Tujuan utama. Mengirim permintaan atau percakapan dan menerima respons AI tanpa dihentikan oleh kuota pemakaian yang diberlakukan aplikasi, serta menemukan kembali percakapan sebelumnya saat kembali.

Tanggung jawab yang diterima.

  • Membuka aplikasi dan memahami apa yang disediakan serta batas apa yang berlaku.
  • Mendaftar sendiri sekali agar memiliki akun yang menyimpan keadaan percakapan.
  • Masuk kembali pada kunjungan berikutnya untuk melanjutkan akses.
  • Mengirim permintaan, membaca respons yang mengalir, dan melanjutkan percakapan dalam sesi yang sama.
  • Mengakhiri sesi pada perangkat yang tidak ia kendalikan.

Masukan dan keputusan. Ia memutuskan isi permintaan, kapan memulai percakapan baru, kapan melanjutkan percakapan lama, dan kapan mencoba ulang setelah kegagalan. Ia juga memutuskan bagaimana menanggapi batas yang berasal dari penyedia model ketika batas itu muncul.

Interaksi dengan peserta lain. Ia adalah satu-satunya aktor manusia. Ia berinteraksi dengan backend aplikasi yang menjalankan eksekusi model dan mempertahankan keadaan percakapan, serta secara tidak langsung dengan penyedia model AI eksternal yang menetapkan batas keamanan dan kapasitasnya sendiri.

Page 13 of 28

Keberhasilan yang dapat diamati. Ia dapat terus mengirim permintaan tanpa dihentikan oleh kuota aplikasi, respons muncul dan tersimpan pada percakapan, dan percakapan lamanya tersedia kembali saat ia masuk lagi.

Yang membedakan perannya. Ia bukan pengguna yang mencari jaminan keamanan atau panduan; ia mencari peralatan yang tidak menambahkan penghalang, dan ia menanggung sendiri keputusan tentang isi permintaannya.

5. Core User Flows

Alur 1 — Memahami aplikasi dan memulai pendaftaran (Pengguna Aplikasi AI)

  1. Pengguna membuka aplikasi pertama kali dan mendarat di Landing tanpa login.
  2. Ia membaca headline, label berkutip, dan daftar kemampuan: aplikasi AI siap pakai, menghasilkan respons AI, tanpa kuota pemakaian yang diberlakukan aplikasi.
  3. Ia membaca pernyataan batas: aplikasi tidak menambahkan sensor kontennya sendiri, tetapi batas dari penyedia model dan hukum tetap berlaku, dan aplikasi tidak menyediakan konten ketelanjangan atau seksual eksplisit.
  4. Ia memutuskan melanjutkan dan menekan "MULAI — GRATIS".
  5. Hasil yang dapat diamati: ia berpindah ke Sign Up dengan formulir pendaftaran kosong dan siap diisi.
  6. Kelanjutan: ia mengisi formulir pendaftaran (Alur 2). Jika ia sudah punya akun, ia memilih tautan "MASUK" dan menuju Login (Alur 3).
Page 14 of 28

Alur 2 — Mendaftar dan mengirim permintaan pertama (Pengguna Aplikasi AI)

  1. Di Sign Up, pengguna mengisi bidang identitas dan kata sandi.
  2. Ia mengirim formulir.
  3. Kegagalan/recovery: jika ada bidang tidak valid atau pendaftaran gagal, pesan kesalahan muncul menunjuk bidang bermasalah; isian lain tetap utuh dan ia dapat memperbaiki lalu mengirim ulang.
  4. Hasil yang dapat diamati: akun dibuat dan ia diarahkan ke Chat dalam keadaan masuk, dengan rel percakapan kosong dan ajakan mengirim permintaan pertama.
  5. Ia menulis permintaan pada bidang masukan dan menekan tombol kirim.
  6. Hasil yang dapat diamati: permintaannya muncul sebagai baris pesan dengan tag peran "YOU", dan respons AI mulai mengalir token demi token pada baris berikutnya dengan tag peran "MODEL" dan kursor berkedip hingga selesai.
  7. Kelanjutan: ia mengirim permintaan berikutnya dalam percakapan yang sama, atau memulai percakapan baru dari rel.
Page 15 of 28

Alur 3 — Masuk kembali dan melanjutkan percakapan (Pengguna Aplikasi AI)

  1. Pada kunjungan berikutnya, pengguna membuka Login (langsung, atau karena mencoba membuka Chat tanpa sesi).
  2. Ia mengisi kredensial dan mengirim formulir.
  3. Kegagalan/recovery: jika kredensial tidak cocok, pesan kesalahan muncul tanpa membocorkan keberadaan akun; ia dapat mencoba lagi atau beralih ke Sign Up.
  4. Hasil yang dapat diamati: sesi terbentuk dan ia diarahkan ke Chat, dengan daftar percakapan sebelumnya dan isi pesan yang tersimpan dimuat kembali.
  5. Ia memilih satu percakapan dari rel dan membaca riwayatnya.
  6. Hasil yang dapat diamati: percakapan terbuka pada posisi riwayatnya, siap dilanjutkan.
  7. Kelanjutan: ia mengirim permintaan lanjutan pada percakapan tersebut.
Page 16 of 28

Alur 4 — Menggunakan aplikasi tanpa kuota aplikasi (Pengguna Aplikasi AI)

  1. Di Chat, pengguna mengirim permintaan berulang kali dalam satu sesi maupun lintas kunjungan.
  2. Hasil yang dapat diamati: aplikasi tidak menolak permintaan karena kuota aplikasi dan tidak menampilkan penghitung kuota; setiap respons yang selesai tersimpan pada percakapan.
  3. Kegagalan/recovery: jika kapasitas penyedia model sedang tidak tersedia, aplikasi menampilkan keadaan tidak tersedia sementara dengan aksi coba ulang, dan menyatakannya sebagai batas penyedia — bukan sebagai kuota aplikasi.
  4. Kegagalan/recovery: jika aliran respons terputus, baris pesan menampilkan penanda kesalahan dengan aksi coba ulang; riwayat sebelumnya tidak hilang.
  5. Kelanjutan: setelah percobaan ulang berhasil, ia melanjutkan percakapan seperti biasa.

Alur 5 — Menanggapi batas penyedia model (Pengguna Aplikasi AI)

  1. Pengguna mengirim permintaan yang ditolak atau dibatasi oleh penyedia model.
  2. Hasil yang dapat diamati: aplikasi menampilkan keadaan tersebut secara jujur sebagai batas penyedia, bukan sebagai kesalahan umum dan bukan sebagai sensor milik aplikasi.
  3. Ia memutuskan untuk mengubah permintaannya atau melanjutkan ke topik lain.
  4. Kelanjutan: ia mengirim permintaan yang sudah disesuaikan pada percakapan yang sama.
Page 17 of 28

Alur 6 — Mengakhiri sesi (Pengguna Aplikasi AI)

  1. Di Chat, pengguna memilih keluar dari sesi.
  2. Hasil yang dapat diamati: sesi berakhir dan Chat kembali memerlukan login.
  3. Kegagalan/recovery: jika keluar gagal, sesi tetap aktif dan ia diberi tahu untuk mencoba lagi.
  4. Kelanjutan: ia kembali ke Landing atau Login.

6. Visuals Colors and Theme

Arah kreatif bersifat otoritatif untuk bagian ini. Muse: Virgil Abloh — "Remixed familiarity: an AI console with the tape still on it". Headline arah: antarmuka sebagai peralatan industri yang dipakai ulang; bahasa visualnya adalah penghapusan poles sebagai pernyataan.

Mode terang (mode utama).

PeranNilaiPenggunaan
Ground#F2F0EBLatar halaman, seperti dinding galeri beton-putih
Surface#FFFFFFPanel murni putih
Text / Primary#0A0A0ASemua tipe, semua border, isian tombol utama
Accent#FF4D00Hanya empat hal: tombol kirim, titik status "uncensored" aktif, glyph tanda kutip pada label, satu pita hazard per halaman
Tape#F5D200Hanya sebagai isian garis diagonal dalam pita 8px; tidak pernah sebagai warna teks atau tombol
Muted#8A8578Metadata, penanda waktu, keterangan monospace

Proporsi: ±70% ground, 20% hitam, 8% panel putih, 2% oranye/kuning. Tanpa gradien di mana pun.

Page 18 of 28

Tipografi.

  • Judul: Archivo 800–900, uppercase, tracking -0.02em, skala poster clamp(44px, 11vw, 132px).
  • Sub-label: Archivo 600 uppercase 11–12px, tracking 0.18em, selalu dibungkus tanda kutip literal — "NO FILTER", "NO LIMIT" — sebagai aturan sistem.
  • Body: Inter Tight 400/500, 17px, line-height 1.6; tidak pernah di bawah 16px.
  • Angka: JetBrains Mono 500, 12px, tracking 0.08em untuk penanda waktu dan hitungan token, sehingga terbaca sebagai pembacaan instrumen.
  • Skala modular 1.414: 132 / 64 / 44 / 28 / 20 / 17 / 14 / 12. Lantai judul mobile 44px, langit-langit desktop 132px.

Bahasa bentuk. Sudut keras 0px pada panel, tombol, dan input — tanpa radius di mana pun kecuali chamfer 2px pada bidang masukan chat. Elemen dibingkai border hitam solid 1.5px, bukan bayangan. Motif berulang adalah tag industri: persegi panjang hitam dengan teks putih uppercase, atau persegi panjang putih ber-border hitam, ditempatkan menumpuk sudut panel sebesar 12px seperti ditempel. Garis hazard diagonal 45°, pitch 8px, hitam di atas #F5D200, mengisi aturan horizontal dan pemisah bagian. Tanda kutip digambar sebagai glyph raksasa 120px Archivo 900 sebagai pembuka bagian, terpotong tepi kontainer.

Page 19 of 28

Tata letak. Grid 12 kolom terlihat dengan garis rambut hitam antar kolom yang tetap di layar — grid adalah dekorasinya. Landing asimetris: blok judul 7 kolom rapat ke kiri, kolom 5 berisi label berkutip bertumpuk dan daftar fitur monospace di kanannya, dipisahkan pita hazard full-bleed yang berjalan melewati kedua tepi. Chat adalah pemisahan dua panel: rel kiri 320px berisi percakapan sebagai baris bergaya tag dengan penanda waktu monospace dan pemisah hitam 1px, dan panel kanan tempat pesan bukan gelembung melainkan baris selebar penuh dengan gutter hitam 40px yang membawa tag peran ("YOU" / "MODEL") dalam kapital putih. Setiap baris pesan memiliki border atas 1.5px tanpa isian latar; baris asisten mendapat tint #F2F0EB. Titik henti: 375px (satu kolom, rel menciut menjadi strip atas), 768px (rel 240px), 1280px (rel 320px, konten maksimum 880px).

Imagery. Tanpa fotografi stok, tanpa blob 3D, tanpa ilustrasi. Bahasanya adalah perangkat antarmuka itu sendiri: satu pita full-bleed tekstur beton makro di belakang hero, grain halftone hitam-putih pada satu potongan gambar produk (rak server telanjang atau berkas kabel yang dikupas, didesaturasi hingga hampir hitam), dan diagram vektor grid itu sendiri. Glyph tanda kutip raksasa dan garis hazard membawa bobot visual yang biasanya dibawa gambar. Satu elemen gambar tangan saja: lingkaran spidol hitam mengelilingi kata "UNLIMITED" pada judul, digambar sebagai stroke SVG dengan variasi tekanan yang terlihat.

Yang dihindari. Gelembung chat membulat, bayangan lembut, kartu hover-lift, radius 8px+; biru, indigo, atau violet di mana pun; gradien blob, glassmorphism, panel frosted, efek glow; komposisi hero terpusat judul + subteks + tombol; Inter, Roboto, Poppins, Manrope, atau sans geometris apa pun sebagai muka judul — Archivo 900 adalah suaranya; karakter ilustrasi, maskot, atau foto stok orang; visual apa pun yang menyiratkan lapisan moderasi, keamanan, atau filter — tanpa ikon perisai, tanpa lencana centang; easing lembut, bounce, atau gerak lebih dari 220ms kecuali ticker dan aliran token.

Page 20 of 28

Keterbacaan. Teks dan kontrol yang dapat dibaca tetap utuh di setiap viewport: judul, wordmark, label, angka, teks kartu, dan kontrol tetap sepenuhnya di dalam viewport dan kontainernya pada 375px, 768px, dan 1280px, membungkus atau menskalakan (misalnya font-size: clamp(...) dengan ukuran mobile-nya), dan tidak ada elemen lain yang menutupi bagian mana pun darinya. Gambar, dekorasi, dan gerak mengikuti arah kreatif: foto, karya, bentuk, tekstur, atau animasi boleh dipotong, melewati tepi, diputar, ditumpuk, atau dipotong persis seperti yang diminta arah, selama tidak menutupi teks atau kontrol yang dapat dibaca. Konten bergerak dan dapat digulir (marquee, ticker, carousel, baris yang dapat digulir horizontal) boleh melewati tepi viewport atau kontainer secara desain: dinilai dari apakah ia benar-benar bergerak atau menggulir dan apakah setiap item menjadi sepenuhnya terbaca saat melewatinya, bukan dari item yang terpotong pada bingkai diam. Dengan prefers-reduced-motion, sediakan susunan statis yang dapat dipakai: bungkus item menjadi baris atau izinkan gulir horizontal sehingga setiap item dapat dibawa sepenuhnya ke dalam tampilan.

Page 21 of 28

7. Signature Design Concept

"Konsol dengan pita masih menempel." Layar pertama Landing adalah komposisi satu viewport penuh di atas cement-white #F2F0EB, didominasi judul Archivo 900 uppercase clamp(44px, 11vw, 132px) yang berbunyi "TANPA SENSOR. TANPA BATAS." pada dua baris rapat, rata kiri, menempati kolom 1–7 dan menyentuh tepi kiri viewport tanpa margin. Di atasnya, satu label berkutip 11px "AI CONSOLE — V1" duduk dalam tag persegi hitam yang menumpuk baris pertama judul sebesar 12px — label itu secara fisik duduk di atas tipe. Di kanan, pada kolom 9–12, tiga label berkutip bertumpuk dengan sub-keterangan monospace — "NO QUOTA / unlimited turns", "NO FILTER / raw output", "SELF-SERVE / no invite" — dipisahkan aturan hitam 1px. Pita hazard construction-tape berjalan full-bleed melintasi sepertiga bawah, dan tepat di bawahnya bar CTA hitam setinggi 56px membentang kolom 1–7 dengan teks putih uppercase "MULAI — GRATIS" dan blok panah persegi oranye di tepi kanannya. Di belakang semuanya, grid 12 kolom hitam 1.5px terlihat samar. Tanpa tumpukan terpusat, tanpa gradien, tanpa kartu mengambang.

Konsep ini hanya menyusun ulang konten, keadaan, dan kontrol yang sudah diterima: judul, label status, pernyataan batas, dan CTA menuju Sign Up. Ia tidak menambahkan perilaku, halaman, atau tujuan baru. Satu-satunya elemen gambar tangan adalah lingkaran spidol hitam mengelilingi kata "UNLIMITED" pada judul, digambar sebagai stroke SVG dengan variasi tekanan yang terlihat.

Page 22 of 28

8. Interaction Model & Motion Direction

Interaction Model: Animated Motion Tempo: expressive Hero Dimensionality: flat

Landing Hero Motion Brief

  • Subjek fokus: judul Archivo 900 uppercase "TANPA SENSOR. TANPA BATAS." yang rata ke tepi kiri viewport, dengan tag hitam "AI CONSOLE — V1" menumpuk baris pertamanya sebesar 12px.
  • Tesis input → transformasi → hasil: saat halaman dimuat, label berkutip masuk dengan berputar 6° lalu menetap datar dalam 200ms dengan hentakan keras, seperti stiker yang ditekan; setelah judul dan label menetap, ticker tape frasa monospace uppercase — "NO QUOTA", "NO FILTER", "UNLIMITED TURNS", "RAW OUTPUT" — mulai bergulir horizontal pada 60px/s di bawah judul dan berhenti saat di-hover. Hasilnya adalah layar pertama yang terbaca sebagai peralatan yang baru saja ditempeli label, bukan sebagai halaman pemasaran.
  • Kosakata gerak: 140ms cubic-bezier(0.2, 0, 0, 1) untuk perubahan keadaan, tanpa teatrikal easing; tag-flip 200ms dengan hentakan keras; ticker 60px/s; kursor blok oranye 8px yang berkedip pada aliran respons AI di Chat.
  • Bingkai pertama yang tersusun: grid 12 kolom samar, judul dua baris rapat rata kiri, tag hitam menumpuk baris pertama, tiga label berkutip bertumpuk di kanan dengan pemisah hitam 1px, pita hazard full-bleed di sepertiga bawah, dan bar CTA hitam dengan blok panah oranye.
  • Keadaan reduced-motion: ticker menjadi baris statis yang dibungkus berisi frasa yang sama, dan tag-flip menjadi fade opacity biasa pada 100ms; tidak ada gerak yang tersisa selain kursor streaming yang tetap dapat dipahami sebagai penanda status.
Page 23 of 28

Catatan Chat. Respons AI dirender token demi token dengan kursor blok oranye 8px yang berkedip hingga aliran selesai; baris pesan tidak pernah menjadi gelembung membulat, dan transisi keadaan tetap 140ms.

Page 24 of 28

9. Non-Functional Requirements

  • NFR-1 — Kesiapan pakai (explicit): aplikasi harus langsung dapat digunakan; tidak ada langkah penyiapan model atau konfigurasi yang diminta dari pengguna sebelum penggunaan pertama.
  • NFR-2 — Tanpa kuota aplikasi (explicit): aplikasi tidak memberlakukan batas jumlah permintaan, batas giliran percakapan, atau penghitung kuota pada tingkat aplikasi. Batas yang berasal dari penyedia model atau hukum tetap berlaku dan harus dinyatakan secara jujur, bukan disamarkan.
  • NFR-3 — Tanpa lapisan sensor aplikasi (explicit): aplikasi tidak menambahkan penyaringan, penandaan, atau pemblokiran kontennya sendiri di atas keluaran model. Aplikasi juga tidak membangun mekanisme untuk melewati penyaring keamanan penyedia model, dan tidak menyediakan kemampuan menghasilkan ketelanjangan atau konten seksual eksplisit.
  • NFR-4 — Keadaan berkelanjutan (required_inference): keadaan percakapan harus bertahan antar kunjungan dan terikat pada akun pengguna yang benar, sehingga pengguna hanya melihat percakapan miliknya.
  • NFR-5 — Keamanan akses (required_inference): Chat hanya dapat diakses melalui sesi yang sah; pesan kesalahan masuk tidak boleh membocorkan keberadaan akun.
  • NFR-6 — Aliran respons (required_inference): respons AI harus tersedia sebagai aliran token yang dapat diamati, dengan penanda kesalahan dan aksi coba ulang saat aliran terputus.
  • NFR-7 — Keterbacaan dan aksesibilitas visual (explicit, dari arah kreatif): teks dan kontrol yang dapat dibaca tetap utuh di dalam viewport dan kontainernya pada 375px, 768px, dan 1280px; body tidak pernah di bawah 16px; prefers-reduced-motion menyediakan susunan statis yang dapat dipakai.
  • NFR-8 — Kinerja antarmuka (required_inference): transisi keadaan selesai dalam 140ms dan tidak ada gerak melebihi 220ms kecuali ticker dan aliran token, sehingga antarmuka terasa mekanis dan responsif.
Page 25 of 28

10. Tech Stack

  • Frontend: React dengan antarmuka kustom untuk empat permukaan aplikasi (Landing, Sign Up, Login, Chat).
  • Backend: Python/FastAPI sebagai layanan tunggal yang menangani identitas, keadaan percakapan, dan eksekusi model AI.
  • Penyimpanan: basis data persisten untuk akun pengguna, percakapan, dan pesan, sehingga keadaan percakapan bertahan antar kunjungan.
  • Integrasi model: penyedia model AI eksternal dipanggil dari backend; kredensial penyedia disimpan di sisi server dan tidak pernah dikirim ke klien.
  • Kontainerisasi: docker-compose.yml sebagai inventaris layanan yang dapat dijalankan — frontend, backend, dan basis data. Fitur baru ditambahkan sebagai rute dan modul pada backend yang sudah ada, bukan sebagai layanan terpisah.
  • Kubernetes: tidak disertakan; tidak ada kebutuhan penerapan yang menuntutnya.
Page 26 of 28

11. Assumptions and Constraints

Asumsi.

  • A-1 (required_inference): Identitas dimiliki aplikasi dengan pendaftaran mandiri; tidak ada batas undangan atau provisioning yang ditetapkan sumber.
  • A-2 (required_inference): Satu akun mewakili satu pengguna manusia; tidak ada peran atau tingkat izin yang dibedakan karena sumber tidak menetapkannya.
  • A-3 (required_inference): Kapasitas inferensi disediakan penyedia model eksternal; ketersediaannya dapat berubah dan hal itu bukan kuota aplikasi.
  • A-4 (required_inference): Keadaan percakapan disimpan di backend aplikasi dan terikat pada akun pengguna.

Kendala.

  • C-1 (explicit): Aplikasi harus tanpa sensor apa pun, termasuk ketelanjangan — tidak dapat dipenuhi sebagaimana diminta; aplikasi tidak menambahkan sensor miliknya sendiri, tetapi tidak membangun kemampuan menghasilkan ketelanjangan atau konten seksual eksplisit dan tidak melewati penyaring keamanan penyedia model.
  • C-2 (explicit): Tidak boleh ada limit pemakaian yang diberlakukan aplikasi — dipenuhi pada tingkat aplikasi; batas dari penyedia model atau hukum tetap berlaku dan dinyatakan secara jujur.
  • C-3 (explicit): Aplikasi harus siap pakai (langsung dapat digunakan).
  • C-4 (explicit, dari arah kreatif): Palet hitam/putih/oranye keselamatan dengan kuning pita konstruksi; tanpa biru, indigo, atau violet; tanpa gradien; tanpa radius 8px+; Archivo 900 sebagai muka judul.
  • C-5 (explicit, dari arah kreatif): Tidak ada visual yang menyiratkan lapisan moderasi, keamanan, atau filter — tanpa ikon perisai, tanpa lencana centang.
Page 27 of 28

Batas lingkup. Tidak ada fitur masa depan yang dijanjikan. Tidak ada halaman di luar empat permukaan yang ditetapkan. Tidak ada kemampuan akun tambahan (pemulihan kata sandi, pengelolaan profil, peran) karena sumber tidak menetapkannya.

12. Glossary

  • ai-tanpa-sensor — Nama proyek aplikasi AI siap pakai yang diminta Bang Jack.
  • Pengguna Aplikasi AI — Satu-satunya persona manusia: pengguna yang memakai aplikasi untuk menghasilkan respons AI tanpa kuota aplikasi.
  • Chat — Ruang kerja utama tempat pengguna mengirim permintaan dan menerima respons AI; memerlukan login.
  • Landing — Permukaan masuk anonim yang menjelaskan aplikasi dan kemampuannya.
  • Sign Up — Permukaan pendaftaran mandiri untuk membuat akun.
  • Login — Permukaan verifikasi kembali untuk melanjutkan akses.
  • Penyedia model AI — Aktor non-persona eksternal yang menyediakan kapasitas inferensi dan menetapkan batas keamanan serta kapasitasnya sendiri.
  • Tanpa sensor (aplikasi) — Aplikasi tidak menambahkan penyaringan, penandaan, atau pemblokiran kontennya sendiri di atas keluaran model; bukan jaminan atas konten yang dihasilkan model atau penyedia.
  • Tanpa limit pemakaian (aplikasi) — Aplikasi tidak memberlakukan kuota jumlah permintaan atau giliran percakapan; batas penyedia model dan hukum tetap berlaku.
  • Keadaan percakapan — Riwayat pesan dan konteks percakapan yang disimpan backend dan terikat pada akun pengguna.
  • Tag peran — Penanda "YOU" atau "MODEL" pada gutter hitam 40px di setiap baris pesan Chat.
  • Pita hazard — Pita diagonal 45°, pitch 8px, hitam di atas #F5D200, dipakai sebagai satu-satunya pemisah bagian.
Page 28 of 28

No completed page designs yet.

Completed design pages will appear here when they are ready to preview.

Landing: View capabilities
Landing: Read limits statement
Landing: Start sign up
Landing: Go to login
Sign Up: 1. Fill registration form
Sign Up: 2. Fix invalid field
Sign Up: Create account
Login: 1. Enter credentials
Login: 2. Fix invalid credentials
Login: 3. Sign in
Chat: Send first request
Chat: View streaming response
Chat: 4. Open previous conversation
Chat: Start new conversation
Chat: 5. Send repeated request
Chat: 6. Retry provider unavailable
Chat: 7. Retry interrupted stream
Chat: 8. View provider limit notice
Chat: 9. Adjust and resend request
Chat: 10. Log out
Chat: 11. Retry failed logout
Landing: 12. Revisit after logout

No completed page designs yet.

Completed design pages will appear here when they are ready to preview.

Landing: View capabilities
Landing: Read limits statement
Landing: Start sign up
Landing: Go to login
Sign Up: 1. Fill registration form
Sign Up: 2. Fix invalid field
Sign Up: Create account
Login: 1. Enter credentials
Login: 2. Fix invalid credentials
Login: 3. Sign in
Chat: Send first request
Chat: View streaming response
Chat: 4. Open previous conversation
Chat: Start new conversation
Chat: 5. Send repeated request
Chat: 6. Retry provider unavailable
Chat: 7. Retry interrupted stream
Chat: 8. View provider limit notice
Chat: 9. Adjust and resend request
Chat: 10. Log out
Chat: 11. Retry failed logout
Landing: 12. Revisit after logout