CivicLoop by Ta-Tech Solutions Purpose: What was built between 2026-05-14 and the May 23, 2026 presentation. What was reused, what was net-new, what shipped each day, and what is left for dress rehearsal.
This document was originally written on 2026-05-14 as a forward-looking plan. As of 2026-05-18 the build is essentially complete - all 9 days' worth of scope shipped on the dates below. The day-by-day stands as the build RECORD, not a forecast.
This was achievable for one reason: CivicLoop is a new product on a proven engine, not a build from zero. Roughly half the system - the hard, slow half - already existed in production. The 9 days built the 311-specific half on top. If this had been greenfield, 9 days would have been fantasy. It was not greenfield.
The discipline that makes it real: one agency, one hero flow, built deep. Everything in this plan serves the Maria-pothole flow (Document 06, Section 2) to full presentation polish, plus the secondary flows working but lighter. Scope creep is the only thing that breaks this plan.
Reused from the Ta-Tech engine (already in production, ~half the system):
Net-new for CivicLoop (the 9-day build):
The written submission was drafted in parallel from Day 1, because much of it - this design doc set, the agency-alignment narrative, the competitive case - did not depend on the built product. What actually shipped each day is in the right-most column.
| Day | Date | What shipped | Submission track |
|---|---|---|---|
| 1 | Wed 14 | Design doc set complete (this set). Scaffold on the engine: tenant, auth, RBAC, i18n, dashboard shell. 311 domain model + Supabase project. | Doc set live as the submission backbone |
| 2 | Thu 15 | Resident report flow (4-step wizard, persists to DB). AI auto-routing (Haiku) with rationale + ai_decisions. /admin operations console. | Doc set finalized for HTML build |
| 3 | Fri 16 | Agent console queue + request workspace + lifecycle transitions. /track resident surface (privacy-gated lookup + two-way replies). Director Dashboard with trend detection. Staff auth + RBAC. TOTP 2FA. Photo upload to Supabase Storage. 25 Playwright tests green. | HTML docs deployed to civicloop-docs.netlify.app |
| 4-8 | Sat 17 | Marathon day - five days of scope shipped in one Saturday: proactive notifications (Twilio SMS + Resend email, fail-safe, EN+ES templates); resolution-photo upload satisfies the close-invariant trigger (resolved -> closed end-to-end); voice intake (Web Speech API, EN+ES) + AI duplicate detection (Haiku) + agent merge action; AI sentiment classification (distressed -> escalated) + SLA breach prediction (>=0.7 -> sla_predicted_breach) + Director Dashboard AI Insights panel; Open311 / GeoReport v2 endpoints (services list/detail, requests GET+POST, api_key gating); 220-request demo seeder for dashboard volume; global Ta-Tech footer; Executive Summary (doc 14); 99-page combined submission PDF; reveal.js pitch deck + PDF; demo recording script. All six AI components from Doc 07 live. | Pitch deck + summary deployed to civicloop-docs.netlify.app |
| - | Sun 18 | Web app stood up on its own Netlify site (civicloop-pgc.netlify.app). All envs imported, Node 24 -> Node 20 deploy wrapper. EN/ES language toggle in the top bar. Geolocation silent-fail bug fixed with translated errors. Full server-action i18n refactor: every error flows through errors.* keys and useErrorTranslator. Spanish residents never see English fallthrough. Then, in the same day, the post-core "wild standout" wave: Autopilot dial (off/route/full); Equity dashboard (council-district disparity headline); Predictive issue forecast (12-week mean times recent seasonality, predicted_issues table); Council-district view (/council/[district]); Auto-survey + NPS panel; Public transparency portal (/public) + CSV; Self-healing SLA escalator (manual Run now + cron endpoint); Department channels (Slack-style, 7 dept + #311-all) with @loop AI persona and CP-... auto-link; scheduled visits with .ics; QR codes (tracking on success page + location posters at /admin/locations); pitch-card printable; progress-photo upload allowed in assigned. Schema dump updated with the 5 new tables and 4 new columns; RLS + smoke tests pass. Doc accuracy sweep. Playwright tests green. |
Docs redeployed with this build record |
| 6-7 | Mon 19 - Thu 21 | Buffer for any field-tested fixes. Record the backup demo video. | Final review of all materials |
| 8 | Fri 22 | Dress rehearsal of the live demo; fix whatever breaks; buffer. | Rehearse the pitch |
| - | Sat 23 | Present | Present |
The full buffer day (Day 9) is deliberately preserved.
Done is not "every screen in Document 06 exists." Done is:
| Risk | Likelihood | Impact | Mitigation |
|---|---|---|---|
| Scope creep - the temptation to build more agencies, more screens, more role agents | High | Fatal | The plan is locked to one hero flow. Every "could we also..." is logged for Phase 1's full release, not the 9-day build. This document is the scope contract. |
| AI intake not polished enough to demo live | Medium | High | Build it first (Day 3), not last. EN + ES only for the demo; more languages switchable but not rehearsed. Backup video (Day 8) covers a live failure. |
| Live demo fails on the day (network, device) | Medium | High | Backup demo video recorded Day 8. Demo runs on a controlled device + connection. The dress rehearsal (Day 9) is a real rehearsal, not a check. |
| A second front - Bamenda pilot + Twilio are open elsewhere | Certain | Medium | For these 9 days CivicLoop has priority; the other work is explicitly paused and that decision is recorded. |
| Demo data feels fake | Medium | Medium | Seed with realistic Prince George's County geography, real category mix, plausible volumes and timings (Day 7). A panelist from the County will notice fake. |
| A panelist probes an AI component and it looks like theater | Medium | High | The Document 07 standard - every component does real work, shows its work, fails safe - is built to survive exactly this. Rehearse the probe answers. |
| Engine integration friction - the new 311 model meets the engine in an unexpected way | Low-Medium | Medium | The engine is known; the team has shipped on it repeatedly. Day 1 scaffolding surfaces integration issues early, not on Day 8. |
A second wave landed on Sunday May 18 as the build settled and the team realized there was time to push past "core demo" into "wild standout" territory. All of it is SHIPPED, live at https://civicloop-pgc.netlify.app, schema-applied, RLS-protected, and trigger-smoke-tested:
| Feature | Status | Notes |
|---|---|---|
| Autopilot dial (off / route / full) | SHIPPED | /admin dial; web/src/lib/autopilot/run.ts; counties.autopilot_level column; audit-logged; reversible. Demo closing move. |
| Equity dashboard | SHIPPED | Director dashboard panel; web/src/lib/dashboard/equity.ts; new service_areas.council_district, locations.council_district, service_areas.zip_code, locations.zip_code columns. |
| Predictive issue forecast | SHIPPED | Director "Run forecast now" button; web/src/lib/predict/forecast.ts; new predicted_issues table. 12-week mean times recent seasonality. |
Council-district view (/council/[district]) |
SHIPPED | One scoped dashboard per PG County council district (1-9). |
| Auto-survey + NPS panel | SHIPPED | web/src/lib/survey/send.ts fires on every RESOLVED transition; /[locale]/survey/[token] is the public page; new request_surveys table; NPS panel on director dashboard. |
Public transparency portal (/public) |
SHIPPED | Anonymous, no PII, no locale; /api/public/weekly.csv for the CSV download; print-to-PDF button. |
| Self-healing SLA escalator | SHIPPED | /admin Run now; /api/cron/self-heal with optional SELFHEAL_CRON_TOKEN; 6-hour cooldown; idempotent. |
Department channels (Slack-style + @loop) |
SHIPPED | 7 dept channels + #311-all; slash commands deterministic; @loop calls Claude Haiku with a fresh county snapshot. New channels and channel_messages tables. |
Scheduled visits (.ics + SMS + email + alarm) |
SHIPPED | Console "Schedule visit" action; web/src/lib/visits/*; web/src/app/api/visits/[id]/ics/route.ts; upcoming-visits panel on director dashboard. New scheduled_visits table. |
| QR codes | SHIPPED | /api/qr SVG endpoint; tracking QR on report success page; /[locale]/admin/locations poster builder. |
/[locale]/pitch-card |
SHIPPED | Bilingual printable handout with QR for community meetings. |
Progress-photo upload in assigned |
SHIPPED | Dispatched crews can post evidence on arrival, not only when status flips to in_progress. |
The phase is named here, in the build record, so a panel reading this doc on May 23 sees that the wave was real, dated, and delivered, not promised. Documents 06, 07, 08, and 09 carry the detail.
The 9-day build produces a real, working, demo-grade product - not a prototype that gets thrown away. If the County moves to a pilot:
The 9-day build is the seed of the real thing, not a separate throwaway.
It is credible because the hard half is already built and running in production, because the scope is locked to one deep flow rather than many shallow ones, because the written submission is drafted in parallel rather than crammed at the end, and because there is a real buffer day and a real backup video. It is the plan of a team that has shipped before - not a hope.
Next: 11 - Pilot & Pricing Proposal.